diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index b988a1a5..b0ffd46e 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,4 +1,4 @@ # These are supported funding model platforms open_collective: zxing-js -custom: ['https://picpay.me/odahcam'] +custom: ['https://picpay.me/odahcam', 'https://apoia.se/zxing'] diff --git a/.github/ISSUE_TEMPLATE/ask-a-question-------.md b/.github/ISSUE_TEMPLATE/ask-a-question-------.md new file mode 100644 index 00000000..2f6a3b53 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/ask-a-question-------.md @@ -0,0 +1,27 @@ +--- +name: "Ask a Question ❓\U0001F64B‍♂️" +about: Ask anything you want. +title: '' +labels: question +assignees: '' + +--- + + + + diff --git a/.github/ISSUE_TEMPLATE/bug-report---.md b/.github/ISSUE_TEMPLATE/bug-report---.md index 0f52e489..d7e92b2f 100644 --- a/.github/ISSUE_TEMPLATE/bug-report---.md +++ b/.github/ISSUE_TEMPLATE/bug-report---.md @@ -7,6 +7,18 @@ assignees: '' --- + + **Describe the bug** A clear and concise description of what the bug is. diff --git a/.github/ISSUE_TEMPLATE/feature-request---.md b/.github/ISSUE_TEMPLATE/feature-request---.md index 70b705ef..6dd91116 100644 --- a/.github/ISSUE_TEMPLATE/feature-request---.md +++ b/.github/ISSUE_TEMPLATE/feature-request---.md @@ -8,6 +8,18 @@ assignees: '' --- + + **Is your feature request related to a problem? Please describe.** A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml new file mode 100644 index 00000000..40325931 --- /dev/null +++ b/.github/workflows/codeql-analysis.yml @@ -0,0 +1,54 @@ +name: "CodeQL" + +on: + push: + branches: [master, develop] + pull_request: + # The branches below must be a subset of the branches above + branches: [master] + schedule: + - cron: '0 22 * * 6' + +jobs: + analyse: + name: Analyse + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + with: + # We must fetch at least the immediate parents so that if this is + # a pull request then we can checkout the head. + fetch-depth: 2 + + # If this run was triggered by a pull request event, then checkout + # the head of the pull request instead of the merge commit. + - run: git checkout HEAD^2 + if: ${{ github.event_name == 'pull_request' }} + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v1 + # Override language selection by uncommenting this and choosing your languages + # with: + # languages: go, javascript, csharp, python, cpp, java + + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v1 + + # ℹ️ Command-line programs to run using the OS shell. + # πŸ“š https://git.io/JvXDl + + # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines + # and modify them (or add more) to build your code if your project + # uses a compiled language + + #- run: | + # make bootstrap + # make release + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v1 diff --git a/.github/workflows/npmpublish.yml b/.github/workflows/npmpublish.yml index 8f1ab627..58394306 100644 --- a/.github/workflows/npmpublish.yml +++ b/.github/workflows/npmpublish.yml @@ -27,21 +27,21 @@ jobs: key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} restore-keys: | ${{ runner.os }}-yarn- - + - name: Install dependencies run: yarn install --frozen-lockfile + - name: Build the application + run: yarn build + - name: Test the application run: yarn test - - name: Build the application - run: yarn build - - name: Build the package run: | - npm pack + npm pack dist/ mv zxing-library-*.tgz package.tgz - + - name: Upload build artifacts uses: actions/upload-artifact@v1 with: @@ -71,19 +71,19 @@ jobs: needs: build runs-on: ubuntu-latest steps: - + - name: Download build artifacts uses: actions/download-artifact@v1 with: name: pack-artifact - + - name: Install JQ for JSON handling run: sudo apt-get install jq - + - name: Get repository name run: echo ::set-env name=REPOSITORY_NAME::$(echo "$GITHUB_REPOSITORY" | awk -F / '{print $2}' | sed -e "s/:refs//") shell: bash - + - name: Rename NPM package run: | ORG_NAME="zxing-js" diff --git a/.gitignore b/.gitignore index 969f5cd0..e0c6538f 100644 --- a/.gitignore +++ b/.gitignore @@ -11,10 +11,9 @@ node_modules/ *.iml coverage -esm -esm5 -umd typings +dist +output ## this is generated by `npm pack` *.tgz diff --git a/.npmignore b/.npmignore deleted file mode 100644 index 3bd39a7e..00000000 --- a/.npmignore +++ /dev/null @@ -1,17 +0,0 @@ -.* -*.log -**/tsconfig.json -tsconfig.*.json -tslint.json -_config.yml -**/*.conf.js -**/*.config.js -**/*.config.*.js -*.lock -*.tar.gz -*.tgz - -node_modules -docs -test -src diff --git a/.travis.yml b/.travis.yml index 95797cf2..f437f82f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,13 +2,12 @@ env: global: - CXX=g++-4.8 - CC_TEST_REPORTER_ID=e6be83551acde45d90f95ab35d4dbd4136645ec8a9b621f40ba2bed83010b718 - - CODACY_PROJECT_TOKEN=b36d15c23793453eaee66463191749c2 + - CODACY_PROJECT_TOKEN=482590c2b0f647649d07ba6ad9d40fb9 language: node_js node_js: - '12' - - '10' before_install: - sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test @@ -21,6 +20,7 @@ before_script: - ./cc-test-reporter before-build script: + - yarn build - yarn cover cache: diff --git a/.vscode/launch.json b/.vscode/launch.json index 28a630e8..370616e6 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -17,6 +17,24 @@ "webpack.config.test.js" ] }, + { + "type": "node", + "request": "launch", + "name": "Unit Tests - ts-node", + "program": "${workspaceFolder}/node_modules/mocha/bin/_mocha", + "args": [ + "--require", + "ts-node/register", + "-u", + "tdd", + "--timeout", + "999999", + "--colors", + "--recursive", + "./src/test/**/*.spec.ts" + ], + "internalConsoleOptions": "openOnSessionStart" + }, { "type": "node", "request": "launch", diff --git a/README.md b/README.md index 31ff9c0e..14ca9e24 100644 --- a/README.md +++ b/README.md @@ -152,7 +152,7 @@ const reader = new MultiFormatReader(); reader.setHints(hints); -const luminanceSource = new RGBLuminanceSource(imgWidth, imgHeight, imgByteArray); +const luminanceSource = new RGBLuminanceSource(imgByteArray, imgWidth, imgHeight); const binaryBitmap = new BinaryBitmap(new HybridBinarizer(luminanceSource)); reader.decode(binaryBitmap); diff --git a/docs/examples/multi-camera/index.html b/docs/examples/multi-camera/index.html index a9414ac3..ba2cbb0b 100644 --- a/docs/examples/multi-camera/index.html +++ b/docs/examples/multi-camera/index.html @@ -69,7 +69,7 @@

Scan 1D/2D Code from Video Camera

let selectedDeviceId; const codeReader = new ZXing.BrowserMultiFormatReader() console.log('ZXing code reader initialized') - codeReader.getVideoInputDevices() + codeReader.listVideoInputDevices() .then((videoInputDevices) => { const sourceSelect = document.getElementById('sourceSelect') selectedDeviceId = videoInputDevices[0].deviceId diff --git a/package.json b/package.json index a76170fc..8c8d6784 100644 --- a/package.json +++ b/package.json @@ -1,120 +1,115 @@ { - "name": "@zxing/library", - "version": "0.17.0", - "description": "TypeScript port of ZXing multi-format 1D/2D barcode image processing library.", - "keywords": [ - "reader", - "writer", - "decode", - "encode", - "scanner", - "generator", - "barcode", - "qr-code", - "barcode 1d", - "barcode 2d", - "typescript", - "zxing" - ], - "authors": [ - { - "name": "Adrian Toșcă" - }, - { - "name": "David Werth", - "email": "werth.david@gmail.com" - }, - { - "name": "Luiz Barni", - "email": "machado@odahcam.com" - } - ], - "engines": { - "node": ">= 10.4.0" + "name": "@zxing/library", + "version": "0.18.2", + "description": "TypeScript port of ZXing multi-format 1D/2D barcode image processing library.", + "keywords": [ + "reader", + "writer", + "decode", + "encode", + "scanner", + "generator", + "barcode", + "qr-code", + "barcode 1d", + "barcode 2d", + "typescript", + "zxing" + ], + "authors": [ + { + "name": "Adrian Toșcă" }, - "license": "MIT", - "bugs": "https://github.com/zxing-js/library/issues/new", - "repository": { - "type": "git", - "url": "https://github.com/zxing-js/library" + { + "name": "David Werth", + "email": "werth.david@gmail.com" }, - "homepage": "https://zxing-js.github.io/library/", - "private": false, - "main": "./umd/index.min.js", - "module": "./esm5/index.js", - "typings": "./esm/index.d.ts", - "esnext": "./esm/index.js", - "nyc": { - "include": [ - "src/**/*.ts" - ], - "sourceMap": false, - "instrument": false - }, - "scripts": { - "lint": "yarn tslint --project .", - "clean": "yarn shx rm -rf umd esm esm5", - "test": "yarn mocha-webpack \"./src/**/*.spec.ts\" --timeout 200000 --webpack-config webpack.config.test.js", - "cover": "yarn nyc --reporter=lcov --reporter=text yarn test", - "build": "yarn clean && yarn build:es5 && yarn build:es6 && yarn build:umd", - "build:es5": "yarn tsc", - "build:es6": "yarn tsc --target es6 --outdir esm --module es6", - "build:umd": "yarn webpack --mode production", - "shx": "./node_modules/.bin/shx", - "tsc": "./node_modules/.bin/tsc", - "tslint": "./node_modules/.bin/tslint \"./src/**/*.ts\"", - "mocha-webpack": "./node_modules/.bin/mocha-webpack", - "nyc": "./node_modules/.bin/nyc", - "webpack": "./node_modules/.bin/webpack-cli" - }, - "dependencies": { - "ts-custom-error": "^3.0.0" - }, - "devDependencies": { - "@sinonjs/text-encoding": "^0.7.1", - "@types/chai": "^4.1.7", - "@types/mocha": "^5.2.6", - "@types/node": "^10.12.29", - "@types/seedrandom": "^2.4.27", - "@types/sharp": "^0.22.2", - "awesome-typescript-loader": "^5.2.1", - "chai": "^4.2.0", - "codacy-coverage": "^3.4.0", - "eslint": "^5.15.1", - "istanbul-instrumenter-loader": "^3.0.1", - "karma": "^3.1.4", - "karma-chai": "^0.1.0", - "karma-chrome-launcher": "^2.2.0", - "karma-coverage": "^1.1.2", - "karma-mocha": "^1.3.0", - "karma-remap-coverage": "^0.1.5", - "karma-sinon": "^1.0.5", - "karma-sourcemap-loader": "^0.3.7", - "karma-typescript": "^3.0.13", - "karma-typescript-preprocessor": "^0.4.0", - "karma-webpack": "^3.0.5", - "mocha": "^5.2.0", - "mocha-lcov-reporter": "^1.3.0", - "mocha-webpack": "^2.0.0-beta.0", - "nyc": "^13.3.0", - "seedrandom": "^2.4.4", - "sharp": "^0.22.1", - "shx": "0.3.2", - "sinon": "^7.2.7", - "ts-loader": "^5.3.3", - "ts-node": "^8.9.0", - "tslint": "^5.13.1", - "tslint-no-circular-imports": "^0.7.0", - "typescript": "~3.3.3333", - "uglify-js": "^3.4.9", - "uglifyjs-webpack-plugin": "^2.1.2", - "webpack": "^4.29.6", - "webpack-cli": "^3.2.3", - "webpack-config-utils": "2.3.1", - "webpack-node-externals": "^1.6.0", - "yarn": "^1.17.3" - }, - "optionalDependencies": { - "@sinonjs/text-encoding": "0.7.1" + { + "name": "Luiz Barni", + "email": "machado@odahcam.com" } + ], + "engines": { + "node": ">= 10.4.0" + }, + "license": "MIT", + "bugs": "https://github.com/zxing-js/library/issues/new", + "repository": { + "type": "git", + "url": "https://github.com/zxing-js/library" + }, + "homepage": "https://zxing-js.github.io/library/", + "private": false, + "main": "./cjs/index.js", + "module": "./esm/index.js", + "typings": "./esm/index.d.ts", + "esnext": "./esm/index.js", + "browser": "./umd/index.js", + "browser:min": "./umd/index.min.js", + "scripts": { + "lint": "yarn tslint --project .", + "clean": "yarn shx rm -rf dist output", + "test": "yarn test:build && yarn test:run", + "test:build": "tsc --build tsconfig.test.json", + "test:run": "mocha -r tsconfig-paths/register --timeout 200000 output/tests/**/*.spec.js", + "cover": "nyc --reporter=lcov --reporter=text yarn test", + "build": "yarn clean && yarn build:es2015 && yarn build:esm && yarn build:cjs && yarn build:umd && yarn build:umd:min && yarn build:copy", + "build:es2015": "tsc --build tsconfig.lib-es2015.json", + "build:esm": "tsc --build tsconfig.lib-esm.json", + "build:cjs": "tsc --build tsconfig.lib-cjs.json", + "build:umd": "rollup -c rollup.config.js", + "build:umd:min": "cd dist/umd && terser --compress --mangle --source-map --screw-ie8 --comments -o index.min.js -- index.js && gzip index.min.js -c > index.min.js.gz", + "build:copy": "cp README.md dist && cp package.json dist && cp LICENSE dist", + "shx": "./node_modules/.bin/shx", + "tsc": "./node_modules/.bin/tsc", + "tslint": "./node_modules/.bin/tslint \"./src/**/*.ts\"" + }, + "dependencies": { + "ts-custom-error": "^3.0.0" + }, + "devDependencies": { + "@rollup/plugin-node-resolve": "^7.1.3", + "@types/chai": "^4.1.7", + "@types/mocha": "^5.2.6", + "@types/node": "^10.12.29", + "@types/seedrandom": "^2.4.27", + "@types/sharp": "^0.22.2", + "@zxing/text-encoding": "~0.9.0", + "chai": "^4.2.0", + "codacy-coverage": "^3.4.0", + "eslint": "^5.15.1", + "karma": "^3.1.4", + "karma-chai": "^0.1.0", + "karma-chrome-launcher": "^2.2.0", + "karma-coverage": "^1.1.2", + "karma-mocha": "^1.3.0", + "karma-remap-coverage": "^0.1.5", + "karma-sinon": "^1.0.5", + "karma-sourcemap-loader": "^0.3.7", + "karma-typescript": "^3.0.13", + "karma-typescript-preprocessor": "^0.4.0", + "mocha": "^5.2.0", + "mocha-lcov-reporter": "^1.3.0", + "nyc": "^15.1.0", + "rollup": "^2.8.2", + "seedrandom": "^2.4.4", + "sharp": "^0.22.1", + "shx": "0.3.2", + "sinon": "^7.2.7", + "terser": "^5.3.7", + "ts-node": "^9.0.0", + "tsconfig-paths": "^3.9.0", + "tslint": "^6.1.3", + "tslint-no-circular-imports": "^0.7.0", + "typescript": "^3", + "yarn": "^1.17.3" + }, + "optionalDependencies": { + "@zxing/text-encoding": "~0.9.0" + }, + "collective": { + "type": "opencollective", + "url": "https://opencollective.com/zxing-js", + "logo": "https://opencollective.com/zxing-js/logo.txt" + } } diff --git a/rollup.config.js b/rollup.config.js new file mode 100644 index 00000000..ef2b9a0f --- /dev/null +++ b/rollup.config.js @@ -0,0 +1,18 @@ +import resolve from '@rollup/plugin-node-resolve'; + +export default { + input: 'dist/es2015/index.js', + external: [ + '@zxing/text-encoding', + ], + plugins: [ + resolve(), + ], + context: '(globalThis || global || self || window || undefined)', + output: { + format: 'umd', + name: 'ZXing', + sourcemap: true, + file: 'dist/umd/index.js' + }, +}; diff --git a/src/browser/BrowserCodeReader.ts b/src/browser/BrowserCodeReader.ts index 3c21369b..02001816 100644 --- a/src/browser/BrowserCodeReader.ts +++ b/src/browser/BrowserCodeReader.ts @@ -781,7 +781,7 @@ export class BrowserCodeReader { if (ifNotFound || ifChecksumOrFormat) { // trying again - return setTimeout(() => loop(resolve, reject), this._timeBetweenDecodingAttempts); + return setTimeout(loop, this._timeBetweenDecodingAttempts, resolve, reject); } reject(e); @@ -808,7 +808,7 @@ export class BrowserCodeReader { try { const result = this.decode(element); callbackFn(result, null); - setTimeout(() => loop(), this.timeBetweenScansMillis); + setTimeout(loop, this.timeBetweenScansMillis); } catch (e) { callbackFn(null, e); @@ -818,7 +818,7 @@ export class BrowserCodeReader { if (isChecksumOrFormatError || isNotFound) { // trying again - setTimeout(() => loop(), this._timeBetweenDecodingAttempts); + setTimeout(loop, this._timeBetweenDecodingAttempts); } } diff --git a/src/browser/HTMLCanvasElementLuminanceSource.ts b/src/browser/HTMLCanvasElementLuminanceSource.ts index 735d60bd..fb5f6d98 100644 --- a/src/browser/HTMLCanvasElementLuminanceSource.ts +++ b/src/browser/HTMLCanvasElementLuminanceSource.ts @@ -79,7 +79,7 @@ export class HTMLCanvasElementLuminanceSource extends LuminanceSource { } public crop(left: number /*int*/, top: number /*int*/, width: number /*int*/, height: number /*int*/): LuminanceSource { - this.crop(left, top, width, height); + super.crop(left, top, width, height); return this; } diff --git a/src/core/aztec/decoder/Decoder.ts b/src/core/aztec/decoder/Decoder.ts index 1e8b68d4..7d891cae 100644 --- a/src/core/aztec/decoder/Decoder.ts +++ b/src/core/aztec/decoder/Decoder.ts @@ -22,7 +22,7 @@ import GenericGF from '../../common/reedsolomon/GenericGF'; import ReedSolomonDecoder from '../../common/reedsolomon/ReedSolomonDecoder'; import IllegalStateException from '../../IllegalStateException'; import FormatException from '../../FormatException'; -import { StringUtils } from '../../..'; +import StringUtils from '../../common/StringUtils'; import Integer from '../../util/Integer'; import { int } from '../../../customTypings'; diff --git a/src/core/datamatrix/detector/Detector.ts b/src/core/datamatrix/detector/Detector.ts index 816c889d..ff6c133c 100644 --- a/src/core/datamatrix/detector/Detector.ts +++ b/src/core/datamatrix/detector/Detector.ts @@ -1,9 +1,9 @@ import BitMatrix from '../../common/BitMatrix'; -import MathUtils from '../../common/detector/MathUtils'; import WhiteRectangleDetector from '../../common/detector/WhiteRectangleDetector'; import DetectorResult from '../../common/DetectorResult'; import GridSamplerInstance from '../../common/GridSamplerInstance'; import NotFoundException from '../../NotFoundException'; +import { float, int } from '../../../customTypings'; import ResultPoint from '../../ResultPoint'; @@ -36,7 +36,7 @@ export default class Detector { constructor(image: BitMatrix) { this.image = image; - this.rectangleDetector = new WhiteRectangleDetector(image); + this.rectangleDetector = new WhiteRectangleDetector(this.image); } /** @@ -47,307 +47,305 @@ export default class Detector { */ public detect(): DetectorResult { - const cornerPoints = this.rectangleDetector.detect(); - const pointA = cornerPoints[0]; - const pointB = cornerPoints[1]; - const pointC = cornerPoints[2]; - const pointD = cornerPoints[3]; - - // Point A and D are across the diagonal from one another, - // as are B and C. Figure out which are the solid black lines - // by counting transitions - const transitions: any[] = []; - transitions.push(this.transitionsBetween(pointA, pointB)); - transitions.push(this.transitionsBetween(pointA, pointC)); - transitions.push(this.transitionsBetween(pointB, pointD)); - transitions.push(this.transitionsBetween(pointC, pointD)); - transitions.sort(ResultPointsAndTransitions.resultPointsAndTransitionsComparator); - - // Sort by number of transitions. First two will be the two solid sides; last two - // will be the two alternating black/white sides - const lSideOne = transitions[0]; - const lSideTwo = transitions[1]; - - // Figure out which point is their intersection by tallying up the number of times we see the - // endpoints in the four endpoints. One will show up twice. - const pointCount = new Map(); - Detector.increment(pointCount, lSideOne.getFrom()); - Detector.increment(pointCount, lSideOne.getTo()); - Detector.increment(pointCount, lSideTwo.getFrom()); - Detector.increment(pointCount, lSideTwo.getTo()); - - let maybeTopLeft: ResultPoint | null = null; - let bottomLeft: ResultPoint | null = null; - let maybeBottomRight: ResultPoint | null = null; - for (let [point, value] of Array.from(pointCount.entries())) { - if (value === 2) { - bottomLeft = point; // this is definitely the bottom left, then -- end of two L sides - } else { - // Otherwise it's either top left or bottom right -- just assign the two arbitrarily now - if (maybeTopLeft == null) { - maybeTopLeft = point; - } else { - maybeBottomRight = point; - } - } - } - if (maybeTopLeft == null || bottomLeft == null || maybeBottomRight == null) { - throw new NotFoundException(); - } + const cornerPoints = this.rectangleDetector.detect(); - // Bottom left is correct but top left and bottom right might be switched - const corners = [maybeTopLeft, bottomLeft, maybeBottomRight]; - // Use the dot product trick to sort them out - ResultPoint.orderBestPatterns(corners); - - // Now we know which is which: - const bottomRight = corners[0]; - bottomLeft = corners[1]; - const topLeft = corners[2]; - - // Which point didn't we find in relation to the "L" sides? that's the top right corner - let topRight; - if (!pointCount.has(pointA)) { - topRight = pointA; - } else if (!pointCount.has(pointB)) { - topRight = pointB; - } else if (!pointCount.has(pointC)) { - topRight = pointC; - } else { - topRight = pointD; + let points = this.detectSolid1(cornerPoints); + points = this.detectSolid2(points); + points[3] = this.correctTopRight(points); + if (!points[3]) { + throw new NotFoundException(); } + points = this.shiftToModuleCenter(points); - // Next determine the dimension by tracing along the top or right side and counting black/white - // transitions. Since we start inside a black module, we should see a number of transitions - // equal to 1 less than the code dimension. Well, actually 2 less, because we are going to - // end on a black module: - - // The top right point is actually the corner of a module, which is one of the two black modules - // adjacent to the white module at the top right. Tracing to that corner from either the top left - // or bottom right should work here. - - let dimensionTop = this.transitionsBetween(topLeft, topRight).getTransitions(); - let dimensionRight = this.transitionsBetween(bottomRight, topRight).getTransitions(); + const topLeft = points[0]; + const bottomLeft = points[1]; + const bottomRight = points[2]; + const topRight = points[3]; + let dimensionTop = this.transitionsBetween(topLeft, topRight) + 1; + let dimensionRight = this.transitionsBetween(bottomRight, topRight) + 1; if ((dimensionTop & 0x01) === 1) { - // it can't be odd, so, round... up? - dimensionTop++; + dimensionTop += 1; } - dimensionTop += 2; - if ((dimensionRight & 0x01) === 1) { - // it can't be odd, so, round... up? - dimensionRight++; + dimensionRight += 1; } - dimensionRight += 2; - let bits: BitMatrix; - let correctedTopRight: ResultPoint; - - // Rectangular symbols are 6x16, 6x28, 10x24, 10x32, 14x32, or 14x44. If one dimension is more - // than twice the other, it's certainly rectangular, but to cut a bit more slack we accept it as - // rectangular if the bigger side is at least 7/4 times the other: - if (4 * dimensionTop >= 7 * dimensionRight || 4 * dimensionRight >= 7 * dimensionTop) { - // The matrix is rectangular - - correctedTopRight = - this.correctTopRightRectangular(bottomLeft, bottomRight, topLeft, topRight, dimensionTop, dimensionRight); - if (correctedTopRight == null) { - correctedTopRight = topRight; - } + if (4 * dimensionTop < 7 * dimensionRight && 4 * dimensionRight < 7 * dimensionTop) { + // The matrix is square + dimensionTop = dimensionRight = Math.max(dimensionTop, dimensionRight); + } - dimensionTop = this.transitionsBetween(topLeft, correctedTopRight).getTransitions(); - dimensionRight = this.transitionsBetween(bottomRight, correctedTopRight).getTransitions(); + let bits = Detector.sampleGrid(this.image, + topLeft, + bottomLeft, + bottomRight, + topRight, + dimensionTop, + dimensionRight); - if ((dimensionTop & 0x01) === 1) { - // it can't be odd, so, round... up? - dimensionTop++; - } + return new DetectorResult(bits, [topLeft, bottomLeft, bottomRight, topRight]); + } - if ((dimensionRight & 0x01) === 1) { - // it can't be odd, so, round... up? - dimensionRight++; - } + private static shiftPoint(point: ResultPoint, to: ResultPoint, div: float): ResultPoint { + let x = (to.getX() - point.getX()) / (div + 1); + let y = (to.getY() - point.getY()) / (div + 1); + return new ResultPoint(point.getX() + x, point.getY() + y); + } - bits = Detector.sampleGrid(this.image, topLeft, bottomLeft, bottomRight, correctedTopRight, dimensionTop, dimensionRight); + private static moveAway(point: ResultPoint, fromX: float, fromY: float): ResultPoint { + let x = point.getX(); + let y = point.getY(); + if (x < fromX) { + x -= 1; } else { - // The matrix is square - - const dimension = Math.min(dimensionRight, dimensionTop); - // correct top right point to match the white module - correctedTopRight = this.correctTopRight(bottomLeft, bottomRight, topLeft, topRight, dimension); - if (correctedTopRight == null) { - correctedTopRight = topRight; - } - - // Redetermine the dimension using the corrected top right point - let dimensionCorrected = Math.max(this.transitionsBetween(topLeft, correctedTopRight).getTransitions(), - this.transitionsBetween(bottomRight, correctedTopRight).getTransitions()); - dimensionCorrected++; - if ((dimensionCorrected & 0x01) === 1) { - dimensionCorrected++; - } + x += 1; + } - bits = Detector.sampleGrid(this.image, - topLeft, - bottomLeft, - bottomRight, - correctedTopRight, - dimensionCorrected, - dimensionCorrected); + if (y < fromY) { + y -= 1; + } else { + y += 1; } - return new DetectorResult(bits, [topLeft, bottomLeft, bottomRight, correctedTopRight]); + + return new ResultPoint(x, y); } /** - * Calculates the position of the white top right module using the output of the rectangle detector - * for a rectangular matrix + * Detect a solid side which has minimum transition. */ - private correctTopRightRectangular(bottomLeft: ResultPoint, - bottomRight: ResultPoint, - topLeft: ResultPoint, - topRight: ResultPoint, - dimensionTop: number, - dimensionRight: number): ResultPoint { - - let corr = Detector.distance(bottomLeft, bottomRight) / dimensionTop; - let norm = Detector.distance(topLeft, topRight); - let cos = (topRight.getX() - topLeft.getX()) / norm; - let sin = (topRight.getY() - topLeft.getY()) / norm; - - const c1 = new ResultPoint(topRight.getX() + corr * cos, topRight.getY() + corr * sin); - - corr = Detector.distance(bottomLeft, topLeft) / dimensionRight; - norm = Detector.distance(bottomRight, topRight); - cos = (topRight.getX() - bottomRight.getX()) / norm; - sin = (topRight.getY() - bottomRight.getY()) / norm; - - const c2 = new ResultPoint(topRight.getX() + corr * cos, topRight.getY() + corr * sin); - - if (!this.isValid(c1)) { - if (this.isValid(c2)) { - return c2; - } - return null; + private detectSolid1(cornerPoints: ResultPoint[]): ResultPoint[] { + // 0 2 + // 1 3 + let pointA = cornerPoints[0]; + let pointB = cornerPoints[1]; + let pointC = cornerPoints[3]; + let pointD = cornerPoints[2]; + + let trAB = this.transitionsBetween(pointA, pointB); + let trBC = this.transitionsBetween(pointB, pointC); + let trCD = this.transitionsBetween(pointC, pointD); + let trDA = this.transitionsBetween(pointD, pointA); + + // 0..3 + // : : + // 1--2 + let min = trAB; + let points = [pointD, pointA, pointB, pointC]; + if (min > trBC) { + min = trBC; + points[0] = pointA; + points[1] = pointB; + points[2] = pointC; + points[3] = pointD; } - if (!this.isValid(c2)) { - return c1; + if (min > trCD) { + min = trCD; + points[0] = pointB; + points[1] = pointC; + points[2] = pointD; + points[3] = pointA; } - - const l1 = Math.abs(dimensionTop - this.transitionsBetween(topLeft, c1).getTransitions()) + - Math.abs(dimensionRight - this.transitionsBetween(bottomRight, c1).getTransitions()); - const l2 = Math.abs(dimensionTop - this.transitionsBetween(topLeft, c2).getTransitions()) + - Math.abs(dimensionRight - this.transitionsBetween(bottomRight, c2).getTransitions()); - - if (l1 <= l2) { - return c1; + if (min > trDA) { + points[0] = pointC; + points[1] = pointD; + points[2] = pointA; + points[3] = pointB; } - return c2; + return points; } /** - * Calculates the position of the white top right module using the output of the rectangle detector - * for a square matrix + * Detect a second solid side next to first solid side. */ - private correctTopRight(bottomLeft: ResultPoint, - bottomRight: ResultPoint, - topLeft: ResultPoint, - topRight: ResultPoint, - dimension: number): ResultPoint { - - let corr = Detector.distance(bottomLeft, bottomRight) / dimension; - let norm = Detector.distance(topLeft, topRight); - let cos = (topRight.getX() - topLeft.getX()) / norm; - let sin = (topRight.getY() - topLeft.getY()) / norm; - - const c1 = new ResultPoint(topRight.getX() + corr * cos, topRight.getY() + corr * sin); - - corr = Detector.distance(bottomLeft, topLeft) / dimension; - norm = Detector.distance(bottomRight, topRight); - cos = (topRight.getX() - bottomRight.getX()) / norm; - sin = (topRight.getY() - bottomRight.getY()) / norm; + private detectSolid2(points: ResultPoint[]): ResultPoint[] { + // A..D + // : : + // B--C + let pointA = points[0]; + let pointB = points[1]; + let pointC = points[2]; + let pointD = points[3]; + + // Transition detection on the edge is not stable. + // To safely detect, shift the points to the module center. + let tr = this.transitionsBetween(pointA, pointD); + let pointBs = Detector.shiftPoint(pointB, pointC, (tr + 1) * 4); + let pointCs = Detector.shiftPoint(pointC, pointB, (tr + 1) * 4); + let trBA = this.transitionsBetween(pointBs, pointA); + let trCD = this.transitionsBetween(pointCs, pointD); + + // 0..3 + // | : + // 1--2 + if (trBA < trCD) { + // solid sides: A-B-C + points[0] = pointA; + points[1] = pointB; + points[2] = pointC; + points[3] = pointD; + } else { + // solid sides: B-C-D + points[0] = pointB; + points[1] = pointC; + points[2] = pointD; + points[3] = pointA; + } - const c2 = new ResultPoint(topRight.getX() + corr * cos, topRight.getY() + corr * sin); + return points; + } - if (!this.isValid(c1)) { - if (this.isValid(c2)) { - return c2; + /** + * Calculates the corner position of the white top right module. + */ + private correctTopRight(points: ResultPoint[]): ResultPoint { + // A..D + // | : + // B--C + let pointA = points[0]; + let pointB = points[1]; + let pointC = points[2]; + let pointD = points[3]; + + // shift points for safe transition detection. + let trTop = this.transitionsBetween(pointA, pointD); + let trRight = this.transitionsBetween(pointB, pointD); + let pointAs = Detector.shiftPoint(pointA, pointB, (trRight + 1) * 4); + let pointCs = Detector.shiftPoint(pointC, pointB, (trTop + 1) * 4); + + trTop = this.transitionsBetween(pointAs, pointD); + trRight = this.transitionsBetween(pointCs, pointD); + + let candidate1 = new ResultPoint( + pointD.getX() + (pointC.getX() - pointB.getX()) / (trTop + 1), + pointD.getY() + (pointC.getY() - pointB.getY()) / (trTop + 1)); + let candidate2 = new ResultPoint( + pointD.getX() + (pointA.getX() - pointB.getX()) / (trRight + 1), + pointD.getY() + (pointA.getY() - pointB.getY()) / (trRight + 1)); + + if (!this.isValid(candidate1)) { + if (this.isValid(candidate2)) { + return candidate2; } return null; } - if (!this.isValid(c2)) { - return c1; + if (!this.isValid(candidate2)) { + return candidate1; } - const l1 = Math.abs(this.transitionsBetween(topLeft, c1).getTransitions() - - this.transitionsBetween(bottomRight, c1).getTransitions()); - const l2 = Math.abs(this.transitionsBetween(topLeft, c2).getTransitions() - - this.transitionsBetween(bottomRight, c2).getTransitions()); + let sumc1 = this.transitionsBetween(pointAs, candidate1) + this.transitionsBetween(pointCs, candidate1); + let sumc2 = this.transitionsBetween(pointAs, candidate2) + this.transitionsBetween(pointCs, candidate2); - return l1 <= l2 ? c1 : c2; + if (sumc1 > sumc2) { + return candidate1; + } else { + return candidate2; + } } - private isValid(p: ResultPoint): boolean { - return p.getX() >= 0 && p.getX() < this.image.getWidth() && p.getY() > 0 && p.getY() < this.image.getHeight(); - } + /** + * Shift the edge points to the module center. + */ + private shiftToModuleCenter(points: ResultPoint[]): ResultPoint[] { + // A..D + // | : + // B--C + let pointA = points[0]; + let pointB = points[1]; + let pointC = points[2]; + let pointD = points[3]; + + // calculate pseudo dimensions + let dimH = this.transitionsBetween(pointA, pointD) + 1; + let dimV = this.transitionsBetween(pointC, pointD) + 1; + + // shift points for safe dimension detection + let pointAs = Detector.shiftPoint(pointA, pointB, dimV * 4); + let pointCs = Detector.shiftPoint(pointC, pointB, dimH * 4); + + // calculate more precise dimensions + dimH = this.transitionsBetween(pointAs, pointD) + 1; + dimV = this.transitionsBetween(pointCs, pointD) + 1; + if ((dimH & 0x01) === 1) { + dimH += 1; + } + if ((dimV & 0x01) === 1) { + dimV += 1; + } - private static distance(a: ResultPoint, b: ResultPoint): number { - return MathUtils.round(ResultPoint.distance(a, b)); + // WhiteRectangleDetector returns points inside of the rectangle. + // I want points on the edges. + let centerX = (pointA.getX() + pointB.getX() + pointC.getX() + pointD.getX()) / 4; + let centerY = (pointA.getY() + pointB.getY() + pointC.getY() + pointD.getY()) / 4; + pointA = Detector.moveAway(pointA, centerX, centerY); + pointB = Detector.moveAway(pointB, centerX, centerY); + pointC = Detector.moveAway(pointC, centerX, centerY); + pointD = Detector.moveAway(pointD, centerX, centerY); + + let pointBs: ResultPoint; + let pointDs: ResultPoint; + + // shift points to the center of each modules + pointAs = Detector.shiftPoint(pointA, pointB, dimV * 4); + pointAs = Detector.shiftPoint(pointAs, pointD, dimH * 4); + pointBs = Detector.shiftPoint(pointB, pointA, dimV * 4); + pointBs = Detector.shiftPoint(pointBs, pointC, dimH * 4); + pointCs = Detector.shiftPoint(pointC, pointD, dimV * 4); + pointCs = Detector.shiftPoint(pointCs, pointB, dimH * 4); + pointDs = Detector.shiftPoint(pointD, pointC, dimV * 4); + pointDs = Detector.shiftPoint(pointDs, pointA, dimH * 4); + + return [pointAs, pointBs, pointCs, pointDs]; } - /** - * Increments the Integer associated with a key by one. - */ - private static increment(table: Map, key: ResultPoint): void { - const value = table.get(key); - table.set(key, value == null ? 1 : value + 1); + private isValid(p: ResultPoint): boolean { + return p.getX() >= 0 && p.getX() < this.image.getWidth() && p.getY() > 0 && p.getY() < this.image.getHeight(); } private static sampleGrid(image: BitMatrix, - topLeft: ResultPoint, - bottomLeft: ResultPoint, - bottomRight: ResultPoint, - topRight: ResultPoint, - dimensionX: number, - dimensionY: number): BitMatrix { + topLeft: ResultPoint, + bottomLeft: ResultPoint, + bottomRight: ResultPoint, + topRight: ResultPoint, + dimensionX: int, + dimensionY: int): BitMatrix { const sampler = GridSamplerInstance.getInstance(); return sampler.sampleGrid(image, - dimensionX, - dimensionY, - 0.5, - 0.5, - dimensionX - 0.5, - 0.5, - dimensionX - 0.5, - dimensionY - 0.5, - 0.5, - dimensionY - 0.5, - topLeft.getX(), - topLeft.getY(), - topRight.getX(), - topRight.getY(), - bottomRight.getX(), - bottomRight.getY(), - bottomLeft.getX(), - bottomLeft.getY() - ); + dimensionX, + dimensionY, + 0.5, + 0.5, + dimensionX - 0.5, + 0.5, + dimensionX - 0.5, + dimensionY - 0.5, + 0.5, + dimensionY - 0.5, + topLeft.getX(), + topLeft.getY(), + topRight.getX(), + topRight.getY(), + bottomRight.getX(), + bottomRight.getY(), + bottomLeft.getX(), + bottomLeft.getY()); } /** * Counts the number of black/white transitions between two points, using something like Bresenham's algorithm. */ - private transitionsBetween(from: ResultPoint, to: ResultPoint): ResultPointsAndTransitions { + private transitionsBetween(from: ResultPoint, to: ResultPoint): int { // See QR Code Detector, sizeOfBlackWhiteBlackRun() - let fromX = from.getX() | 0; - let fromY = from.getY() | 0; - let toX = to.getX() | 0; - let toY = to.getY() | 0; - const steep = Math.abs(toY - fromY) > Math.abs(toX - fromX); + let fromX = Math.trunc(from.getX()); + let fromY = Math.trunc(from.getY()); + let toX = Math.trunc(to.getX()); + let toY = Math.trunc(to.getY()); + let steep: boolean = Math.abs(toY - fromY) > Math.abs(toX - fromX); if (steep) { let temp = fromX; fromX = fromY; @@ -357,15 +355,15 @@ export default class Detector { toY = temp; } - const dx = Math.abs(toX - fromX); - const dy = Math.abs(toY - fromY); + let dx = Math.abs(toX - fromX); + let dy = Math.abs(toY - fromY); let error = -dx / 2; - const ystep = fromY < toY ? 1 : -1; - const xstep = fromX < toX ? 1 : -1; + let ystep = fromY < toY ? 1 : -1; + let xstep = fromX < toX ? 1 : -1; let transitions = 0; - let inBlack = this.image.get(steep ? fromY : fromX, steep ? fromX : fromY); - for (let x = fromX, y = fromY; x !== toX; x += xstep) { - const isBlack = this.image.get(steep ? y : x, steep ? x : y); + let inBlack: boolean = this.image.get(steep ? fromY : fromX, steep ? fromX : fromY); + for (let x: int = fromX, y = fromY; x !== toX; x += xstep) { + let isBlack: boolean = this.image.get(steep ? y : x, steep ? x : y); if (isBlack !== inBlack) { transitions++; inBlack = isBlack; @@ -379,48 +377,6 @@ export default class Detector { error -= dx; } } - return new ResultPointsAndTransitions(from, to, transitions); - } - - /** - * Simply encapsulates two points and a number of transitions between them. - */ - - /** - * Orders ResultPointsAndTransitions by number of transitions, ascending. - */ -} - -class ResultPointsAndTransitions { - - private from: ResultPoint; - private to: ResultPoint; - private transitions: number; - - constructor(from: ResultPoint, to: ResultPoint, transitions: number) { - this.from = from; - this.to = to; - this.transitions = transitions; - } - - getFrom(): ResultPoint { - return this.from; - } - - getTo(): ResultPoint { - return this.to; - } - - getTransitions(): number { - return this.transitions; - } - - // @Override - public toString() { - return this.from + '/' + this.to + '/' + this.transitions; - } - - public static resultPointsAndTransitionsComparator(o1: ResultPointsAndTransitions, o2: ResultPointsAndTransitions): number { - return o1.getTransitions() - o2.getTransitions(); + return transitions; } } diff --git a/src/core/oned/AbstractUPCEANReader.ts b/src/core/oned/AbstractUPCEANReader.ts index 962332e9..9cdcac78 100644 --- a/src/core/oned/AbstractUPCEANReader.ts +++ b/src/core/oned/AbstractUPCEANReader.ts @@ -21,6 +21,7 @@ import Result from '../Result'; import OneDReader from './OneDReader'; import NotFoundException from '../NotFoundException'; import FormatException from '../FormatException'; +import { int } from 'src/customTypings'; /** *

Encapsulates functionality and implementation that is common to UPC and EAN families @@ -40,36 +41,36 @@ export default abstract class AbstractUPCEANReader extends OneDReader { /** * Start/end guard pattern. */ - public static START_END_PATTERN: number[] = [1, 1, 1]; + public static START_END_PATTERN: Int32Array = Int32Array.from([1, 1, 1]); /** * Pattern marking the middle of a UPC/EAN pattern, separating the two halves. */ - public static MIDDLE_PATTERN: number[] = [1, 1, 1, 1, 1]; + public static MIDDLE_PATTERN: Int32Array = Int32Array.from([1, 1, 1, 1, 1]); /** * end guard pattern. */ - public static END_PATTERN: number[] = [1, 1, 1, 1, 1, 1]; + public static END_PATTERN: Int32Array = Int32Array.from([1, 1, 1, 1, 1, 1]); /** * "Odd", or "L" patterns used to encode UPC/EAN digits. */ - public static L_PATTERNS: number[][] = [ - [3, 2, 1, 1], // 0 - [2, 2, 2, 1], // 1 - [2, 1, 2, 2], // 2 - [1, 4, 1, 1], // 3 - [1, 1, 3, 2], // 4 - [1, 2, 3, 1], // 5 - [1, 1, 1, 4], // 6 - [1, 3, 1, 2], // 7 - [1, 2, 1, 3], // 8 - [3, 1, 1, 2], // 9 + public static L_PATTERNS: Int32Array[] = [ + Int32Array.from([3, 2, 1, 1]), // 0 + Int32Array.from([2, 2, 2, 1]), // 1 + Int32Array.from([2, 1, 2, 2]), // 2 + Int32Array.from([1, 4, 1, 1]), // 3 + Int32Array.from([1, 1, 3, 2]), // 4 + Int32Array.from([1, 2, 3, 1]), // 5 + Int32Array.from([1, 1, 1, 4]), // 6 + Int32Array.from([1, 3, 1, 2]), // 7 + Int32Array.from([1, 2, 1, 3]), // 8 + Int32Array.from([3, 1, 1, 2]), // 9 ]; /** * As above but also including the "even", or "G" patterns used to encode UPC/EAN digits. */ - public static L_AND_G_PATTERNS: number[][]; + public static L_AND_G_PATTERNS: Int32Array[]; protected decodeRowStringBuffer = ''; // private final UPCEANExtensionSupport extensionReader; @@ -84,13 +85,13 @@ export default abstract class AbstractUPCEANReader extends OneDReader { } */ - static findStartGuardPattern(row: BitArray): number[] { + static findStartGuardPattern(row: BitArray): Int32Array { let foundStart = false; - let startRange: number[] = null; + let startRange: Int32Array; let nextStart = 0; - let counters = [0, 0, 0]; + let counters = Int32Array.from([0, 0, 0]); while (!foundStart) { - counters = [0, 0, 0]; + counters = Int32Array.from([0, 0, 0]); startRange = AbstractUPCEANReader.findGuardPattern(row, nextStart, false, this.START_END_PATTERN, counters); let start = startRange[0]; nextStart = startRange[1]; @@ -122,7 +123,7 @@ export default abstract class AbstractUPCEANReader extends OneDReader { for (let i = length - 1; i >= 0; i -= 2) { let digit = s.charAt(i).charCodeAt(0) - '0'.charCodeAt(0); if (digit < 0 || digit > 9) { - throw new FormatException(); + throw new FormatException(); } sum += digit; } @@ -137,11 +138,34 @@ export default abstract class AbstractUPCEANReader extends OneDReader { return (1000 - sum) % 10; } - static decodeEnd(row: BitArray, endStart: number): number[] { - return AbstractUPCEANReader.findGuardPattern(row, endStart, false, AbstractUPCEANReader.START_END_PATTERN, new Array(AbstractUPCEANReader.START_END_PATTERN.length).fill(0)); + static decodeEnd(row: BitArray, endStart: number): Int32Array { + return AbstractUPCEANReader.findGuardPattern(row, endStart, false, AbstractUPCEANReader.START_END_PATTERN, new Int32Array(AbstractUPCEANReader.START_END_PATTERN.length).fill(0)); + } + + /** + * @throws NotFoundException + */ + static findGuardPatternWithoutCounters( + row: BitArray, + rowOffset: int, + whiteFirst: boolean, + pattern: Int32Array, + ): Int32Array { + return this.findGuardPattern(row, rowOffset, whiteFirst, pattern, new Int32Array(pattern.length)); } - static findGuardPattern(row: BitArray, rowOffset: number, whiteFirst: boolean, pattern: number[], counters: number[]) { + /** + * @param row row of black/white values to search + * @param rowOffset position to start search + * @param whiteFirst if true, indicates that the pattern specifies white/black/white/... + * pixel counts, otherwise, it is interpreted as black/white/black/... + * @param pattern pattern of counts of number of black and white pixels that are being + * searched for as a pattern + * @param counters array of counters, as long as pattern, to re-use + * @return start/end horizontal offset of guard pattern, as an array of two ints + * @throws NotFoundException if pattern is not found + */ + static findGuardPattern(row: BitArray, rowOffset: number, whiteFirst: boolean, pattern: Int32Array, counters: Int32Array): Int32Array { let width = row.getSize(); rowOffset = whiteFirst ? row.getNextUnset(rowOffset) : row.getNextSet(rowOffset); let counterPosition = 0; @@ -154,11 +178,11 @@ export default abstract class AbstractUPCEANReader extends OneDReader { } else { if (counterPosition === patternLength - 1) { if (OneDReader.patternMatchVariance(counters, pattern, AbstractUPCEANReader.MAX_INDIVIDUAL_VARIANCE) < AbstractUPCEANReader.MAX_AVG_VARIANCE) { - return [patternStart, x]; + return Int32Array.from([patternStart, x]); } patternStart += counters[0] + counters[1]; - let slice = counters.slice(2, counters.length); + let slice = counters.slice(2, counters.length - 1); for (let i = 0; i < counterPosition - 1; i++) { counters[i] = slice[i]; } @@ -176,7 +200,7 @@ export default abstract class AbstractUPCEANReader extends OneDReader { throw new NotFoundException(); } - static decodeDigit(row: BitArray, counters: number[], rowOffset: number, patterns: number[][]) { + static decodeDigit(row: BitArray, counters: Int32Array, rowOffset: int, patterns: Int32Array[]) { this.recordPattern(row, rowOffset, counters); let bestVariance = this.MAX_AVG_VARIANCE; let bestMatch = -1; @@ -213,5 +237,5 @@ export default abstract class AbstractUPCEANReader extends OneDReader { * @return horizontal offset of first pixel after the "middle" that was decoded * @throws NotFoundException if decoding could not complete successfully */ - public abstract decodeMiddle(row: BitArray, startRange: number[], resultString: string); + public abstract decodeMiddle(row: BitArray, startRange: Int32Array, resultString: /*StringBuilder*/string); } diff --git a/src/core/oned/Code128Reader.ts b/src/core/oned/Code128Reader.ts index a0b56921..72c5bb68 100644 --- a/src/core/oned/Code128Reader.ts +++ b/src/core/oned/Code128Reader.ts @@ -37,114 +37,115 @@ import OneDReader from './OneDReader'; */ export default class Code128Reader extends OneDReader { - private static CODE_PATTERNS: number[][] = [ - [2, 1, 2, 2, 2, 2], - [2, 2, 2, 1, 2, 2], - [2, 2, 2, 2, 2, 1], - [1, 2, 1, 2, 2, 3], - [1, 2, 1, 3, 2, 2], - [1, 3, 1, 2, 2, 2], - [1, 2, 2, 2, 1, 3], - [1, 2, 2, 3, 1, 2], - [1, 3, 2, 2, 1, 2], - [2, 2, 1, 2, 1, 3], - [2, 2, 1, 3, 1, 2], - [2, 3, 1, 2, 1, 2], - [1, 1, 2, 2, 3, 2], - [1, 2, 2, 1, 3, 2], - [1, 2, 2, 2, 3, 1], - [1, 1, 3, 2, 2, 2], - [1, 2, 3, 1, 2, 2], - [1, 2, 3, 2, 2, 1], - [2, 2, 3, 2, 1, 1], - [2, 2, 1, 1, 3, 2], - [2, 2, 1, 2, 3, 1], - [2, 1, 3, 2, 1, 2], - [2, 2, 3, 1, 1, 2], - [3, 1, 2, 1, 3, 1], - [3, 1, 1, 2, 2, 2], - [3, 2, 1, 1, 2, 2], - [3, 2, 1, 2, 2, 1], - [3, 1, 2, 2, 1, 2], - [3, 2, 2, 1, 1, 2], - [3, 2, 2, 2, 1, 1], - [2, 1, 2, 1, 2, 3], - [2, 1, 2, 3, 2, 1], - [2, 3, 2, 1, 2, 1], - [1, 1, 1, 3, 2, 3], - [1, 3, 1, 1, 2, 3], - [1, 3, 1, 3, 2, 1], - [1, 1, 2, 3, 1, 3], - [1, 3, 2, 1, 1, 3], - [1, 3, 2, 3, 1, 1], - [2, 1, 1, 3, 1, 3], - [2, 3, 1, 1, 1, 3], - [2, 3, 1, 3, 1, 1], - [1, 1, 2, 1, 3, 3], - [1, 1, 2, 3, 3, 1], - [1, 3, 2, 1, 3, 1], - [1, 1, 3, 1, 2, 3], - [1, 1, 3, 3, 2, 1], - [1, 3, 3, 1, 2, 1], - [3, 1, 3, 1, 2, 1], - [2, 1, 1, 3, 3, 1], - [2, 3, 1, 1, 3, 1], - [2, 1, 3, 1, 1, 3], - [2, 1, 3, 3, 1, 1], - [2, 1, 3, 1, 3, 1], - [3, 1, 1, 1, 2, 3], - [3, 1, 1, 3, 2, 1], - [3, 3, 1, 1, 2, 1], - [3, 1, 2, 1, 1, 3], - [3, 1, 2, 3, 1, 1], - [3, 3, 2, 1, 1, 1], - [3, 1, 4, 1, 1, 1], - [2, 2, 1, 4, 1, 1], - [4, 3, 1, 1, 1, 1], - [1, 1, 1, 2, 2, 4], - [1, 1, 1, 4, 2, 2], - [1, 2, 1, 1, 2, 4], - [1, 2, 1, 4, 2, 1], - [1, 4, 1, 1, 2, 2], - [1, 4, 1, 2, 2, 1], - [1, 1, 2, 2, 1, 4], - [1, 1, 2, 4, 1, 2], - [1, 2, 2, 1, 1, 4], - [1, 2, 2, 4, 1, 1], - [1, 4, 2, 1, 1, 2], - [1, 4, 2, 2, 1, 1], - [2, 4, 1, 2, 1, 1], - [2, 2, 1, 1, 1, 4], - [4, 1, 3, 1, 1, 1], - [2, 4, 1, 1, 1, 2], - [1, 3, 4, 1, 1, 1], - [1, 1, 1, 2, 4, 2], - [1, 2, 1, 1, 4, 2], - [1, 2, 1, 2, 4, 1], - [1, 1, 4, 2, 1, 2], - [1, 2, 4, 1, 1, 2], - [1, 2, 4, 2, 1, 1], - [4, 1, 1, 2, 1, 2], - [4, 2, 1, 1, 1, 2], - [4, 2, 1, 2, 1, 1], - [2, 1, 2, 1, 4, 1], - [2, 1, 4, 1, 2, 1], - [4, 1, 2, 1, 2, 1], - [1, 1, 1, 1, 4, 3], - [1, 1, 1, 3, 4, 1], - [1, 3, 1, 1, 4, 1], - [1, 1, 4, 1, 1, 3], - [1, 1, 4, 3, 1, 1], - [4, 1, 1, 1, 1, 3], - [4, 1, 1, 3, 1, 1], - [1, 1, 3, 1, 4, 1], - [1, 1, 4, 1, 3, 1], - [3, 1, 1, 1, 4, 1], - [4, 1, 1, 1, 3, 1], - [2, 1, 1, 4, 1, 2], - [2, 1, 1, 2, 1, 4], - [2, 1, 1, 2, 3, 2], - [2, 3, 3, 1, 1, 1, 2]]; + private static CODE_PATTERNS: Int32Array[] = [ + Int32Array.from([2, 1, 2, 2, 2, 2]), + Int32Array.from([2, 2, 2, 1, 2, 2]), + Int32Array.from([2, 2, 2, 2, 2, 1]), + Int32Array.from([1, 2, 1, 2, 2, 3]), + Int32Array.from([1, 2, 1, 3, 2, 2]), + Int32Array.from([1, 3, 1, 2, 2, 2]), + Int32Array.from([1, 2, 2, 2, 1, 3]), + Int32Array.from([1, 2, 2, 3, 1, 2]), + Int32Array.from([1, 3, 2, 2, 1, 2]), + Int32Array.from([2, 2, 1, 2, 1, 3]), + Int32Array.from([2, 2, 1, 3, 1, 2]), + Int32Array.from([2, 3, 1, 2, 1, 2]), + Int32Array.from([1, 1, 2, 2, 3, 2]), + Int32Array.from([1, 2, 2, 1, 3, 2]), + Int32Array.from([1, 2, 2, 2, 3, 1]), + Int32Array.from([1, 1, 3, 2, 2, 2]), + Int32Array.from([1, 2, 3, 1, 2, 2]), + Int32Array.from([1, 2, 3, 2, 2, 1]), + Int32Array.from([2, 2, 3, 2, 1, 1]), + Int32Array.from([2, 2, 1, 1, 3, 2]), + Int32Array.from([2, 2, 1, 2, 3, 1]), + Int32Array.from([2, 1, 3, 2, 1, 2]), + Int32Array.from([2, 2, 3, 1, 1, 2]), + Int32Array.from([3, 1, 2, 1, 3, 1]), + Int32Array.from([3, 1, 1, 2, 2, 2]), + Int32Array.from([3, 2, 1, 1, 2, 2]), + Int32Array.from([3, 2, 1, 2, 2, 1]), + Int32Array.from([3, 1, 2, 2, 1, 2]), + Int32Array.from([3, 2, 2, 1, 1, 2]), + Int32Array.from([3, 2, 2, 2, 1, 1]), + Int32Array.from([2, 1, 2, 1, 2, 3]), + Int32Array.from([2, 1, 2, 3, 2, 1]), + Int32Array.from([2, 3, 2, 1, 2, 1]), + Int32Array.from([1, 1, 1, 3, 2, 3]), + Int32Array.from([1, 3, 1, 1, 2, 3]), + Int32Array.from([1, 3, 1, 3, 2, 1]), + Int32Array.from([1, 1, 2, 3, 1, 3]), + Int32Array.from([1, 3, 2, 1, 1, 3]), + Int32Array.from([1, 3, 2, 3, 1, 1]), + Int32Array.from([2, 1, 1, 3, 1, 3]), + Int32Array.from([2, 3, 1, 1, 1, 3]), + Int32Array.from([2, 3, 1, 3, 1, 1]), + Int32Array.from([1, 1, 2, 1, 3, 3]), + Int32Array.from([1, 1, 2, 3, 3, 1]), + Int32Array.from([1, 3, 2, 1, 3, 1]), + Int32Array.from([1, 1, 3, 1, 2, 3]), + Int32Array.from([1, 1, 3, 3, 2, 1]), + Int32Array.from([1, 3, 3, 1, 2, 1]), + Int32Array.from([3, 1, 3, 1, 2, 1]), + Int32Array.from([2, 1, 1, 3, 3, 1]), + Int32Array.from([2, 3, 1, 1, 3, 1]), + Int32Array.from([2, 1, 3, 1, 1, 3]), + Int32Array.from([2, 1, 3, 3, 1, 1]), + Int32Array.from([2, 1, 3, 1, 3, 1]), + Int32Array.from([3, 1, 1, 1, 2, 3]), + Int32Array.from([3, 1, 1, 3, 2, 1]), + Int32Array.from([3, 3, 1, 1, 2, 1]), + Int32Array.from([3, 1, 2, 1, 1, 3]), + Int32Array.from([3, 1, 2, 3, 1, 1]), + Int32Array.from([3, 3, 2, 1, 1, 1]), + Int32Array.from([3, 1, 4, 1, 1, 1]), + Int32Array.from([2, 2, 1, 4, 1, 1]), + Int32Array.from([4, 3, 1, 1, 1, 1]), + Int32Array.from([1, 1, 1, 2, 2, 4]), + Int32Array.from([1, 1, 1, 4, 2, 2]), + Int32Array.from([1, 2, 1, 1, 2, 4]), + Int32Array.from([1, 2, 1, 4, 2, 1]), + Int32Array.from([1, 4, 1, 1, 2, 2]), + Int32Array.from([1, 4, 1, 2, 2, 1]), + Int32Array.from([1, 1, 2, 2, 1, 4]), + Int32Array.from([1, 1, 2, 4, 1, 2]), + Int32Array.from([1, 2, 2, 1, 1, 4]), + Int32Array.from([1, 2, 2, 4, 1, 1]), + Int32Array.from([1, 4, 2, 1, 1, 2]), + Int32Array.from([1, 4, 2, 2, 1, 1]), + Int32Array.from([2, 4, 1, 2, 1, 1]), + Int32Array.from([2, 2, 1, 1, 1, 4]), + Int32Array.from([4, 1, 3, 1, 1, 1]), + Int32Array.from([2, 4, 1, 1, 1, 2]), + Int32Array.from([1, 3, 4, 1, 1, 1]), + Int32Array.from([1, 1, 1, 2, 4, 2]), + Int32Array.from([1, 2, 1, 1, 4, 2]), + Int32Array.from([1, 2, 1, 2, 4, 1]), + Int32Array.from([1, 1, 4, 2, 1, 2]), + Int32Array.from([1, 2, 4, 1, 1, 2]), + Int32Array.from([1, 2, 4, 2, 1, 1]), + Int32Array.from([4, 1, 1, 2, 1, 2]), + Int32Array.from([4, 2, 1, 1, 1, 2]), + Int32Array.from([4, 2, 1, 2, 1, 1]), + Int32Array.from([2, 1, 2, 1, 4, 1]), + Int32Array.from([2, 1, 4, 1, 2, 1]), + Int32Array.from([4, 1, 2, 1, 2, 1]), + Int32Array.from([1, 1, 1, 1, 4, 3]), + Int32Array.from([1, 1, 1, 3, 4, 1]), + Int32Array.from([1, 3, 1, 1, 4, 1]), + Int32Array.from([1, 1, 4, 1, 1, 3]), + Int32Array.from([1, 1, 4, 3, 1, 1]), + Int32Array.from([4, 1, 1, 1, 1, 3]), + Int32Array.from([4, 1, 1, 3, 1, 1]), + Int32Array.from([1, 1, 3, 1, 4, 1]), + Int32Array.from([1, 1, 4, 1, 3, 1]), + Int32Array.from([3, 1, 1, 1, 4, 1]), + Int32Array.from([4, 1, 1, 1, 3, 1]), + Int32Array.from([2, 1, 1, 4, 1, 2]), + Int32Array.from([2, 1, 1, 2, 1, 4]), + Int32Array.from([2, 1, 1, 2, 3, 2]), + Int32Array.from([2, 3, 3, 1, 1, 1, 2]), + ]; private static MAX_AVG_VARIANCE = 0.25; private static MAX_INDIVIDUAL_VARIANCE = 0.7; @@ -166,15 +167,15 @@ export default class Code128Reader extends OneDReader { private static CODE_START_C = 105; private static CODE_STOP = 106; - private static findStartPattern(row: BitArray): number[] { + private static findStartPattern(row: BitArray): Int32Array { const width = row.getSize(); const rowOffset = row.getNextSet(0); - let counterPosition = 0; - const counters = [0, 0, 0, 0, 0, 0]; - let patternStart = rowOffset; - let isWhite = false; - const patternLength = 6; + let counterPosition = 0; + let counters = Int32Array.from([0, 0, 0, 0, 0, 0]); + let patternStart = rowOffset; + let isWhite = false; + const patternLength = 6; for (let i = rowOffset; i < width; i++) { if (row.get(i) !== isWhite) { @@ -194,11 +195,11 @@ export default class Code128Reader extends OneDReader { // Look for whitespace before start pattern, >= 50% of width of start pattern if (bestMatch >= 0 && row.isRange(Math.max(0, patternStart - (i - patternStart) / 2), patternStart, false)) { - return [patternStart, i, bestMatch]; + return Int32Array.from([patternStart, i, bestMatch]); } patternStart += counters[0] + counters[1]; - counters.splice(0, 2); + counters = counters.slice(2, counters.length - 1); counters[counterPosition - 1] = 0; counters[counterPosition] = 0; counterPosition--; @@ -212,7 +213,7 @@ export default class Code128Reader extends OneDReader { throw new NotFoundException(); } - private static decodeCode(row: BitArray, counters: number[], rowOffset: number): number { + private static decodeCode(row: BitArray, counters: Int32Array, rowOffset: number): number { OneDReader.recordPattern(row, rowOffset, counters); let bestVariance = Code128Reader.MAX_AVG_VARIANCE; // worst variance we'll accept let bestMatch = -1; @@ -264,7 +265,7 @@ export default class Code128Reader extends OneDReader { let lastStart = startPatternInfo[0]; let nextStart = startPatternInfo[1]; - const counters: number[] = [0, 0, 0, 0, 0, 0]; + const counters: Int32Array = Int32Array.from([0, 0, 0, 0, 0, 0]); let lastCode = 0; let code = 0; diff --git a/src/core/oned/Code39Reader.ts b/src/core/oned/Code39Reader.ts index bef1a3aa..4a2c91af 100644 --- a/src/core/oned/Code39Reader.ts +++ b/src/core/oned/Code39Reader.ts @@ -54,7 +54,7 @@ export default class Code39Reader extends OneDReader { private usingCheckDigit: boolean; private extendedMode: boolean; private decodeRowResult: string; - private counters: number[]; + private counters: Int32Array; /** * Creates a reader that assumes all encoded data is data, and does not treat the final @@ -90,7 +90,7 @@ export default class Code39Reader extends OneDReader { this.usingCheckDigit = usingCheckDigit; this.extendedMode = extendedMode; this.decodeRowResult = ''; - this.counters = new Array(9); + this.counters = new Int32Array(9); } public decodeRow(rowNumber: number, row: BitArray, hints?: Map): Result { @@ -170,7 +170,7 @@ export default class Code39Reader extends OneDReader { } - private static findAsteriskPattern(row: BitArray, counters: number[]): number[] { + private static findAsteriskPattern(row: BitArray, counters: Int32Array): number[] { let width = row.getSize(); let rowOffset = row.getNextSet(0); @@ -206,7 +206,7 @@ export default class Code39Reader extends OneDReader { // For efficiency, returns -1 on failure. Not throwing here saved as many as 700 exceptions // per image when using some of our blackbox images. - private static toNarrowWidePattern(counters: number[]): number { + private static toNarrowWidePattern(counters: Int32Array): number { let numCounters = counters.length; let maxNarrowCounter = 0; let wideCounters: number; diff --git a/src/core/oned/EAN13Reader.ts b/src/core/oned/EAN13Reader.ts index afd486fb..6412285e 100644 --- a/src/core/oned/EAN13Reader.ts +++ b/src/core/oned/EAN13Reader.ts @@ -30,14 +30,14 @@ import NotFoundException from '../NotFoundException'; export default class EAN13Reader extends UPCEANReader { private static FIRST_DIGIT_ENCODINGS: number[] = [0x00, 0x0B, 0x0D, 0xE, 0x13, 0x19, 0x1C, 0x15, 0x16, 0x1A]; - private decodeMiddleCounters: number[]; + private decodeMiddleCounters: Int32Array; public constructor() { super(); - this.decodeMiddleCounters = [0, 0, 0, 0]; + this.decodeMiddleCounters = Int32Array.from([0, 0, 0, 0]); } - public decodeMiddle(row: BitArray, startRange: number[], resultString: string) { + public decodeMiddle(row: BitArray, startRange: Int32Array, resultString: string) { let counters = this.decodeMiddleCounters; counters[0] = 0; counters[1] = 0; @@ -61,7 +61,7 @@ export default class EAN13Reader extends UPCEANReader { resultString = EAN13Reader.determineFirstDigit(resultString, lgPatternFound); - let middleRange = UPCEANReader.findGuardPattern(row, rowOffset, true, UPCEANReader.MIDDLE_PATTERN, new Array(UPCEANReader.MIDDLE_PATTERN.length).fill(0)); + let middleRange = UPCEANReader.findGuardPattern(row, rowOffset, true, UPCEANReader.MIDDLE_PATTERN, new Int32Array(UPCEANReader.MIDDLE_PATTERN.length).fill(0)); rowOffset = middleRange[1]; for (let x = 0; x < 6 && rowOffset < end; x++) { diff --git a/src/core/oned/EAN8Reader.ts b/src/core/oned/EAN8Reader.ts index 90d3ac30..c49e55d5 100644 --- a/src/core/oned/EAN8Reader.ts +++ b/src/core/oned/EAN8Reader.ts @@ -25,15 +25,15 @@ import UPCEANReader from './UPCEANReader'; * @author Sean Owen */ export default class EAN8Reader extends UPCEANReader { - private decodeMiddleCounters: number[]; + private decodeMiddleCounters: Int32Array; public constructor() { super(); - this.decodeMiddleCounters = [0, 0, 0, 0]; + this.decodeMiddleCounters = Int32Array.from([0, 0, 0, 0]); } - public decodeMiddle(row: BitArray, startRange: number[], resultString: string) { - let counters = this.decodeMiddleCounters; + public decodeMiddle(row: BitArray, startRange: Int32Array, resultString: string) { + const counters = this.decodeMiddleCounters; counters[0] = 0; counters[1] = 0; counters[2] = 0; @@ -50,7 +50,7 @@ export default class EAN8Reader extends UPCEANReader { } } - let middleRange = UPCEANReader.findGuardPattern(row, rowOffset, true, UPCEANReader.MIDDLE_PATTERN, new Array(UPCEANReader.MIDDLE_PATTERN.length).fill(0)); + let middleRange = UPCEANReader.findGuardPattern(row, rowOffset, true, UPCEANReader.MIDDLE_PATTERN, new Int32Array(UPCEANReader.MIDDLE_PATTERN.length).fill(0)); rowOffset = middleRange[1]; for (let x = 0; x < 4 && rowOffset < end; x++) { diff --git a/src/core/oned/ITFReader.ts b/src/core/oned/ITFReader.ts index d049b8e8..2cf1b234 100644 --- a/src/core/oned/ITFReader.ts +++ b/src/core/oned/ITFReader.ts @@ -39,28 +39,28 @@ export default class ITFReader extends OneDReader { // private static w = 2; // Pixel width of a 2x wide line // private static N = 1; // Pixed width of a narrow line - private static PATTERNS: number[][] = [ - [1, 1, 2, 2, 1], // 0 - [2, 1, 1, 1, 2], // 1 - [1, 2, 1, 1, 2], // 2 - [2, 2, 1, 1, 1], // 3 - [1, 1, 2, 1, 2], // 4 - [2, 1, 2, 1, 1], // 5 - [1, 2, 2, 1, 1], // 6 - [1, 1, 1, 2, 2], // 7 - [2, 1, 1, 2, 1], // 8 - [1, 2, 1, 2, 1], // 9 - [1, 1, 3, 3, 1], // 0 - [3, 1, 1, 1, 3], // 1 - [1, 3, 1, 1, 3], // 2 - [3, 3, 1, 1, 1], // 3 - [1, 1, 3, 1, 3], // 4 - [3, 1, 3, 1, 1], // 5 - [1, 3, 3, 1, 1], // 6 - [1, 1, 1, 3, 3], // 7 - [3, 1, 1, 3, 1], // 8 - [1, 3, 1, 3, 1] // 9 - ]; + private static PATTERNS: Int32Array[] = [ + Int32Array.from([1, 1, 2, 2, 1]), // 0 + Int32Array.from([2, 1, 1, 1, 2]), // 1 + Int32Array.from([1, 2, 1, 1, 2]), // 2 + Int32Array.from([2, 2, 1, 1, 1]), // 3 + Int32Array.from([1, 1, 2, 1, 2]), // 4 + Int32Array.from([2, 1, 2, 1, 1]), // 5 + Int32Array.from([1, 2, 2, 1, 1]), // 6 + Int32Array.from([1, 1, 1, 2, 2]), // 7 + Int32Array.from([2, 1, 1, 2, 1]), // 8 + Int32Array.from([1, 2, 1, 2, 1]), // 9 + Int32Array.from([1, 1, 3, 3, 1]), // 0 + Int32Array.from([3, 1, 1, 1, 3]), // 1 + Int32Array.from([1, 3, 1, 1, 3]), // 2 + Int32Array.from([3, 3, 1, 1, 1]), // 3 + Int32Array.from([1, 1, 3, 1, 3]), // 4 + Int32Array.from([3, 1, 3, 1, 1]), // 5 + Int32Array.from([1, 3, 3, 1, 1]), // 6 + Int32Array.from([1, 1, 1, 3, 3]), // 7 + Int32Array.from([3, 1, 1, 3, 1]), // 8 + Int32Array.from([1, 3, 1, 3, 1]) // 9 + ]; private static MAX_AVG_VARIANCE = 0.38; private static MAX_INDIVIDUAL_VARIANCE = 0.5; @@ -73,17 +73,17 @@ export default class ITFReader extends OneDReader { // Stores the actual narrow line width of the image being decoded. private narrowLineWidth = -1; - /*/!** - * Start/end guard pattern. - * - * Note: The end pattern is reversed because the row is reversed before - * searching for the END_PATTERN - *!/*/ - private static START_PATTERN = [1, 1, 1, 1]; - private static END_PATTERN_REVERSED: number[][] = [ - [1, 1, 2], // 2x - [1, 1, 3] // 3x - ]; + /*/!** + * Start/end guard pattern. + * + * Note: The end pattern is reversed because the row is reversed before + * searching for the END_PATTERN + *!/*/ + private static START_PATTERN = Int32Array.from([1, 1, 1, 1]); + private static END_PATTERN_REVERSED: Int32Array[] = [ + Int32Array.from([1, 1, 2]), // 2x + Int32Array.from([1, 1, 3]) // 3x + ]; // See ITFWriter.PATTERNS /* @@ -169,9 +169,9 @@ export default class ITFReader extends OneDReader { // Therefore, need to scan 10 lines and then // split these into two arrays - let counterDigitPair: number[] = new Array(10); // 10 - let counterBlack: number[] = new Array(5); // 5 - let counterWhite: number[] = new Array(5); // 5 + let counterDigitPair: Int32Array = new Int32Array(10); // 10 + let counterBlack: Int32Array = new Int32Array(5); // 5 + let counterWhite: Int32Array = new Int32Array(5); // 5 counterDigitPair.fill(0); counterBlack.fill(0); @@ -317,26 +317,26 @@ export default class ITFReader extends OneDReader { } } - /* - /!** - * @param row row of black/white values to search - * @param rowOffset position to start search - * @param pattern pattern of counts of number of black and white pixels that are - * being searched for as a pattern - * @return start/end horizontal offset of guard pattern, as an array of two - * ints - * @throws NotFoundException if pattern is not found - *!/*/ - private static findGuardPattern( - row: BitArray, - rowOffset: number, - pattern: number[] - ): number[] { - - let patternLength: number = pattern.length; - let counters: number[] = new Array(patternLength); - let width: number = row.getSize(); - let isWhite: boolean = false; + /* + /!** + * @param row row of black/white values to search + * @param rowOffset position to start search + * @param pattern pattern of counts of number of black and white pixels that are + * being searched for as a pattern + * @return start/end horizontal offset of guard pattern, as an array of two + * ints + * @throws NotFoundException if pattern is not found + *!/*/ + private static findGuardPattern( + row: BitArray, + rowOffset: number, + pattern: Int32Array + ): number[] { + + let patternLength: number = pattern.length; + let counters: Int32Array = new Int32Array(patternLength); + let width: number = row.getSize(); + let isWhite: boolean = false; let counterPosition: number = 0; let patternStart: number = rowOffset; @@ -366,15 +366,15 @@ export default class ITFReader extends OneDReader { throw new NotFoundException(); } - /*/!** - * Attempts to decode a sequence of ITF black/white lines into single - * digit. - * - * @param counters the counts of runs of observed black/white/black/... values - * @return The decoded digit - * @throws NotFoundException if digit cannot be decoded - *!/*/ - private static decodeDigit(counters: number[]): number { + /*/!** + * Attempts to decode a sequence of ITF black/white lines into single + * digit. + * + * @param counters the counts of runs of observed black/white/black/... values + * @return The decoded digit + * @throws NotFoundException if digit cannot be decoded + *!/*/ + private static decodeDigit(counters: Int32Array): number { let bestVariance: number = ITFReader.MAX_AVG_VARIANCE; // worst variance we'll accept let bestMatch: number = -1; diff --git a/src/core/oned/MultiFormatOneDReader.ts b/src/core/oned/MultiFormatOneDReader.ts index 3f0816d0..6678c0fc 100644 --- a/src/core/oned/MultiFormatOneDReader.ts +++ b/src/core/oned/MultiFormatOneDReader.ts @@ -37,22 +37,18 @@ export default class MultiFormatOneDReader extends OneDReader { private readers: OneDReader[] = []; - public constructor(hints: Map) { + public constructor(hints?: Map) { super(); const possibleFormats = !hints ? null : hints.get(DecodeHintType.POSSIBLE_FORMATS); const useCode39CheckDigit = hints && hints.get(DecodeHintType.ASSUME_CODE_39_CHECK_DIGIT) !== undefined; if (possibleFormats) { if (possibleFormats.includes(BarcodeFormat.EAN_13) || - possibleFormats.includes(BarcodeFormat.EAN_8)) { + possibleFormats.includes(BarcodeFormat.UPC_A) || + possibleFormats.includes(BarcodeFormat.EAN_8) || + possibleFormats.includes(BarcodeFormat.UPC_E)) { this.readers.push(new MultiFormatUPCEANReader(hints)); } - // if (possibleFormats.includes(BarcodeFormat.EAN_13) || - // possibleFormats.includes(BarcodeFormat.UPC_A) || - // possibleFormats.includes(BarcodeFormat.EAN_8) || - // possibleFormats.includes(BarcodeFormat.UPC_E)) { - // readers.push(new MultiFormatUPCEANReader(hints)); - // } if (possibleFormats.includes(BarcodeFormat.CODE_39)) { this.readers.push(new Code39Reader(useCode39CheckDigit)); } @@ -76,7 +72,7 @@ export default class MultiFormatOneDReader extends OneDReader { } } if (this.readers.length === 0) { - // this.readers.push(new MultiFormatUPCEANReader(hints)); + this.readers.push(new MultiFormatUPCEANReader(hints)); this.readers.push(new Code39Reader()); // this.readers.push(new CodaBarReader()); // this.readers.push(new Code93Reader()); diff --git a/src/core/oned/MultiFormatUPCEANReader.ts b/src/core/oned/MultiFormatUPCEANReader.ts index e4be3409..94455f5d 100644 --- a/src/core/oned/MultiFormatUPCEANReader.ts +++ b/src/core/oned/MultiFormatUPCEANReader.ts @@ -23,7 +23,10 @@ import OneDReader from './OneDReader'; import UPCEANReader from './UPCEANReader'; import EAN13Reader from './EAN13Reader'; import EAN8Reader from './EAN8Reader'; +import UPCAReader from './UPCAReader'; import NotFoundException from '../NotFoundException'; +import UPCEReader from './UPCEReader'; +import { Collection } from 'src/customTypings'; /** *

A reader that can read all available UPC/EAN formats. If a caller wants to try to @@ -33,47 +36,88 @@ import NotFoundException from '../NotFoundException'; * @author Sean Owen */ export default class MultiFormatUPCEANReader extends OneDReader { - private readers: UPCEANReader[]; + private readers: UPCEANReader[]; - public constructor(hints?: Map) { - super(); - let possibleFormats = hints == null ? null : hints.get(DecodeHintType.POSSIBLE_FORMATS); - let readers: UPCEANReader[] = []; - if (possibleFormats != null) { - if (possibleFormats.indexOf(BarcodeFormat.EAN_13) > -1) { - readers.push(new EAN13Reader()); - } + public constructor(hints?: Map) { + super(); + let possibleFormats = hints == null ? null : hints.get(DecodeHintType.POSSIBLE_FORMATS); + let readers: Collection = []; + if (possibleFormats != null) { - if (possibleFormats.indexOf(BarcodeFormat.EAN_8) > -1) { - readers.push(new EAN8Reader()); - } - // todo add UPC_A, UPC_E - } + if (possibleFormats.indexOf(BarcodeFormat.EAN_13) > -1) { + readers.push(new EAN13Reader()); + } else if (possibleFormats.indexOf(BarcodeFormat.UPC_A) > -1) { + readers.push(new UPCAReader()); + } - if (readers.length === 0) { - readers.push(new EAN13Reader()); - readers.push(new EAN8Reader()); - // todo add UPC_A, UPC_E - } + if (possibleFormats.indexOf(BarcodeFormat.EAN_8) > -1) { + readers.push(new EAN8Reader()); + } - this.readers = readers; + if (possibleFormats.indexOf(BarcodeFormat.UPC_E) > -1) { + readers.push(new UPCEReader()); + } } - public decodeRow(rowNumber: number, row: BitArray, hints?: Map): Result { - for (let reader of this.readers) { - try { - return reader.decodeRow(rowNumber, row, hints); - // TODO ean13MayBeUPCA - } catch (err) { - // continue; - } - } - throw new NotFoundException(); + if (readers.length === 0) { + readers.push(new EAN13Reader()); + // UPC-A is covered by EAN-13 + readers.push(new EAN8Reader()); + readers.push(new UPCEReader()); } - public reset() { - for (let reader of this.readers) { - reader.reset(); + this.readers = readers; + } + + public decodeRow(rowNumber: number, row: BitArray, hints?: Map): Result { + for (let reader of this.readers) { + try { + // const result: Result = reader.decodeRow(rowNumber, row, startGuardPattern, hints); + const result = reader.decodeRow(rowNumber, row, hints); + // Special case: a 12-digit code encoded in UPC-A is identical to a "0" + // followed by those 12 digits encoded as EAN-13. Each will recognize such a code, + // UPC-A as a 12-digit string and EAN-13 as a 13-digit string starting with "0". + // Individually these are correct and their readers will both read such a code + // and correctly call it EAN-13, or UPC-A, respectively. + // + // In this case, if we've been looking for both types, we'd like to call it + // a UPC-A code. But for efficiency we only run the EAN-13 decoder to also read + // UPC-A. So we special case it here, and convert an EAN-13 result to a UPC-A + // result if appropriate. + // + // But, don't return UPC-A if UPC-A was not a requested format! + const ean13MayBeUPCA: boolean = + result.getBarcodeFormat() === BarcodeFormat.EAN_13 && + result.getText().charAt(0) === '0'; + // @SuppressWarnings("unchecked") + const possibleFormats: Collection = + hints == null ? null : hints.get(DecodeHintType.POSSIBLE_FORMATS) as Collection; + const canReturnUPCA: boolean = possibleFormats == null || possibleFormats.includes(BarcodeFormat.UPC_A); + + if (ean13MayBeUPCA && canReturnUPCA) { + const rawBytes = result.getRawBytes(); + // Transfer the metadata across + const resultUPCA: Result = new Result( + result.getText().substring(1), + rawBytes, + rawBytes.length, + result.getResultPoints(), + BarcodeFormat.UPC_A + ); + resultUPCA.putAllMetadata(result.getResultMetadata()); + return resultUPCA; } + return result; + } catch (err) { + // continue; + } + } + throw new NotFoundException(); + } + + public reset() { + for (let reader of this.readers) { + reader.reset(); } + } } diff --git a/src/core/oned/OneDReader.ts b/src/core/oned/OneDReader.ts index 00db9b1d..2969ff7d 100644 --- a/src/core/oned/OneDReader.ts +++ b/src/core/oned/OneDReader.ts @@ -180,7 +180,7 @@ export default abstract class OneDReader implements Reader { * @throws NotFoundException if counters cannot be filled entirely from row before running out * of pixels */ - protected static recordPattern(row: BitArray, start: number, counters: number[]): void { + protected static recordPattern(row: BitArray, start: number, counters: Int32Array): void { const numCounters = counters.length; for (let index = 0; index < numCounters; index++) counters[index] = 0; @@ -214,7 +214,7 @@ export default abstract class OneDReader implements Reader { } } - protected static recordPatternInReverse(row: BitArray, start: number, counters: number[]): void { + protected static recordPatternInReverse(row: BitArray, start: number, counters: Int32Array): void { // This could be more efficient I guess let numTransitionsLeft = counters.length; let last = row.get(start); @@ -241,7 +241,7 @@ export default abstract class OneDReader implements Reader { * @param maxIndividualVariance The most any counter can differ before we give up * @return ratio of total variance between counters and pattern compared to total pattern size */ - protected static patternMatchVariance(counters: number[], pattern: number[], maxIndividualVariance: number): number { + protected static patternMatchVariance(counters: Int32Array, pattern: Int32Array, maxIndividualVariance: number): number { const numCounters = counters.length; let total = 0; let patternLength = 0; diff --git a/src/core/oned/UPCAReader.ts b/src/core/oned/UPCAReader.ts new file mode 100644 index 00000000..a7829f8a --- /dev/null +++ b/src/core/oned/UPCAReader.ts @@ -0,0 +1,85 @@ +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/*namespace com.google.zxing.oned {*/ + +import BarcodeFormat from '../BarcodeFormat'; +import BinaryBitmap from '../BinaryBitmap'; +import BitArray from '../common/BitArray'; +import DecodeHintType from '../DecodeHintType'; + +import Reader from '../Reader'; +import Result from '../Result'; +import ResultMetadataType from '../ResultMetadataType'; +import ResultPoint from '../ResultPoint'; +import NotFoundException from '../NotFoundException'; + +import EAN13Reader from './EAN13Reader'; +import UPCEANReader from './UPCEANReader'; +import { int } from 'src/customTypings'; + +/** + * Encapsulates functionality and implementation that is common to all families + * of one-dimensional barcodes. + * + * @author dswitkin@google.com (Daniel Switkin) + * @author Sean Owen + * @author sam2332 (Sam Rudloff) + * + * @source https://github.com/zxing/zxing/blob/3c96923276dd5785d58eb970b6ba3f80d36a9505/core/src/main/java/com/google/zxing/oned/UPCAReader.java + */ +export default class UPCAReader extends UPCEANReader { + + private readonly ean13Reader = new EAN13Reader(); + + // @Override + public getBarcodeFormat(): BarcodeFormat { + return BarcodeFormat.UPC_A; + } + + // Note that we don't try rotation without the try harder flag, even if rotation was supported. + // @Override + public decode(image: BinaryBitmap, hints?: Map): Result { + return this.maybeReturnResult(this.ean13Reader.decode(image)); + } + + // @Override + public decodeRow(rowNumber: number, row: BitArray, hints?: Map): Result { + return this.maybeReturnResult(this.ean13Reader.decodeRow(rowNumber, row, hints)); + } + + // @Override + public decodeMiddle(row: BitArray, startRange: Int32Array, resultString: string) { + return this.ean13Reader.decodeMiddle(row, startRange, resultString); + } + + public maybeReturnResult(result: Result) { + let text = result.getText(); + if (text.charAt(0) == '0') { + let upcaResult = new Result(text.substring(1), null, null, result.getResultPoints(), BarcodeFormat.UPC_A); + if (result.getResultMetadata() != null) { + upcaResult.putAllMetadata(result.getResultMetadata()); + } + return upcaResult; + } else { + throw new NotFoundException(); + } + } + + public reset() { + this.ean13Reader.reset(); + } +} diff --git a/src/core/oned/UPCEANExtension2Support.ts b/src/core/oned/UPCEANExtension2Support.ts index 292f474e..8008a12c 100644 --- a/src/core/oned/UPCEANExtension2Support.ts +++ b/src/core/oned/UPCEANExtension2Support.ts @@ -27,11 +27,11 @@ import NotFoundException from '../NotFoundException'; * @see UPCEANExtension5Support */ export default class UPCEANExtension2Support { - private decodeMiddleCounters = [0, 0, 0, 0]; + private decodeMiddleCounters = Int32Array.from([0, 0, 0, 0]); private decodeRowStringBuffer = ''; - public decodeRow(rowNumber: number, row: BitArray, extensionStartRange: number[]) { + public decodeRow(rowNumber: number, row: BitArray, extensionStartRange: Int32Array) { let result = this.decodeRowStringBuffer; let end = this.decodeMiddle(row, extensionStartRange, result); @@ -52,7 +52,7 @@ export default class UPCEANExtension2Support { return extensionResult; } - public decodeMiddle(row: BitArray, startRange: number[], resultString: string) { + public decodeMiddle(row: BitArray, startRange: Int32Array, resultString: string) { let counters = this.decodeMiddleCounters; counters[0] = 0; counters[1] = 0; diff --git a/src/core/oned/UPCEANExtension5Support.ts b/src/core/oned/UPCEANExtension5Support.ts index 19515f35..8765b513 100644 --- a/src/core/oned/UPCEANExtension5Support.ts +++ b/src/core/oned/UPCEANExtension5Support.ts @@ -29,11 +29,11 @@ import NotFoundException from '../NotFoundException'; */ export default class UPCEANExtension5Support { private CHECK_DIGIT_ENCODINGS = [0x18, 0x14, 0x12, 0x11, 0x0C, 0x06, 0x03, 0x0A, 0x09, 0x05]; - private decodeMiddleCounters = [0, 0, 0, 0]; + private decodeMiddleCounters = Int32Array.from([0, 0, 0, 0]); private decodeRowStringBuffer = ''; - public decodeRow(rowNumber: number, row: BitArray, extensionStartRange: number[]): Result { + public decodeRow(rowNumber: number, row: BitArray, extensionStartRange: Int32Array): Result { let result = this.decodeRowStringBuffer; let end = this.decodeMiddle(row, extensionStartRange, result); @@ -54,7 +54,7 @@ export default class UPCEANExtension5Support { return extensionResult; } - public decodeMiddle(row: BitArray, startRange: number[], resultString: string) { + public decodeMiddle(row: BitArray, startRange: Int32Array, resultString: string) { let counters = this.decodeMiddleCounters; counters[0] = 0; counters[1] = 0; diff --git a/src/core/oned/UPCEANExtensionSupport.ts b/src/core/oned/UPCEANExtensionSupport.ts index 28d5bad4..21e19089 100644 --- a/src/core/oned/UPCEANExtensionSupport.ts +++ b/src/core/oned/UPCEANExtensionSupport.ts @@ -21,10 +21,10 @@ import UPCEANExtension2Support from './UPCEANExtension2Support'; import Result from '../Result'; export default class UPCEANExtensionSupport { - private static EXTENSION_START_PATTERN = [1, 1, 2]; + private static EXTENSION_START_PATTERN = Int32Array.from([1, 1, 2]); static decodeRow(rowNumber: number, row: BitArray, rowOffset: number): Result { - let extensionStartRange = AbstractUPCEANReader.findGuardPattern(row, rowOffset, false, this.EXTENSION_START_PATTERN, new Array(this.EXTENSION_START_PATTERN.length).fill(0)); + let extensionStartRange = AbstractUPCEANReader.findGuardPattern(row, rowOffset, false, this.EXTENSION_START_PATTERN, new Int32Array(this.EXTENSION_START_PATTERN.length).fill(0)); try { // return null; let fiveSupport = new UPCEANExtension5Support(); diff --git a/src/core/oned/UPCEANReader.ts b/src/core/oned/UPCEANReader.ts index f44df28b..cc70395e 100644 --- a/src/core/oned/UPCEANReader.ts +++ b/src/core/oned/UPCEANReader.ts @@ -41,13 +41,11 @@ export default abstract class UPCEANReader extends AbstractUPCEANReader { super(); this.decodeRowStringBuffer = ''; - UPCEANReader.L_AND_G_PATTERNS = UPCEANReader.L_PATTERNS.map(function(arr) { - return arr.slice(); - }); + UPCEANReader.L_AND_G_PATTERNS = UPCEANReader.L_PATTERNS.map(arr => Int32Array.from(arr)); for (let i = 10; i < 20; i++) { let widths = UPCEANReader.L_PATTERNS[i - 10]; - let reversedWidths = new Array(widths.length); + let reversedWidths = new Int32Array(widths.length); for (let j = 0; j < widths.length; j++) { reversedWidths[j] = widths[widths.length - j - 1]; } @@ -172,7 +170,7 @@ export default abstract class UPCEANReader extends AbstractUPCEANReader { return (1000 - sum) % 10; } - static decodeEnd(row: BitArray, endStart: number): number[] { - return UPCEANReader.findGuardPattern(row, endStart, false, UPCEANReader.START_END_PATTERN, new Array(UPCEANReader.START_END_PATTERN.length).fill(0)); + static decodeEnd(row: BitArray, endStart: number): Int32Array { + return UPCEANReader.findGuardPattern(row, endStart, false, UPCEANReader.START_END_PATTERN, new Int32Array(UPCEANReader.START_END_PATTERN.length).fill(0)); } } diff --git a/src/core/oned/UPCEReader.ts b/src/core/oned/UPCEReader.ts new file mode 100644 index 00000000..64583a5f --- /dev/null +++ b/src/core/oned/UPCEReader.ts @@ -0,0 +1,202 @@ +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import UPCEANReader from './UPCEANReader'; +import BitArray from '../common/BitArray'; +import StringBuilder from '../util/StringBuilder'; +import NotFoundException from '../NotFoundException'; +import BarcodeFormat from '../BarcodeFormat'; +import { int, char } from 'src/customTypings'; + +// package com.google.zxing.oned; + +// import com.google.zxing.BarcodeFormat; +// import com.google.zxing.FormatException; +// import com.google.zxing.NotFoundException; +// import com.google.zxing.common.BitArray; + +/** + *

Implements decoding of the UPC-E format.

+ *

This is a great reference for + * UPC-E information.

+ * + * @author Sean Owen + * + * @source https://github.com/zxing/zxing/blob/3c96923276dd5785d58eb970b6ba3f80d36a9505/core/src/main/java/com/google/zxing/oned/UPCEReader.java + */ +export default /* final */ class UPCEReader extends UPCEANReader { + + /** + * The pattern that marks the middle, and end, of a UPC-E pattern. + * There is no "second half" to a UPC-E barcode. + */ + private static /*final*/ MIDDLE_END_PATTERN: Int32Array = Int32Array.from([1, 1, 1, 1, 1, 1]); + + // For an UPC-E barcode, the final digit is represented by the parities used + // to encode the middle six digits, according to the table below. + // + // Parity of next 6 digits + // Digit 0 1 2 3 4 5 + // 0 Even Even Even Odd Odd Odd + // 1 Even Even Odd Even Odd Odd + // 2 Even Even Odd Odd Even Odd + // 3 Even Even Odd Odd Odd Even + // 4 Even Odd Even Even Odd Odd + // 5 Even Odd Odd Even Even Odd + // 6 Even Odd Odd Odd Even Even + // 7 Even Odd Even Odd Even Odd + // 8 Even Odd Even Odd Odd Even + // 9 Even Odd Odd Even Odd Even + // + // The encoding is represented by the following array, which is a bit pattern + // using Odd = 0 and Even = 1. For example, 5 is represented by: + // + // Odd Even Even Odd Odd Even + // in binary: + // 0 1 1 0 0 1 == 0x19 + // + + /** + * See {@link #L_AND_G_PATTERNS}; these values similarly represent patterns of + * even-odd parity encodings of digits that imply both the number system (0 or 1) + * used, and the check digit. + */ + static /*final*/ NUMSYS_AND_CHECK_DIGIT_PATTERNS: Int32Array[] = [ + Int32Array.from([0x38, 0x34, 0x32, 0x31, 0x2C, 0x26, 0x23, 0x2A, 0x29, 0x25]), + Int32Array.from([0x07, 0x0B, 0x0D, 0x0E, 0x13, 0x19, 0x1C, 0x15, 0x16, 0x1]), + ]; + + private /*final*/ decodeMiddleCounters: Int32Array; + + public constructor() { + super(); + this.decodeMiddleCounters = new Int32Array(4); + } + + /** + * @throws NotFoundException + */ + // @Override + public decodeMiddle(row: BitArray, startRange: Int32Array, result: string) { + const counters: Int32Array = this.decodeMiddleCounters.map(x => x); + counters[0] = 0; + counters[1] = 0; + counters[2] = 0; + counters[3] = 0; + const end: int = row.getSize(); + let rowOffset: int = startRange[1]; + + let lgPatternFound: int = 0; + + for (let x: int = 0; x < 6 && rowOffset < end; x++) { + const bestMatch: int = UPCEReader.decodeDigit(row, counters, rowOffset, UPCEReader.L_AND_G_PATTERNS); + result += String.fromCharCode(('0'.charCodeAt(0) + bestMatch % 10)); + for (let counter of counters) { + rowOffset += counter; + } + if (bestMatch >= 10) { + lgPatternFound |= 1 << (5 - x); + } + } + + UPCEReader.determineNumSysAndCheckDigit(new StringBuilder(result), lgPatternFound); + + return rowOffset; + } + + /** + * @throws NotFoundException + */ + // @Override + protected decodeEnd(row: BitArray, endStart: int): Int32Array { + return UPCEReader.findGuardPatternWithoutCounters(row, endStart, true, UPCEReader.MIDDLE_END_PATTERN); + } + + /** + * @throws FormatException + */ + // @Override + protected checkChecksum(s: string): boolean { + return UPCEANReader.checkChecksum(UPCEReader.convertUPCEtoUPCA(s)); + } + + /** + * @throws NotFoundException + */ + private static determineNumSysAndCheckDigit(resultString: StringBuilder, lgPatternFound: int): void { + + for (let numSys: int = 0; numSys <= 1; numSys++) { + for (let d: int = 0; d < 10; d++) { + if (lgPatternFound === this.NUMSYS_AND_CHECK_DIGIT_PATTERNS[numSys][d]) { + resultString.insert(0, /*(char)*/('0' + numSys)); + resultString.append(/*(char)*/('0' + d)); + return; + } + } + } + throw NotFoundException.getNotFoundInstance(); + } + + // @Override + getBarcodeFormat(): BarcodeFormat { + return BarcodeFormat.UPC_E; + } + + /** + * Expands a UPC-E value back into its full, equivalent UPC-A code value. + * + * @param upce UPC-E code as string of digits + * @return equivalent UPC-A code as string of digits + */ + public static convertUPCEtoUPCA(upce: string): string { + // the following line is equivalent to upce.getChars(1, 7, upceChars, 0); + const upceChars = upce.slice(1, 7).split('').map(x => x.charCodeAt(0)); + const result: StringBuilder = new StringBuilder(/*12*/); + result.append(upce.charAt(0)); + let lastChar: char = upceChars[5]; + switch (lastChar) { + case 0: + case 1: + case 2: + result.appendChars(upceChars, 0, 2); + result.append(lastChar); + result.append('0000'); + result.appendChars(upceChars, 2, 3); + break; + case 3: + result.appendChars(upceChars, 0, 3); + result.append('00000'); + result.appendChars(upceChars, 3, 2); + break; + case 4: + result.appendChars(upceChars, 0, 4); + result.append('00000'); + result.append(upceChars[4]); + break; + default: + result.appendChars(upceChars, 0, 5); + result.append('0000'); + result.append(lastChar); + break; + } + // Only append check digit in conversion if supplied + if (upce.length >= 8) { + result.append(upce.charAt(7)); + } + return result.toString(); + } + +} diff --git a/src/core/oned/rss/AbstractRSSReader.ts b/src/core/oned/rss/AbstractRSSReader.ts index df45754a..7da91451 100644 --- a/src/core/oned/rss/AbstractRSSReader.ts +++ b/src/core/oned/rss/AbstractRSSReader.ts @@ -12,30 +12,30 @@ export default abstract class AbstractRSSReader extends OneDReader { private static readonly MIN_FINDER_PATTERN_RATIO: number = 9.5 / 12.0; private static readonly MAX_FINDER_PATTERN_RATIO: number = 12.5 / 14.0; - private readonly decodeFinderCounters: number[]; - private readonly dataCharacterCounters: number[]; - private readonly oddRoundingErrors: number[]; - private readonly evenRoundingErrors: number[]; - private readonly oddCounts: number[]; - private readonly evenCounts: number[]; - - public constructor() { - super(); - this.decodeFinderCounters = new Array(4); - this.dataCharacterCounters = new Array(8); - this.oddRoundingErrors = new Array(4); - this.evenRoundingErrors = new Array(4); - this.oddCounts = new Array(this.dataCharacterCounters.length / 2); - this.evenCounts = new Array(this.dataCharacterCounters.length / 2); - } + private readonly decodeFinderCounters: Int32Array; + private readonly dataCharacterCounters: Int32Array; + private readonly oddRoundingErrors: number[]; + private readonly evenRoundingErrors: number[]; + private readonly oddCounts: number[]; + private readonly evenCounts: number[]; + + public constructor() { + super(); + this.decodeFinderCounters = new Int32Array(4); + this.dataCharacterCounters = new Int32Array(8); + this.oddRoundingErrors = new Array(4); + this.evenRoundingErrors = new Array(4); + this.oddCounts = new Array(this.dataCharacterCounters.length / 2); + this.evenCounts = new Array(this.dataCharacterCounters.length / 2); + } - protected getDecodeFinderCounters(): number[] { - return this.decodeFinderCounters; - } + protected getDecodeFinderCounters(): Int32Array { + return this.decodeFinderCounters; + } - protected getDataCharacterCounters(): number[] { - return this.dataCharacterCounters; - } + protected getDataCharacterCounters(): Int32Array { + return this.dataCharacterCounters; + } protected getOddRoundingErrors(): number[] { return this.oddRoundingErrors; @@ -53,7 +53,7 @@ export default abstract class AbstractRSSReader extends OneDReader { return this.evenCounts; } - protected parseFinderValue(counters: number[], finderPatterns: number[][]): number { + protected parseFinderValue(counters: Int32Array, finderPatterns: Int32Array[]): number { for (let value = 0; value < finderPatterns.length; value++) { if (OneDReader.patternMatchVariance(counters, finderPatterns[value], AbstractRSSReader.MAX_INDIVIDUAL_VARIANCE) < AbstractRSSReader.MAX_AVG_VARIANCE) { return value; @@ -95,7 +95,7 @@ export default abstract class AbstractRSSReader extends OneDReader { array[index]--; } - protected static isFinderPattern(counters: number[]): boolean { + protected static isFinderPattern(counters: Int32Array): boolean { let firstTwoSum = counters[0] + counters[1]; let sum = firstTwoSum + counters[2] + counters[3]; let ratio = firstTwoSum / sum; diff --git a/src/core/oned/rss/RSS14Reader.ts b/src/core/oned/rss/RSS14Reader.ts index ee83b1b1..30bd17ab 100644 --- a/src/core/oned/rss/RSS14Reader.ts +++ b/src/core/oned/rss/RSS14Reader.ts @@ -24,16 +24,16 @@ export default class RSS14Reader extends AbstractRSSReader { private static readonly OUTSIDE_ODD_WIDEST: number[] = [8, 6, 4, 3, 1]; private static readonly INSIDE_ODD_WIDEST: number[] = [2, 4, 6, 8]; - private static readonly FINDER_PATTERNS: number[][] = [ - [ 3, 8, 2, 1 ], - [ 3, 5, 5, 1 ], - [ 3, 3, 7, 1 ], - [ 3, 1, 9, 1 ], - [ 2, 7, 4, 1 ], - [ 2, 5, 6, 1 ], - [ 2, 3, 8, 1 ], - [ 1, 5, 7, 1 ], - [ 1, 3, 9, 1 ], + private static readonly FINDER_PATTERNS: Int32Array[] = [ + Int32Array.from([ 3, 8, 2, 1 ]), + Int32Array.from([ 3, 5, 5, 1 ]), + Int32Array.from([ 3, 3, 7, 1 ]), + Int32Array.from([ 3, 1, 9, 1 ]), + Int32Array.from([ 2, 7, 4, 1 ]), + Int32Array.from([ 2, 5, 6, 1 ]), + Int32Array.from([ 2, 3, 8, 1 ]), + Int32Array.from([ 1, 5, 7, 1 ]), + Int32Array.from([ 1, 3, 9, 1 ]), ]; private readonly possibleLeftPairs: Pair[] = []; @@ -292,13 +292,13 @@ export default class RSS14Reader extends AbstractRSSReader { firstElementStart--; } firstElementStart++; - let firstCounter = startEnd[0] - firstElementStart; + const firstCounter = startEnd[0] - firstElementStart; // Make 'counters' hold 1-4 - let counters = this.getDecodeFinderCounters(); - let copy = new Array(counters.length); + const counters = this.getDecodeFinderCounters(); + const copy = new Int32Array(counters.length); System.arraycopy(counters, 0, copy, 1, counters.length - 1); copy[0] = firstCounter; - let value = this.parseFinderValue(copy, RSS14Reader.FINDER_PATTERNS); + const value = this.parseFinderValue(copy, RSS14Reader.FINDER_PATTERNS); let start = firstElementStart; let end = startEnd[1]; if (right) { diff --git a/src/core/oned/rss/expanded/RSSExpandedReader.ts b/src/core/oned/rss/expanded/RSSExpandedReader.ts index 6cb1f9d5..0dd8fd11 100644 --- a/src/core/oned/rss/expanded/RSSExpandedReader.ts +++ b/src/core/oned/rss/expanded/RSSExpandedReader.ts @@ -31,13 +31,13 @@ export default class RSSExpandedReader extends AbstractRSSReader { private static readonly EVEN_TOTAL_SUBSET = [4, 20, 52, 104, 204]; private static readonly GSUM = [0, 348, 1388, 2948, 3988]; - private static readonly FINDER_PATTERNS = [ - [1, 8, 4, 1], // A - [3, 6, 4, 1], // B - [3, 4, 6, 1], // C - [3, 2, 8, 1], // D - [2, 6, 5, 1], // E - [2, 2, 9, 1] // F + private static readonly FINDER_PATTERNS = [ + Int32Array.from([1, 8, 4, 1]), // A + Int32Array.from([3, 6, 4, 1]), // B + Int32Array.from([3, 4, 6, 1]), // C + Int32Array.from([3, 2, 8, 1]), // D + Int32Array.from([2, 6, 5, 1]), // E + Int32Array.from([2, 2, 9, 1]) // F ]; private static readonly WEIGHTS = [ diff --git a/src/core/pdf417/decoder/DecodedBitStreamParser.ts b/src/core/pdf417/decoder/DecodedBitStreamParser.ts index 7b0fd265..9ab6c519 100644 --- a/src/core/pdf417/decoder/DecodedBitStreamParser.ts +++ b/src/core/pdf417/decoder/DecodedBitStreamParser.ts @@ -66,6 +66,10 @@ function getBigIntConstructor(): BigIntConstructor { return global['BigInt'] || null; } + if (typeof self !== 'undefined') { + return self['BigInt'] || null; + } + throw new Error('Can\'t search globals for BigInt!'); } diff --git a/src/core/util/StringBuilder.ts b/src/core/util/StringBuilder.ts index a9b9dfcb..1d4f34df 100644 --- a/src/core/util/StringBuilder.ts +++ b/src/core/util/StringBuilder.ts @@ -1,6 +1,6 @@ import CharacterSetECI from '../common/CharacterSetECI'; import StringEncoding from './StringEncoding'; -import { int } from '../../customTypings'; +import { int, char } from '../../customTypings'; import StringUtils from '../common/StringUtils'; @@ -28,6 +28,13 @@ export default class StringBuilder { return this; } + public appendChars(str: char[] | string[], offset: int, len: int): StringBuilder { + for (let i = offset; offset < offset + len; i++) { + this.append(str[i]); + } + return this; + } + public length(): number { return this.value.length; } diff --git a/src/index.ts b/src/index.ts index 6dc6a10f..372596c5 100644 --- a/src/index.ts +++ b/src/index.ts @@ -30,6 +30,16 @@ export { default as ResultMetadataType } from './core/ResultMetadataType'; export { default as ResultPointCallback } from './core/ResultPointCallback'; export { default as RGBLuminanceSource } from './core/RGBLuminanceSource'; export { default as Writer } from './core/Writer'; +export { default as ResultPoint } from './core/ResultPoint'; + +// core/util +export { default as ZXingSystem } from './core/util/System'; +export { default as ZXingStringBuilder } from './core/util/StringBuilder'; +export { default as ZXingStringEncoding } from './core/util/StringEncoding'; +export { default as ZXingCharset } from './core/util/Charset'; +export { default as ZXingArrays } from './core/util/Arrays'; +export { default as ZXingStandardCharsets } from './core/util/StandardCharsets'; +export { default as ZXingInteger } from './core/util/Integer'; // core/common export { default as BitArray } from './core/common/BitArray'; @@ -60,16 +70,42 @@ export { default as ReedSolomonEncoder } from './core/common/reedsolomon/ReedSol // core/datamatrix export { default as DataMatrixReader } from './core/datamatrix/DataMatrixReader'; +export { default as DataMatrixDecodedBitStreamParser } from './core/datamatrix/decoder/DecodedBitStreamParser'; + +// core/pdf417 +export { default as PDF417Reader } from './core/pdf417/PDF417Reader'; +export { default as PDF417ResultMetadata } from './core/pdf417/PDF417ResultMetadata'; +export { default as PDF417DecodedBitStreamParser } from './core/pdf417/decoder/DecodedBitStreamParser'; +export { default as PDF417DecoderErrorCorrection } from './core/pdf417/decoder/ec/ErrorCorrection'; + // core/twod/qrcode export { default as QRCodeReader } from './core/qrcode/QRCodeReader'; export { default as QRCodeWriter } from './core/qrcode/QRCodeWriter'; export { default as QRCodeDecoderErrorCorrectionLevel } from './core/qrcode/decoder/ErrorCorrectionLevel'; +export { default as QRCodeDecoderFormatInformation } from './core/qrcode/decoder/FormatInformation'; +export { default as QRCodeVersion } from './core/qrcode/decoder/Version'; +export { default as QRCodeMode } from './core/qrcode/decoder/Mode'; +export { default as QRCodeDecodedBitStreamParser } from './core/qrcode/decoder/DecodedBitStreamParser'; +export { default as QRCodeDataMask } from './core/qrcode/decoder/DataMask'; export { default as QRCodeEncoder } from './core/qrcode/encoder/Encoder'; export { default as QRCodeEncoderQRCode } from './core/qrcode/encoder/QRCode'; +export { default as QRCodeMatrixUtil } from './core/qrcode/encoder/MatrixUtil'; +export { default as QRCodeByteMatrix } from './core/qrcode/encoder/ByteMatrix'; +export { default as QRCodeMaskUtil } from './core/qrcode/encoder/MaskUtil'; + // core/twod/aztec export { default as AztecCodeReader } from './core/aztec/AztecReader'; +export { default as AztecCodeWriter } from './core/aztec/AztecWriter'; +export { default as AztecDetectorResult } from './core/aztec/AztecDetectorResult'; +export { default as AztecEncoder } from './core/aztec/encoder/Encoder'; +export { default as AztecHighLevelEncoder } from './core/aztec/encoder/HighLevelEncoder'; +export { default as AztecCode } from './core/aztec/encoder/AztecCode'; +export { default as AztecDecoder } from './core/aztec/decoder/Decoder'; +export { default as AztecDetector } from './core/aztec/detector/Detector'; +export { Point as AztecPoint } from './core/aztec/detector/Detector'; + // core/oned export { default as OneDReader } from './core/oned/OneDReader'; @@ -79,4 +115,4 @@ export { default as ITFReader } from './core/oned/ITFReader'; export { default as Code39Reader } from './core/oned/Code39Reader'; export { default as RSS14Reader } from './core/oned/rss/RSS14Reader'; export { default as RSSExpandedReader } from './core/oned/rss/expanded/RSSExpandedReader'; -export { default as MultiformatReader } from './core/oned/MultiFormatOneDReader'; +export { default as MultiFormatOneDReader } from './core/oned/MultiFormatOneDReader'; diff --git a/src/test/core/PlanarYUVLuminanceSource.spec.ts b/src/test/core/PlanarYUVLuminanceSource.spec.ts index f314b988..e40bc02a 100644 --- a/src/test/core/PlanarYUVLuminanceSource.spec.ts +++ b/src/test/core/PlanarYUVLuminanceSource.spec.ts @@ -18,8 +18,8 @@ import * as assert from 'assert'; import AssertUtils from './util/AssertUtils'; -import PlanarYUVLuminanceSource from '../../core/PlanarYUVLuminanceSource'; -import System from '../../core/util/System'; +import { PlanarYUVLuminanceSource } from '@zxing/library'; +import { ZXingSystem } from '@zxing/library'; describe('PlanarYUVLuminanceSource', () => { @@ -36,7 +36,7 @@ describe('PlanarYUVLuminanceSource', () => { const ROWS: number /*int*/ = 4; const Y = new Uint8ClampedArray(COLS * ROWS); - System.arraycopy(YUV, 0, Y, 0, Y.length); + ZXingSystem.arraycopy(YUV, 0, Y, 0, Y.length); it('testNoCrop', () => { const source = new PlanarYUVLuminanceSource(YUV, COLS, ROWS, 0, 0, COLS, ROWS, false); diff --git a/src/test/core/RGBLuminanceSource.spec.ts b/src/test/core/RGBLuminanceSource.spec.ts index 0e894f2e..d9f05e54 100644 --- a/src/test/core/RGBLuminanceSource.spec.ts +++ b/src/test/core/RGBLuminanceSource.spec.ts @@ -18,8 +18,8 @@ import * as assert from 'assert'; import AssertUtils from './util/AssertUtils'; -import LuminanceSource from '../../core/LuminanceSource'; -import RGBLuminanceSource from '../../core/RGBLuminanceSource'; +import { LuminanceSource } from '@zxing/library'; +import { RGBLuminanceSource } from '@zxing/library'; describe('RGBLuminanceSource', () => { diff --git a/src/test/core/SharpImageLuminanceSource.ts b/src/test/core/SharpImageLuminanceSource.ts index d46b62fc..2f9904f2 100644 --- a/src/test/core/SharpImageLuminanceSource.ts +++ b/src/test/core/SharpImageLuminanceSource.ts @@ -23,9 +23,9 @@ /*import java.awt.image.WritableRaster;*/ import SharpImage from './util/SharpImage'; -import LuminanceSource from '../../core/LuminanceSource'; -import InvertedLuminanceSource from '../../core/InvertedLuminanceSource'; -import IllegalArgumentException from '../../core/IllegalArgumentException'; +import { LuminanceSource } from '@zxing/library'; +import { InvertedLuminanceSource } from '@zxing/library'; +import { IllegalArgumentException } from '@zxing/library'; /** * This LuminanceSource implementation is meant for J2SE clients and our blackbox unit tests. @@ -36,77 +36,77 @@ import IllegalArgumentException from '../../core/IllegalArgumentException'; */ export default class SharpImageLuminanceSource extends LuminanceSource { - public constructor(private image: SharpImage) { - super(image.getWidth(), image.getHeight()); - // if (undefined === width) { - // this.width = image.getWidth() - // } - // if (undefined === height) { - // this.height = image.getHeight() - // } - - // const sourceWidth: number /*int*/ = image.getWidth() - // const sourceHeight: number /*int*/ = image.getHeight() - // if (left + width > sourceWidth || top + height > sourceHeight) { - // throw new IllegalArgumentException("Crop rectangle does not fit within image data.") - // } - - // if (left > 0 || width < sourceWidth || top > 0 || height < sourceHeight) { - // image.crop(left, top, width, height) - // } - - // image.grayscale() + public constructor(private image: SharpImage) { + super(image.getWidth(), image.getHeight()); + // if (undefined === width) { + // this.width = image.getWidth() + // } + // if (undefined === height) { + // this.height = image.getHeight() + // } + + // const sourceWidth: number /*int*/ = image.getWidth() + // const sourceHeight: number /*int*/ = image.getHeight() + // if (left + width > sourceWidth || top + height > sourceHeight) { + // throw new IllegalArgumentException("Crop rectangle does not fit within image data.") + // } + + // if (left > 0 || width < sourceWidth || top > 0 || height < sourceHeight) { + // image.crop(left, top, width, height) + // } + + // image.grayscale() + } + + public getRow(y: number /*int*/, row: Uint8ClampedArray): Uint8ClampedArray { + if (y < 0 || y >= this.image.getHeight()) { + throw new IllegalArgumentException('Requested row is outside the image: ' + y); } - - public getRow(y: number /*int*/, row: Uint8ClampedArray): Uint8ClampedArray { - if (y < 0 || y >= this.image.getHeight()) { - throw new IllegalArgumentException('Requested row is outside the image: ' + y); - } - const width: number /*int*/ = this.image.getWidth(); - if (row === null || row.length < width) { - row = new Uint8ClampedArray(width); /*Int8Array(width)*/ - } - // The underlying raster of image consists of bytes with the luminance values - this.image.getRow(y, row); - return row; - } - - public getMatrix(): Uint8ClampedArray { - return this.image.getMatrix(); - } - - public isCropSupported(): boolean { - return true; - } - - public crop(left: number /*int*/, top: number /*int*/, width: number /*int*/, height: number /*int*/): LuminanceSource { - this.crop(left, top, width, height); - return this; - } - - /** - * This is always true, since the image is a gray-scale image. - * - * @return true - */ - public isRotateSupported(): boolean { - return true; - } - - public rotateCounterClockwise(): LuminanceSource { - // this.image.rotate(-90) - // TYPESCRIPTPORT: not used for tests, see AbstractBlackBox.spec, SharpImage.loadWithRotations - return this; - } - - public rotateCounterClockwise45(): LuminanceSource { - // this.image.rotate(-45) - // TYPESCRIPTPORT: not used for tests, see AbstractBlackBox.spec, SharpImage.loadWithRotations - return this; - } - - public invert(): LuminanceSource { - return new InvertedLuminanceSource(this); + const width: number /*int*/ = this.image.getWidth(); + if (row === null || row.length < width) { + row = new Uint8ClampedArray(width); /*Int8Array(width)*/ } + // The underlying raster of image consists of bytes with the luminance values + this.image.getRow(y, row); + return row; + } + + public getMatrix(): Uint8ClampedArray { + return this.image.getMatrix(); + } + + public isCropSupported(): boolean { + return true; + } + + public crop(left: number /*int*/, top: number /*int*/, width: number /*int*/, height: number /*int*/): LuminanceSource { + super.crop(left, top, width, height); + return this; + } + + /** + * This is always true, since the image is a gray-scale image. + * + * @return true + */ + public isRotateSupported(): boolean { + return true; + } + + public rotateCounterClockwise(): LuminanceSource { + // this.image.rotate(-90) + // TYPESCRIPTPORT: not used for tests, see AbstractBlackBox.spec, SharpImage.loadWithRotations + return this; + } + + public rotateCounterClockwise45(): LuminanceSource { + // this.image.rotate(-45) + // TYPESCRIPTPORT: not used for tests, see AbstractBlackBox.spec, SharpImage.loadWithRotations + return this; + } + + public invert(): LuminanceSource { + return new InvertedLuminanceSource(this); + } } diff --git a/src/test/core/aztec/AztecBlackBox1.spec.ts b/src/test/core/aztec/AztecBlackBox1.spec.ts index 2bca90c1..b4c5bb98 100644 --- a/src/test/core/aztec/AztecBlackBox1.spec.ts +++ b/src/test/core/aztec/AztecBlackBox1.spec.ts @@ -17,11 +17,11 @@ // package com.google.zxing.aztec; // import com.google.zxing.BarcodeFormat; -import BarcodeFormat from '../../../core/BarcodeFormat'; +import { BarcodeFormat } from '@zxing/library'; // import com.google.zxing.common.AbstractBlackBoxTestCase; import AbstractBlackBoxSpec from '../common/AbstractBlackBox'; -import AztecReader from '../../../core/aztec/AztecReader'; +import { AztecCodeReader } from '@zxing/library'; /** * @author David Olivier @@ -29,7 +29,7 @@ import AztecReader from '../../../core/aztec/AztecReader'; export /*public final*/ class AztecBlackBox1TestCase extends AbstractBlackBoxSpec { public constructor() { - super('src/test/resources/blackbox/aztec-1', new AztecReader(), BarcodeFormat.AZTEC); + super('src/test/resources/blackbox/aztec-1', new AztecCodeReader(), BarcodeFormat.AZTEC); this.addTest(13, 13, 0.0); this.addTest(13, 13, 90.0); this.addTest(13, 13, 180.0); diff --git a/src/test/core/aztec/AztecBlackBox2.spec.ts b/src/test/core/aztec/AztecBlackBox2.spec.ts index 9c87ecfc..a650ef24 100644 --- a/src/test/core/aztec/AztecBlackBox2.spec.ts +++ b/src/test/core/aztec/AztecBlackBox2.spec.ts @@ -17,11 +17,11 @@ // package com.google.zxing.aztec; // import com.google.zxing.BarcodeFormat; -import BarcodeFormat from '../../../core/BarcodeFormat'; +import { BarcodeFormat } from '@zxing/library'; // import com.google.zxing.common.AbstractBlackBoxTestCase; import AbstractBlackBoxSpec from '../common/AbstractBlackBox'; -import AztecReader from '../../../core/aztec/AztecReader'; +import { AztecCodeReader } from '@zxing/library'; /** * A test of Aztec barcodes under real world lighting conditions, taken with a mobile phone. @@ -31,7 +31,7 @@ import AztecReader from '../../../core/aztec/AztecReader'; export /*public final*/ class AztecBlackBox2TestCase extends AbstractBlackBoxSpec { public constructor() { - super('src/test/resources/blackbox/aztec-2', new AztecReader(), BarcodeFormat.AZTEC); + super('src/test/resources/blackbox/aztec-2', new AztecCodeReader(), BarcodeFormat.AZTEC); this.addTest(5, 5, 0.0); this.addTest(4, 4, 90.0); this.addTest(6, 6, 180.0); diff --git a/src/test/core/aztec/decoder/Decoder.spec.ts b/src/test/core/aztec/decoder/Decoder.spec.ts index 0e07dfb0..415d8ce7 100644 --- a/src/test/core/aztec/decoder/Decoder.spec.ts +++ b/src/test/core/aztec/decoder/Decoder.spec.ts @@ -19,16 +19,16 @@ // import com.google.zxing.ResultPoint; // import com.google.zxing.aztec.AztecDetectorResult; // import com.google.zxing.common.BitMatrix; -import BitMatrix from '../../../../core/common/BitMatrix'; +import { BitMatrix } from '@zxing/library'; // import com.google.zxing.common.DecoderResult; // import org.junit.Test; // import org.junit.Assert; -import { assertEquals, assertArrayEquals, assertThrow } from '../../util/AssertUtils'; +import { assertEquals, assertArrayEquals, assertThrow } from '../../../core/util/AssertUtils'; -import ResultPoint from '../../../../core/ResultPoint'; -import Decoder from '../../../../core/aztec/decoder/Decoder'; -import AztecDetectorResult from '../../../../core/aztec/AztecDetectorResult'; -import FormatException from '../../../../core/FormatException'; +import { ResultPoint } from '@zxing/library'; +import { AztecDecoder } from '@zxing/library'; +import { AztecDetectorResult } from '@zxing/library'; +import { FormatException } from '@zxing/library'; /** * Tests {@link Decoder}. @@ -68,7 +68,7 @@ describe('DecoderTest', () => { ' X X X X X X X X X X X X X \n', 'X ', ' '); const r = new AztecDetectorResult(matrix, NO_POINTS, false, 30, 2); - const result = new Decoder().decode(r); + const result = new AztecDecoder().decode(r); assertEquals('88888TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT', result.getText()); assertArrayEquals( new Uint8Array([- 11, 85, 85, 117, 107, 90, -42, -75, -83, 107, @@ -113,7 +113,7 @@ describe('DecoderTest', () => { + 'X X . X . X . . . X . X . . . . X X . X . . X X . . . \n', 'X ', '. '); const r = new AztecDetectorResult(matrix, NO_POINTS, true, 16, 4); - assertThrow(() => new Decoder().decode(r), FormatException); + assertThrow(() => new AztecDecoder().decode(r), FormatException); }); /** @@ -152,7 +152,7 @@ describe('DecoderTest', () => { + 'X X . . . X X . . X . X . . . . X X . X . . X . X . X \n', 'X ', '. '); const r = new AztecDetectorResult(matrix, NO_POINTS, true, 16, 4); - assertThrow(() => new Decoder().decode(r), FormatException); + assertThrow(() => new AztecDecoder().decode(r), FormatException); }); /** @@ -176,11 +176,11 @@ describe('DecoderTest', () => { let byte9: /*byte[]*/ Uint8Array = new Uint8Array([- 86, -128]); let byte16: /*byte[]*/ Uint8Array = new Uint8Array([99, - 63]); - assertArrayEquals(byte0, Decoder.convertBoolArrayToByteArray(bool0)); - assertArrayEquals(byte1, Decoder.convertBoolArrayToByteArray(bool1)); - assertArrayEquals(byte7, Decoder.convertBoolArrayToByteArray(bool7)); - assertArrayEquals(byte8, Decoder.convertBoolArrayToByteArray(bool8)); - assertArrayEquals(byte9, Decoder.convertBoolArrayToByteArray(bool9)); - assertArrayEquals(byte16, Decoder.convertBoolArrayToByteArray(bool16)); + assertArrayEquals(byte0, AztecDecoder.convertBoolArrayToByteArray(bool0)); + assertArrayEquals(byte1, AztecDecoder.convertBoolArrayToByteArray(bool1)); + assertArrayEquals(byte7, AztecDecoder.convertBoolArrayToByteArray(bool7)); + assertArrayEquals(byte8, AztecDecoder.convertBoolArrayToByteArray(bool8)); + assertArrayEquals(byte9, AztecDecoder.convertBoolArrayToByteArray(bool9)); + assertArrayEquals(byte16, AztecDecoder.convertBoolArrayToByteArray(bool16)); }); }); diff --git a/src/test/core/aztec/detector/Detector.spec.ts b/src/test/core/aztec/detector/Detector.spec.ts index 5aa16145..ffddf653 100644 --- a/src/test/core/aztec/detector/Detector.spec.ts +++ b/src/test/core/aztec/detector/Detector.spec.ts @@ -17,38 +17,38 @@ // package com.google.zxing.aztec.detector; // import com.google.zxing.NotFoundException; -import NotFoundException from '../../../../core/NotFoundException'; +import { NotFoundException } from '@zxing/library'; // import com.google.zxing.aztec.AztecDetectorResult; -import AztecDetectorResult from '../../../../core/aztec/AztecDetectorResult'; +import { AztecDetectorResult } from '@zxing/library'; // import com.google.zxing.aztec.decoder.Decoder; -import Decoder from '../../../../core/aztec/decoder/Decoder'; -// import com.google.zxing.aztec.detector.Detector.Point; -import Detector, { Point } from '../../../../core/aztec/detector/Detector'; +import { AztecDecoder } from '@zxing/library'; +// import com.google.zxing.aztec.detector.Detector.AztecPoint; +import { AztecDetector, AztecPoint } from '@zxing/library'; // import com.google.zxing.aztec.encoder.AztecCode; -import AztecCode from '../../../../core/aztec/encoder/AztecCode'; -// import com.google.zxing.aztec.encoder.Encoder; -import Encoder from '../../../../core/aztec/encoder/Encoder'; -// import Encoder from '../../../../core/aztec/encoder/Encoder'; +import { AztecCode } from '@zxing/library'; +// import com.google.zxing.aztec.encoder.AztecEncoder; +import { AztecEncoder } from '@zxing/library'; +// import { AztecEncoder } from '@zxing/library'; // import com.google.zxing.common.BitMatrix; -import BitMatrix from '../../../../core/common/BitMatrix'; +import { BitMatrix } from '@zxing/library'; // import com.google.zxing.common.DecoderResult; -import DecoderResult from '../../../../core/common/DecoderResult'; +import { DecoderResult } from '@zxing/library'; // import org.junit.Assert; import { assertEquals, assertNotNull, assertThrow } from '../../util/AssertUtils'; import { fail } from 'assert'; // import org.junit.Test; -// import java.nio.charset.StandardCharsets; +// import java.nio.charset.ZXingStandardCharsets; // import java.util.ArrayList; -// import java.util.Arrays; -import Arrays from '../../../../core/util/Arrays'; +// import java.util.ZXingArrays; +import { ZXingArrays } from '@zxing/library'; // import java.util.Collection; // import java.util.List; // import java.util.Random; -import Random from '../../util/Random'; -import StringUtils from '../../../../core/common/StringUtils'; -import StandardCharsets from '../../../../core/util/StandardCharsets'; -import Integer from '../../../../core/util/Integer'; +import Random from '../../../core/util/Random'; +import { StringUtils } from '@zxing/library'; +import { ZXingStandardCharsets } from '@zxing/library'; +import { ZXingInteger } from '@zxing/library'; // import java.util.TreeSet; /** @@ -94,11 +94,11 @@ describe('DetectorTest', () => { */ // Test that we can tolerate errors in the parameter locator bits function testErrorInParameterLocator(data: string): void { - let aztec: AztecCode = Encoder.encode(StringUtils.getBytes(data, StandardCharsets.ISO_8859_1), 25, Encoder.DEFAULT_AZTEC_LAYERS); + let aztec: AztecCode = AztecEncoder.encode(StringUtils.getBytes(data, ZXingStandardCharsets.ISO_8859_1), 25, AztecEncoder.DEFAULT_AZTEC_LAYERS); let random: Random = new Random(aztec.getMatrix().hashCode().toString()); // pseudo-random, but deterministic let layers: /*int*/ number = aztec.getLayers(); let compact: boolean = aztec.isCompact(); - let orientationPoints: Point[] = getOrientationPoints(aztec); + let orientationPoints: AztecPoint[] = getOrientationPoints(aztec); for (const isMirror of [false, true]) { for (const matrix of getRotations(aztec.getMatrix())) { // Systematically try every possible 1- and 2-bit error. @@ -111,11 +111,11 @@ describe('DetectorTest', () => { copy.flip(orientationPoints[error2].getX(), orientationPoints[error2].getY()); } // The detector doesn't seem to work when matrix bits are only 1x1. So magnify. - let r: AztecDetectorResult = new Detector(makeLarger(copy, 3)).detectMirror(isMirror); + let r: AztecDetectorResult = new AztecDetector(makeLarger(copy, 3)).detectMirror(isMirror); assertNotNull(r); assertEquals(r.getNbLayers(), layers); assertEquals(r.isCompact(), compact); - let res: DecoderResult = new Decoder().decode(r); + let res: DecoderResult = new AztecDecoder().decode(r); assertEquals(data, res.getText()); } } @@ -131,7 +131,7 @@ describe('DetectorTest', () => { copy.flip(orientationPoints[error].getX(), orientationPoints[error].getY()); } try { - new Detector(makeLarger(copy, 3)).detectMirror(false); + new AztecDetector(makeLarger(copy, 3)).detectMirror(false); fail('Should not reach here'); } catch (expected) { // continue @@ -163,7 +163,7 @@ describe('DetectorTest', () => { let matrix90: BitMatrix = rotateRight(matrix0); let matrix180: BitMatrix = rotateRight(matrix90); let matrix270: BitMatrix = rotateRight(matrix180); - return Arrays.asList(matrix0, matrix90, matrix180, matrix270); + return ZXingArrays.asList(matrix0, matrix90, matrix180, matrix270); } // Rotates a square BitMatrix to the right by 90 degrees @@ -208,15 +208,15 @@ describe('DetectorTest', () => { return result; } - function getOrientationPoints(code: AztecCode): Point[] { - let center: number = Integer.truncDivision(code.getMatrix().getWidth(), 2); + function getOrientationPoints(code: AztecCode): AztecPoint[] { + let center: number = ZXingInteger.truncDivision(code.getMatrix().getWidth(), 2); let offset: number = code.isCompact() ? 5 : 7; - let result: Point[] = []; + let result: AztecPoint[] = []; for (let xSign: number = -1; xSign <= 1; xSign += 2) { for (let ySign: number = -1; ySign <= 1; ySign += 2) { - result.push(new Point(center + xSign * offset, center + ySign * offset)); - result.push(new Point(center + xSign * (offset - 1), center + ySign * offset)); - result.push(new Point(center + xSign * offset, center + ySign * (offset - 1))); + result.push(new AztecPoint(center + xSign * offset, center + ySign * offset)); + result.push(new AztecPoint(center + xSign * (offset - 1), center + ySign * offset)); + result.push(new AztecPoint(center + xSign * offset, center + ySign * (offset - 1))); } } return result; diff --git a/src/test/core/aztec/encoder/EncoderTest.spec.ts b/src/test/core/aztec/encoder/EncoderTest.spec.ts index 75183b22..45d10b1f 100644 --- a/src/test/core/aztec/encoder/EncoderTest.spec.ts +++ b/src/test/core/aztec/encoder/EncoderTest.spec.ts @@ -14,32 +14,33 @@ * limitations under the License. */ -import AztecCode from '../../../../core/aztec/encoder/AztecCode'; +import { AztecCode } from '@zxing/library'; import { assertEquals, assertTrue, assertFalse, assertArrayEquals } from '../../util/AssertUtils'; -import BitMatrix from '../../../../core/common/BitMatrix'; +import { BitMatrix } from '@zxing/library'; import { BarcodeFormat, DecoderResult, EncodeHintType, BitArray, StringUtils, -} from '../../../..'; -import Encoder from '../../../../core/aztec/encoder/Encoder'; -import StandardCharsets from '../../../../core/util/StandardCharsets'; -import StringBuilder from '../../../../core/util/StringBuilder'; +} from '@zxing/library'; +import { AztecEncoder } from '@zxing/library'; +import { ZXingStandardCharsets } from '@zxing/library'; +import { ZXingStringBuilder } from '@zxing/library'; import { fail } from 'assert'; -import AztecDetectorResult from '../../../../core/aztec/AztecDetectorResult'; -import Decoder from '../../../../core/aztec/decoder/Decoder'; -import Random from '../../util/Random'; -import HighLevelEncoder from '../../../../core/aztec/encoder/HighLevelEncoder'; -import AztecWriter from '../../../../core/aztec/AztecWriter'; -import ResultPoint from '../../../../core/ResultPoint'; -import StringEncoding from '../../../../core/util/StringEncoding'; -import Charset from '../../../../core/util/Charset'; -import { TextEncoder, TextDecoder } from '@sinonjs/text-encoding'; - -StringEncoding.customEncoder = (b, e) => new TextEncoder(e, { NONSTANDARD_allowLegacyEncoding: true }).encode(b); -StringEncoding.customDecoder = (s, e) => new TextDecoder(e, { NONSTANDARD_allowLegacyEncoding: true }).decode(s); +import { AztecDetectorResult } from '@zxing/library'; +import { AztecDecoder } from '@zxing/library'; +import Random from '../../../core/util/Random'; +import { AztecHighLevelEncoder } from '@zxing/library'; +import { AztecCodeWriter } from '@zxing/library'; +import { ResultPoint } from '@zxing/library'; +import { ZXingStringEncoding } from '@zxing/library'; +import { ZXingCharset } from '@zxing/library'; +import '@zxing/text-encoding/cjs/encoding-indexes'; +import { TextEncoder, TextDecoder } from '@zxing/text-encoding'; + +ZXingStringEncoding.customEncoder = (b, e) => new TextEncoder(e, { NONSTANDARD_allowLegacyEncoding: true }).encode(b); +ZXingStringEncoding.customDecoder = (s, e) => new TextDecoder(e).decode(s); /** * Aztec 2D generator unit tests. @@ -146,20 +147,23 @@ describe('EncoderTest', () => { // public void testAztecWriter() throws Exception { it('testAztecWriter', () => { - testWriter('\u20AC 1 sample data.', 'ISO-8859-1', 25, true, 2); + // this char is not officially present on ISO-8859-1 + // testWriter('\u20AC 1 sample data.', 'ISO-8859-1', 25, true, 2); + // using windows-1252 instead + testWriter('\u20AC 1 sample data.', 'windows-1252', 25, true, 2); testWriter('\u20AC 1 sample data.', 'ISO-8859-15', 25, true, 2); testWriter('\u20AC 1 sample data.', 'UTF-8', 25, true, 2); testWriter('\u20AC 1 sample data.', 'UTF-8', 100, true, 3); testWriter('\u20AC 1 sample data.', 'UTF-8', 300, true, 4); testWriter('\u20AC 1 sample data.', 'UTF-8', 500, false, 5); - // Test AztecWriter defaults + // Test AztecCodeWriter defaults const data: string = 'In ut magna vel mauris malesuada'; - const writer: AztecWriter = new AztecWriter(); + const writer: AztecCodeWriter = new AztecCodeWriter(); const matrix: BitMatrix = writer.encode(data, BarcodeFormat.AZTEC, 0, 0); - const aztec: AztecCode = Encoder.encode( - StringUtils.getBytes(data, StandardCharsets.ISO_8859_1), - Encoder.DEFAULT_EC_PERCENT, - Encoder.DEFAULT_AZTEC_LAYERS + const aztec: AztecCode = AztecEncoder.encode( + StringUtils.getBytes(data, ZXingStandardCharsets.ISO_8859_1), + AztecEncoder.DEFAULT_EC_PERCENT, + AztecEncoder.DEFAULT_AZTEC_LAYERS ); const expectedMatrix: BitMatrix = aztec.getMatrix(); // TYPESCRIPTPORT: here we have to compare each property @@ -403,8 +407,8 @@ describe('EncoderTest', () => { // @Test // public void testHighLevelEncodeBinary() { // binary short form single byte - // @todo enable and fix this test for Encoder release - it.skip('testHighLevelEncodeBinary', () => { + // @todo enable and fix this test for AztecEncoder release + it('testHighLevelEncodeBinary', () => { testHighLevelEncodeString( 'N\0N', // 'N' B/S =1 '\0' N @@ -439,7 +443,7 @@ describe('EncoderTest', () => { ); // Create a string in which every character requires binary - let sb: StringBuilder = new StringBuilder(); + let sb: ZXingStringBuilder = new ZXingStringBuilder(); for (let i = 0; i <= 3000; i++) { sb.append(128 + (i % 30)); } @@ -488,7 +492,7 @@ describe('EncoderTest', () => { ); } - sb = new StringBuilder(); + sb = new ZXingStringBuilder(); for (let i = 0; i < 32; i++) { sb.append('Β§'); // Β§ forces binary encoding } @@ -496,7 +500,7 @@ describe('EncoderTest', () => { // expect B/S(1) A B/S(30) testHighLevelEncodeString(sb.toString(), 5 + 20 + 31 * 8); - sb = new StringBuilder(); + sb = new ZXingStringBuilder(); for (let i = 0; i < 31; i++) { sb.append('Β§'); } @@ -504,7 +508,7 @@ describe('EncoderTest', () => { // expect B/S(31) testHighLevelEncodeString(sb.toString(), 10 + 31 * 8); - sb = new StringBuilder(); + sb = new ZXingStringBuilder(); for (let i = 0; i < 34; i++) { sb.append('Β§'); } @@ -512,7 +516,7 @@ describe('EncoderTest', () => { // expect B/S(31) B/S(3) testHighLevelEncodeString(sb.toString(), 20 + 34 * 8); - sb = new StringBuilder(); + sb = new ZXingStringBuilder(); for (let i = 0; i < 64; i++) { sb.append('Β§'); } @@ -524,10 +528,10 @@ describe('EncoderTest', () => { // @Test // public void testHighLevelEncodePairs() { // Typical usage - // @todo enable and fix this test for Encoder release - it.skip('testHighLevelEncodePairs', () => { + // @todo enable and fix this test for AztecEncoder release + it('testHighLevelEncodePairs', () => { testHighLevelEncodeString( - '{}ABC. DEF\r\n', + 'ABC. DEF\r\n', // A B C P/S . D E F P/S \r\n '...X. ...XX ..X.. ..... ...XX ..X.X ..XX. ..XXX ..... ...X.' ); @@ -547,7 +551,7 @@ describe('EncoderTest', () => { ); // Don't bother leaving Binary Shift. testHighLevelEncodeString( - 'A\x200. \x200', + 'A\x80. \x80', // 'A' B/S =2 \200 "." " " \200 '...X. XXXXX ..X.. X....... ..X.XXX. ..X..... X.......' ); @@ -558,25 +562,25 @@ describe('EncoderTest', () => { it('testUserSpecifiedLayers', () => { const alphabet: Uint8Array = StringUtils.getBytes( 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', - StandardCharsets.ISO_8859_1 + ZXingStandardCharsets.ISO_8859_1 ); - let aztec = Encoder.encode(alphabet, 25, -2); + let aztec = AztecEncoder.encode(alphabet, 25, -2); assertEquals(2, aztec.getLayers()); assertTrue(aztec.isCompact()); - aztec = Encoder.encode(alphabet, 25, 32); + aztec = AztecEncoder.encode(alphabet, 25, 32); assertEquals(32, aztec.getLayers()); assertFalse(aztec.isCompact()); try { - Encoder.encode(alphabet, 25, 33); + AztecEncoder.encode(alphabet, 25, 33); fail('Encode should have failed. No such thing as 33 layers'); } catch (expected) { // continue } try { - Encoder.encode(alphabet, 25, -1); + AztecEncoder.encode(alphabet, 25, -1); fail('Encode should have failed. Text can\'t fit in 1-layer compact'); } catch (expected) { // continue @@ -593,33 +597,33 @@ describe('EncoderTest', () => { const alphabet4: string = alphabet + alphabet + alphabet + alphabet; const data: Uint8Array = StringUtils.getBytes( alphabet4, - StandardCharsets.ISO_8859_1 + ZXingStandardCharsets.ISO_8859_1 ); try { - Encoder.encode(data, 0, -4); + AztecEncoder.encode(data, 0, -4); fail('Encode should have failed. Text can\'t fit in 1-layer compact'); } catch (expected) { // continue } // If we just try to encode it normally, it will go to a non-compact 4 layer - let aztecCode: AztecCode = Encoder.encode( + let aztecCode: AztecCode = AztecEncoder.encode( data, 0, - Encoder.DEFAULT_AZTEC_LAYERS + AztecEncoder.DEFAULT_AZTEC_LAYERS ); assertFalse(aztecCode.isCompact()); assertEquals(4, aztecCode.getLayers()); // But shortening the string to 100 bytes (500 bits of data), compact works fine, even if we // include more error checking. - aztecCode = Encoder.encode( + aztecCode = AztecEncoder.encode( StringUtils.getBytes( alphabet4.substring(0, 100), - StandardCharsets.ISO_8859_1 + ZXingStandardCharsets.ISO_8859_1 ), 10, - Encoder.DEFAULT_AZTEC_LAYERS + AztecEncoder.DEFAULT_AZTEC_LAYERS ); assertTrue(aztecCode.isCompact()); assertEquals(4, aztecCode.getLayers()); @@ -633,10 +637,10 @@ describe('EncoderTest', () => { layers: number, expected: string ) { - const aztec: AztecCode = Encoder.encode( - StringUtils.getBytes(data, StandardCharsets.ISO_8859_1), + const aztec: AztecCode = AztecEncoder.encode( + StringUtils.getBytes(data, ZXingStandardCharsets.ISO_8859_1), 33, - Encoder.DEFAULT_AZTEC_LAYERS + AztecEncoder.DEFAULT_AZTEC_LAYERS ); assertEquals(compact, aztec.isCompact()); assertEquals(layers, aztec.getLayers()); @@ -645,10 +649,10 @@ describe('EncoderTest', () => { } function testEncodeDecode(data: string, compact: boolean, layers: number) { - const aztec = Encoder.encode( - StringUtils.getBytes(data, StandardCharsets.ISO_8859_1), + const aztec = AztecEncoder.encode( + StringUtils.getBytes(data, ZXingStandardCharsets.ISO_8859_1), 25, - Encoder.DEFAULT_AZTEC_LAYERS + AztecEncoder.DEFAULT_AZTEC_LAYERS ); assertEquals(compact, aztec.isCompact()); assertEquals(layers, aztec.getLayers()); @@ -660,7 +664,7 @@ describe('EncoderTest', () => { aztec.getCodeWords(), aztec.getLayers() ); - let res: DecoderResult = new Decoder().decode(r); + let res: DecoderResult = new AztecDecoder().decode(r); assertEquals(data, res.getText()); // Check error correction by introducing a few minor errors const random = getPseudoRandom(); @@ -681,7 +685,7 @@ describe('EncoderTest', () => { aztec.getCodeWords(), aztec.getLayers() ); - res = new Decoder().decode(r); + res = new AztecDecoder().decode(r); assertEquals(data, res.getText()); } @@ -693,15 +697,15 @@ describe('EncoderTest', () => { layers: number ) { // 1. Perform an encode-decode round-trip because it can be lossy. - // 2. Aztec Decoder currently always decodes the data with a LATIN-1 charset: - const expectedData = StringEncoding.decode( - StringUtils.getBytes(data, Charset.forName(charset)), - StandardCharsets.ISO_8859_1 + // 2. Aztec AztecDecoder currently always decodes the data with a LATIN-1 charset: + const expectedData = ZXingStringEncoding.decode( + StringUtils.getBytes(data, ZXingCharset.forName(charset)), + ZXingStandardCharsets.ISO_8859_1 ); const hints: Map = new Map(); hints.set(EncodeHintType.CHARACTER_SET, charset); hints.set(EncodeHintType.ERROR_CORRECTION, eccPercent); - const writer = new AztecWriter(); + const writer = new AztecCodeWriter(); const matrix = writer.encodeWithHints( data, BarcodeFormat.AZTEC, @@ -709,10 +713,10 @@ describe('EncoderTest', () => { 0, hints ); - const aztec = Encoder.encode( - StringUtils.getBytes(data, Charset.forName(charset)), + const aztec = AztecEncoder.encode( + StringUtils.getBytes(data, ZXingCharset.forName(charset)), eccPercent, - Encoder.DEFAULT_AZTEC_LAYERS + AztecEncoder.DEFAULT_AZTEC_LAYERS ); assertEquals(compact, aztec.isCompact()); assertEquals(layers, aztec.getLayers()); @@ -725,7 +729,7 @@ describe('EncoderTest', () => { aztec.getCodeWords(), aztec.getLayers() ); - let res = new Decoder().decode(r); + let res = new AztecDecoder().decode(r); assertEquals(expectedData, res.getText()); // Check error correction by introducing up to eccPercent/2 errors const ecWords = (aztec.getCodeWords() * eccPercent) / 100 / 2; @@ -747,7 +751,7 @@ describe('EncoderTest', () => { aztec.getCodeWords(), aztec.getLayers() ); - res = new Decoder().decode(r); + res = new AztecDecoder().decode(r); assertEquals(expectedData, res.getText()); } @@ -761,13 +765,13 @@ describe('EncoderTest', () => { words: number, expected: string ) { - const inArr: BitArray = Encoder.generateModeMessage(compact, layers, words); + const inArr: BitArray = AztecEncoder.generateModeMessage(compact, layers, words); assertEquals(stripSpace(expected), stripSpace(inArr.toString())); } function testStuffBits(wordSize: number, bits: string, expected: string) { const inArr = toBitArray(bits); - const stuffed: BitArray = Encoder.stuffBits(inArr, wordSize); + const stuffed: BitArray = AztecEncoder.stuffBits(inArr, wordSize); assertEquals(stripSpace(expected), stripSpace(stuffed.toString())); } @@ -789,27 +793,27 @@ describe('EncoderTest', () => { } function testHighLevelEncodeString(s: string, expectedBits: string | number) { - const bits: BitArray = new HighLevelEncoder( - StringUtils.getBytes(s, StandardCharsets.ISO_8859_1) + const bits: BitArray = new AztecHighLevelEncoder( + StringUtils.getBytes(s, ZXingStandardCharsets.ISO_8859_1) ).encode(); if (typeof expectedBits === 'number') { const receivedBitCount: number = stripSpace(bits.toString()).length; - assertEquals(expectedBits, receivedBitCount); - assertEquals(s, Decoder.highLevelDecode(toBooleanArray(bits))); + assertEquals(receivedBitCount, expectedBits); + assertEquals(AztecDecoder.highLevelDecode(toBooleanArray(bits)), s); } else { const receivedBits: string = stripSpace(bits.toString()); - assertEquals(stripSpace(expectedBits), receivedBits); - assertEquals(s, Decoder.highLevelDecode(toBooleanArray(bits))); + assertEquals(receivedBits, stripSpace(expectedBits)); + assertEquals(AztecDecoder.highLevelDecode(toBooleanArray(bits)), s); } } /* function testHighLevelEncodeString(s: string, expectedReceivedBits: number) { - const bits: BitArray = new HighLevelEncoder(StringUtils.getBytes(s, StandardCharsets.ISO_8859_1)).encode(); + const bits: BitArray = new AztecHighLevelEncoder(StringUtils.getBytes(s, ZXingStandardCharsets.ISO_8859_1)).encode(); const receivedBitCount: number = stripSpace(bits.toString()).length; assertEquals("highLevelEncode() failed for input string: " + s, expectedReceivedBits, receivedBitCount); - assertEquals(s, Decoder.highLevelDecode(toBooleanArray(bits))); + assertEquals(s, AztecDecoder.highLevelDecode(toBooleanArray(bits))); } */ function stripSpace(s: string): string { diff --git a/src/test/core/common/AbstractBlackBox.ts b/src/test/core/common/AbstractBlackBox.ts index 582338de..f1bb89f3 100644 --- a/src/test/core/common/AbstractBlackBox.ts +++ b/src/test/core/common/AbstractBlackBox.ts @@ -16,21 +16,19 @@ /*package com.google.zxing.common;*/ -import * as fs from 'fs'; -import * as path from 'path'; -import BarcodeFormat from '../../../core/BarcodeFormat'; -import BinaryBitmap from '../../../core/BinaryBitmap'; -import HybridBinarizer from '../../../core/common/HybridBinarizer'; -import DecodeHintType from '../../../core/DecodeHintType'; -import LuminanceSource from '../../../core/LuminanceSource'; -import Reader from '../../../core/Reader'; -import Result from '../../../core/Result'; -import ResultMetadataType from '../../../core/ResultMetadataType'; -import StringEncoding from '../../../core/util/StringEncoding'; -import TestResult from '../common/TestResult'; -import SharpImageLuminanceSource from '../SharpImageLuminanceSource'; import { assertEquals } from '../util/AssertUtils'; import SharpImage from '../util/SharpImage'; +import SharpImageLuminanceSource from '../SharpImageLuminanceSource'; +import { BarcodeFormat } from '@zxing/library'; +import { BinaryBitmap } from '@zxing/library'; +import { DecodeHintType } from '@zxing/library'; +import { LuminanceSource } from '@zxing/library'; +import { Reader } from '@zxing/library'; +import { Result } from '@zxing/library'; +import { ResultMetadataType } from '@zxing/library'; +import TestResult from '../common/TestResult'; +import { HybridBinarizer } from '@zxing/library'; +import { ZXingStringEncoding } from '@zxing/library'; /*import javax.imageio.ImageIO;*/ @@ -42,8 +40,8 @@ import SharpImage from '../util/SharpImage'; /*import java.awt.image.BufferedImageOp;*/ /*import java.io.BufferedReader;*/ /*import java.io.IOException;*/ -/*import java.nio.charset.Charset;*/ -/*import java.nio.charset.StandardCharsets;*/ +/*import java.nio.charset.ZXingCharset;*/ +/*import java.nio.charset.ZXingStandardCharsets;*/ /*import java.nio.file.DirectoryStream;*/ /*import java.nio.file.Files;*/ /*import java.nio.file.Path;*/ @@ -416,7 +414,7 @@ abstract class AbstractBlackBoxSpec { */ protected static readBinFileAsString(file: string): string { const bufferContents: Buffer = fs.readFileSync(file); - const stringContents = StringEncoding.decode(new Uint8Array(bufferContents), 'iso-8859-1'); + const stringContents = ZXingStringEncoding.decode(new Uint8Array(bufferContents), 'iso-8859-1'); if (stringContents.endsWith('\n')) { console.warn('contents: string of file ' + file + ' end with a newline. ' + 'This may not be intended and cause a test failure'); diff --git a/src/test/core/common/BitArray.spec.ts b/src/test/core/common/BitArray.spec.ts index f313275b..8323e3d4 100644 --- a/src/test/core/common/BitArray.spec.ts +++ b/src/test/core/common/BitArray.spec.ts @@ -18,8 +18,8 @@ import * as assert from 'assert'; import Random from '../util/Random'; -import BitArray from '../../../core/common/BitArray'; -import Integer from '../../../core/util/Integer'; +import { BitArray } from '@zxing/library'; +import { ZXingInteger } from '@zxing/library'; import AssertUtils from '../util/AssertUtils'; /** @@ -171,7 +171,7 @@ describe('BitArray', () => { array.set(63); const ints = array.getBitArray(); assert.strictEqual(ints[0], 1); - assert.strictEqual(ints[1], Integer.MIN_VALUE_32_BITS); // Integer.MIN_VALUE) + assert.strictEqual(ints[1], ZXingInteger.MIN_VALUE_32_BITS); // Integer.MIN_VALUE) }); diff --git a/src/test/core/common/BitMatrix.spec.ts b/src/test/core/common/BitMatrix.spec.ts index 61000b49..10595eeb 100644 --- a/src/test/core/common/BitMatrix.spec.ts +++ b/src/test/core/common/BitMatrix.spec.ts @@ -17,10 +17,12 @@ /*package com.google.zxing.common;*/ import * as assert from 'assert'; -import BitArray from '../../../core/common/BitArray'; -import BitMatrix from '../../../core/common/BitMatrix'; -import IllegalArgumentException from '../../../core/IllegalArgumentException'; import AssertUtils from '../util/AssertUtils'; +import { BitMatrix } from '@zxing/library'; +import { BitArray } from '@zxing/library'; + +import { ZXingStringBuilder } from '@zxing/library'; +import { IllegalArgumentException } from '@zxing/library'; /** @@ -284,13 +286,32 @@ describe('BitMatrix', () => { testXOR(fullMatrix, centerMatrix, invertedCenterMatrix); testXOR(fullMatrix, fullMatrix, emptyMatrix); - try { - emptyMatrix.clone().xor(badMatrix); - assert.ok(false); - } catch (ex) { - if (!(ex instanceof IllegalArgumentException)) { - assert.ok(false); - } + try { + emptyMatrix.clone().xor(badMatrix); + assert.ok(false); + } catch (ex) { + if (!(ex instanceof IllegalArgumentException)) { + assert.ok(false); + } + } + + try { + badMatrix.clone().xor(emptyMatrix); + assert.ok(false); + } catch (ex) { + if (!(ex instanceof IllegalArgumentException)) { + assert.ok(false); + } + } + }); + + function matrixToString(result: BitMatrix): string { + assert.strictEqual(1, result.getHeight()); + const builder: ZXingStringBuilder = new ZXingStringBuilder(); // result.getWidth()) + for (let i: number /*int*/ = 0; i < result.getWidth(); i++) { + builder.append(result.get(i, 0) ? '1' : '0'); + } + return builder.toString(); } try { diff --git a/src/test/core/common/BitSource.spec.ts b/src/test/core/common/BitSource.spec.ts index 7bbe0e70..934d3209 100644 --- a/src/test/core/common/BitSource.spec.ts +++ b/src/test/core/common/BitSource.spec.ts @@ -17,7 +17,7 @@ /*package com.google.zxing.common;*/ import * as assert from 'assert'; -import BitSource from '../../../core/common/BitSource'; +import { BitSource } from '@zxing/library'; /** * @author Sean Owen diff --git a/src/test/core/common/PerspectiveTransform.spec.ts b/src/test/core/common/PerspectiveTransform.spec.ts index aaf8e0be..04b4346a 100644 --- a/src/test/core/common/PerspectiveTransform.spec.ts +++ b/src/test/core/common/PerspectiveTransform.spec.ts @@ -17,7 +17,7 @@ /*package com.google.zxing.common;*/ import * as assert from 'assert'; -import PerspectiveTransform from '../../../core/common/PerspectiveTransform'; +import { PerspectiveTransform } from '@zxing/library'; /** * @author Sean Owen diff --git a/src/test/core/common/StringUtils.spec.ts b/src/test/core/common/StringUtils.spec.ts index 56edb384..52cbb442 100644 --- a/src/test/core/common/StringUtils.spec.ts +++ b/src/test/core/common/StringUtils.spec.ts @@ -18,10 +18,10 @@ import * as assert from 'assert'; -import StringUtils from '../../../core/common/StringUtils'; -import CharacterSetECI from '../../../core/common/CharacterSetECI'; +import { StringUtils } from '@zxing/library'; +import { CharacterSetECI } from '@zxing/library'; -/*import java.nio.charset.Charset;*/ +/*import java.nio.charset.ZXingCharset;*/ describe('StringUtils', () => { @@ -43,9 +43,9 @@ describe('StringUtils', () => { }); function doTest(bytes: Uint8Array, charsetName: string): void { - // const charset: Charset = Charset.forName(charsetName); + // const charset: ZXingCharset = ZXingCharset.forName(charsetName); const guessedName: string = StringUtils.guessEncoding(bytes, null); - // const guessedEncoding: Charset = Charset.forName(guessedName); + // const guessedEncoding: ZXingCharset = ZXingCharset.forName(guessedName); // assert.strictEqual(guessedEncoding, charset) assert.strictEqual(guessedName, charsetName); } @@ -59,8 +59,8 @@ describe('StringUtils', () => { */ // funtion main(String[] args): void { // const text: string = args[0] - // const charset: Charset = Charset.forName(args[1]); - // const declaration = new StringBuilder() + // const charset: ZXingCharset = ZXingCharset.forName(args[1]); + // const declaration = new ZXingStringBuilder() // declaration.append("Uint8Array.from([") // for (byte b : text.getBytes(charset)) { // declaration.append("/*(byte)*/ 0x") diff --git a/src/test/core/common/detector/MathUtils.spec.ts b/src/test/core/common/detector/MathUtils.spec.ts index 6aab496b..cb08ce4f 100644 --- a/src/test/core/common/detector/MathUtils.spec.ts +++ b/src/test/core/common/detector/MathUtils.spec.ts @@ -17,7 +17,7 @@ /*package com.google.zxing.common.detector;*/ import * as assert from 'assert'; -import MathUtils from '../../../../core/common/detector/MathUtils'; +import { MathUtils } from '@zxing/library'; describe('MathUtils', () => { diff --git a/src/test/core/common/reedsolomon/ReedSolomon.spec.ts b/src/test/core/common/reedsolomon/ReedSolomon.spec.ts index 5add4986..d7d76172 100644 --- a/src/test/core/common/reedsolomon/ReedSolomon.spec.ts +++ b/src/test/core/common/reedsolomon/ReedSolomon.spec.ts @@ -17,12 +17,12 @@ /*package com.google.zxing.common.reedsolomon;*/ import * as assert from 'assert'; -import StringBuilder from '../../../../core/util/StringBuilder'; -import Random from '../../util/Random'; -import System from '../../../../core/util/System'; -import GenericGF from '../../../../core/common/reedsolomon/GenericGF'; -import ReedSolomonEncoder from '../../../../core/common/reedsolomon/ReedSolomonEncoder'; -import ReedSolomonDecoder from '../../../../core/common/reedsolomon/ReedSolomonDecoder'; +import { ZXingStringBuilder } from '@zxing/library'; +import Random from '../../../core/util/Random'; +import { ZXingSystem } from '@zxing/library'; +import { GenericGF } from '@zxing/library'; +import { ReedSolomonEncoder } from '@zxing/library'; +import { ReedSolomonDecoder } from '@zxing/library'; /*import java.util.Random;*/ @@ -521,9 +521,9 @@ function testEncodeDecodeRandom(field: GenericGF, dataSize: number /*int*/, ecSi dataWords[k] = random.next(field.getSize()); } // generate ECC words - System.arraycopy(dataWords, 0, message, 0, dataWords.length); + ZXingSystem.arraycopy(dataWords, 0, message, 0, dataWords.length); encoder.encode(message, ecWords.length); - System.arraycopy(message, dataSize, ecWords, 0, ecSize); + ZXingSystem.arraycopy(message, dataSize, ecWords, 0, ecSize); // check to see if Decoder can fix up to ecWords/2 random errors testDecoder(field, dataWords, ecWords); } @@ -540,9 +540,9 @@ function testEncoder(field: GenericGF, dataWords: Int32Array, ecWords: Int32Arra const messageExpected = new Int32Array(dataWords.length + ecWords.length); const message = new Int32Array(dataWords.length + ecWords.length); - System.arraycopy(dataWords, 0, messageExpected, 0, dataWords.length); - System.arraycopy(ecWords, 0, messageExpected, dataWords.length, ecWords.length); - System.arraycopy(dataWords, 0, message, 0, dataWords.length); + ZXingSystem.arraycopy(dataWords, 0, messageExpected, 0, dataWords.length); + ZXingSystem.arraycopy(ecWords, 0, messageExpected, dataWords.length, ecWords.length); + ZXingSystem.arraycopy(dataWords, 0, message, 0, dataWords.length); encoder.encode(message, ecWords.length); @@ -565,8 +565,8 @@ function testDecoder(field: GenericGF, dataWords: Int32Array, ecWords: Int32Arra i += Math.floor(ecWords.length / 10); } - System.arraycopy(dataWords, 0, message, 0, dataWords.length); - System.arraycopy(ecWords, 0, message, dataWords.length, ecWords.length); + ZXingSystem.arraycopy(dataWords, 0, message, 0, dataWords.length); + ZXingSystem.arraycopy(ecWords, 0, message, dataWords.length, ecWords.length); corrupt(message, i, random, field.getSize()); @@ -602,7 +602,7 @@ function assertDataEquals(received: Int32Array, expected: Int32Array, message: s function arrayToString(data: Int32Array): String { - const sb = new StringBuilder(); + const sb = new ZXingStringBuilder(); sb.append('{'); diff --git a/src/test/core/common/reedsolomon/ReedSolomonCorrupt.ts b/src/test/core/common/reedsolomon/ReedSolomonCorrupt.ts index e714f872..d874fada 100644 --- a/src/test/core/common/reedsolomon/ReedSolomonCorrupt.ts +++ b/src/test/core/common/reedsolomon/ReedSolomonCorrupt.ts @@ -1,5 +1,5 @@ -import Random from '../../util/Random'; -import BitSet from '../../util/BitSet'; +import Random from '../../../core/util/Random'; +import BitSet from '../../../core/util/BitSet'; /** * This function was part of ReedSolomonTestCase, but as it's used diff --git a/src/test/core/datamatrix/DataMatrixBlackBox.1.spec.ts b/src/test/core/datamatrix/DataMatrixBlackBox.1.spec.ts index 2d1f3074..7210f2ae 100644 --- a/src/test/core/datamatrix/DataMatrixBlackBox.1.spec.ts +++ b/src/test/core/datamatrix/DataMatrixBlackBox.1.spec.ts @@ -16,8 +16,8 @@ /*package com.google.zxing.qrcode;*/ -import BarcodeFormat from '../../../core/BarcodeFormat'; -import MultiFormatReader from '../../../core/MultiFormatReader'; +import { BarcodeFormat } from '@zxing/library'; +import { MultiFormatReader } from '@zxing/library'; import AbstractBlackBoxSpec from '../common/AbstractBlackBox'; /** diff --git a/src/test/core/datamatrix/decoder/DecodedBitStreamParser.spec.ts b/src/test/core/datamatrix/decoder/DecodedBitStreamParser.spec.ts index cc598c65..e7a09385 100644 --- a/src/test/core/datamatrix/decoder/DecodedBitStreamParser.spec.ts +++ b/src/test/core/datamatrix/decoder/DecodedBitStreamParser.spec.ts @@ -1,7 +1,7 @@ import * as assert from 'assert'; -import DecodedBitStreamParser from '../../../../core/datamatrix/decoder/DecodedBitStreamParser'; +import { DataMatrixDecodedBitStreamParser } from '@zxing/library'; -describe('DecodedBitStreamParser', () => { +describe('QRCodeDecodedBitStreamParser', () => { it('testAsciiStandardDecode', () => { // ASCII characters 0-127 are encoded as the value + 1 @@ -12,7 +12,7 @@ describe('DecodedBitStreamParser', () => { bytes[3] = 'A'.charCodeAt(0) + 1; bytes[4] = 'B'.charCodeAt(0) + 1; bytes[5] = 'C'.charCodeAt(0) + 1; - const decodedString = DecodedBitStreamParser.decode(bytes).getText(); + const decodedString = DataMatrixDecodedBitStreamParser.decode(bytes).getText(); assert.strictEqual(decodedString, 'abcABC'); }); @@ -22,7 +22,7 @@ describe('DecodedBitStreamParser', () => { bytes[1] = 1 + 130; bytes[2] = 98 + 130; bytes[3] = 99 + 130; - const decodedString = DecodedBitStreamParser.decode(bytes).getText(); + const decodedString = DataMatrixDecodedBitStreamParser.decode(bytes).getText(); assert.strictEqual(decodedString, '00019899'); }); diff --git a/src/test/core/oned/Code128BlackBox1.spec.ts b/src/test/core/oned/Code128BlackBox1.spec.ts index 5ee106e2..85d7da2c 100644 --- a/src/test/core/oned/Code128BlackBox1.spec.ts +++ b/src/test/core/oned/Code128BlackBox1.spec.ts @@ -17,8 +17,8 @@ // package com.google.zxing.oned; -import BarcodeFormat from '../../../core/BarcodeFormat'; -import MultiFormatReader from '../../../core/MultiFormatReader'; +import { BarcodeFormat } from '@zxing/library'; +import { MultiFormatReader } from '@zxing/library'; import AbstractBlackBoxSpec from '../common/AbstractBlackBox'; /** diff --git a/src/test/core/oned/Code39BlackBox1.spec.ts b/src/test/core/oned/Code39BlackBox1.spec.ts index 06199ba5..1d04426a 100644 --- a/src/test/core/oned/Code39BlackBox1.spec.ts +++ b/src/test/core/oned/Code39BlackBox1.spec.ts @@ -17,8 +17,8 @@ // package com.google.zxing.oned; -import BarcodeFormat from './../../../core/BarcodeFormat'; -import MultiFormatReader from './../../../core/MultiFormatReader'; +import { BarcodeFormat } from '@zxing/library'; +import { MultiFormatReader } from '@zxing/library'; import AbstractBlackBoxSpec from './../common/AbstractBlackBox'; /** diff --git a/src/test/core/oned/Code39BlackBox3.spec.ts b/src/test/core/oned/Code39BlackBox3.spec.ts index d70bce69..c13898bf 100644 --- a/src/test/core/oned/Code39BlackBox3.spec.ts +++ b/src/test/core/oned/Code39BlackBox3.spec.ts @@ -17,8 +17,8 @@ // package com.google.zxing.oned; -import BarcodeFormat from './../../../core/BarcodeFormat'; -import MultiFormatReader from './../../../core/MultiFormatReader'; +import { BarcodeFormat } from '@zxing/library'; +import { MultiFormatReader } from '@zxing/library'; import AbstractBlackBoxSpec from './../common/AbstractBlackBox'; /** diff --git a/src/test/core/oned/Code39ExtendedBlackBox2.spec.ts b/src/test/core/oned/Code39ExtendedBlackBox2.spec.ts index 70575d99..f681c687 100644 --- a/src/test/core/oned/Code39ExtendedBlackBox2.spec.ts +++ b/src/test/core/oned/Code39ExtendedBlackBox2.spec.ts @@ -17,9 +17,9 @@ // package com.google.zxing.oned; -import BarcodeFormat from './../../../core/BarcodeFormat'; +import { BarcodeFormat } from '@zxing/library'; import AbstractBlackBoxSpec from './../common/AbstractBlackBox'; -import Code39Reader from '../../../core/oned/Code39Reader'; +import { Code39Reader } from '@zxing/library'; /** * @author Sean Owen diff --git a/src/test/core/oned/Code39ExtendedMode.spec.ts b/src/test/core/oned/Code39ExtendedMode.spec.ts index ec735977..71c57253 100644 --- a/src/test/core/oned/Code39ExtendedMode.spec.ts +++ b/src/test/core/oned/Code39ExtendedMode.spec.ts @@ -18,9 +18,9 @@ // package com.google.zxing.oned; import * as assert from 'assert'; -import Code39Reader from '../../../core/oned/Code39Reader'; -import BitMatrix from '../../../core/common/BitMatrix'; -import BitArray from '../../../core/common/BitArray'; +import { Code39Reader } from '@zxing/library'; +import { BitMatrix } from '@zxing/library'; +import { BitArray } from '@zxing/library'; function doTest(expectedResult: string, encodedResult: string): void { const sut = new Code39Reader(false, true); diff --git a/src/test/core/oned/Ean13BlackBox1.spec.ts b/src/test/core/oned/Ean13BlackBox1.spec.ts index e683e9db..cd57f3e9 100644 --- a/src/test/core/oned/Ean13BlackBox1.spec.ts +++ b/src/test/core/oned/Ean13BlackBox1.spec.ts @@ -14,8 +14,8 @@ * limitations under the License. */ -import BarcodeFormat from '../../../core/BarcodeFormat'; -import MultiFormatReader from '../../../core/MultiFormatReader'; +import { BarcodeFormat } from '@zxing/library'; +import { MultiFormatReader } from '@zxing/library'; import AbstractBlackBoxSpec from '../common/AbstractBlackBox'; /** diff --git a/src/test/core/oned/Ean8BlackBox1.spec.ts b/src/test/core/oned/Ean8BlackBox1.spec.ts index 6f1db594..85aa324c 100644 --- a/src/test/core/oned/Ean8BlackBox1.spec.ts +++ b/src/test/core/oned/Ean8BlackBox1.spec.ts @@ -14,8 +14,8 @@ * limitations under the License. */ -import BarcodeFormat from '../../../core/BarcodeFormat'; -import MultiFormatReader from '../../../core/MultiFormatReader'; +import { BarcodeFormat } from '@zxing/library'; +import { MultiFormatReader } from '@zxing/library'; import AbstractBlackBoxSpec from '../common/AbstractBlackBox'; /** diff --git a/src/test/core/oned/ITFBlackBox.spec.ts b/src/test/core/oned/ITFBlackBox.spec.ts index c6a2a3fb..b7ae37b7 100644 --- a/src/test/core/oned/ITFBlackBox.spec.ts +++ b/src/test/core/oned/ITFBlackBox.spec.ts @@ -17,8 +17,8 @@ // package com.google.zxing.oned; -import BarcodeFormat from '../../../core/BarcodeFormat'; -import MultiFormatReader from '../../../core/MultiFormatReader'; +import { BarcodeFormat } from '@zxing/library'; +import { MultiFormatReader } from '@zxing/library'; import AbstractBlackBoxSpec from '../common/AbstractBlackBox'; /** diff --git a/src/test/core/oned/rss/RSS14BlackBox1.spec.ts b/src/test/core/oned/rss/RSS14BlackBox1.spec.ts index 4fa7eaf1..8e31d0dc 100644 --- a/src/test/core/oned/rss/RSS14BlackBox1.spec.ts +++ b/src/test/core/oned/rss/RSS14BlackBox1.spec.ts @@ -17,8 +17,8 @@ // package com.google.zxing.oned; -import BarcodeFormat from '../../../../core/BarcodeFormat'; -import MultiFormatReader from '../../../../core/MultiFormatReader'; +import { BarcodeFormat } from '@zxing/library'; +import { MultiFormatReader } from '@zxing/library'; import AbstractBlackBoxSpec from '../../common/AbstractBlackBox'; /** diff --git a/src/test/core/oned/rss/RSS14BlackBox2.spec.ts b/src/test/core/oned/rss/RSS14BlackBox2.spec.ts index 0c6b9ff8..e837a056 100644 --- a/src/test/core/oned/rss/RSS14BlackBox2.spec.ts +++ b/src/test/core/oned/rss/RSS14BlackBox2.spec.ts @@ -17,8 +17,8 @@ // package com.google.zxing.oned; -import BarcodeFormat from '../../../../core/BarcodeFormat'; -import MultiFormatReader from '../../../../core/MultiFormatReader'; +import { BarcodeFormat } from '@zxing/library'; +import { MultiFormatReader } from '@zxing/library'; import AbstractBlackBoxSpec from '../../common/AbstractBlackBox'; /** diff --git a/src/test/core/pdf417/PDF417BlackBox.1.spec.ts b/src/test/core/pdf417/PDF417BlackBox.1.spec.ts index 2d5f434a..df962627 100644 --- a/src/test/core/pdf417/PDF417BlackBox.1.spec.ts +++ b/src/test/core/pdf417/PDF417BlackBox.1.spec.ts @@ -16,13 +16,13 @@ // package com.google.zxing.pdf417; -import BarcodeFormat from '../../../core/BarcodeFormat'; -import MultiFormatReader from '../../../core/MultiFormatReader'; +import { BarcodeFormat } from '@zxing/library'; +import { MultiFormatReader } from '@zxing/library'; import AbstractBlackBoxSpec from '../common/AbstractBlackBox'; -import StringEncoding from '../../../core/util/StringEncoding'; -import { TextDecoder } from '@sinonjs/text-encoding'; +import { ZXingStringEncoding } from '@zxing/library'; +import { TextDecoder } from '@zxing/text-encoding'; -StringEncoding.customDecoder = (b, e) => new TextDecoder(e, { NONSTANDARD_allowLegacyEncoding: true }).decode(b); +ZXingStringEncoding.customDecoder = (b, e) => new TextDecoder(e).decode(b); /** * This test consists of perfect, computer-generated images. We should have 100% passing. diff --git a/src/test/core/pdf417/PDF417BlackBox.2.spec.ts b/src/test/core/pdf417/PDF417BlackBox.2.spec.ts index f59ca1ab..813eeabd 100644 --- a/src/test/core/pdf417/PDF417BlackBox.2.spec.ts +++ b/src/test/core/pdf417/PDF417BlackBox.2.spec.ts @@ -16,13 +16,13 @@ // package com.google.zxing.pdf417; -import BarcodeFormat from '../../../core/BarcodeFormat'; -import MultiFormatReader from '../../../core/MultiFormatReader'; +import { BarcodeFormat } from '@zxing/library'; +import { MultiFormatReader } from '@zxing/library'; import AbstractBlackBoxSpec from '../common/AbstractBlackBox'; -import { TextDecoder } from '@sinonjs/text-encoding'; -import StringEncoding from '../../../core/util/StringEncoding'; +import { TextDecoder } from '@zxing/text-encoding'; +import { ZXingStringEncoding } from '@zxing/library'; -StringEncoding.customDecoder = (b, e) => new TextDecoder(e, { NONSTANDARD_allowLegacyEncoding: true }).decode(b); +ZXingStringEncoding.customDecoder = (b, e) => new TextDecoder(e).decode(b); /** * This test contains 480x240 images captured from an Android device at preview resolution. diff --git a/src/test/core/pdf417/PDF417BlackBox.3.spec.ts b/src/test/core/pdf417/PDF417BlackBox.3.spec.ts index d7330ccd..2e4951f0 100644 --- a/src/test/core/pdf417/PDF417BlackBox.3.spec.ts +++ b/src/test/core/pdf417/PDF417BlackBox.3.spec.ts @@ -16,8 +16,8 @@ // package com.google.zxing.pdf417; -import BarcodeFormat from '../../../core/BarcodeFormat'; -import MultiFormatReader from '../../../core/MultiFormatReader'; +import { BarcodeFormat } from '@zxing/library'; +import { MultiFormatReader } from '@zxing/library'; import AbstractBlackBoxSpec from '../common/AbstractBlackBox'; /** diff --git a/src/test/core/pdf417/PDF417BlackBox.4.spec.ts b/src/test/core/pdf417/PDF417BlackBox.4.spec.ts index ab9b1355..c66906bb 100644 --- a/src/test/core/pdf417/PDF417BlackBox.4.spec.ts +++ b/src/test/core/pdf417/PDF417BlackBox.4.spec.ts @@ -35,11 +35,11 @@ // import java.awt.image.BufferedImage; // import java.io.IOException; -// import java.nio.charset.StandardCharsets; +// import java.nio.charset.ZXingStandardCharsets; // import java.nio.file.Files; // import java.nio.file.Path; // import java.util.ArrayList; -// import java.util.Arrays; +// import java.util.ZXingArrays; // import java.util.Collections; // import java.util.Comparator; // import java.util.EnumMap; @@ -91,11 +91,11 @@ // String expectedText; // Path expectedTextFile = testBase.resolve(fileBaseName + ".txt"); // if (Files.exists(expectedTextFile)) { -// expectedText = readFileAsString(expectedTextFile, StandardCharsets.UTF_8); +// expectedText = readFileAsString(expectedTextFile, ZXingStandardCharsets.UTF_8); // } else { // expectedTextFile = testBase.resolve(fileBaseName + ".bin"); // assertTrue(Files.exists(expectedTextFile)); -// expectedText = readFileAsString(expectedTextFile, StandardCharsets.ISO_8859_1); +// expectedText = readFileAsString(expectedTextFile, ZXingStandardCharsets.ISO_8859_1); // } // for (int x = 0; x < testCount; x++) { @@ -108,7 +108,7 @@ // BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source)); // try { -// results.addAll(Arrays.asList(decode(bitmap, false))); +// results.addAll(ZXingArrays.asList(decode(bitmap, false))); // } catch (ReaderException ignored) { // // ignore // } @@ -121,7 +121,7 @@ // return resultMetadata.getSegmentIndex() - otherResultMetadata.getSegmentIndex(); // } // }); -// StringBuilder resultText = new StringBuilder(); +// ZXingStringBuilder resultText = new ZXingStringBuilder(); // String fileId = null; // for (Result result : results) { // PDF417ResultMetadata resultMetadata = getMeta(result); diff --git a/src/test/core/pdf417/decoder/PDF417Decoder.spec.ts b/src/test/core/pdf417/decoder/PDF417Decoder.spec.ts index ab87d42e..da0ccb61 100644 --- a/src/test/core/pdf417/decoder/PDF417Decoder.spec.ts +++ b/src/test/core/pdf417/decoder/PDF417Decoder.spec.ts @@ -18,15 +18,15 @@ // import com.google.zxing.FormatException; // import com.google.zxing.pdf417.PDF417ResultMetadata; -import PDF417ResultMetadata from '../../../../core/pdf417/PDF417ResultMetadata'; +import { PDF417ResultMetadata } from '@zxing/library'; // import org.junit.Assert; -import { assertEquals, assertFalse, assertTrue, assertNull } from '../../util/AssertUtils'; +import { assertEquals, assertFalse, assertTrue, assertNull } from '../../../core/util/AssertUtils'; // import org.junit.Test; -import DecodedBitStreamParser from '../../../../core/pdf417/decoder/DecodedBitStreamParser'; +import { PDF417DecodedBitStreamParser } from '@zxing/library'; /** - * Tests {@link DecodedBitStreamParser}. + * Tests {@link PDF417DecodedBitStreamParser}. */ // public class PDF417DecoderTestCase extends Assert { @@ -44,7 +44,7 @@ describe('PDF417DecoderTestCase', () => { // we should never reach these 1000, 1000, 1000]); - DecodedBitStreamParser.decodeMacroBlock(sampleCodes, 2, resultMetadata); + PDF417DecodedBitStreamParser.decodeMacroBlock(sampleCodes, 2, resultMetadata); assertEquals(0, resultMetadata.getSegmentIndex()); assertEquals('ARBX', resultMetadata.getFileId()); @@ -73,7 +73,7 @@ describe('PDF417DecoderTestCase', () => { // we should never reach these 1000, 1000, 1000]); - DecodedBitStreamParser.decodeMacroBlock(sampleCodes, 2, resultMetadata); + PDF417DecodedBitStreamParser.decodeMacroBlock(sampleCodes, 2, resultMetadata); assertEquals(3, resultMetadata.getSegmentIndex()); assertEquals('ARBX', resultMetadata.getFileId()); @@ -99,7 +99,7 @@ describe('PDF417DecoderTestCase', () => { 493, 72, 780, 699, 780, 493, 755, 84, 198, 628, 368, 156, 198, 809, 19, 113]); const resultMetadata = new PDF417ResultMetadata(); - DecodedBitStreamParser.decodeMacroBlock(sampleCodes, 3, resultMetadata); + PDF417DecodedBitStreamParser.decodeMacroBlock(sampleCodes, 3, resultMetadata); assertEquals(0, resultMetadata.getSegmentIndex()); assertEquals('AAIMAVC ', resultMetadata.getFileId()); @@ -120,7 +120,7 @@ describe('PDF417DecoderTestCase', () => { 6, 1, 500, 13, 0]); const resultMetadata = new PDF417ResultMetadata(); - DecodedBitStreamParser.decodeMacroBlock(sampleCodes, 3, resultMetadata); + PDF417DecodedBitStreamParser.decodeMacroBlock(sampleCodes, 3, resultMetadata); assertEquals(0, resultMetadata.getSegmentIndex()); assertEquals('AAIMAVC ', resultMetadata.getFileId()); diff --git a/src/test/core/pdf417/decoder/ec/ErrorCorrection.spec.ts b/src/test/core/pdf417/decoder/ec/ErrorCorrection.spec.ts index 6ad23d3d..8c9de10e 100644 --- a/src/test/core/pdf417/decoder/ec/ErrorCorrection.spec.ts +++ b/src/test/core/pdf417/decoder/ec/ErrorCorrection.spec.ts @@ -17,7 +17,7 @@ // package com.google.zxing.pdf417.decoder.ec; // import com.google.zxing.ChecksumException; -import ChecksumException from '../../../../../core/ChecksumException'; +import { ChecksumException } from '@zxing/library'; // import org.junit.Ignore; // import org.junit.Test; @@ -25,7 +25,7 @@ import ChecksumException from '../../../../../core/ChecksumException'; // import java.util.Random; import Random from '../../../util/Random'; -import ErrorCorrection from '../../../../../core/pdf417/decoder/ec/ErrorCorrection'; +import { PDF417DecoderErrorCorrection } from '@zxing/library'; import * as assert from 'assert'; import AbstractErrorCorrectionSpec from './AbstractErrorCorrection.spec'; @@ -153,7 +153,7 @@ const /*private static final int*/ ERROR_LIMIT: number = ECC_BYTES; const /*private static final int*/ MAX_ERRORS: number = ERROR_LIMIT / 2; const /*private static final int*/ MAX_ERASURES: number = ERROR_LIMIT; -const /*private final ErrorCorrection*/ ec = new ErrorCorrection(); +const /*private final ErrorCorrection*/ ec = new PDF417DecoderErrorCorrection(); /** * diff --git a/src/test/core/qrcode/HybridBinarizer.spec.ts b/src/test/core/qrcode/HybridBinarizer.spec.ts index 2ac890eb..9adca8e9 100644 --- a/src/test/core/qrcode/HybridBinarizer.spec.ts +++ b/src/test/core/qrcode/HybridBinarizer.spec.ts @@ -1,5 +1,5 @@ import * as assert from 'assert'; -import HybridBinarizer from '../../../core/common/HybridBinarizer'; +import { HybridBinarizer } from '@zxing/library'; import SharpImageLuminanceSource from '../SharpImageLuminanceSource'; import SharpImage from '../util/SharpImage'; diff --git a/src/test/core/qrcode/QRCodeBlackBox.1.spec.ts b/src/test/core/qrcode/QRCodeBlackBox.1.spec.ts index f531b9ac..52f0b7cd 100644 --- a/src/test/core/qrcode/QRCodeBlackBox.1.spec.ts +++ b/src/test/core/qrcode/QRCodeBlackBox.1.spec.ts @@ -16,8 +16,8 @@ /*package com.google.zxing.qrcode;*/ -import BarcodeFormat from '../../../core/BarcodeFormat'; -import MultiFormatReader from '../../../core/MultiFormatReader'; +import { BarcodeFormat } from '@zxing/library'; +import { MultiFormatReader } from '@zxing/library'; import AbstractBlackBoxSpec from '../common/AbstractBlackBox'; /** diff --git a/src/test/core/qrcode/QRCodeBlackBox.2.spec.ts b/src/test/core/qrcode/QRCodeBlackBox.2.spec.ts index cf42a86b..8a0f2586 100644 --- a/src/test/core/qrcode/QRCodeBlackBox.2.spec.ts +++ b/src/test/core/qrcode/QRCodeBlackBox.2.spec.ts @@ -16,14 +16,14 @@ /*package com.google.zxing.qrcode;*/ -import BarcodeFormat from '../../../core/BarcodeFormat'; -import MultiFormatReader from '../../../core/MultiFormatReader'; +import { BarcodeFormat } from '@zxing/library'; +import { MultiFormatReader } from '@zxing/library'; import AbstractBlackBoxSpec from '../common/AbstractBlackBox'; -import { TextDecoder, TextEncoder } from '@sinonjs/text-encoding'; -import StringEncoding from '../../../core/util/StringEncoding'; +import { TextDecoder, TextEncoder } from '@zxing/text-encoding'; +import { ZXingStringEncoding } from '@zxing/library'; -StringEncoding.customDecoder = (b, e) => new TextDecoder(e, { NONSTANDARD_allowLegacyEncoding: true }).decode(b); -StringEncoding.customEncoder = (b, e) => new TextEncoder(e, { NONSTANDARD_allowLegacyEncoding: true }).encode(b); +ZXingStringEncoding.customDecoder = (b, e) => new TextDecoder(e).decode(b); +ZXingStringEncoding.customEncoder = (b, e) => new TextEncoder(e, { NONSTANDARD_allowLegacyEncoding: true }).encode(b); /** * @author Sean Owen diff --git a/src/test/core/qrcode/QRCodeBlackBox.3.spec.ts b/src/test/core/qrcode/QRCodeBlackBox.3.spec.ts index 54827368..4dac318a 100644 --- a/src/test/core/qrcode/QRCodeBlackBox.3.spec.ts +++ b/src/test/core/qrcode/QRCodeBlackBox.3.spec.ts @@ -16,8 +16,8 @@ /*package com.google.zxing.qrcode;*/ -import BarcodeFormat from '../../../core/BarcodeFormat'; -import MultiFormatReader from '../../../core/MultiFormatReader'; +import { BarcodeFormat } from '@zxing/library'; +import { MultiFormatReader } from '@zxing/library'; import AbstractBlackBoxSpec from '../common/AbstractBlackBox'; /** diff --git a/src/test/core/qrcode/QRCodeBlackBox.4.spec.ts b/src/test/core/qrcode/QRCodeBlackBox.4.spec.ts index 0404f013..4f03358d 100644 --- a/src/test/core/qrcode/QRCodeBlackBox.4.spec.ts +++ b/src/test/core/qrcode/QRCodeBlackBox.4.spec.ts @@ -16,8 +16,8 @@ /*package com.google.zxing.qrcode;*/ -import BarcodeFormat from '../../../core/BarcodeFormat'; -import MultiFormatReader from '../../../core/MultiFormatReader'; +import { BarcodeFormat } from '@zxing/library'; +import { MultiFormatReader } from '@zxing/library'; import AbstractBlackBoxSpec from '../common/AbstractBlackBox'; /** diff --git a/src/test/core/qrcode/QRCodeBlackBox.5.spec.ts b/src/test/core/qrcode/QRCodeBlackBox.5.spec.ts index 9bdffd36..d57b2447 100644 --- a/src/test/core/qrcode/QRCodeBlackBox.5.spec.ts +++ b/src/test/core/qrcode/QRCodeBlackBox.5.spec.ts @@ -16,8 +16,8 @@ /*package com.google.zxing.qrcode;*/ -import BarcodeFormat from '../../../core/BarcodeFormat'; -import MultiFormatReader from '../../../core/MultiFormatReader'; +import { BarcodeFormat } from '@zxing/library'; +import { MultiFormatReader } from '@zxing/library'; import AbstractBlackBoxSpec from '../common/AbstractBlackBox'; /** diff --git a/src/test/core/qrcode/QRCodeBlackBox.6.spec.ts b/src/test/core/qrcode/QRCodeBlackBox.6.spec.ts index d99905ec..9e81f1e9 100644 --- a/src/test/core/qrcode/QRCodeBlackBox.6.spec.ts +++ b/src/test/core/qrcode/QRCodeBlackBox.6.spec.ts @@ -16,8 +16,8 @@ /*package com.google.zxing.qrcode;*/ -import BarcodeFormat from '../../../core/BarcodeFormat'; -import MultiFormatReader from '../../../core/MultiFormatReader'; +import { BarcodeFormat } from '@zxing/library'; +import { MultiFormatReader } from '@zxing/library'; import AbstractBlackBoxSpec from '../common/AbstractBlackBox'; /** diff --git a/src/test/core/qrcode/QRCodeBlackBox.7.spec.ts b/src/test/core/qrcode/QRCodeBlackBox.7.spec.ts index 9f0eccda..7a67a7d5 100644 --- a/src/test/core/qrcode/QRCodeBlackBox.7.spec.ts +++ b/src/test/core/qrcode/QRCodeBlackBox.7.spec.ts @@ -16,8 +16,8 @@ /*package com.google.zxing.qrcode;*/ -import BarcodeFormat from '../../../core/BarcodeFormat'; -import MultiFormatReader from '../../../core/MultiFormatReader'; +import { BarcodeFormat } from '@zxing/library'; +import { MultiFormatReader } from '@zxing/library'; import AbstractBlackBoxSpec from '../common/AbstractBlackBox'; /** diff --git a/src/test/core/qrcode/QRCodeWriter.spec.ts b/src/test/core/qrcode/QRCodeWriter.spec.ts index 0b571048..183b56e0 100644 --- a/src/test/core/qrcode/QRCodeWriter.spec.ts +++ b/src/test/core/qrcode/QRCodeWriter.spec.ts @@ -18,13 +18,15 @@ import * as assert from 'assert'; -import BarcodeFormat from '../../../core/BarcodeFormat'; -import EncodeHintType from '../../../core/EncodeHintType'; -import Writer from '../../../core/Writer'; -import BitMatrix from '../../../core/common/BitMatrix'; -import ErrorCorrectionLevel from '../../../core/qrcode/decoder/ErrorCorrectionLevel'; +import { BarcodeFormat } from '@zxing/library'; +import { EncodeHintType } from '@zxing/library'; +import { Writer } from '@zxing/library'; +import { BitMatrix } from '@zxing/library'; +import { QRCodeDecoderErrorCorrectionLevel } from '@zxing/library'; import SharpImage from '../util/SharpImage'; -import QRCodeWriter from '../../../core/qrcode/QRCodeWriter'; +import { QRCodeWriter } from '@zxing/library'; +import { ZXingStringEncoding } from '@zxing/library'; +import { createCustomEncoder } from '../util/textEncodingFactory'; const path = require('path'); @@ -42,6 +44,7 @@ const path = require('path'); * @author dswitkin@google.com (Daniel Switkin) - ported and expanded from C++ */ describe('QRCodeWriter', () => { + ZXingStringEncoding.customEncoder = (b, e) => createCustomEncoder(e).encode(b); const BASE_IMAGE_PATH = 'src/test/resources/golden/qrcode/'; @@ -90,7 +93,7 @@ describe('QRCodeWriter', () => { async function compareToGoldenFile( contents: string, - ecLevel: ErrorCorrectionLevel, + ecLevel: QRCodeDecoderErrorCorrectionLevel, resolution: number /*int*/, fileName: string ): Promise { @@ -105,7 +108,7 @@ describe('QRCodeWriter', () => { assert.ok(false, err); } - const hints = new Map(); + const hints = new Map(); hints.set(EncodeHintType.ERROR_CORRECTION, ecLevel); const writer: Writer = new QRCodeWriter(); const generatedResult: BitMatrix = writer.encode( @@ -127,7 +130,7 @@ describe('QRCodeWriter', () => { it('testRegressionTest', () => { compareToGoldenFile( 'http://www.google.com/', - ErrorCorrectionLevel.M, + QRCodeDecoderErrorCorrectionLevel.M, 99, 'renderer-test-01.png' ); diff --git a/src/test/core/qrcode/decoder/DataMask.spec.ts b/src/test/core/qrcode/decoder/DataMask.spec.ts index 1223012c..294510ce 100644 --- a/src/test/core/qrcode/decoder/DataMask.spec.ts +++ b/src/test/core/qrcode/decoder/DataMask.spec.ts @@ -17,8 +17,8 @@ /*package com.google.zxing.qrcode.decoder;*/ import * as assert from 'assert'; -import BitMatrix from '../../../../core/common/BitMatrix'; -import DataMask from '../../../../core/qrcode/decoder/DataMask'; +import { BitMatrix } from '@zxing/library'; +import { QRCodeDataMask } from '@zxing/library'; interface MaskCondition { isMasked(i: number /*int*/, j: number /*int*/): boolean; @@ -94,14 +94,14 @@ describe('DataMask', () => { }); function testMaskAcrossDimensions(reference: number /*int*/, condition: MaskCondition): void { - const mask = DataMask.values.get(reference); + const mask = QRCodeDataMask.values.get(reference); for (let version: number /*int*/ = 1; version <= 40; version++) { const dimension: number /*int*/ = 17 + 4 * version; testMask(mask, dimension, condition); } } - function testMask(mask: DataMask, dimension: number /*int*/, condition: MaskCondition): void { + function testMask(mask: QRCodeDataMask, dimension: number /*int*/, condition: MaskCondition): void { const bits = new BitMatrix(dimension); mask.unmaskBitMatrix(bits, dimension); for (let i: number /*int*/ = 0; i < dimension; i++) { diff --git a/src/test/core/qrcode/decoder/DecodedBitStreamParser.spec.ts b/src/test/core/qrcode/decoder/DecodedBitStreamParser.spec.ts index 19e3e0ac..a412fcf9 100644 --- a/src/test/core/qrcode/decoder/DecodedBitStreamParser.spec.ts +++ b/src/test/core/qrcode/decoder/DecodedBitStreamParser.spec.ts @@ -17,21 +17,21 @@ /*package com.google.zxing.qrcode.decoder;*/ import * as assert from 'assert'; -import DecodedBitStreamParser from '../../../../core/qrcode/decoder/DecodedBitStreamParser'; -import BitSourceBuilder from '../../common/BitSourceBuilder'; -import Version from '../../../../core/qrcode/decoder/Version'; -import Random from '../../util/Random'; -import { TextDecoder } from '@sinonjs/text-encoding'; -import StringEncoding from '../../../../core/util/StringEncoding'; +import { QRCodeDecodedBitStreamParser } from '@zxing/library'; +import BitSourceBuilder from '../../../core/common/BitSourceBuilder'; +import { QRCodeVersion } from '@zxing/library'; +import Random from '../../../core/util/Random'; +import { TextDecoder } from '@zxing/text-encoding'; +import { ZXingStringEncoding } from '@zxing/library'; -StringEncoding.customDecoder = (b, e) => new TextDecoder(e, { NONSTANDARD_allowLegacyEncoding: true }).decode(b); +ZXingStringEncoding.customDecoder = (b, e) => new TextDecoder(e).decode(b); /** - * Tests {@link DecodedBitStreamParser}. + * Tests {@link QRCodeDecodedBitStreamParser}. * * @author Sean Owen */ -describe('DecodedBitStreamParser', () => { +describe('QRCodeDecodedBitStreamParser', () => { it('testSimpleByteMode', () => {/*throws Exception*/ const builder = new BitSourceBuilder(); @@ -40,8 +40,8 @@ describe('DecodedBitStreamParser', () => { builder.write(0xF1, 8); builder.write(0xF2, 8); builder.write(0xF3, 8); - const result: string = DecodedBitStreamParser.decode(builder.toByteArray(), - Version.getVersionForNumber(1), null, null).getText(); + const result: string = QRCodeDecodedBitStreamParser.decode(builder.toByteArray(), + QRCodeVersion.getVersionForNumber(1), null, null).getText(); assert.strictEqual(result, '\u00f1\u00f2\u00f3'); }); @@ -53,27 +53,27 @@ describe('DecodedBitStreamParser', () => { builder.write(0xA2, 8); builder.write(0xA3, 8); builder.write(0xD0, 8); - const result: string = DecodedBitStreamParser.decode(builder.toByteArray(), - Version.getVersionForNumber(1), null, null).getText(); + const result: string = QRCodeDecodedBitStreamParser.decode(builder.toByteArray(), + QRCodeVersion.getVersionForNumber(1), null, null).getText(); assert.strictEqual(result, '\uff61\uff62\uff63\uff90'); }); // TYPESCRIPTPORT: CP437 not supported by TextEncoding. TODO: search for an alternative // See here for a possibility: https://github.com/SheetJS/js-codepage - // it("testECI", () => {/*throws Exception*/ - // const builder = new BitSourceBuilder() - // builder.write(0x07, 4); // ECI mode - // builder.write(0x02, 8); // ECI 2 = CP437 encoding - // builder.write(0x04, 4); // Byte mode - // builder.write(0x03, 8); // 3 bytes - // builder.write(0xA1, 8) - // builder.write(0xA2, 8) - // builder.write(0xA3, 8) - // const byteArray = builder.toByteArray() - // const result: string = DecodedBitStreamParser.decode(byteArray, - // Version.getVersionForNumber(1), null, null).getText() - // assert.strictEqual(result, "\u00ed\u00f3\u00fa") - // }) + it.skip('testECI', () => {/*throws Exception*/ + const builder = new BitSourceBuilder(); + builder.write(0x07, 4); // ECI mode + builder.write(0x02, 8); // ECI 2 = CP437 encoding + builder.write(0x04, 4); // Byte mode + builder.write(0x03, 8); // 3 bytes + builder.write(0xA1, 8); + builder.write(0xA2, 8); + builder.write(0xA3, 8); + const byteArray = builder.toByteArray(); + const result: string = QRCodeDecodedBitStreamParser.decode(byteArray, + QRCodeVersion.getVersionForNumber(1), null, null).getText(); + assert.strictEqual(result, '\u00ed\u00f3\u00fa'); + }); const eciTestData = [ // label, eciBits, byte1, byte2, byte3, expected @@ -116,8 +116,8 @@ describe('DecodedBitStreamParser', () => { builder.write(b2, 8); builder.write(b3, 8); const byteArray = builder.toByteArray(); - const result: string = DecodedBitStreamParser.decode(byteArray, - Version.getVersionForNumber(1), null, null).getText(); + const result: string = QRCodeDecodedBitStreamParser.decode(byteArray, + QRCodeVersion.getVersionForNumber(1), null, null).getText(); assert.strictEqual(result, expected, encodingLabel); } @@ -155,8 +155,8 @@ describe('DecodedBitStreamParser', () => { builder.write(b5, 8); builder.write(b6, 8); const byteArray = builder.toByteArray(); - const result: string = DecodedBitStreamParser.decode(byteArray, - Version.getVersionForNumber(1), null, null).getText(); + const result: string = QRCodeDecodedBitStreamParser.decode(byteArray, + QRCodeVersion.getVersionForNumber(1), null, null).getText(); assert.strictEqual(result, expected1 + expected2, encodingLabel1 + ' & ' + encodingLabel2); } @@ -166,8 +166,8 @@ describe('DecodedBitStreamParser', () => { builder.write(0x01, 4); // Subset 1 = GB2312 encoding builder.write(0x01, 8); // 1 characters builder.write(0x03C1, 13); - const result: string = DecodedBitStreamParser.decode(builder.toByteArray(), - Version.getVersionForNumber(1), null, null).getText(); + const result: string = QRCodeDecodedBitStreamParser.decode(builder.toByteArray(), + QRCodeVersion.getVersionForNumber(1), null, null).getText(); assert.strictEqual(result, '\u963f'); }); diff --git a/src/test/core/qrcode/decoder/ErrorCorrectionLevel.spec.ts b/src/test/core/qrcode/decoder/ErrorCorrectionLevel.spec.ts index fad5b4aa..ca5ca5fb 100644 --- a/src/test/core/qrcode/decoder/ErrorCorrectionLevel.spec.ts +++ b/src/test/core/qrcode/decoder/ErrorCorrectionLevel.spec.ts @@ -18,20 +18,20 @@ import * as assert from 'assert'; -import ErrorCorrectionLevel from '../../../../core/qrcode/decoder/ErrorCorrectionLevel'; +import { QRCodeDecoderErrorCorrectionLevel } from '@zxing/library'; /** * @author Sean Owen */ -describe('ErrorCorrectionLevel', () => { +describe('QRCodeDecoderErrorCorrectionLevel', () => { it('testForBits', () => { - assert.strictEqual(ErrorCorrectionLevel.M.equals(ErrorCorrectionLevel.forBits(0)), true); - assert.strictEqual(ErrorCorrectionLevel.L.equals(ErrorCorrectionLevel.forBits(1)), true); - assert.strictEqual(ErrorCorrectionLevel.H.equals(ErrorCorrectionLevel.forBits(2)), true); - assert.strictEqual(ErrorCorrectionLevel.Q.equals(ErrorCorrectionLevel.forBits(3)), true); + assert.strictEqual(QRCodeDecoderErrorCorrectionLevel.M.equals(QRCodeDecoderErrorCorrectionLevel.forBits(0)), true); + assert.strictEqual(QRCodeDecoderErrorCorrectionLevel.L.equals(QRCodeDecoderErrorCorrectionLevel.forBits(1)), true); + assert.strictEqual(QRCodeDecoderErrorCorrectionLevel.H.equals(QRCodeDecoderErrorCorrectionLevel.forBits(2)), true); + assert.strictEqual(QRCodeDecoderErrorCorrectionLevel.Q.equals(QRCodeDecoderErrorCorrectionLevel.forBits(3)), true); try { - ErrorCorrectionLevel.forBits(4); + QRCodeDecoderErrorCorrectionLevel.forBits(4); assert.ok(false, 'Should have thrown an exception'); } catch (ex) { // good for IllegalArgumentException diff --git a/src/test/core/qrcode/decoder/FormatInformation.spec.ts b/src/test/core/qrcode/decoder/FormatInformation.spec.ts index bb88c0d7..c856603d 100644 --- a/src/test/core/qrcode/decoder/FormatInformation.spec.ts +++ b/src/test/core/qrcode/decoder/FormatInformation.spec.ts @@ -18,53 +18,53 @@ import * as assert from 'assert'; -import ErrorCorrectionLevel from '../../../../core/qrcode/decoder/ErrorCorrectionLevel'; -import FormatInformation from '../../../../core/qrcode/decoder/FormatInformation'; +import { QRCodeDecoderErrorCorrectionLevel } from '@zxing/library'; +import { QRCodeDecoderFormatInformation } from '@zxing/library'; /** * @author Sean Owen */ -describe('FormatInformation', () => { +describe('QRCodeDecoderFormatInformation', () => { const MASKED_TEST_FORMAT_INFO: number /*int*/ = 0x2BED; const UNMASKED_TEST_FORMAT_INFO: number /*int*/ = MASKED_TEST_FORMAT_INFO ^ 0x5412; it('testBitsDiffering', () => { - assert.strictEqual(FormatInformation.numBitsDiffering(1, 1), 0); - assert.strictEqual(FormatInformation.numBitsDiffering(0, 2), 1); - assert.strictEqual(FormatInformation.numBitsDiffering(1, 2), 2); - assert.strictEqual(FormatInformation.numBitsDiffering(-1, 0), 32); + assert.strictEqual(QRCodeDecoderFormatInformation.numBitsDiffering(1, 1), 0); + assert.strictEqual(QRCodeDecoderFormatInformation.numBitsDiffering(0, 2), 1); + assert.strictEqual(QRCodeDecoderFormatInformation.numBitsDiffering(1, 2), 2); + assert.strictEqual(QRCodeDecoderFormatInformation.numBitsDiffering(-1, 0), 32); }); it('testDecode', () => { // Normal case const expected = - FormatInformation.decodeFormatInformation(MASKED_TEST_FORMAT_INFO, MASKED_TEST_FORMAT_INFO); + QRCodeDecoderFormatInformation.decodeFormatInformation(MASKED_TEST_FORMAT_INFO, MASKED_TEST_FORMAT_INFO); assert.strictEqual(null !== expected, true); assert.strictEqual(expected.getDataMask(), /*(byte)*/ 0x07); - assert.strictEqual(ErrorCorrectionLevel.Q.equals(expected.getErrorCorrectionLevel()), true); + assert.strictEqual(QRCodeDecoderErrorCorrectionLevel.Q.equals(expected.getErrorCorrectionLevel()), true); // where the code forgot the mask! - assert.strictEqual(FormatInformation.decodeFormatInformation(UNMASKED_TEST_FORMAT_INFO, MASKED_TEST_FORMAT_INFO).equals(expected), true); + assert.strictEqual(QRCodeDecoderFormatInformation.decodeFormatInformation(UNMASKED_TEST_FORMAT_INFO, MASKED_TEST_FORMAT_INFO).equals(expected), true); }); it('testDecodeWithBitDifference', () => { const expected = - FormatInformation.decodeFormatInformation(MASKED_TEST_FORMAT_INFO, MASKED_TEST_FORMAT_INFO); + QRCodeDecoderFormatInformation.decodeFormatInformation(MASKED_TEST_FORMAT_INFO, MASKED_TEST_FORMAT_INFO); // 1,2,3,4 bits difference - assert.strictEqual(FormatInformation.decodeFormatInformation( + assert.strictEqual(QRCodeDecoderFormatInformation.decodeFormatInformation( MASKED_TEST_FORMAT_INFO ^ 0x01, MASKED_TEST_FORMAT_INFO ^ 0x01).equals(expected), true); - assert.strictEqual(FormatInformation.decodeFormatInformation( + assert.strictEqual(QRCodeDecoderFormatInformation.decodeFormatInformation( MASKED_TEST_FORMAT_INFO ^ 0x03, MASKED_TEST_FORMAT_INFO ^ 0x03).equals(expected), true); - assert.strictEqual(FormatInformation.decodeFormatInformation( + assert.strictEqual(QRCodeDecoderFormatInformation.decodeFormatInformation( MASKED_TEST_FORMAT_INFO ^ 0x07, MASKED_TEST_FORMAT_INFO ^ 0x07).equals(expected), true); - assert.strictEqual(null === FormatInformation.decodeFormatInformation( + assert.strictEqual(null === QRCodeDecoderFormatInformation.decodeFormatInformation( MASKED_TEST_FORMAT_INFO ^ 0x0F, MASKED_TEST_FORMAT_INFO ^ 0x0F), true); }); it('testDecodeWithMisread', () => { const expected = - FormatInformation.decodeFormatInformation(MASKED_TEST_FORMAT_INFO, MASKED_TEST_FORMAT_INFO); - assert.strictEqual(FormatInformation.decodeFormatInformation( + QRCodeDecoderFormatInformation.decodeFormatInformation(MASKED_TEST_FORMAT_INFO, MASKED_TEST_FORMAT_INFO); + assert.strictEqual(QRCodeDecoderFormatInformation.decodeFormatInformation( MASKED_TEST_FORMAT_INFO ^ 0x03, MASKED_TEST_FORMAT_INFO ^ 0x0F).equals(expected), true); }); diff --git a/src/test/core/qrcode/decoder/Mode.spec.ts b/src/test/core/qrcode/decoder/Mode.spec.ts index 3ecd51e0..05c14953 100644 --- a/src/test/core/qrcode/decoder/Mode.spec.ts +++ b/src/test/core/qrcode/decoder/Mode.spec.ts @@ -18,8 +18,8 @@ import * as assert from 'assert'; -import Version from '../../../../core/qrcode/decoder/Version'; -import Mode from '../../../../core/qrcode/decoder/Mode'; +import { QRCodeVersion } from '@zxing/library'; +import { QRCodeMode } from '@zxing/library'; /** * @author Sean Owen @@ -27,13 +27,13 @@ import Mode from '../../../../core/qrcode/decoder/Mode'; describe('Mode', () => { it('testForBits', () => { - assert.strictEqual(Mode.TERMINATOR.equals(Mode.forBits(0x00)), true); - assert.strictEqual(Mode.NUMERIC.equals(Mode.forBits(0x01)), true); - assert.strictEqual(Mode.ALPHANUMERIC.equals(Mode.forBits(0x02)), true); - assert.strictEqual(Mode.BYTE.equals(Mode.forBits(0x04)), true); - assert.strictEqual(Mode.KANJI.equals(Mode.forBits(0x08)), true); + assert.strictEqual(QRCodeMode.TERMINATOR.equals(QRCodeMode.forBits(0x00)), true); + assert.strictEqual(QRCodeMode.NUMERIC.equals(QRCodeMode.forBits(0x01)), true); + assert.strictEqual(QRCodeMode.ALPHANUMERIC.equals(QRCodeMode.forBits(0x02)), true); + assert.strictEqual(QRCodeMode.BYTE.equals(QRCodeMode.forBits(0x04)), true); + assert.strictEqual(QRCodeMode.KANJI.equals(QRCodeMode.forBits(0x08)), true); try { - Mode.forBits(0x10); + QRCodeMode.forBits(0x10); assert.ok(false, 'Should have thrown an exception'); } catch (ex) { // good for InvalidArgumentException @@ -42,12 +42,12 @@ describe('Mode', () => { it('testCharacterCount', () => { // Spot check a few values - assert.strictEqual(Mode.NUMERIC.getCharacterCountBits(Version.getVersionForNumber(5)), 10); - assert.strictEqual(Mode.NUMERIC.getCharacterCountBits(Version.getVersionForNumber(26)), 12); - assert.strictEqual(Mode.NUMERIC.getCharacterCountBits(Version.getVersionForNumber(40)), 14); - assert.strictEqual(Mode.ALPHANUMERIC.getCharacterCountBits(Version.getVersionForNumber(6)), 9); - assert.strictEqual(Mode.BYTE.getCharacterCountBits(Version.getVersionForNumber(7)), 8); - assert.strictEqual(Mode.KANJI.getCharacterCountBits(Version.getVersionForNumber(8)), 8); + assert.strictEqual(QRCodeMode.NUMERIC.getCharacterCountBits(QRCodeVersion.getVersionForNumber(5)), 10); + assert.strictEqual(QRCodeMode.NUMERIC.getCharacterCountBits(QRCodeVersion.getVersionForNumber(26)), 12); + assert.strictEqual(QRCodeMode.NUMERIC.getCharacterCountBits(QRCodeVersion.getVersionForNumber(40)), 14); + assert.strictEqual(QRCodeMode.ALPHANUMERIC.getCharacterCountBits(QRCodeVersion.getVersionForNumber(6)), 9); + assert.strictEqual(QRCodeMode.BYTE.getCharacterCountBits(QRCodeVersion.getVersionForNumber(7)), 8); + assert.strictEqual(QRCodeMode.KANJI.getCharacterCountBits(QRCodeVersion.getVersionForNumber(8)), 8); }); }); diff --git a/src/test/core/qrcode/decoder/Version.spec.ts b/src/test/core/qrcode/decoder/Version.spec.ts index f0e969b0..8411a636 100644 --- a/src/test/core/qrcode/decoder/Version.spec.ts +++ b/src/test/core/qrcode/decoder/Version.spec.ts @@ -18,8 +18,8 @@ import * as assert from 'assert'; -import ErrorCorrectionLevel from '../../../../core/qrcode/decoder/ErrorCorrectionLevel'; -import Version from '../../../../core/qrcode/decoder/Version'; +import { QRCodeDecoderErrorCorrectionLevel } from '@zxing/library'; +import { QRCodeVersion } from '@zxing/library'; /** * @author Sean Owen @@ -28,17 +28,17 @@ describe('Version', () => { it('testVersionForNumber', () => { try { - Version.getVersionForNumber(0); + QRCodeVersion.getVersionForNumber(0); assert.ok(false, 'Should have thrown an exception'); } catch (ex) { // good for IllegalArgumentException } for (let i: number /*int*/ = 1; i <= 40; i++) { - checkVersion(Version.getVersionForNumber(i), i, 4 * i + 17); + checkVersion(QRCodeVersion.getVersionForNumber(i), i, 4 * i + 17); } }); - function checkVersion(version: Version, versionNumber: number /*int*/, dimension: number /*int*/): void { + function checkVersion(version: QRCodeVersion, versionNumber: number /*int*/, dimension: number /*int*/): void { assert.strictEqual(null !== version, true); assert.strictEqual(version.getVersionNumber(), versionNumber); @@ -49,16 +49,16 @@ describe('Version', () => { } assert.strictEqual(version.getDimensionForVersion(), dimension); - assert.strictEqual(null !== version.getECBlocksForLevel(ErrorCorrectionLevel.H), true); - assert.strictEqual(null !== version.getECBlocksForLevel(ErrorCorrectionLevel.L), true); - assert.strictEqual(null !== version.getECBlocksForLevel(ErrorCorrectionLevel.M), true); - assert.strictEqual(null !== version.getECBlocksForLevel(ErrorCorrectionLevel.Q), true); + assert.strictEqual(null !== version.getECBlocksForLevel(QRCodeDecoderErrorCorrectionLevel.H), true); + assert.strictEqual(null !== version.getECBlocksForLevel(QRCodeDecoderErrorCorrectionLevel.L), true); + assert.strictEqual(null !== version.getECBlocksForLevel(QRCodeDecoderErrorCorrectionLevel.M), true); + assert.strictEqual(null !== version.getECBlocksForLevel(QRCodeDecoderErrorCorrectionLevel.Q), true); assert.strictEqual(null !== version.buildFunctionPattern(), true); } it('testGetProvisionalVersionForDimension', () => { for (let i: number /*int*/ = 1; i <= 40; i++) { - assert.strictEqual(Version.getProvisionalVersionForDimension(4 * i + 17).getVersionNumber(), i); + assert.strictEqual(QRCodeVersion.getProvisionalVersionForDimension(4 * i + 17).getVersionNumber(), i); } }); @@ -73,7 +73,7 @@ describe('Version', () => { }); function doTestVersion(expectedVersion: number /*int*/, mask: number /*int*/): void { - const version: Version = Version.decodeVersionInformation(mask); + const version: QRCodeVersion = QRCodeVersion.decodeVersionInformation(mask); assert.strictEqual(null !== version, true); assert.strictEqual(version.getVersionNumber(), expectedVersion); } diff --git a/src/test/core/qrcode/encoder/BitVector.spec.ts b/src/test/core/qrcode/encoder/BitVector.spec.ts index ba10f80e..9acd32f9 100644 --- a/src/test/core/qrcode/encoder/BitVector.spec.ts +++ b/src/test/core/qrcode/encoder/BitVector.spec.ts @@ -17,7 +17,7 @@ /*package com.google.zxing.qrcode.encoder;*/ import * as assert from 'assert'; -import BitArray from '../../../../core/common/BitArray'; +import { BitArray } from '@zxing/library'; /** * @author satorux@google.com (Satoru Takabayashi) - creator diff --git a/src/test/core/qrcode/encoder/Encoder.spec.ts b/src/test/core/qrcode/encoder/Encoder.spec.ts index 3005a1a1..497e8247 100644 --- a/src/test/core/qrcode/encoder/Encoder.spec.ts +++ b/src/test/core/qrcode/encoder/Encoder.spec.ts @@ -18,93 +18,85 @@ import * as assert from 'assert'; -import Encoder from '../../../../core/qrcode/encoder/Encoder'; -import EncodeHintType from '../../../../core/EncodeHintType'; -import CharacterSetECI from '../../../../core/common/CharacterSetECI'; -import BitArray from '../../../../core/common/BitArray'; -import ErrorCorrectionLevel from '../../../../core/qrcode/decoder/ErrorCorrectionLevel'; -import Mode from '../../../../core/qrcode/decoder/Mode'; -import Version from '../../../../core/qrcode/decoder/Version'; -import QRCode from '../../../../core/qrcode/encoder/QRCode'; -import StringBuilder from '../../../../core/util/StringBuilder'; -import StringEncoding from '../../../../core/util/StringEncoding'; -import WriterException from '../../../../core/WriterException'; -import { TextDecoder, TextEncoder } from '@sinonjs/text-encoding'; - -function createCustomEncoder(e: string) { - return new TextEncoder(e, { NONSTANDARD_allowLegacyEncoding: true }); -} - -function createCustomDecoder(e: string) { - return new TextDecoder(e, { NONSTANDARD_allowLegacyEncoding: true }); -} +import { QRCodeEncoder } from '@zxing/library'; +import { EncodeHintType } from '@zxing/library'; +import { CharacterSetECI } from '@zxing/library'; +import { BitArray } from '@zxing/library'; +import { QRCodeDecoderErrorCorrectionLevel } from '@zxing/library'; +import { QRCodeMode } from '@zxing/library'; +import { QRCodeVersion } from '@zxing/library'; +import { QRCodeEncoderQRCode } from '@zxing/library'; +import { ZXingStringBuilder } from '@zxing/library'; +import { ZXingStringEncoding } from '@zxing/library'; +import { WriterException } from '@zxing/library'; +import { createCustomEncoder, createCustomDecoder } from '../../util/textEncodingFactory'; /** * @author satorux@google.com (Satoru Takabayashi) - creator * @author mysen@google.com (Chris Mysen) - ported from C++ */ -describe('Encoder', () => { +describe('QRCodeEncoder', () => { it('testGetAlphanumericCode', () => { // The first ten code points are numbers. for (let i: number /*int*/ = 0; i < 10; ++i) { - assert.strictEqual(Encoder.getAlphanumericCode('0'.charCodeAt(0) + i), i); + assert.strictEqual(QRCodeEncoder.getAlphanumericCode('0'.charCodeAt(0) + i), i); } // The next 26 code points are capital alphabet letters. for (let i: number /*int*/ = 10; i < 36; ++i) { - assert.strictEqual(Encoder.getAlphanumericCode('A'.charCodeAt(0) + i - 10), i); + assert.strictEqual(QRCodeEncoder.getAlphanumericCode('A'.charCodeAt(0) + i - 10), i); } // Others are symbol letters - assert.strictEqual(Encoder.getAlphanumericCode(' '.charCodeAt(0)), 36); - assert.strictEqual(Encoder.getAlphanumericCode('$'.charCodeAt(0)), 37); - assert.strictEqual(Encoder.getAlphanumericCode('%'.charCodeAt(0)), 38); - assert.strictEqual(Encoder.getAlphanumericCode('*'.charCodeAt(0)), 39); - assert.strictEqual(Encoder.getAlphanumericCode('+'.charCodeAt(0)), 40); - assert.strictEqual(Encoder.getAlphanumericCode('-'.charCodeAt(0)), 41); - assert.strictEqual(Encoder.getAlphanumericCode('.'.charCodeAt(0)), 42); - assert.strictEqual(Encoder.getAlphanumericCode('/'.charCodeAt(0)), 43); - assert.strictEqual(Encoder.getAlphanumericCode(':'.charCodeAt(0)), 44); + assert.strictEqual(QRCodeEncoder.getAlphanumericCode(' '.charCodeAt(0)), 36); + assert.strictEqual(QRCodeEncoder.getAlphanumericCode('$'.charCodeAt(0)), 37); + assert.strictEqual(QRCodeEncoder.getAlphanumericCode('%'.charCodeAt(0)), 38); + assert.strictEqual(QRCodeEncoder.getAlphanumericCode('*'.charCodeAt(0)), 39); + assert.strictEqual(QRCodeEncoder.getAlphanumericCode('+'.charCodeAt(0)), 40); + assert.strictEqual(QRCodeEncoder.getAlphanumericCode('-'.charCodeAt(0)), 41); + assert.strictEqual(QRCodeEncoder.getAlphanumericCode('.'.charCodeAt(0)), 42); + assert.strictEqual(QRCodeEncoder.getAlphanumericCode('/'.charCodeAt(0)), 43); + assert.strictEqual(QRCodeEncoder.getAlphanumericCode(':'.charCodeAt(0)), 44); // Should return -1 for other letters; - assert.strictEqual(Encoder.getAlphanumericCode('a'.charCodeAt(0)), -1); - assert.strictEqual(Encoder.getAlphanumericCode('#'.charCodeAt(0)), -1); - assert.strictEqual(Encoder.getAlphanumericCode('\0'.charCodeAt(0)), -1); + assert.strictEqual(QRCodeEncoder.getAlphanumericCode('a'.charCodeAt(0)), -1); + assert.strictEqual(QRCodeEncoder.getAlphanumericCode('#'.charCodeAt(0)), -1); + assert.strictEqual(QRCodeEncoder.getAlphanumericCode('\0'.charCodeAt(0)), -1); }); it('testChooseMode', () => { - StringEncoding.customDecoder = (b, e) => createCustomDecoder(e).decode(b); + ZXingStringEncoding.customDecoder = (b, e) => createCustomDecoder(e).decode(b); // Numeric mode. - assert.strictEqual(Mode.NUMERIC.equals(Encoder.chooseMode('0')), true); - assert.strictEqual(Mode.NUMERIC.equals(Encoder.chooseMode('0123456789')), true); + assert.strictEqual(QRCodeMode.NUMERIC.equals(QRCodeEncoder.chooseMode('0')), true); + assert.strictEqual(QRCodeMode.NUMERIC.equals(QRCodeEncoder.chooseMode('0123456789')), true); // Alphanumeric mode. - assert.strictEqual(Mode.ALPHANUMERIC.equals(Encoder.chooseMode('A')), true); - assert.strictEqual(Mode.ALPHANUMERIC.equals(Encoder.chooseMode('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:')), true); + assert.strictEqual(QRCodeMode.ALPHANUMERIC.equals(QRCodeEncoder.chooseMode('A')), true); + assert.strictEqual(QRCodeMode.ALPHANUMERIC.equals(QRCodeEncoder.chooseMode('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:')), true); // 8-bit byte mode. - assert.strictEqual(Mode.BYTE.equals(Encoder.chooseMode('a')), true); - assert.strictEqual(Mode.BYTE.equals(Encoder.chooseMode('#')), true); - assert.strictEqual(Mode.BYTE.equals(Encoder.chooseMode('')), true); + assert.strictEqual(QRCodeMode.BYTE.equals(QRCodeEncoder.chooseMode('a')), true); + assert.strictEqual(QRCodeMode.BYTE.equals(QRCodeEncoder.chooseMode('#')), true); + assert.strictEqual(QRCodeMode.BYTE.equals(QRCodeEncoder.chooseMode('')), true); // Kanji mode. We used to use MODE_KANJI for these, but we stopped // doing that as we cannot distinguish Shift_JIS from other encodings // from data bytes alone. See also comments in qrcode_encoder.h. // AIUE in Hiragana in Shift_JIS - assert.strictEqual(Mode.BYTE.equals(Encoder.chooseMode(shiftJISString(Uint8Array.from([0x8, 0xa, 0x8, 0xa, 0x8, 0xa, 0x8, 0xa6])))), true); + assert.strictEqual(QRCodeMode.BYTE.equals(QRCodeEncoder.chooseMode(shiftJISString(Uint8Array.from([0x8, 0xa, 0x8, 0xa, 0x8, 0xa, 0x8, 0xa6])))), true); // Nihon in Kanji in Shift_JIS. - assert.strictEqual(Mode.BYTE.equals(Encoder.chooseMode(shiftJISString(Uint8Array.from([0x9, 0xf, 0x9, 0x7b])))), true); + assert.strictEqual(QRCodeMode.BYTE.equals(QRCodeEncoder.chooseMode(shiftJISString(Uint8Array.from([0x9, 0xf, 0x9, 0x7b])))), true); // Sou-Utsu-Byou in Kanji in Shift_JIS. - assert.strictEqual(Mode.BYTE.equals(Encoder.chooseMode(shiftJISString(Uint8Array.from([0xe, 0x4, 0x9, 0x5, 0x9, 0x61])))), true); + assert.strictEqual(QRCodeMode.BYTE.equals(QRCodeEncoder.chooseMode(shiftJISString(Uint8Array.from([0xe, 0x4, 0x9, 0x5, 0x9, 0x61])))), true); - StringEncoding.customDecoder = undefined; + ZXingStringEncoding.customDecoder = undefined; }); it('testEncode', () => { - const qrCode: QRCode = Encoder.encode('ABCDEF', ErrorCorrectionLevel.H); + const qrCode: QRCodeEncoderQRCode = QRCodeEncoder.encode('ABCDEF', QRCodeDecoderErrorCorrectionLevel.H); const expected: string = '<<\n' + ' mode: ALPHANUMERIC\n' + @@ -140,7 +132,7 @@ describe('Encoder', () => { it('testEncodeWithVersion', () => { const hints = new Map(); // EncodeHintType.class) hints.set(EncodeHintType.QR_VERSION, 7); - const qrCode: QRCode = Encoder.encode('ABCDEF', ErrorCorrectionLevel.H, hints); + const qrCode: QRCodeEncoderQRCode = QRCodeEncoder.encode('ABCDEF', QRCodeDecoderErrorCorrectionLevel.H, hints); assert.strictEqual(qrCode.toString().indexOf(' version: 7\n') !== -1, true); }); @@ -150,7 +142,7 @@ describe('Encoder', () => { () => { const hints = new Map(); // EncodeHintType.class) hints.set(EncodeHintType.QR_VERSION, 3); - Encoder.encode('THISMESSAGEISTOOLONGFORAQRCODEVERSION3', ErrorCorrectionLevel.H, hints); + QRCodeEncoder.encode('THISMESSAGEISTOOLONGFORAQRCODEVERSION3', QRCodeDecoderErrorCorrectionLevel.H, hints); }, WriterException, 'unexpected exception thrown' @@ -160,7 +152,7 @@ describe('Encoder', () => { it('testSimpleUTF8ECI', () => { const hints = new Map(); // EncodeHintType.class) hints.set(EncodeHintType.CHARACTER_SET, 'UTF8'); - const qrCode: QRCode = Encoder.encode('hello', ErrorCorrectionLevel.H, hints); + const qrCode: QRCodeEncoderQRCode = QRCodeEncoder.encode('hello', QRCodeDecoderErrorCorrectionLevel.H, hints); const expected: string = '<<\n' + ' mode: BYTE\n' + @@ -195,12 +187,12 @@ describe('Encoder', () => { it('testEncodeKanjiMode', () => { - StringEncoding.customEncoder = (b, e) => createCustomEncoder(e).encode(b); + ZXingStringEncoding.customEncoder = (b, e) => createCustomEncoder(e).encode(b); const hints = new Map(); // EncodeHintType.class) hints.set(EncodeHintType.CHARACTER_SET, CharacterSetECI.SJIS.getName()); // Nihon in Kanji - const qrCode: QRCode = Encoder.encode('\u65e5\u672c', ErrorCorrectionLevel.M, hints); + const qrCode: QRCodeEncoderQRCode = QRCodeEncoder.encode('\u65e5\u672c', QRCodeDecoderErrorCorrectionLevel.M, hints); const expected: string = '<<\n' + ' mode: KANJI\n' + @@ -232,13 +224,13 @@ describe('Encoder', () => { '>>\n'; assert.strictEqual(qrCode.toString(), expected); - StringEncoding.customEncoder = undefined; + ZXingStringEncoding.customEncoder = undefined; }); it('testEncodeShiftjisNumeric', () => { const hints = new Map(); // EncodeHintType.class) hints.set(EncodeHintType.CHARACTER_SET, CharacterSetECI.SJIS.getName()); - const qrCode: QRCode = Encoder.encode('0123', ErrorCorrectionLevel.M, hints); + const qrCode: QRCodeEncoderQRCode = QRCodeEncoder.encode('0123', QRCodeDecoderErrorCorrectionLevel.M, hints); const expected: string = '<<\n' + ' mode: NUMERIC\n' + @@ -273,54 +265,54 @@ describe('Encoder', () => { it('testAppendModeInfo', () => { const bits = new BitArray(); - Encoder.appendModeInfo(Mode.NUMERIC, bits); + QRCodeEncoder.appendModeInfo(QRCodeMode.NUMERIC, bits); assert.strictEqual(bits.toString(), ' ...X'); }); it('testAppendLengthInfo', () => { let bits = new BitArray(); - Encoder.appendLengthInfo(1, // 1 letter (1/1). - Version.getVersionForNumber(1), - Mode.NUMERIC, + QRCodeEncoder.appendLengthInfo(1, // 1 letter (1/1). + QRCodeVersion.getVersionForNumber(1), + QRCodeMode.NUMERIC, bits); assert.strictEqual(bits.toString(), ' ........ .X'); // 10 bits. bits = new BitArray(); - Encoder.appendLengthInfo(2, // 2 letters (2/1). - Version.getVersionForNumber(10), - Mode.ALPHANUMERIC, + QRCodeEncoder.appendLengthInfo(2, // 2 letters (2/1). + QRCodeVersion.getVersionForNumber(10), + QRCodeMode.ALPHANUMERIC, bits); assert.strictEqual(bits.toString(), ' ........ .X.'); // 11 bits. bits = new BitArray(); - Encoder.appendLengthInfo(255, // 255 letter (255/1). - Version.getVersionForNumber(27), - Mode.BYTE, + QRCodeEncoder.appendLengthInfo(255, // 255 letter (255/1). + QRCodeVersion.getVersionForNumber(27), + QRCodeMode.BYTE, bits); assert.strictEqual(bits.toString(), ' ........ XXXXXXXX'); // 16 bits. bits = new BitArray(); - Encoder.appendLengthInfo(512, // 512 letters (1024/2). - Version.getVersionForNumber(40), - Mode.KANJI, + QRCodeEncoder.appendLengthInfo(512, // 512 letters (1024/2). + QRCodeVersion.getVersionForNumber(40), + QRCodeMode.KANJI, bits); assert.strictEqual(bits.toString(), ' ..X..... ....'); // 12 bits. }); it('testAppendBytes', () => { - StringEncoding.customEncoder = (b, e) => createCustomEncoder(e).encode(b); - StringEncoding.customDecoder = (b, e) => createCustomDecoder(e).decode(b); + ZXingStringEncoding.customEncoder = (b, e) => createCustomEncoder(e).encode(b); + ZXingStringEncoding.customDecoder = (b, e) => createCustomDecoder(e).decode(b); // Should use appendNumericBytes. // 1 = 01 = 0001 in 4 bits. let bits = new BitArray(); - Encoder.appendBytes('1', Mode.NUMERIC, bits, Encoder.DEFAULT_BYTE_MODE_ENCODING); + QRCodeEncoder.appendBytes('1', QRCodeMode.NUMERIC, bits, QRCodeEncoder.DEFAULT_BYTE_MODE_ENCODING); assert.strictEqual(bits.toString(), ' ...X'); // Should use appendAlphanumericBytes. // A = 10 = 0xa = 001010 in 6 bits bits = new BitArray(); - Encoder.appendBytes('A', Mode.ALPHANUMERIC, bits, Encoder.DEFAULT_BYTE_MODE_ENCODING); + QRCodeEncoder.appendBytes('A', QRCodeMode.ALPHANUMERIC, bits, QRCodeEncoder.DEFAULT_BYTE_MODE_ENCODING); assert.strictEqual(bits.toString(), ' ..X.X.'); // Lower letters such as 'a' cannot be encoded in MODE_ALPHANUMERIC. try { - Encoder.appendBytes('a', Mode.ALPHANUMERIC, bits, Encoder.DEFAULT_BYTE_MODE_ENCODING); + QRCodeEncoder.appendBytes('a', QRCodeMode.ALPHANUMERIC, bits, QRCodeEncoder.DEFAULT_BYTE_MODE_ENCODING); } catch (we/*WriterException*/) { if (we instanceof WriterException) { // good @@ -331,46 +323,46 @@ describe('Encoder', () => { // Should use append8BitBytes. // 0x61, 0x62, 0x63 bits = new BitArray(); - Encoder.appendBytes('abc', Mode.BYTE, bits, Encoder.DEFAULT_BYTE_MODE_ENCODING); + QRCodeEncoder.appendBytes('abc', QRCodeMode.BYTE, bits, QRCodeEncoder.DEFAULT_BYTE_MODE_ENCODING); assert.strictEqual(bits.toString(), ' .XX....X .XX...X. .XX...XX'); - // Anything can be encoded in QRCode.MODE_8BIT_BYTE. - // TYPESCRIPTPORT: this seems to be unused: Encoder.appendBytes("\0", Mode.BYTE, bits, Encoder.DEFAULT_BYTE_MODE_ENCODING) + // Anything can be encoded in QRCodeEncoderQRCode.MODE_8BIT_BYTE. + // TYPESCRIPTPORT: this seems to be unused: QRCodeEncoder.appendBytes("\0", QRCodeMode.BYTE, bits, QRCodeEncoder.DEFAULT_BYTE_MODE_ENCODING) // Should use appendKanjiBytes. // 0x93, 0x5f bits = new BitArray(); - Encoder.appendBytes(shiftJISString(Uint8Array.from([0x93, 0x5f])), Mode.KANJI, bits, Encoder.DEFAULT_BYTE_MODE_ENCODING); + QRCodeEncoder.appendBytes(shiftJISString(Uint8Array.from([0x93, 0x5f])), QRCodeMode.KANJI, bits, QRCodeEncoder.DEFAULT_BYTE_MODE_ENCODING); assert.strictEqual(bits.toString(), ' .XX.XX.. XXXXX'); - StringEncoding.customEncoder = undefined; - StringEncoding.customDecoder = undefined; + ZXingStringEncoding.customEncoder = undefined; + ZXingStringEncoding.customDecoder = undefined; }); it('testTerminateBits', () => { let v = new BitArray(); - Encoder.terminateBits(0, v); + QRCodeEncoder.terminateBits(0, v); assert.strictEqual(v.toString(), ''); v = new BitArray(); - Encoder.terminateBits(1, v); + QRCodeEncoder.terminateBits(1, v); assert.strictEqual(v.toString(), ' ........'); v = new BitArray(); v.appendBits(0, 3); // Append 000 - Encoder.terminateBits(1, v); + QRCodeEncoder.terminateBits(1, v); assert.strictEqual(v.toString(), ' ........'); v = new BitArray(); v.appendBits(0, 5); // Append 00000 - Encoder.terminateBits(1, v); + QRCodeEncoder.terminateBits(1, v); assert.strictEqual(v.toString(), ' ........'); v = new BitArray(); v.appendBits(0, 8); // Append 00000000 - Encoder.terminateBits(1, v); + QRCodeEncoder.terminateBits(1, v); assert.strictEqual(v.toString(), ' ........'); v = new BitArray(); - Encoder.terminateBits(2, v); + QRCodeEncoder.terminateBits(2, v); assert.strictEqual(v.toString(), ' ........ XXX.XX..'); v = new BitArray(); v.appendBits(0, 1); // Append 0 - Encoder.terminateBits(3, v); + QRCodeEncoder.terminateBits(3, v); assert.strictEqual(v.toString(), ' ........ XXX.XX.. ...X...X'); }); @@ -378,34 +370,34 @@ describe('Encoder', () => { const numDataBytes = new Int32Array(1); /*Int32Array(1)*/ const numEcBytes = new Int32Array(1); /*Int32Array(1)*/ // Version 1-H. - Encoder.getNumDataBytesAndNumECBytesForBlockID(26, 9, 1, 0, numDataBytes, numEcBytes); + QRCodeEncoder.getNumDataBytesAndNumECBytesForBlockID(26, 9, 1, 0, numDataBytes, numEcBytes); assert.strictEqual(numDataBytes[0], 9); assert.strictEqual(numEcBytes[0], 17); // Version 3-H. 2 blocks. - Encoder.getNumDataBytesAndNumECBytesForBlockID(70, 26, 2, 0, numDataBytes, numEcBytes); + QRCodeEncoder.getNumDataBytesAndNumECBytesForBlockID(70, 26, 2, 0, numDataBytes, numEcBytes); assert.strictEqual(numDataBytes[0], 13); assert.strictEqual(numEcBytes[0], 22); - Encoder.getNumDataBytesAndNumECBytesForBlockID(70, 26, 2, 1, numDataBytes, numEcBytes); + QRCodeEncoder.getNumDataBytesAndNumECBytesForBlockID(70, 26, 2, 1, numDataBytes, numEcBytes); assert.strictEqual(numDataBytes[0], 13); assert.strictEqual(numEcBytes[0], 22); // Version 7-H. (4 + 1) blocks. - Encoder.getNumDataBytesAndNumECBytesForBlockID(196, 66, 5, 0, numDataBytes, numEcBytes); + QRCodeEncoder.getNumDataBytesAndNumECBytesForBlockID(196, 66, 5, 0, numDataBytes, numEcBytes); assert.strictEqual(numDataBytes[0], 13); assert.strictEqual(numEcBytes[0], 26); - Encoder.getNumDataBytesAndNumECBytesForBlockID(196, 66, 5, 4, numDataBytes, numEcBytes); + QRCodeEncoder.getNumDataBytesAndNumECBytesForBlockID(196, 66, 5, 4, numDataBytes, numEcBytes); assert.strictEqual(numDataBytes[0], 14); assert.strictEqual(numEcBytes[0], 26); // Version 40-H. (20 + 61) blocks. - Encoder.getNumDataBytesAndNumECBytesForBlockID(3706, 1276, 81, 0, numDataBytes, numEcBytes); + QRCodeEncoder.getNumDataBytesAndNumECBytesForBlockID(3706, 1276, 81, 0, numDataBytes, numEcBytes); assert.strictEqual(numDataBytes[0], 15); assert.strictEqual(numEcBytes[0], 30); - Encoder.getNumDataBytesAndNumECBytesForBlockID(3706, 1276, 81, 20, numDataBytes, numEcBytes); + QRCodeEncoder.getNumDataBytesAndNumECBytesForBlockID(3706, 1276, 81, 20, numDataBytes, numEcBytes); assert.strictEqual(numDataBytes[0], 16); assert.strictEqual(numEcBytes[0], 30); - Encoder.getNumDataBytesAndNumECBytesForBlockID(3706, 1276, 81, 80, numDataBytes, numEcBytes); + QRCodeEncoder.getNumDataBytesAndNumECBytesForBlockID(3706, 1276, 81, 80, numDataBytes, numEcBytes); assert.strictEqual(numDataBytes[0], 16); assert.strictEqual(numEcBytes[0], 30); }); @@ -417,7 +409,7 @@ describe('Encoder', () => { const dataByte = dataBytes[i]; input.appendBits(dataByte, 8); } - let out: BitArray = Encoder.interleaveWithECBytes(input, 26, 9, 1); + let out: BitArray = QRCodeEncoder.interleaveWithECBytes(input, 26, 9, 1); let expected = Uint8Array.from([ // Data bytes. 32, 65, 205, 69, 41, 220, 46, 128, 236, @@ -428,7 +420,7 @@ describe('Encoder', () => { assert.strictEqual(out.getSizeInBytes(), expected.length); let outArray = new Uint8Array(expected.length); out.toBytes(0, outArray, 0, expected.length); - // Can't use Arrays.equals(), because outArray may be longer than out.sizeInBytes() + // Can't use ZXingArrays.equals(), because outArray may be longer than out.sizeInBytes() for (let x: number /*int*/ = 0; x < expected.length; x++) { assert.strictEqual(outArray[x], expected[x]); } @@ -447,7 +439,7 @@ describe('Encoder', () => { input.appendBits(dataByte, 8); } - out = Encoder.interleaveWithECBytes(input, 134, 62, 4); + out = QRCodeEncoder.interleaveWithECBytes(input, 134, 62, 4); expected = Uint8Array.from([ // Data bytes. 67, 230, 54, 55, 70, 247, 70, 71, 22, 7, 86, 87, 38, 23, 102, 103, 54, 39, @@ -476,82 +468,83 @@ describe('Encoder', () => { it('testAppendNumericBytes', () => { // 1 = 01 = 0001 in 4 bits. let bits = new BitArray(); - Encoder.appendNumericBytes('1', bits); + QRCodeEncoder.appendNumericBytes('1', bits); assert.strictEqual(bits.toString(), ' ...X'); // 12 = 0xc = 0001100 in 7 bits. bits = new BitArray(); - Encoder.appendNumericBytes('12', bits); + QRCodeEncoder.appendNumericBytes('12', bits); assert.strictEqual(bits.toString(), ' ...XX..'); // 123 = 0x7b = 0001111011 in 10 bits. bits = new BitArray(); - Encoder.appendNumericBytes('123', bits); + QRCodeEncoder.appendNumericBytes('123', bits); assert.strictEqual(bits.toString(), ' ...XXXX. XX'); // 1234 = "123" + "4" = 0001111011 + 0100 bits = new BitArray(); - Encoder.appendNumericBytes('1234', bits); + QRCodeEncoder.appendNumericBytes('1234', bits); assert.strictEqual(bits.toString(), ' ...XXXX. XX.X..'); // Empty. bits = new BitArray(); - Encoder.appendNumericBytes('', bits); + QRCodeEncoder.appendNumericBytes('', bits); assert.strictEqual(bits.toString(), ''); }); it('testAppendAlphanumericBytes', () => { // A = 10 = 0xa = 001010 in 6 bits let bits = new BitArray(); - Encoder.appendAlphanumericBytes('A', bits); + QRCodeEncoder.appendAlphanumericBytes('A', bits); assert.strictEqual(bits.toString(), ' ..X.X.'); // AB = 10 * 45 + 11 = 461 = 0x1cd = 00111001101 in 11 bits bits = new BitArray(); - Encoder.appendAlphanumericBytes('AB', bits); + QRCodeEncoder.appendAlphanumericBytes('AB', bits); assert.strictEqual(bits.toString(), ' ..XXX..X X.X'); // ABC = "AB" + "C" = 00111001101 + 001100 bits = new BitArray(); - Encoder.appendAlphanumericBytes('ABC', bits); + QRCodeEncoder.appendAlphanumericBytes('ABC', bits); assert.strictEqual(bits.toString(), ' ..XXX..X X.X..XX. .'); // Empty. bits = new BitArray(); - Encoder.appendAlphanumericBytes('', bits); + QRCodeEncoder.appendAlphanumericBytes('', bits); assert.strictEqual(bits.toString(), ''); // Invalid data. try { - Encoder.appendAlphanumericBytes('abc', new BitArray()); + QRCodeEncoder.appendAlphanumericBytes('abc', new BitArray()); } catch (we/*WriterException*/) { // good } }); it('testAppend8BitBytes', () => { + ZXingStringEncoding.customEncoder = (b, e) => createCustomEncoder(e).encode(b); // 0x61, 0x62, 0x63 let bits = new BitArray(); - Encoder.append8BitBytes('abc', bits, Encoder.DEFAULT_BYTE_MODE_ENCODING); + QRCodeEncoder.append8BitBytes('abc', bits, QRCodeEncoder.DEFAULT_BYTE_MODE_ENCODING); assert.strictEqual(bits.toString(), ' .XX....X .XX...X. .XX...XX'); // Empty. bits = new BitArray(); - Encoder.append8BitBytes('', bits, Encoder.DEFAULT_BYTE_MODE_ENCODING); + QRCodeEncoder.append8BitBytes('', bits, QRCodeEncoder.DEFAULT_BYTE_MODE_ENCODING); assert.strictEqual(bits.toString(), ''); }); // Numbers are from page 21 of JISX0510:2004 it('testAppendKanjiBytes', () => { - StringEncoding.customEncoder = (b, e) => createCustomEncoder(e).encode(b); - StringEncoding.customDecoder = (b, e) => createCustomDecoder(e).decode(b); + ZXingStringEncoding.customEncoder = (b, e) => createCustomEncoder(e).encode(b); + ZXingStringEncoding.customDecoder = (b, e) => createCustomDecoder(e).decode(b); const bits = new BitArray(); - Encoder.appendKanjiBytes(shiftJISString(Uint8Array.from([0x93, 0x5f])), bits); + QRCodeEncoder.appendKanjiBytes(shiftJISString(Uint8Array.from([0x93, 0x5f])), bits); assert.strictEqual(bits.toString(), ' .XX.XX.. XXXXX'); - Encoder.appendKanjiBytes(shiftJISString(Uint8Array.from([0xe4, 0xaa])), bits); + QRCodeEncoder.appendKanjiBytes(shiftJISString(Uint8Array.from([0xe4, 0xaa])), bits); assert.strictEqual(bits.toString(), ' .XX.XX.. XXXXXXX. X.X.X.X. X.'); - StringEncoding.customEncoder = undefined; - StringEncoding.customDecoder = undefined; + ZXingStringEncoding.customEncoder = undefined; + ZXingStringEncoding.customDecoder = undefined; }); // Numbers are from http://www.swetake.com/qr/qr3.html and // http://www.swetake.com/qr/qr9.html it('testGenerateECBytes', () => { let dataBytes = Uint8Array.from([32, 65, 205, 69, 41, 220, 46, 128, 236]); - let ecBytes: Uint8Array = Encoder.generateECBytes(dataBytes, 17); + let ecBytes: Uint8Array = QRCodeEncoder.generateECBytes(dataBytes, 17); let expected = Int32Array.from([ 42, 159, 74, 221, 244, 169, 239, 150, 138, 70, 237, 85, 224, 96, 74, 219, 61 ]); @@ -561,7 +554,7 @@ describe('Encoder', () => { } dataBytes = Uint8Array.from([67, 70, 22, 38, 54, 70, 86, 102, 118, 134, 150, 166, 182, 198, 214]); - ecBytes = Encoder.generateECBytes(dataBytes, 18); + ecBytes = QRCodeEncoder.generateECBytes(dataBytes, 18); expected = Int32Array.from([ 175, 80, 155, 64, 178, 45, 214, 233, 65, 209, 12, 155, 117, 31, 140, 214, 27, 187 ]); @@ -571,7 +564,7 @@ describe('Encoder', () => { } // High-order zero coefficient case. dataBytes = Uint8Array.from([32, 49, 205, 69, 42, 20, 0, 236, 17]); - ecBytes = Encoder.generateECBytes(dataBytes, 17); + ecBytes = QRCodeEncoder.generateECBytes(dataBytes, 17); expected = Int32Array.from([ 0, 3, 130, 179, 194, 0, 55, 211, 110, 79, 98, 72, 170, 96, 211, 137, 213 ]); @@ -610,16 +603,16 @@ describe('Encoder', () => { // - To be precise, it needs 11727 + 4 (getMode info) + 14 (length info) = // 11745 bits = 1468.125 bytes are needed (i.e. cannot fit in 1468 // bytes). - const builder = new StringBuilder(); // 3518) + const builder = new ZXingStringBuilder(); // 3518) for (let x: number /*int*/ = 0; x < 3518; x++) { builder.append('0'); } - Encoder.encode(builder.toString(), ErrorCorrectionLevel.L); + QRCodeEncoder.encode(builder.toString(), QRCodeDecoderErrorCorrectionLevel.L); }); function shiftJISString(bytes: Uint8Array): string { try { - return StringEncoding.decode(bytes, CharacterSetECI.SJIS.getName()); + return ZXingStringEncoding.decode(bytes, CharacterSetECI.SJIS.getName()); } catch (uee/*UnsupportedEncodingException*/) { throw new WriterException(uee.toString()); } diff --git a/src/test/core/qrcode/encoder/MaskUtil.spec.ts b/src/test/core/qrcode/encoder/MaskUtil.spec.ts index 884aa51d..f360207b 100644 --- a/src/test/core/qrcode/encoder/MaskUtil.spec.ts +++ b/src/test/core/qrcode/encoder/MaskUtil.spec.ts @@ -17,63 +17,63 @@ /*package com.google.zxing.qrcode.encoder;*/ import * as assert from 'assert'; -import ByteMatrix from '../../../../core/qrcode/encoder/ByteMatrix'; -import MaskUtil from '../../../../core/qrcode/encoder/MaskUtil'; +import { QRCodeByteMatrix } from '@zxing/library'; +import { QRCodeMaskUtil } from '@zxing/library'; /** * @author satorux@google.com (Satoru Takabayashi) - creator * @author mysen@google.com (Chris Mysen) - ported from C++ */ -describe('MaskUtil', () => { +describe('QRCodeMaskUtil', () => { it('testApplyMaskPenaltyRule1', () => { - let matrix = new ByteMatrix(4, 1); + let matrix = new QRCodeByteMatrix(4, 1); matrix.setNumber(0, 0, 0); matrix.setNumber(1, 0, 0); matrix.setNumber(2, 0, 0); matrix.setNumber(3, 0, 0); - assert.strictEqual(MaskUtil.applyMaskPenaltyRule1(matrix), 0); + assert.strictEqual(QRCodeMaskUtil.applyMaskPenaltyRule1(matrix), 0); // Horizontal. - matrix = new ByteMatrix(6, 1); + matrix = new QRCodeByteMatrix(6, 1); matrix.setNumber(0, 0, 0); matrix.setNumber(1, 0, 0); matrix.setNumber(2, 0, 0); matrix.setNumber(3, 0, 0); matrix.setNumber(4, 0, 0); matrix.setNumber(5, 0, 1); - assert.strictEqual(MaskUtil.applyMaskPenaltyRule1(matrix), 3); + assert.strictEqual(QRCodeMaskUtil.applyMaskPenaltyRule1(matrix), 3); matrix.setNumber(5, 0, 0); - assert.strictEqual(MaskUtil.applyMaskPenaltyRule1(matrix), 4); + assert.strictEqual(QRCodeMaskUtil.applyMaskPenaltyRule1(matrix), 4); // Vertical. - matrix = new ByteMatrix(1, 6); + matrix = new QRCodeByteMatrix(1, 6); matrix.setNumber(0, 0, 0); matrix.setNumber(0, 1, 0); matrix.setNumber(0, 2, 0); matrix.setNumber(0, 3, 0); matrix.setNumber(0, 4, 0); matrix.setNumber(0, 5, 1); - assert.strictEqual(MaskUtil.applyMaskPenaltyRule1(matrix), 3); + assert.strictEqual(QRCodeMaskUtil.applyMaskPenaltyRule1(matrix), 3); matrix.setNumber(0, 5, 0); - assert.strictEqual(MaskUtil.applyMaskPenaltyRule1(matrix), 4); + assert.strictEqual(QRCodeMaskUtil.applyMaskPenaltyRule1(matrix), 4); }); it('testApplyMaskPenaltyRule2', () => { - let matrix = new ByteMatrix(1, 1); + let matrix = new QRCodeByteMatrix(1, 1); matrix.setNumber(0, 0, 0); - assert.strictEqual(MaskUtil.applyMaskPenaltyRule2(matrix), 0); - matrix = new ByteMatrix(2, 2); + assert.strictEqual(QRCodeMaskUtil.applyMaskPenaltyRule2(matrix), 0); + matrix = new QRCodeByteMatrix(2, 2); matrix.setNumber(0, 0, 0); matrix.setNumber(1, 0, 0); matrix.setNumber(0, 1, 0); matrix.setNumber(1, 1, 1); - assert.strictEqual(MaskUtil.applyMaskPenaltyRule2(matrix), 0); - matrix = new ByteMatrix(2, 2); + assert.strictEqual(QRCodeMaskUtil.applyMaskPenaltyRule2(matrix), 0); + matrix = new QRCodeByteMatrix(2, 2); matrix.setNumber(0, 0, 0); matrix.setNumber(1, 0, 0); matrix.setNumber(0, 1, 0); matrix.setNumber(1, 1, 0); - assert.strictEqual(MaskUtil.applyMaskPenaltyRule2(matrix), 3); - matrix = new ByteMatrix(3, 3); + assert.strictEqual(QRCodeMaskUtil.applyMaskPenaltyRule2(matrix), 3); + matrix = new QRCodeByteMatrix(3, 3); matrix.setNumber(0, 0, 0); matrix.setNumber(1, 0, 0); matrix.setNumber(2, 0, 0); @@ -84,12 +84,12 @@ describe('MaskUtil', () => { matrix.setNumber(1, 2, 0); matrix.setNumber(2, 2, 0); // Four instances of 2x2 blocks. - assert.strictEqual(MaskUtil.applyMaskPenaltyRule2(matrix), 3 * 4); + assert.strictEqual(QRCodeMaskUtil.applyMaskPenaltyRule2(matrix), 3 * 4); }); it('testApplyMaskPenaltyRule3', () => { // Horizontal 00001011101. - let matrix = new ByteMatrix(11, 1); + let matrix = new QRCodeByteMatrix(11, 1); matrix.setNumber(0, 0, 0); matrix.setNumber(1, 0, 0); matrix.setNumber(2, 0, 0); @@ -101,9 +101,9 @@ describe('MaskUtil', () => { matrix.setNumber(8, 0, 1); matrix.setNumber(9, 0, 0); matrix.setNumber(10, 0, 1); - assert.strictEqual(MaskUtil.applyMaskPenaltyRule3(matrix), 40); + assert.strictEqual(QRCodeMaskUtil.applyMaskPenaltyRule3(matrix), 40); // Horizontal 10111010000. - matrix = new ByteMatrix(11, 1); + matrix = new QRCodeByteMatrix(11, 1); matrix.setNumber(0, 0, 1); matrix.setNumber(1, 0, 0); matrix.setNumber(2, 0, 1); @@ -115,9 +115,9 @@ describe('MaskUtil', () => { matrix.setNumber(8, 0, 0); matrix.setNumber(9, 0, 0); matrix.setNumber(10, 0, 0); - assert.strictEqual(MaskUtil.applyMaskPenaltyRule3(matrix), 40); + assert.strictEqual(QRCodeMaskUtil.applyMaskPenaltyRule3(matrix), 40); // Vertical 00001011101. - matrix = new ByteMatrix(1, 11); + matrix = new QRCodeByteMatrix(1, 11); matrix.setNumber(0, 0, 0); matrix.setNumber(0, 1, 0); matrix.setNumber(0, 2, 0); @@ -129,9 +129,9 @@ describe('MaskUtil', () => { matrix.setNumber(0, 8, 1); matrix.setNumber(0, 9, 0); matrix.setNumber(0, 10, 1); - assert.strictEqual(MaskUtil.applyMaskPenaltyRule3(matrix), 40); + assert.strictEqual(QRCodeMaskUtil.applyMaskPenaltyRule3(matrix), 40); // Vertical 10111010000. - matrix = new ByteMatrix(1, 11); + matrix = new QRCodeByteMatrix(1, 11); matrix.setNumber(0, 0, 1); matrix.setNumber(0, 1, 0); matrix.setNumber(0, 2, 1); @@ -143,34 +143,34 @@ describe('MaskUtil', () => { matrix.setNumber(0, 8, 0); matrix.setNumber(0, 9, 0); matrix.setNumber(0, 10, 0); - assert.strictEqual(MaskUtil.applyMaskPenaltyRule3(matrix), 40); + assert.strictEqual(QRCodeMaskUtil.applyMaskPenaltyRule3(matrix), 40); }); it('testApplyMaskPenaltyRule4', () => { // Dark cell ratio = 0% - let matrix = new ByteMatrix(1, 1); + let matrix = new QRCodeByteMatrix(1, 1); matrix.setNumber(0, 0, 0); - assert.strictEqual(MaskUtil.applyMaskPenaltyRule4(matrix), 100); + assert.strictEqual(QRCodeMaskUtil.applyMaskPenaltyRule4(matrix), 100); // Dark cell ratio = 5% - matrix = new ByteMatrix(2, 1); + matrix = new QRCodeByteMatrix(2, 1); matrix.setNumber(0, 0, 0); matrix.setNumber(0, 0, 1); - assert.strictEqual(MaskUtil.applyMaskPenaltyRule4(matrix), 0); + assert.strictEqual(QRCodeMaskUtil.applyMaskPenaltyRule4(matrix), 0); // Dark cell ratio = 66.67% - matrix = new ByteMatrix(6, 1); + matrix = new QRCodeByteMatrix(6, 1); matrix.setNumber(0, 0, 0); matrix.setNumber(1, 0, 1); matrix.setNumber(2, 0, 1); matrix.setNumber(3, 0, 1); matrix.setNumber(4, 0, 1); matrix.setNumber(5, 0, 0); - assert.strictEqual(MaskUtil.applyMaskPenaltyRule4(matrix), 30); + assert.strictEqual(QRCodeMaskUtil.applyMaskPenaltyRule4(matrix), 30); }); function TestGetDataMaskBitInternal(maskPattern: number /*int*/, expected: Array): boolean { for (let x: number /*int*/ = 0; x < 6; ++x) { for (let y: number /*int*/ = 0; y < 6; ++y) { - if ((expected[y][x] === 1) !== MaskUtil.getDataMaskBit(maskPattern, x, y)) { + if ((expected[y][x] === 1) !== QRCodeMaskUtil.getDataMaskBit(maskPattern, x, y)) { return false; } } diff --git a/src/test/core/qrcode/encoder/MatrixUtil.spec.ts b/src/test/core/qrcode/encoder/MatrixUtil.spec.ts index b60bd580..613becd9 100644 --- a/src/test/core/qrcode/encoder/MatrixUtil.spec.ts +++ b/src/test/core/qrcode/encoder/MatrixUtil.spec.ts @@ -1,7 +1,7 @@ /* * Copyright 2008 ZXing authors * - * Licensed under the Apache License, Version 2.0 (the "License") + * Licensed under the Apache License, QRCodeVersion 2.0 (the "License") * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * @@ -17,20 +17,20 @@ /*package com.google.zxing.qrcode.encoder;*/ import * as assert from 'assert'; -import BitArray from '../../../../core/common/BitArray'; -import ByteMatrix from '../../../../core/qrcode/encoder/ByteMatrix'; -import MatrixUtil from '../../../../core/qrcode/encoder/MatrixUtil'; -import ErrorCorrectionLevel from '../../../../core/qrcode/decoder/ErrorCorrectionLevel'; -import Version from '../../../../core/qrcode/decoder/Version'; +import { BitArray } from '@zxing/library'; +import { QRCodeByteMatrix } from '@zxing/library'; +import { QRCodeMatrixUtil } from '@zxing/library'; +import { QRCodeDecoderErrorCorrectionLevel } from '@zxing/library'; +import { QRCodeVersion } from '@zxing/library'; /** * @author satorux@google.com (Satoru Takabayashi) - creator * @author mysen@google.com (Chris Mysen) - ported from C++ */ -describe('MatrixUtil', () => { +describe('QRCodeMatrixUtil', () => { it('testToString', () => { - const array = new ByteMatrix(3, 3); + const array = new QRCodeByteMatrix(3, 3); array.setNumber(0, 0, 0); array.setNumber(1, 0, 1); array.setNumber(2, 0, 0); @@ -45,8 +45,8 @@ describe('MatrixUtil', () => { }); it('testClearMatrix', () => { - const matrix = new ByteMatrix(2, 2); - MatrixUtil.clearMatrix(matrix); + const matrix = new QRCodeByteMatrix(2, 2); + QRCodeMatrixUtil.clearMatrix(matrix); // TYPESCRIPTPORT: we use UintArray se changed here from -1 to 255 assert.strictEqual(matrix.get(0, 0), 255); assert.strictEqual(matrix.get(1, 0), 255); @@ -55,10 +55,10 @@ describe('MatrixUtil', () => { }); it('testEmbedBasicPatterns1', () => { - // Version 1. - const matrix = new ByteMatrix(21, 21); - MatrixUtil.clearMatrix(matrix); - MatrixUtil.embedBasicPatterns(Version.getVersionForNumber(1), matrix); + // QRCodeVersion 1. + const matrix = new QRCodeByteMatrix(21, 21); + QRCodeMatrixUtil.clearMatrix(matrix); + QRCodeMatrixUtil.embedBasicPatterns(QRCodeVersion.getVersionForNumber(1), matrix); const expected: string = ' 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1\n' + ' 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1\n' + @@ -85,11 +85,11 @@ describe('MatrixUtil', () => { }); it('testEmbedBasicPatterns2', () => { - // Version 2. Position adjustment pattern should apppear at right + // QRCodeVersion 2. Position adjustment pattern should apppear at right // bottom corner. - const matrix = new ByteMatrix(25, 25); - MatrixUtil.clearMatrix(matrix); - MatrixUtil.embedBasicPatterns(Version.getVersionForNumber(2), matrix); + const matrix = new QRCodeByteMatrix(25, 25); + QRCodeMatrixUtil.clearMatrix(matrix); + QRCodeMatrixUtil.embedBasicPatterns(QRCodeVersion.getVersionForNumber(2), matrix); const expected: string = ' 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1\n' + ' 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1\n' + @@ -121,9 +121,9 @@ describe('MatrixUtil', () => { it('testEmbedTypeInfo', () => { // Type info bits = 100000011001110. - const matrix = new ByteMatrix(21, 21); - MatrixUtil.clearMatrix(matrix); - MatrixUtil.embedTypeInfo(ErrorCorrectionLevel.M, 5, matrix); + const matrix = new QRCodeByteMatrix(21, 21); + QRCodeMatrixUtil.clearMatrix(matrix); + QRCodeMatrixUtil.embedTypeInfo(QRCodeDecoderErrorCorrectionLevel.M, 5, matrix); const expected: string = ' 0 \n' + ' 1 \n' + @@ -150,12 +150,12 @@ describe('MatrixUtil', () => { }); it('testEmbedVersionInfo', () => { - // Version info bits = 000111 110010 010100 + // QRCodeVersion info bits = 000111 110010 010100 // Actually, version 7 QR Code has 45x45 matrix but we use 21x21 here // since 45x45 matrix is too big to depict. - const matrix = new ByteMatrix(21, 21); - MatrixUtil.clearMatrix(matrix); - MatrixUtil.maybeEmbedVersionInfo(Version.getVersionForNumber(7), matrix); + const matrix = new QRCodeByteMatrix(21, 21); + QRCodeMatrixUtil.clearMatrix(matrix); + QRCodeMatrixUtil.maybeEmbedVersionInfo(QRCodeVersion.getVersionForNumber(7), matrix); const expected: string = ' 0 0 1 \n' + ' 0 1 0 \n' + @@ -183,11 +183,11 @@ describe('MatrixUtil', () => { it('testEmbedDataBits', () => { // Cells other than basic patterns should be filled with zero. - const matrix = new ByteMatrix(21, 21); - MatrixUtil.clearMatrix(matrix); - MatrixUtil.embedBasicPatterns(Version.getVersionForNumber(1), matrix); + const matrix = new QRCodeByteMatrix(21, 21); + QRCodeMatrixUtil.clearMatrix(matrix); + QRCodeMatrixUtil.embedBasicPatterns(QRCodeVersion.getVersionForNumber(1), matrix); const bits = new BitArray(); - MatrixUtil.embedDataBits(bits, 255, matrix); + QRCodeMatrixUtil.embedDataBits(bits, 255, matrix); const expected: string = ' 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1\n' + ' 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1\n' + @@ -223,10 +223,10 @@ describe('MatrixUtil', () => { const c = bytes[i]; bits.appendBits(c, 8); } - const matrix = new ByteMatrix(21, 21); - MatrixUtil.buildMatrix(bits, - ErrorCorrectionLevel.H, - Version.getVersionForNumber(1), // Version 1 + const matrix = new QRCodeByteMatrix(21, 21); + QRCodeMatrixUtil.buildMatrix(bits, + QRCodeDecoderErrorCorrectionLevel.H, + QRCodeVersion.getVersionForNumber(1), // QRCodeVersion 1 3, // Mask pattern 3 matrix); const expected: string = @@ -255,30 +255,30 @@ describe('MatrixUtil', () => { }); it('testFindMSBSet', () => { - assert.strictEqual(MatrixUtil.findMSBSet(0), 0); - assert.strictEqual(MatrixUtil.findMSBSet(1), 1); - assert.strictEqual(MatrixUtil.findMSBSet(0x80), 8); - assert.strictEqual(MatrixUtil.findMSBSet(0x80000000), 32); + assert.strictEqual(QRCodeMatrixUtil.findMSBSet(0), 0); + assert.strictEqual(QRCodeMatrixUtil.findMSBSet(1), 1); + assert.strictEqual(QRCodeMatrixUtil.findMSBSet(0x80), 8); + assert.strictEqual(QRCodeMatrixUtil.findMSBSet(0x80000000), 32); }); it('testCalculateBCHCode', () => { // Encoding of type information. // From Appendix C in JISX0510:2004 (p 65) - assert.strictEqual(MatrixUtil.calculateBCHCode(5, 0x537), 0xdc); + assert.strictEqual(QRCodeMatrixUtil.calculateBCHCode(5, 0x537), 0xdc); // From http://www.swetake.com/qr/qr6.html - assert.strictEqual(MatrixUtil.calculateBCHCode(0x13, 0x537), 0x1c2); + assert.strictEqual(QRCodeMatrixUtil.calculateBCHCode(0x13, 0x537), 0x1c2); // From http://www.swetake.com/qr/qr11.html - assert.strictEqual(MatrixUtil.calculateBCHCode(0x1b, 0x537), 0x214); + assert.strictEqual(QRCodeMatrixUtil.calculateBCHCode(0x1b, 0x537), 0x214); // Encoding of version information. // From Appendix D in JISX0510:2004 (p 68) - assert.strictEqual(MatrixUtil.calculateBCHCode(7, 0x1f25), 0xc94); - assert.strictEqual(MatrixUtil.calculateBCHCode(8, 0x1f25), 0x5bc); - assert.strictEqual(MatrixUtil.calculateBCHCode(9, 0x1f25), 0xa99); - assert.strictEqual(MatrixUtil.calculateBCHCode(10, 0x1f25), 0x4d3); - assert.strictEqual(MatrixUtil.calculateBCHCode(20, 0x1f25), 0x9a6); - assert.strictEqual(MatrixUtil.calculateBCHCode(30, 0x1f25), 0xd75); - assert.strictEqual(MatrixUtil.calculateBCHCode(40, 0x1f25), 0xc69); + assert.strictEqual(QRCodeMatrixUtil.calculateBCHCode(7, 0x1f25), 0xc94); + assert.strictEqual(QRCodeMatrixUtil.calculateBCHCode(8, 0x1f25), 0x5bc); + assert.strictEqual(QRCodeMatrixUtil.calculateBCHCode(9, 0x1f25), 0xa99); + assert.strictEqual(QRCodeMatrixUtil.calculateBCHCode(10, 0x1f25), 0x4d3); + assert.strictEqual(QRCodeMatrixUtil.calculateBCHCode(20, 0x1f25), 0x9a6); + assert.strictEqual(QRCodeMatrixUtil.calculateBCHCode(30, 0x1f25), 0xd75); + assert.strictEqual(QRCodeMatrixUtil.calculateBCHCode(40, 0x1f25), 0xc69); }); // We don't test a lot of cases in this function since we've already @@ -286,7 +286,7 @@ describe('MatrixUtil', () => { it('testMakeVersionInfoBits', () => { // From Appendix D in JISX0510:2004 (p 68) const bits = new BitArray(); - MatrixUtil.makeVersionInfoBits(Version.getVersionForNumber(7), bits); + QRCodeMatrixUtil.makeVersionInfoBits(QRCodeVersion.getVersionForNumber(7), bits); assert.strictEqual(bits.toString(), ' ...XXXXX ..X..X.X ..'); }); @@ -295,7 +295,7 @@ describe('MatrixUtil', () => { it('testMakeTypeInfoInfoBits', () => { // From Appendix C in JISX0510:2004 (p 65) const bits = new BitArray(); - MatrixUtil.makeTypeInfoBits(ErrorCorrectionLevel.M, 5, bits); + QRCodeMatrixUtil.makeTypeInfoBits(QRCodeDecoderErrorCorrectionLevel.M, 5, bits); assert.strictEqual(bits.toString(), ' X......X X..XXX.'); }); diff --git a/src/test/core/qrcode/encoder/QRCode.spec.ts b/src/test/core/qrcode/encoder/QRCode.spec.ts index a753b4d5..06c10617 100644 --- a/src/test/core/qrcode/encoder/QRCode.spec.ts +++ b/src/test/core/qrcode/encoder/QRCode.spec.ts @@ -17,35 +17,35 @@ /*package com.google.zxing.qrcode.encoder;*/ import * as assert from 'assert'; -import ErrorCorrectionLevel from '../../../../core/qrcode/decoder/ErrorCorrectionLevel'; -import Mode from '../../../../core/qrcode/decoder/Mode'; -import Version from '../../../../core/qrcode/decoder/Version'; -import QRCode from '../../../../core/qrcode/encoder/QRCode'; -import ByteMatrix from '../../../../core/qrcode/encoder/ByteMatrix'; +import { QRCodeDecoderErrorCorrectionLevel } from '@zxing/library'; +import { QRCodeMode } from '@zxing/library'; +import { QRCodeVersion } from '@zxing/library'; +import { QRCodeEncoderQRCode } from '@zxing/library'; +import { QRCodeByteMatrix } from '@zxing/library'; /** * @author satorux@google.com (Satoru Takabayashi) - creator * @author mysen@google.com (Chris Mysen) - ported from C++ */ -describe('QRCode', () => { +describe('QRCodeEncoderQRCode', () => { it('test', () => { - const qrCode = new QRCode(); + const qrCode = new QRCodeEncoderQRCode(); // First, test simple setters and getters. // We use numbers of version 7-H. - qrCode.setMode(Mode.BYTE); - qrCode.setECLevel(ErrorCorrectionLevel.H); - qrCode.setVersion(Version.getVersionForNumber(7)); + qrCode.setMode(QRCodeMode.BYTE); + qrCode.setECLevel(QRCodeDecoderErrorCorrectionLevel.H); + qrCode.setVersion(QRCodeVersion.getVersionForNumber(7)); qrCode.setMaskPattern(3); - assert.strictEqual(Mode.BYTE.equals(qrCode.getMode()), true); - assert.strictEqual(ErrorCorrectionLevel.H.equals(qrCode.getECLevel()), true); + assert.strictEqual(QRCodeMode.BYTE.equals(qrCode.getMode()), true); + assert.strictEqual(QRCodeDecoderErrorCorrectionLevel.H.equals(qrCode.getECLevel()), true); assert.strictEqual(qrCode.getVersion().getVersionNumber(), 7); assert.strictEqual(qrCode.getMaskPattern(), 3); // Prepare the matrix. - const matrix = new ByteMatrix(45, 45); + const matrix = new QRCodeByteMatrix(45, 45); // Just set bogus zero/one values. for (let y: number /*int*/ = 0; y < 45; ++y) { for (let x: number /*int*/ = 0; x < 45; ++x) { @@ -59,7 +59,7 @@ describe('QRCode', () => { }); it('testToString1', () => { - const qrCode = new QRCode(); + const qrCode = new QRCodeEncoderQRCode(); const expected: string = '<<\n' + ' mode: null\n' + @@ -72,12 +72,12 @@ describe('QRCode', () => { }); it('testToString2', () => { - const qrCode = new QRCode(); - qrCode.setMode(Mode.BYTE); - qrCode.setECLevel(ErrorCorrectionLevel.H); - qrCode.setVersion(Version.getVersionForNumber(1)); + const qrCode = new QRCodeEncoderQRCode(); + qrCode.setMode(QRCodeMode.BYTE); + qrCode.setECLevel(QRCodeDecoderErrorCorrectionLevel.H); + qrCode.setVersion(QRCodeVersion.getVersionForNumber(1)); qrCode.setMaskPattern(3); - const matrix = new ByteMatrix(21, 21); + const matrix = new QRCodeByteMatrix(21, 21); for (let y: number /*int*/ = 0; y < 21; ++y) { for (let x: number /*int*/ = 0; x < 21; ++x) { matrix.setNumber(x, y, (y + x) % 2); @@ -116,10 +116,10 @@ describe('QRCode', () => { }); it('testIsValidMaskPattern', () => { - assert.strictEqual(QRCode.isValidMaskPattern(-1), false); - assert.strictEqual(QRCode.isValidMaskPattern(0), true); - assert.strictEqual(QRCode.isValidMaskPattern(7), true); - assert.strictEqual(QRCode.isValidMaskPattern(8), false); + assert.strictEqual(QRCodeEncoderQRCode.isValidMaskPattern(-1), false); + assert.strictEqual(QRCodeEncoderQRCode.isValidMaskPattern(0), true); + assert.strictEqual(QRCodeEncoderQRCode.isValidMaskPattern(7), true); + assert.strictEqual(QRCodeEncoderQRCode.isValidMaskPattern(8), false); }); }); diff --git a/src/test/core/util/SharpImage.ts b/src/test/core/util/SharpImage.ts index 4d0c581a..91b29e7d 100644 --- a/src/test/core/util/SharpImage.ts +++ b/src/test/core/util/SharpImage.ts @@ -1,5 +1,6 @@ import * as sharp from 'sharp'; -import BitMatrix from '../../../core/common/BitMatrix'; + +import { BitMatrix } from '@zxing/library'; export default class SharpImage { diff --git a/src/test/core/util/textEncodingFactory.ts b/src/test/core/util/textEncodingFactory.ts new file mode 100644 index 00000000..9d206834 --- /dev/null +++ b/src/test/core/util/textEncodingFactory.ts @@ -0,0 +1,9 @@ +import { TextEncoder, TextDecoder } from '@zxing/text-encoding'; + +export function createCustomEncoder(e: string) { + return new TextEncoder(e, { NONSTANDARD_allowLegacyEncoding: true }); +} + +export function createCustomDecoder(e: string) { + return new TextDecoder(e); +} diff --git a/tsconfig.json b/tsconfig.json index 9f1e952d..c7235fad 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,5 +1,6 @@ { "compilerOptions": { + "baseUrl": "./", "module": "commonjs", "target": "es5", "moduleResolution": "node", @@ -7,18 +8,22 @@ "es7", "dom" ], - "outDir": "./esm5/", "alwaysStrict": true, "noImplicitAny": false, "sourceMap": true, "declaration": true, "preserveConstEnums": true, "downlevelIteration": true, + "paths": { + "@zxing/library": [ + "./dist" + ], + "@zxing/library/*": [ + "./dist/*" + ] + } }, "include": [ "src/**/*.ts" - ], - "exclude": [ - "src/test" ] } \ No newline at end of file diff --git a/tsconfig.lib-cjs.json b/tsconfig.lib-cjs.json new file mode 100644 index 00000000..26b017ea --- /dev/null +++ b/tsconfig.lib-cjs.json @@ -0,0 +1,11 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "target": "es5", + "outDir": "dist/cjs" + }, + "exclude": [ + "src/test" + ] +} \ No newline at end of file diff --git a/tsconfig.lib-es2015.json b/tsconfig.lib-es2015.json new file mode 100644 index 00000000..47aa9778 --- /dev/null +++ b/tsconfig.lib-es2015.json @@ -0,0 +1,11 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "es2015", + "target": "es2015", + "outDir": "dist/es2015" + }, + "exclude": [ + "src/test" + ] +} \ No newline at end of file diff --git a/tsconfig.lib-esm.json b/tsconfig.lib-esm.json new file mode 100644 index 00000000..98aebc8f --- /dev/null +++ b/tsconfig.lib-esm.json @@ -0,0 +1,11 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "es2015", + "target": "es5", + "outDir": "dist/esm" + }, + "exclude": [ + "src/test" + ] +} \ No newline at end of file diff --git a/tsconfig.test.json b/tsconfig.test.json new file mode 100644 index 00000000..2f3616e3 --- /dev/null +++ b/tsconfig.test.json @@ -0,0 +1,20 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "target": "es6", + "module": "commonjs", + "moduleResolution": "node", + "lib": [ + "es7", + "dom" + ], + "outDir": "output/tests" + }, + "include": [ + "src/test/**/*.ts" + ], + "exclude": [ + "node_modules", + "src/core" + ] +} \ No newline at end of file diff --git a/webpack.config.js b/webpack.config.js deleted file mode 100644 index 30f8220f..00000000 --- a/webpack.config.js +++ /dev/null @@ -1,135 +0,0 @@ -// helpers -const camelCaseToDash = (str) => str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); -const dashToCamelCase = (str) => str.replace(/-([a-z])/g, (g) => g[1].toUpperCase()); -const toUpperCase = (str) => `${str.charAt(0).toUpperCase()}${str.substr(1)}`; -const pascalCase = (str) => toUpperCase(dashToCamelCase(str)); - -// webpack requires -const webpack = require('webpack'); - -const { - removeEmpty -} = require('webpack-config-utils'); - -const UglifyJsPlugin = require('uglifyjs-webpack-plugin'); - -// common requires -const { - resolve -} = require('path'); - -/** - * this is equal to 'webpack --env=dev' - * - * @see https://webpack.js.org/configuration/configuration-types/#exporting-a-function-to-use-env - */ -const config = (env, argv) => { - - const mode = argv.mode; - const isProd = mode === 'production'; - const ifProd = (whenProd, whenNot) => (isProd ? whenProd : whenNot); - - /** - * Configuration for Universal Module Definition bundling. - */ - return [{ - - /** - * These are the entry point of our library. We tell webpack to use - * the name we assign later, when creating the bundle. We also use - * the name to filter the second entry point for applying code - * minification via UglifyJS - */ - entry: { - [`index${ifProd('.min', '')}`]: ['./src/index.ts'], - }, - - /** - * The output defines how and where we want the bundles. The special - * value `[name]` in `filename` tell Webpack to use the name we defined above. - */ - output: { - path: resolve(__dirname, 'umd'), - // module format - libraryTarget: 'umd', - // library name to be used in browser (e.g. `window.ZXing`). - library: 'ZXing', - // will name the AMD module of the UMD build. Otherwise an anonymous define is used. - umdNamedDefine: true - }, - - /** - * Add resolve for `ts` files, otherwise Webpack would - * only look for common JavaScript file extension (.js) - */ - resolve: { - extensions: ['.ts'], - }, - - /** - * Optimizations Webpack shall apply. - */ - optimization: { - splitChunks: { - chunks: 'all' - } - }, - - /** - * Activate source maps for the bundles in order to preserve the original - * source when the user debugs the application - */ - devtool: 'source-map', - - /** - * Plugins to be used by webpack. - */ - plugins: removeEmpty([ - - /** - * Enable scope hoisting. - */ - new webpack.optimize.ModuleConcatenationPlugin(), - - /** - * Apply minification only on the second bundle by - * using a RegEx on the name, which must end with `.min.js` - */ - ifProd( - new UglifyJsPlugin({ - sourceMap: true, - uglifyOptions: { - compress: true, - output: { - comments: false - } - } - }) - ), - - /** - * Plugin for defining environment variables. - */ - new webpack.DefinePlugin({ - 'process.env': { - NODE_ENV: mode - }, - }), - - ]), - - /** - * Defines module packing configuration, I guess - */ - module: { - rules: [{ - test: /\.ts?$/, - include: /src/, - exclude: /src\/test/, - loader: 'awesome-typescript-loader', - }], - }, - }]; -}; - -module.exports = config; diff --git a/webpack.config.test.js b/webpack.config.test.js deleted file mode 100644 index 7f088fdf..00000000 --- a/webpack.config.test.js +++ /dev/null @@ -1,35 +0,0 @@ -const nodeExternals = require('webpack-node-externals'); -const path = require('path'); - -const ProvidePlugin = require('webpack').ProvidePlugin; - -module.exports = (env, argv) => { - - const isDebug = env == 'dbg'; - const loaders = []; - - if (!isDebug) { - loaders.push('istanbul-instrumenter-loader'); - } - - loaders.push('ts-loader'); - - return { - mode: 'development', - entry: './src/index.ts', - resolve: { - extensions: ['.ts'], - }, - module: { - rules: [{ - test: /\.ts$/, - exclude: /node_modules/, - include: path.resolve('src'), // instrument only testing sources with Istanbul, after ts-loader runs - use: loaders - }], - }, - target: 'node', // webpack should compile node compatible code - externals: [nodeExternals()], // in order to ignore all modules in node_modules folder - devtool: 'inline-cheap-module-source-map' - }; -}; diff --git a/yarn.lock b/yarn.lock index 6eca3e5d..1f4fe895 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,46 +2,140 @@ # yarn lockfile v1 -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5": +"@babel/code-frame@^7.0.0": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw== dependencies: "@babel/highlight" "^7.0.0" -"@babel/generator@^7.4.0", "@babel/generator@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.5.5.tgz#873a7f936a3c89491b43536d12245b626664e3cf" - integrity sha512-ETI/4vyTSxTzGnU2c49XHv2zhExkv9JHLTwDAFz85kmcwuShvYG2H08FwgIguQf4JC75CBnXAUM5PqeF4fj0nQ== +"@babel/code-frame@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/core@^7.7.5": + version "7.12.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.3.tgz#1b436884e1e3bff6fb1328dc02b208759de92ad8" + integrity sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.1" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helpers" "^7.12.1" + "@babel/parser" "^7.12.3" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.19" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.1.tgz#0d70be32bdaa03d7c51c8597dda76e0df1f15468" + integrity sha512-DB+6rafIdc9o72Yc3/Ph5h+6hUjeOp66pF0naQBgUFFuPqzQwIlPTm3xZR7YNvduIMtkDIj2t21LSQwnbCrXvg== dependencies: - "@babel/types" "^7.5.5" + "@babel/types" "^7.12.1" jsesc "^2.5.1" - lodash "^4.17.13" source-map "^0.5.0" - trim-right "^1.0.1" -"@babel/helper-function-name@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" - integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== +"@babel/helper-function-name@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" + integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ== + dependencies: + "@babel/helper-get-function-arity" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-get-function-arity@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" + integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-member-expression-to-functions@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz#fba0f2fcff3fba00e6ecb664bb5e6e26e2d6165c" + integrity sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ== + dependencies: + "@babel/types" "^7.12.1" + +"@babel/helper-module-imports@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.1.tgz#1644c01591a15a2f084dd6d092d9430eb1d1216c" + integrity sha512-ZeC1TlMSvikvJNy1v/wPIazCu3NdOwgYZLIkmIyAsGhqkNpiDoQQRmaCK8YP4Pq3GPTLPV9WXaPCJKvx06JxKA== + dependencies: + "@babel/types" "^7.12.1" + +"@babel/helper-module-transforms@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c" + integrity sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w== + dependencies: + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-simple-access" "^7.12.1" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/helper-validator-identifier" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" + lodash "^4.17.19" + +"@babel/helper-optimise-call-expression@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" + integrity sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg== dependencies: - "@babel/helper-get-function-arity" "^7.0.0" - "@babel/template" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/types" "^7.10.4" -"@babel/helper-get-function-arity@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" - integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== +"@babel/helper-replace-supers@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.1.tgz#f15c9cc897439281891e11d5ce12562ac0cf3fa9" + integrity sha512-zJjTvtNJnCFsCXVi5rUInstLd/EIVNmIKA1Q9ynESmMBWPWd+7sdR+G4/wdu+Mppfep0XLyG2m7EBPvjCeFyrw== dependencies: - "@babel/types" "^7.0.0" + "@babel/helper-member-expression-to-functions" "^7.12.1" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" -"@babel/helper-split-export-declaration@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" - integrity sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q== +"@babel/helper-simple-access@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136" + integrity sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA== dependencies: - "@babel/types" "^7.4.4" + "@babel/types" "^7.12.1" + +"@babel/helper-split-export-declaration@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" + integrity sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg== + dependencies: + "@babel/types" "^7.11.0" + +"@babel/helper-validator-identifier@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" + integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== + +"@babel/helpers@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.1.tgz#8a8261c1d438ec18cb890434df4ec768734c1e79" + integrity sha512-9JoDSBGoWtmbay98efmT2+mySkwjzeFeAL9BuWNoVQpkPFQF8SIIFUfY5os9u8wVzglzoiPRSW7cuJmBDUt43g== + dependencies: + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" "@babel/highlight@^7.0.0": version "7.5.0" @@ -52,44 +146,89 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.4.3", "@babel/parser@^7.4.4", "@babel/parser@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.5.5.tgz#02f077ac8817d3df4a832ef59de67565e71cca4b" - integrity sha512-E5BN68cqR7dhKan1SfqgPGhQ178bkVKpXTPEXnFJBrEt8/DKRZlybmy+IgYLTeN7tp1R5Ccmbm2rBk17sHYU3g== - -"@babel/template@^7.1.0", "@babel/template@^7.4.0": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237" - integrity sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw== +"@babel/highlight@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" + integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.4.4" - "@babel/types" "^7.4.4" + "@babel/helper-validator-identifier" "^7.10.4" + chalk "^2.0.0" + js-tokens "^4.0.0" -"@babel/traverse@^7.4.3": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.5.5.tgz#f664f8f368ed32988cd648da9f72d5ca70f165bb" - integrity sha512-MqB0782whsfffYfSjH4TM+LMjrJnhCNEDMDIjeTpl+ASaUvxcjoiVCo/sM1GhS1pHOXYfWVCYneLjMckuUxDaQ== - dependencies: - "@babel/code-frame" "^7.5.5" - "@babel/generator" "^7.5.5" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.4.4" - "@babel/parser" "^7.5.5" - "@babel/types" "^7.5.5" +"@babel/parser@^7.10.4", "@babel/parser@^7.12.1", "@babel/parser@^7.12.3": + version "7.12.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.3.tgz#a305415ebe7a6c7023b40b5122a0662d928334cd" + integrity sha512-kFsOS0IbsuhO5ojF8Hc8z/8vEIOkylVBrjiZUbLTE3XFe0Qi+uu6HjzQixkFaqr0ZPAMZcBVxEwmsnsLPZ2Xsw== + +"@babel/template@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" + integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/parser" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/traverse@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.1.tgz#941395e0c5cc86d5d3e75caa095d3924526f0c1e" + integrity sha512-MA3WPoRt1ZHo2ZmoGKNqi20YnPt0B1S0GTZEPhhd+hw2KGUzBlHuVunj6K4sNuK+reEvyiPwtp0cpaqLzJDmAw== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.1" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/parser" "^7.12.1" + "@babel/types" "^7.12.1" debug "^4.1.0" globals "^11.1.0" - lodash "^4.17.13" + lodash "^4.17.19" -"@babel/types@^7.0.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.5.5.tgz#97b9f728e182785909aa4ab56264f090a028d18a" - integrity sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw== +"@babel/types@^7.10.4", "@babel/types@^7.11.0", "@babel/types@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.1.tgz#e109d9ab99a8de735be287ee3d6a9947a190c4ae" + integrity sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA== dependencies: - esutils "^2.0.2" - lodash "^4.17.13" + "@babel/helper-validator-identifier" "^7.10.4" + lodash "^4.17.19" to-fast-properties "^2.0.0" +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" + integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== + +"@rollup/plugin-node-resolve@^7.1.3": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz#80de384edfbd7bfc9101164910f86078151a3eca" + integrity sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q== + dependencies: + "@rollup/pluginutils" "^3.0.8" + "@types/resolve" "0.0.8" + builtin-modules "^3.1.0" + is-module "^1.0.0" + resolve "^1.14.2" + +"@rollup/pluginutils@^3.0.8": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + "@sinonjs/commons@^1", "@sinonjs/commons@^1.0.2", "@sinonjs/commons@^1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.4.0.tgz#7b3ec2d96af481d7a0321252e7b1c94724ec5a78" @@ -114,7 +253,7 @@ array-from "^2.1.1" lodash "^4.17.11" -"@sinonjs/text-encoding@0.7.1", "@sinonjs/text-encoding@^0.7.1": +"@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== @@ -124,6 +263,16 @@ resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.1.7.tgz#1b8e33b61a8c09cbe1f85133071baa0dbf9fa71a" integrity sha512-2Y8uPt0/jwjhQ6EiluT0XCri1Dbplr0ZxfFXUz+ye13gaqE8u5gL5ppao1JrUYr9cIip5S6MvQzBS7Kke7U9VA== +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + "@types/mocha@^5.2.6": version "5.2.7" resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-5.2.7.tgz#315d570ccb56c53452ff8638738df60726d5b6ea" @@ -139,6 +288,13 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.13.tgz#ac786d623860adf39a3f51d629480aacd6a6eec7" integrity sha512-yN/FNNW1UYsRR1wwAoyOwqvDuLDtVXnaJTZ898XIw/Q5cCaeVAlVwvsmXLX5PuiScBYwZsZU4JYSHB3TvfdwvQ== +"@types/resolve@0.0.8": + version "0.0.8" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" + integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== + dependencies: + "@types/node" "*" + "@types/seedrandom@^2.4.27": version "2.4.28" resolved "https://registry.yarnpkg.com/@types/seedrandom/-/seedrandom-2.4.28.tgz#9ce8fa048c1e8c85cb71d7fe4d704e000226036f" @@ -151,161 +307,10 @@ dependencies: "@types/node" "*" -"@webassemblyjs/ast@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" - integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ== - dependencies: - "@webassemblyjs/helper-module-context" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/wast-parser" "1.8.5" - -"@webassemblyjs/floating-point-hex-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721" - integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ== - -"@webassemblyjs/helper-api-error@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7" - integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA== - -"@webassemblyjs/helper-buffer@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204" - integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q== - -"@webassemblyjs/helper-code-frame@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e" - integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ== - dependencies: - "@webassemblyjs/wast-printer" "1.8.5" - -"@webassemblyjs/helper-fsm@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452" - integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow== - -"@webassemblyjs/helper-module-context@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245" - integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g== - dependencies: - "@webassemblyjs/ast" "1.8.5" - mamacro "^0.0.3" - -"@webassemblyjs/helper-wasm-bytecode@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61" - integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ== - -"@webassemblyjs/helper-wasm-section@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf" - integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - -"@webassemblyjs/ieee754@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e" - integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10" - integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc" - integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw== - -"@webassemblyjs/wasm-edit@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a" - integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/helper-wasm-section" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - "@webassemblyjs/wasm-opt" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - "@webassemblyjs/wast-printer" "1.8.5" - -"@webassemblyjs/wasm-gen@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc" - integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/ieee754" "1.8.5" - "@webassemblyjs/leb128" "1.8.5" - "@webassemblyjs/utf8" "1.8.5" - -"@webassemblyjs/wasm-opt@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264" - integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - -"@webassemblyjs/wasm-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d" - integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-api-error" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/ieee754" "1.8.5" - "@webassemblyjs/leb128" "1.8.5" - "@webassemblyjs/utf8" "1.8.5" - -"@webassemblyjs/wast-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c" - integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/floating-point-hex-parser" "1.8.5" - "@webassemblyjs/helper-api-error" "1.8.5" - "@webassemblyjs/helper-code-frame" "1.8.5" - "@webassemblyjs/helper-fsm" "1.8.5" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/wast-printer@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc" - integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/wast-parser" "1.8.5" - "@xtuc/long" "4.2.2" - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== +"@zxing/text-encoding@~0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@zxing/text-encoding/-/text-encoding-0.9.0.tgz#fb50ffabc6c7c66a0c96b4c03e3d9be74864b70b" + integrity sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA== abbrev@1: version "1.1.1" @@ -335,7 +340,7 @@ acorn@^4.0.4: resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" integrity sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c= -acorn@^6.0.7, acorn@^6.2.0: +acorn@^6.0.7: version "6.2.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.2.1.tgz#3ed8422d6dec09e6121cc7a843ca86a330a86b51" integrity sha512-JD0xT5FCRDNyjDda3Lrg/IxFscp9q4tiYtxE1/nOzlKCk7hIRuYjhq1kCNkbPjMRMZuFq20HNQn1I9k8Oj0E+Q== @@ -345,27 +350,15 @@ after@0.8.2: resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= -ajv-errors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" - integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== - -ajv-keywords@^3.1.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" - integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== - -ajv@^5.0.0: - version "5.5.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" - integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU= +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== dependencies: - co "^4.6.0" - fast-deep-equal "^1.0.0" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.3.0" + clean-stack "^2.0.0" + indent-string "^4.0.0" -ajv@^6.1.0, ajv@^6.10.2, ajv@^6.5.5, ajv@^6.9.1: +ajv@^6.10.2, ajv@^6.5.5, ajv@^6.9.1: version "6.10.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== @@ -414,10 +407,10 @@ ansi-regex@^4.1.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" @@ -426,6 +419,13 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" +ansi-styles@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + ansi-wrap@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" @@ -439,14 +439,14 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -append-transform@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-1.0.0.tgz#046a52ae582a228bd72f58acfbe2967c678759ab" - integrity sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw== +append-transform@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-2.0.0.tgz#99d9d29c7b38391e6f428d28ce136551f0b77e12" + integrity sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg== dependencies: - default-require-extensions "^2.0.0" + default-require-extensions "^3.0.0" -aproba@^1.0.3, aproba@^1.1.1: +aproba@^1.0.3: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== @@ -519,18 +519,6 @@ array-slice@^0.2.3: resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" integrity sha1-3Tz7gO15c6dRF82sabC5nshhhvU= -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= - dependencies: - array-uniq "^1.0.1" - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= - array-unique@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" @@ -546,11 +534,6 @@ arraybuffer.slice@~0.0.7: resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog== -arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= - asn1.js@^4.0.0: version "4.10.1" resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" @@ -572,7 +555,7 @@ assert-plus@1.0.0, assert-plus@^1.0.0: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= -assert@^1.1.1, assert@^1.4.1: +assert@^1.4.1: version "1.5.0" resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== @@ -610,7 +593,7 @@ async@1.x: resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= -async@^2.0.0, async@^2.1.4: +async@^2.1.4: version "2.6.3" resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== @@ -627,20 +610,6 @@ atob@^2.1.1: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -awesome-typescript-loader@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/awesome-typescript-loader/-/awesome-typescript-loader-5.2.1.tgz#a41daf7847515f4925cdbaa3075d61f289e913fc" - integrity sha512-slv66OAJB8orL+UUaTI3pKlLorwIvS4ARZzYR9iJJyGsEgOqueMfOMdKySWzZ73vIkEe3fcwFgsKMg4d8zyb1g== - dependencies: - chalk "^2.4.1" - enhanced-resolve "^4.0.0" - loader-utils "^1.1.0" - lodash "^4.17.5" - micromatch "^3.1.9" - mkdirp "^0.5.1" - source-map-support "^0.5.3" - webpack-log "^1.2.0" - aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" @@ -651,85 +620,6 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== -babel-code-frame@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-generator@^6.18.0: - version "6.26.1" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" - integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.17.4" - source-map "^0.5.7" - trim-right "^1.0.1" - -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= - dependencies: - babel-runtime "^6.22.0" - -babel-runtime@^6.0.0, babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -babel-template@^6.16.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" - integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= - dependencies: - babel-runtime "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - lodash "^4.17.4" - -babel-traverse@^6.18.0, babel-traverse@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= - dependencies: - babel-code-frame "^6.26.0" - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - debug "^2.6.8" - globals "^9.18.0" - invariant "^2.2.2" - lodash "^4.17.4" - -babel-types@^6.18.0, babel-types@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= - dependencies: - babel-runtime "^6.26.0" - esutils "^2.0.2" - lodash "^4.17.4" - to-fast-properties "^1.0.3" - -babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== - backo2@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" @@ -782,11 +672,6 @@ better-assert@~1.0.0: dependencies: callsite "1.0.0" -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - binary-extensions@^1.0.0: version "1.13.1" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" @@ -805,15 +690,15 @@ blob@0.0.5: resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== -bluebird@^3.3.0, bluebird@^3.5.0, bluebird@^3.5.5, bluebird@^3.5.x: +bluebird@^3.3.0, bluebird@^3.5.0, bluebird@^3.5.x: version "3.5.5" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w== bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: - version "4.11.8" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" - integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== + version "4.11.9" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" + integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== body-parser@^1.16.1: version "1.19.0" @@ -966,15 +851,6 @@ buffer-xor@^1.0.3: resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= -buffer@^4.3.0: - version "4.9.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" - integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg= - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - buffer@^5.0.6: version "5.2.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.2.1.tgz#dd57fa0f109ac59c602479044dca7b8b3d0b71d6" @@ -988,6 +864,11 @@ builtin-modules@^1.1.1: resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= +builtin-modules@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" + integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== + builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" @@ -998,26 +879,6 @@ bytes@3.1.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== -cacache@^11.3.2: - version "11.3.3" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.3.tgz#8bd29df8c6a718a6ebd2d010da4d7972ae3bbadc" - integrity sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA== - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -1033,15 +894,15 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" -caching-transform@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-3.0.2.tgz#601d46b91eca87687a281e71cef99791b0efca70" - integrity sha512-Mtgcv3lh3U0zRii/6qVgQODdPA4G3zhG+jtbCWj39RXuUFTMzH0vcdMtaJS1jPowd+It2Pqr6y3NJMQqOqCE2w== +caching-transform@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-4.0.0.tgz#00d297a4206d71e2163c39eaffa8157ac0651f0f" + integrity sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA== dependencies: - hasha "^3.0.0" - make-dir "^2.0.0" - package-hash "^3.0.0" - write-file-atomic "^2.4.2" + hasha "^5.0.0" + make-dir "^3.0.0" + package-hash "^4.0.0" + write-file-atomic "^3.0.0" callsite@1.0.0: version "1.0.0" @@ -1066,12 +927,7 @@ camelcase@^2.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= -camelcase@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= - -camelcase@^5.0.0: +camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== @@ -1093,7 +949,7 @@ chai@^4.2.0: pathval "^1.1.0" type-detect "^4.0.5" -chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -1102,17 +958,6 @@ chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4. escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -1123,7 +968,7 @@ check-error@^1.0.2: resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= -chokidar@^2.0.2, chokidar@^2.0.3: +chokidar@^2.0.3: version "2.1.6" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.6.tgz#b6cad653a929e244ce8a834244164d241fa954c5" integrity sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g== @@ -1147,13 +992,6 @@ chownr@^1.0.1, chownr@^1.1.1: resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.2.tgz#a18f1e0b269c8a6a5d3c86eb298beb14c3dd7bf6" integrity sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A== -chrome-trace-event@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" - integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== - dependencies: - tslib "^1.9.0" - cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -1177,6 +1015,11 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" @@ -1189,34 +1032,20 @@ cli-width@^2.0.0: resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" - -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= - codacy-coverage@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/codacy-coverage/-/codacy-coverage-3.4.0.tgz#196af70844c4e4179718f7a7f9d96b921b4b3a67" @@ -1252,12 +1081,19 @@ color-convert@^1.9.0, color-convert@^1.9.1: 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" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + 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" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -color-name@^1.0.0: +color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== @@ -1312,16 +1148,16 @@ commander@2.15.1: resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag== -commander@^2.12.1, commander@^2.20.0, commander@^2.x, commander@~2.20.0: - version "2.20.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" - integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== - -commander@~2.20.3: +commander@^2.12.1, commander@^2.20.0, commander@~2.20.3: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== +commander@^2.x: + version "2.20.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" + integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== + commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -1352,16 +1188,6 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.5.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - connect@^3.6.0: version "3.7.0" resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" @@ -1394,13 +1220,20 @@ content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -convert-source-map@^1.5.0, convert-source-map@^1.6.0: +convert-source-map@^1.5.0: version "1.6.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== dependencies: safe-buffer "~5.1.1" +convert-source-map@^1.7.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" + convert-source-map@~1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.1.3.tgz#4829c877e9fe49b3161f3bf3673888e204699860" @@ -1411,24 +1244,12 @@ cookie@0.3.1: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== - dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" - copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-js@^2.2.0, core-js@^2.4.0: +core-js@^2.2.0: version "2.6.9" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.9.tgz#6b4b214620c834152e179323727fc19741b084f2" integrity sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A== @@ -1469,7 +1290,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" -cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: +cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== @@ -1480,24 +1301,16 @@ cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^4: - version "4.0.2" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" - integrity sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE= - dependencies: - lru-cache "^4.0.1" - which "^1.2.9" - -cross-spawn@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= +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: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" -crypto-browserify@^3.11.0, crypto-browserify@^3.11.1: +crypto-browserify@^3.11.1: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== @@ -1526,19 +1339,6 @@ custom-event@~1.0.0: resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" integrity sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU= -cyclist@~0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" - integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA= - -d@1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" - integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== - dependencies: - es5-ext "^0.10.50" - type "^1.0.1" - dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -1569,7 +1369,7 @@ dateformat@^1.0.6: get-stdin "^4.0.1" meow "^3.3.0" -debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8: +debug@2.6.9, debug@^2.2.0, debug@^2.3.3: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -1595,14 +1395,21 @@ debug@^3.1.0, debug@^3.2.6: dependencies: ms "^2.1.1" -debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: +debug@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== dependencies: ms "^2.1.1" -decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: +debug@^4.1.0, debug@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" + integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg== + dependencies: + ms "2.1.2" + +decamelize@^1.1.2, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -1636,12 +1443,12 @@ deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= -default-require-extensions@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-2.0.0.tgz#f5f8fbb18a7d6d50b21f641f649ebb522cfe24f7" - integrity sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc= +default-require-extensions@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-3.0.0.tgz#e03f93aac9b2b6443fc52e5e4a37b3ad9ad8df96" + integrity sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg== dependencies: - strip-bom "^3.0.0" + strip-bom "^4.0.0" defaults@^1.0.3: version "1.0.3" @@ -1650,13 +1457,6 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" -define-properties@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - define-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" @@ -1702,18 +1502,6 @@ des.js@^1.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" -detect-file@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" - integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= - -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" - integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg= - dependencies: - repeating "^2.0.0" - detect-libc@^1.0.2, detect-libc@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" @@ -1743,13 +1531,6 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" -dir-glob@^2.0.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" - integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== - dependencies: - path-type "^3.0.0" - doctrine@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" @@ -1767,21 +1548,11 @@ dom-serialize@^2.2.0: extend "^3.0.0" void-elements "^2.0.0" -domain-browser@^1.1.1, domain-browser@^1.1.7: +domain-browser@^1.1.7: version "1.2.0" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== -duplexify@^3.4.2, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -1796,9 +1567,9 @@ ee-first@1.1.1: integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= elliptic@^6.0.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.0.tgz#2b8ed4c891b7de3200e14412a5b8248c7af505ca" - integrity sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg== + version "6.5.3" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" + integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw== dependencies: bn.js "^4.4.0" brorand "^1.0.1" @@ -1813,10 +1584,10 @@ emoji-regex@^7.0.1: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== encodeurl@~1.0.2: version "1.0.2" @@ -1870,76 +1641,34 @@ engine.io@~3.2.0: engine.io-parser "~2.1.0" ws "~3.3.1" -enhanced-resolve@4.1.0, enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" - integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.4.0" - tapable "^1.0.0" - ent@~2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= -errno@^0.1.3, errno@~0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" - integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== - dependencies: - prr "~1.0.1" - -error-ex@^1.2.0, error-ex@^1.3.1: +error-ex@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" -es5-ext@^0.10.35, es5-ext@^0.10.50, es5-ext@~0.10.14: - version "0.10.50" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.50.tgz#6d0e23a0abdb27018e5ac4fd09b412bc5517a778" - integrity sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw== - dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.1" - next-tick "^1.0.0" - es6-error@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== -es6-iterator@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - es6-object-assign@^1.0.3: version "1.1.0" resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c" integrity sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw= -es6-symbol@^3.1.1, es6-symbol@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" - integrity sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc= - dependencies: - d "1" - es5-ext "~0.10.14" - escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: +escape-string-regexp@1.0.5, 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" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= @@ -1956,7 +1685,7 @@ escodegen@1.8.x: optionalDependencies: source-map "~0.2.0" -eslint-scope@^4.0.0, eslint-scope@^4.0.3: +eslint-scope@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== @@ -2061,26 +1790,26 @@ estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= -eventemitter3@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" - integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== events@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= -events@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88" - integrity sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA== - evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" @@ -2089,32 +1818,6 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" -execa@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" - integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - expand-braces@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea" @@ -2150,13 +1853,6 @@ expand-template@^2.0.3: resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== -expand-tilde@^2.0.0, expand-tilde@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" - integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= - dependencies: - homedir-polyfill "^1.0.1" - extend-shallow@^1.1.2: version "1.1.4" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-1.1.4.tgz#19d6bf94dfc09d76ba711f39b872d21ff4dd9071" @@ -2217,11 +1913,6 @@ extsprintf@^1.2.0: resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= -fast-deep-equal@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" - integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ= - fast-deep-equal@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" @@ -2237,11 +1928,6 @@ fast-levenshtein@~2.0.4: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= -figgy-pudding@^3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" - integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== - figures@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" @@ -2279,14 +1965,14 @@ finalhandler@1.1.2: statuses "~1.5.0" unpipe "~1.0.0" -find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== +find-cache-dir@^3.2.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" + integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== dependencies: commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" + make-dir "^3.0.2" + pkg-dir "^4.1.0" find-up@^1.0.0: version "1.1.2" @@ -2296,29 +1982,13 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" -find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= - dependencies: - locate-path "^2.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -findup-sync@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" - integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== dependencies: - detect-file "^1.0.0" - is-glob "^4.0.0" - micromatch "^3.0.4" - resolve-dir "^1.0.1" + locate-path "^5.0.0" + path-exists "^4.0.0" flat-cache@^2.0.1: version "2.0.1" @@ -2334,33 +2004,23 @@ flatted@^2.0.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg== -flush-write-stream@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - follow-redirects@^1.0.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.7.0.tgz#489ebc198dc0e7f64167bd23b03c4c19b5784c76" - integrity sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ== - dependencies: - debug "^3.2.6" + version "1.13.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.0.tgz#b42e8d93a2a7eea5ed88633676d6597bc8e384db" + integrity sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA== for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= -foreground-child@^1.5.6: - version "1.5.6" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-1.5.6.tgz#4fd71ad2dfde96789b980a5c0a295937cb2f5ce9" - integrity sha1-T9ca0t/elnibmApcCilZN8svXOk= +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 "^4" - signal-exit "^3.0.0" + cross-spawn "^7.0.0" + signal-exit "^3.0.2" forever-agent@~0.6.1: version "0.6.1" @@ -2383,13 +2043,10 @@ fragment-cache@^0.2.1: dependencies: map-cache "^0.2.2" -from2@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" +fromentries@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/fromentries/-/fromentries-1.2.1.tgz#64c31665630479bc993cd800d53387920dc61b4d" + integrity sha512-Xu2Qh8yqYuDhQGOhD5iJGninErSfI9A3FrriD3tjUgV5VbJFeH8vfgZ9HnC6jWN80QDVNQK5vmxRAmEAp7Mevw== fs-access@^1.0.0: version "1.0.1" @@ -2415,16 +2072,6 @@ fs-minipass@^1.2.5: dependencies: minipass "^2.2.1" -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -2438,10 +2085,10 @@ fsevents@^1.2.7: nan "^2.12.1" node-pre-gyp "^0.12.0" -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +fsevents@~2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== functional-red-black-tree@^1.0.1: version "1.0.1" @@ -2462,10 +2109,10 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== +gensync@^1.0.0-beta.1: + version "1.0.0-beta.1" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" + integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== get-caller-file@^2.0.1: version "2.0.5" @@ -2477,23 +2124,16 @@ get-func-name@^2.0.0: resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + get-stdin@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= - -get-stream@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -2542,7 +2182,7 @@ glob@^5.0.15: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: +glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3: version "7.1.4" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== @@ -2554,75 +2194,39 @@ glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" -global-modules@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - -global-modules@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" - integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== - dependencies: - global-prefix "^1.0.1" - is-windows "^1.0.1" - resolve-dir "^1.0.0" - -global-prefix@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" - integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= +glob@^7.1.4, glob@^7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== dependencies: - expand-tilde "^2.0.2" - homedir-polyfill "^1.0.1" - ini "^1.3.4" - is-windows "^1.0.1" - which "^1.2.14" - -global-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" - integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== - dependencies: - ini "^1.3.5" - kind-of "^6.0.2" - which "^1.3.1" + 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" globals@^11.1.0, globals@^11.7.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^9.18.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" - integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== - -globby@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680" - integrity sha1-+yzP+UAfhgCUXfral0QMypcrhoA= - dependencies: - array-union "^1.0.1" - dir-glob "^2.0.0" - glob "^7.1.2" - ignore "^3.3.5" - pify "^3.0.0" - slash "^1.0.0" - -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: +graceful-fs@^4.1.11, graceful-fs@^4.1.2: version "4.2.0" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.0.tgz#8d8fdc73977cb04104721cb53666c1ca64cd328b" integrity sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg== +graceful-fs@^4.1.15: + version "4.2.4" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== + growl@1.10.5: version "1.10.5" resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== -handlebars@^4.0.1, handlebars@^4.1.2: +handlebars@^4.0.1: version "4.5.3" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.5.3.tgz#5cf75bd8714f7605713511a56be7c349becb0482" integrity sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA== @@ -2646,13 +2250,6 @@ har-validator@~5.1.0: ajv "^6.5.5" har-schema "^2.0.0" -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^2.0.0" - has-binary2@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d" @@ -2675,10 +2272,10 @@ has-flag@^3.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= -has-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" - integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has-unicode@^2.0.0: version "2.0.1" @@ -2732,12 +2329,13 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" -hasha@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/hasha/-/hasha-3.0.0.tgz#52a32fab8569d41ca69a61ff1a214f8eb7c8bd39" - integrity sha1-UqMvq4Vp1BymmmH/GiFPjrfIvTk= +hasha@^5.0.0: + version "5.2.2" + resolved "https://registry.yarnpkg.com/hasha/-/hasha-5.2.2.tgz#a48477989b3b327aea3c04f53096d816d97522a1" + integrity sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ== dependencies: - is-stream "^1.0.1" + is-stream "^2.0.0" + type-fest "^0.8.0" he@1.1.1: version "1.1.1" @@ -2763,18 +2361,16 @@ hoek@6.x.x: resolved "https://registry.yarnpkg.com/hoek/-/hoek-6.1.3.tgz#73b7d33952e01fe27a38b0457294b79dd8da242c" integrity sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ== -homedir-polyfill@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" - integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== - dependencies: - parse-passwd "^1.0.0" - hosted-git-info@^2.1.4: version "2.7.1" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== +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== + http-errors@1.7.2: version "1.7.2" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" @@ -2787,11 +2383,11 @@ http-errors@1.7.2: toidentifier "1.0.0" http-proxy@^1.13.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" - integrity sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g== + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== dependencies: - eventemitter3 "^3.0.0" + eventemitter3 "^4.0.0" follow-redirects "^1.0.0" requires-port "^1.0.0" @@ -2821,11 +2417,6 @@ ieee754@^1.1.4: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= - ignore-walk@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" @@ -2833,11 +2424,6 @@ ignore-walk@^3.0.1: dependencies: minimatch "^3.0.4" -ignore@^3.3.5: - version "3.3.10" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" - integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== - ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" @@ -2851,14 +2437,6 @@ import-fresh@^3.0.0: parent-module "^1.0.0" resolve-from "^4.0.0" -import-local@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" - integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== - dependencies: - pkg-dir "^3.0.0" - resolve-cwd "^2.0.0" - imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -2871,6 +2449,11 @@ indent-string@^2.1.0: dependencies: repeating "^2.0.0" +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + indexof@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" @@ -2899,7 +2482,7 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: +ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== @@ -2930,28 +2513,11 @@ inquirer@^6.2.2: strip-ansi "^5.1.0" through "^2.3.6" -interpret@1.2.0, interpret@^1.0.0, interpret@^1.0.1: +interpret@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== -invariant@^2.2.2: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= - -invert-kv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" - integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== - is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -3056,6 +2622,11 @@ is-fullwidth-code-point@^2.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" @@ -3070,6 +2641,11 @@ is-glob@^4.0.0: dependencies: is-extglob "^2.1.1" +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= + is-number@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" @@ -3094,12 +2670,12 @@ is-promise@^2.1.0: resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= -is-stream@^1.0.1, is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= +is-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== -is-typedarray@~1.0.0: +is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= @@ -3109,22 +2685,17 @@ is-utf8@^0.2.0: resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= -is-windows@^1.0.1, is-windows@^1.0.2: +is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= - 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= -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: +isarray@1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= @@ -3170,85 +2741,66 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= -istanbul-instrumenter-loader@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-3.0.1.tgz#9957bd59252b373fae5c52b7b5188e6fde2a0949" - integrity sha512-a5SPObZgS0jB/ixaKSMdn6n/gXSrK2S6q/UfRJBT3e6gQmVjwZROTODQsYW5ZNwOu78hG62Y3fWlebaVOL0C+w== - dependencies: - convert-source-map "^1.5.0" - istanbul-lib-instrument "^1.7.3" - loader-utils "^1.1.0" - schema-utils "^0.3.0" - -istanbul-lib-coverage@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz#ccf7edcd0a0bb9b8f729feeb0930470f9af664f0" - integrity sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ== +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.0.0-alpha.1: + 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-coverage@^2.0.3, istanbul-lib-coverage@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" - integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== - -istanbul-lib-hook@^2.0.3: - version "2.0.7" - resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz#c95695f383d4f8f60df1f04252a9550e15b5b133" - integrity sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA== - dependencies: - append-transform "^1.0.0" - -istanbul-lib-instrument@^1.7.3: - version "1.10.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz#1f55ed10ac3c47f2bdddd5307935126754d0a9ca" - integrity sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A== - dependencies: - babel-generator "^6.18.0" - babel-template "^6.16.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" - babylon "^6.18.0" - istanbul-lib-coverage "^1.2.1" - semver "^5.3.0" +istanbul-lib-hook@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz#8f84c9434888cc6b1d0a9d7092a76d239ebf0cc6" + integrity sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ== + dependencies: + append-transform "^2.0.0" -istanbul-lib-instrument@^3.1.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" - integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== - dependencies: - "@babel/generator" "^7.4.0" - "@babel/parser" "^7.4.3" - "@babel/template" "^7.4.0" - "@babel/traverse" "^7.4.3" - "@babel/types" "^7.4.0" - istanbul-lib-coverage "^2.0.5" - semver "^6.0.0" +istanbul-lib-instrument@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" + integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== + dependencies: + "@babel/core" "^7.7.5" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.0.0" + semver "^6.3.0" -istanbul-lib-report@^2.0.4: - version "2.0.8" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" - integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== +istanbul-lib-processinfo@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz#e1426514662244b2f25df728e8fd1ba35fe53b9c" + integrity sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw== + dependencies: + archy "^1.0.0" + cross-spawn "^7.0.0" + istanbul-lib-coverage "^3.0.0-alpha.1" + make-dir "^3.0.0" + p-map "^3.0.0" + rimraf "^3.0.0" + uuid "^3.3.3" + +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 "^2.0.5" - make-dir "^2.1.0" - supports-color "^6.1.0" + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" -istanbul-lib-source-maps@^3.0.2: - version "3.0.6" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" - integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== +istanbul-lib-source-maps@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" + integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== dependencies: debug "^4.1.1" - istanbul-lib-coverage "^2.0.5" - make-dir "^2.1.0" - rimraf "^2.6.3" + istanbul-lib-coverage "^3.0.0" source-map "^0.6.1" -istanbul-reports@^2.1.1: - version "2.2.6" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.6.tgz#7b4f2660d82b29303a8fe6091f8ca4bf058da1af" - integrity sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA== +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: - handlebars "^4.1.2" + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" istanbul@0.4.5, istanbul@^0.4.0: version "0.4.5" @@ -3287,17 +2839,12 @@ joi@^13.x: isemail "3.x.x" topo "3.x.x" -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: +js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= - -js-yaml@3.x, js-yaml@^3.13.0, js-yaml@^3.13.1: +js-yaml@3.x, js-yaml@^3.13.0: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== @@ -3305,31 +2852,24 @@ js-yaml@3.x, js-yaml@^3.13.0, js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^3.13.1: + version "3.14.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" + integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" - integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= - jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== -json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-schema-traverse@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" - integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A= - json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -3357,6 +2897,13 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" +json5@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" + integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== + dependencies: + minimist "^1.2.5" + jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -3475,18 +3022,6 @@ karma-typescript@^3.0.13: util "^0.10.3" vm-browserify "0.0.4" -karma-webpack@^3.0.5: - version "3.0.5" - resolved "https://registry.yarnpkg.com/karma-webpack/-/karma-webpack-3.0.5.tgz#1ff1e3a690fb73ae95ee95f9ab58f341cfc7b40f" - integrity sha512-nRudGJWstvVuA6Tbju9tyGUfXTtI1UXMXoRHVmM2/78D0q6s/Ye2IC157PKNDC15PWFGR0mVIRtWLAdcfsRJoA== - dependencies: - async "^2.0.0" - babel-runtime "^6.0.0" - loader-utils "^1.0.0" - lodash "^4.0.0" - source-map "^0.5.6" - webpack-dev-middleware "^2.0.6" - karma@^3.1.4: version "3.1.4" resolved "https://registry.yarnpkg.com/karma/-/karma-3.1.4.tgz#3890ca9722b10d1d14b726e1335931455788499e" @@ -3550,20 +3085,6 @@ kind-of@^6.0.0, kind-of@^6.0.2: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= - dependencies: - invert-kv "^1.0.0" - -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== - dependencies: - invert-kv "^2.0.0" - lcov-parse@^1.x: version "1.0.0" resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-1.0.0.tgz#eb0d46b54111ebc561acb4c408ef9363bdc8f7e0" @@ -3588,45 +3109,12 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" -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" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - -loader-runner@^2.3.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" - integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== - -loader-utils@1.2.3, loader-utils@^1.0.0, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" - integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== - dependencies: - big.js "^5.2.2" - emojis-list "^2.0.0" - json5 "^1.0.1" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" + p-locate "^4.1.0" lodash.flattendeep@^4.4.0: version "4.4.0" @@ -3638,23 +3126,21 @@ lodash.memoize@~3.0.3: resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f" integrity sha1-LcvSwofLwKVcxCMovQxzYVDVPj8= -lodash@^4.0.0, lodash@^4.17.0, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0, lodash@^4.5.0: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" - integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== +lodash@^4.17.0, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.5.0: + version "4.17.19" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" + integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== + +lodash@^4.17.19: + version "4.17.20" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" + integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== log-driver@^1.x: version "1.2.7" resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.7.tgz#63b95021f0702fedfa2c9bb0a24e7797d71871d8" integrity sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg== -log-symbols@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" - integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== - dependencies: - chalk "^2.0.1" - log4js@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/log4js/-/log4js-1.1.1.tgz#c21d29c7604089e4f255833e7f94b3461de1ff43" @@ -3675,27 +3161,12 @@ log4js@^3.0.0: rfdc "^1.1.2" streamroller "0.7.0" -loglevelnext@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/loglevelnext/-/loglevelnext-1.0.5.tgz#36fc4f5996d6640f539ff203ba819641680d75a2" - integrity sha512-V/73qkPuJmx4BcBF19xPBr+0ZRVBhc4POxvZTZdMeXpJ4NItXSJ/MSwuFT0kQJlCbXvdlZoQQ/418bS1y9Jh6A== - dependencies: - es6-symbol "^3.1.1" - object.assign "^4.1.0" - lolex@^4.0.1, lolex@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/lolex/-/lolex-4.1.0.tgz#ecdd7b86539391d8237947a3419aa8ac975f0fe1" integrity sha512-BYxIEXiVq5lGIXeVHnsFzqa1TxN5acnKnPCdlZSpzm8viNEOhiigupA4vTQ9HEFQ6nLTQ9wQOgBknJgzUYQ9Aw== -loose-envify@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -loud-rejection@^1.0.0, loud-rejection@^1.6.0: +loud-rejection@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= @@ -3703,7 +3174,7 @@ loud-rejection@^1.0.0, loud-rejection@^1.6.0: currently-unhandled "^0.4.1" signal-exit "^3.0.0" -lru-cache@4.1.x, lru-cache@^4.0.1: +lru-cache@4.1.x: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== @@ -3711,45 +3182,18 @@ lru-cache@4.1.x, lru-cache@^4.0.1: pseudomap "^1.0.2" yallist "^2.1.2" -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -make-dir@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" - integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== - dependencies: - pify "^3.0.0" - -make-dir@^2.0.0, make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== +make-dir@^3.0.0, make-dir@^3.0.2: + 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: - pify "^4.0.1" - semver "^5.6.0" + 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== -mamacro@^0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" - integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== - -map-age-cleaner@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== - dependencies: - p-defer "^1.0.0" - map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" @@ -3781,30 +3225,6 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -mem@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" - integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y= - dependencies: - mimic-fn "^1.0.0" - -mem@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" - integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== - dependencies: - map-age-cleaner "^0.1.1" - mimic-fn "^2.0.0" - p-is-promise "^2.0.0" - -memory-fs@^0.4.0, memory-fs@^0.4.1, memory-fs@~0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - meow@^3.3.0: version "3.7.0" resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" @@ -3821,14 +3241,7 @@ meow@^3.3.0: redent "^1.0.0" trim-newlines "^1.0.0" -merge-source-map@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" - integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw== - dependencies: - source-map "^0.6.1" - -micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8, micromatch@^3.1.9: +micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -3867,7 +3280,7 @@ mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24: dependencies: mime-db "1.40.0" -mime@^2.1.0, mime@^2.3.1: +mime@^2.3.1: version "2.4.4" resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== @@ -3877,11 +3290,6 @@ mimic-fn@^1.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== -mimic-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - mimic-response@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" @@ -3914,6 +3322,11 @@ minimist@1.2.0, minimist@^1.1.3, minimist@^1.2.0: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= +minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + minimist@~0.0.1: version "0.0.10" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" @@ -3934,22 +3347,6 @@ minizlib@^1.2.1: dependencies: minipass "^2.2.1" -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - mixin-deep@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -3958,41 +3355,25 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: +mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= dependencies: minimist "0.0.8" +mkdirp@^0.5.3: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + 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-webpack@^2.0.0-beta.0: - version "2.0.0-beta.0" - resolved "https://registry.yarnpkg.com/mocha-webpack/-/mocha-webpack-2.0.0-beta.0.tgz#d85fc9a70f82a4ad595b7702a1181605dfa59549" - integrity sha512-2ezbW0h5cYWr874F/hzytQCqINxk+GVelMY4xWTSHwwH1LrPAOzjlUljZ+/PhpaP6QeqYbL5x5vK/bnaXqkfEw== - dependencies: - babel-runtime "^6.18.0" - chalk "^2.3.0" - chokidar "^2.0.2" - glob-parent "^3.1.0" - globby "^7.1.1" - interpret "^1.0.1" - is-glob "^4.0.0" - loader-utils "^1.1.0" - lodash "^4.3.0" - memory-fs "^0.4.1" - nodent-runtime "^3.0.3" - normalize-path "^2.0.1" - progress "^2.0.0" - source-map-support "^0.5.0" - strip-ansi "^4.0.0" - toposort "^1.0.0" - yargs "^11.0.0" - mocha@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.2.0.tgz#6d8ae508f59167f940f2b5b3c4a612ae50c90ae6" @@ -4010,24 +3391,12 @@ mocha@^5.2.0: mkdirp "0.5.1" supports-color "5.4.0" -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" - ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@^2.1.1: +ms@2.1.2, ms@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== @@ -4083,16 +3452,11 @@ negotiator@0.6.2: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -neo-async@^2.5.0, neo-async@^2.6.0: +neo-async@^2.6.0: version "2.6.1" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== -next-tick@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" - integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= - nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" @@ -4116,35 +3480,6 @@ node-abi@^2.7.0: dependencies: semver "^5.4.1" -node-libs-browser@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" - node-pre-gyp@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" @@ -4161,10 +3496,12 @@ node-pre-gyp@^0.12.0: semver "^5.3.0" tar "^4" -nodent-runtime@^3.0.3: - version "3.2.1" - resolved "https://registry.yarnpkg.com/nodent-runtime/-/nodent-runtime-3.2.1.tgz#9e2755d85e39f764288f0d4752ebcfe3e541e00e" - integrity sha512-7Ws63oC+215smeKJQCxzrK21VFVlCFBkwl0MOObt0HOpVQXs3u483sAmtkF33nNqZ5rSOQjB76fgyPBmAUrtCA== +node-preload@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/node-preload/-/node-preload-0.2.1.tgz#c03043bb327f417a18fee7ab7ee57b408a144301" + integrity sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ== + dependencies: + process-on-spawn "^1.0.0" noop-logger@^0.1.1: version "0.1.1" @@ -4196,7 +3533,7 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.1, normalize-path@^2.1.1: +normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= @@ -4221,13 +3558,6 @@ npm-packlist@^1.1.6: ignore-walk "^3.0.1" npm-bundled "^1.0.1" -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= - dependencies: - path-key "^2.0.0" - npmlog@^4.0.1, npmlog@^4.0.2, npmlog@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" @@ -4248,35 +3578,38 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= -nyc@^13.3.0: - version "13.3.0" - resolved "https://registry.yarnpkg.com/nyc/-/nyc-13.3.0.tgz#da4dbe91a9c8b9ead3f4f3344c76f353e3c78c75" - integrity sha512-P+FwIuro2aFG6B0Esd9ZDWUd51uZrAEoGutqZxzrVmYl3qSfkLgcQpBPBjtDFsUQLFY1dvTQJPOyeqr8S9GF8w== +nyc@^15.1.0: + version "15.1.0" + resolved "https://registry.yarnpkg.com/nyc/-/nyc-15.1.0.tgz#1335dae12ddc87b6e249d5a1994ca4bdaea75f02" + integrity sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A== dependencies: - archy "^1.0.0" - arrify "^1.0.1" - caching-transform "^3.0.1" - convert-source-map "^1.6.0" - find-cache-dir "^2.0.0" - find-up "^3.0.0" - foreground-child "^1.5.6" - glob "^7.1.3" - istanbul-lib-coverage "^2.0.3" - istanbul-lib-hook "^2.0.3" - istanbul-lib-instrument "^3.1.0" - istanbul-lib-report "^2.0.4" - istanbul-lib-source-maps "^3.0.2" - istanbul-reports "^2.1.1" - make-dir "^1.3.0" - merge-source-map "^1.1.0" - resolve-from "^4.0.0" - rimraf "^2.6.3" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + caching-transform "^4.0.0" + convert-source-map "^1.7.0" + decamelize "^1.2.0" + find-cache-dir "^3.2.0" + find-up "^4.1.0" + foreground-child "^2.0.0" + get-package-type "^0.1.0" + glob "^7.1.6" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-hook "^3.0.0" + istanbul-lib-instrument "^4.0.0" + istanbul-lib-processinfo "^2.0.2" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.0.2" + make-dir "^3.0.0" + node-preload "^0.2.1" + p-map "^3.0.0" + process-on-spawn "^1.0.0" + resolve-from "^5.0.0" + rimraf "^3.0.0" signal-exit "^3.0.2" - spawn-wrap "^1.4.2" - test-exclude "^5.1.0" - uuid "^3.3.2" - yargs "^12.0.5" - yargs-parser "^11.1.1" + spawn-wrap "^2.0.0" + test-exclude "^6.0.0" + yargs "^15.0.2" oauth-sign@~0.9.0: version "0.9.0" @@ -4302,11 +3635,6 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-keys@^1.0.11, object-keys@^1.0.12: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" @@ -4314,16 +3642,6 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" - object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -4382,24 +3700,6 @@ os-homedir@^1.0.0, os-homedir@^1.0.1: resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= -os-locale@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" - integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA== - dependencies: - execa "^0.7.0" - lcid "^1.0.0" - mem "^1.1.0" - -os-locale@^3.0.0, os-locale@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== - dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" - os-tmpdir@^1.0.0, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -4413,66 +3713,39 @@ osenv@^0.1.4: os-homedir "^1.0.0" os-tmpdir "^1.0.0" -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - -p-is-promise@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" - integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - -p-limit@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2" - integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ== +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.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" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== dependencies: - p-limit "^1.1.0" + p-limit "^2.2.0" -p-locate@^3.0.0: +p-map@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== dependencies: - p-limit "^2.0.0" - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + aggregate-error "^3.0.0" p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -package-hash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-3.0.0.tgz#50183f2d36c9e3e528ea0a8605dff57ce976f88e" - integrity sha512-lOtmukMDVvtkL84rJHI7dpTYq+0rli8N2wlnqUcBuDWCfVhRUfOmnR9SsoHFMLpACvEV60dX7rd0rFaYDZI+FA== +package-hash@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-4.0.0.tgz#3537f654665ec3cc38827387fc904c163c54f506" + integrity sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ== dependencies: graceful-fs "^4.1.15" - hasha "^3.0.0" + hasha "^5.0.0" lodash.flattendeep "^4.4.0" release-zalgo "^1.0.0" @@ -4488,15 +3761,6 @@ pako@~1.0.5: resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw== -parallel-transform@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" - integrity sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY= - dependencies: - cyclist "~0.2.2" - inherits "^2.0.3" - readable-stream "^2.1.5" - parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -4523,19 +3787,6 @@ parse-json@^2.2.0: dependencies: error-ex "^1.2.0" -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= - parseqs@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" @@ -4565,11 +3816,6 @@ path-browserify@0.0.0: resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" integrity sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo= -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" @@ -4582,10 +3828,10 @@ path-exists@^2.0.0: dependencies: pinkie-promise "^2.0.0" -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== path-is-absolute@^1.0.0: version "1.0.1" @@ -4597,11 +3843,16 @@ path-is-inside@^1.0.2: resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= -path-key@^2.0.0, path-key@^2.0.1: +path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= +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== + path-parse@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" @@ -4623,13 +3874,6 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - pathval@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" @@ -4651,21 +3895,16 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= +picomatch@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" @@ -4678,12 +3917,12 @@ pinkie@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== +pkg-dir@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== dependencies: - find-up "^3.0.0" + find-up "^4.0.0" plugin-error@^0.1.2: version "0.1.2" @@ -4738,6 +3977,13 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== +process-on-spawn@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/process-on-spawn/-/process-on-spawn-1.0.0.tgz#95b05a23073d30a17acfdc92a440efd2baefdc93" + integrity sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg== + dependencies: + fromentries "^1.2.0" + process@^0.11.10: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" @@ -4748,16 +3994,6 @@ progress@^2.0.0: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= - pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" @@ -4788,7 +4024,7 @@ pump@^1.0.0: end-of-stream "^1.1.0" once "^1.3.1" -pump@^2.0.0, pump@^2.0.1: +pump@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== @@ -4796,23 +4032,6 @@ pump@^2.0.0, pump@^2.0.1: end-of-stream "^1.1.0" once "^1.3.1" -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" @@ -4823,7 +4042,7 @@ punycode@2.x.x, punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -punycode@^1.2.4, punycode@^1.4.1: +punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= @@ -4833,7 +4052,7 @@ qjobs@^1.1.4: resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg== -qs@6.7.0, qs@^6.5.2: +qs@6.7.0: version "6.7.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== @@ -4843,7 +4062,7 @@ qs@~6.5.2: resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== -querystring-es3@^0.2.0, querystring-es3@^0.2.1: +querystring-es3@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= @@ -4868,7 +4087,7 @@ randomfill@^1.0.3: randombytes "^2.0.5" safe-buffer "^5.1.0" -range-parser@^1.0.3, range-parser@^1.2.0: +range-parser@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== @@ -4901,14 +4120,6 @@ read-pkg-up@^1.0.1: find-up "^1.0.0" read-pkg "^1.0.0" -read-pkg-up@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" - integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== - dependencies: - find-up "^3.0.0" - read-pkg "^3.0.0" - read-pkg@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" @@ -4918,16 +4129,17 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= +readable-stream@^1.1.7: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: +readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== @@ -4940,16 +4152,6 @@ read-pkg@^3.0.0: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^1.1.7: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - readable-stream@~2.0.0: version "2.0.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" @@ -4986,11 +4188,6 @@ redent@^1.0.0: indent-string "^2.1.0" strip-indent "^1.0.1" -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== - regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" @@ -5098,11 +4295,6 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= - require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" @@ -5113,31 +4305,16 @@ requires-port@^1.0.0: resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= -resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= - dependencies: - resolve-from "^3.0.0" - -resolve-dir@^1.0.0, resolve-dir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" - integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= - dependencies: - expand-tilde "^2.0.0" - global-modules "^1.0.0" - -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= - resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" @@ -5148,13 +4325,20 @@ resolve@1.1.7, resolve@1.1.x: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.3.2: +resolve@^1.1.6, resolve@^1.10.0: version "1.11.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.1.tgz#ea10d8110376982fef578df8fc30b9ac30a07a3e" integrity sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw== dependencies: path-parse "^1.0.6" +resolve@^1.14.2, resolve@^1.3.2: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -5173,13 +4357,20 @@ rfdc@^1.1.2: resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.1.4.tgz#ba72cc1367a0ccd9cf81a870b3b58bd3ad07f8c2" integrity sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug== -rimraf@2.6.3, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3: +rimraf@2.6.3, rimraf@^2.6.0, rimraf@^2.6.1: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== dependencies: glob "^7.1.3" +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" + ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -5188,6 +4379,13 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" +rollup@^2.8.2: + version "2.32.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.32.0.tgz#ac58c8e85782bea8aa2d440fc05aba345013582a" + integrity sha512-0FIG1jY88uhCP2yP4CfvtKEqPDRmsUwfY1kEOOM+DH/KOGATgaIFd/is1+fQOxsvh62ELzcFfKonwKWnHhrqmw== + optionalDependencies: + fsevents "~2.1.2" + run-async@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" @@ -5195,13 +4393,6 @@ run-async@^2.2.0: dependencies: is-promise "^2.1.0" -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= - dependencies: - aproba "^1.1.1" - rxjs@^6.4.0: version "6.5.2" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7" @@ -5236,28 +4427,12 @@ sax@>=0.6.0, sax@^1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -schema-utils@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.3.0.tgz#f5877222ce3e931edae039f17eb3716e7137f8cf" - integrity sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8= - dependencies: - ajv "^5.0.0" - -schema-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" - integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== - dependencies: - ajv "^6.1.0" - ajv-errors "^1.0.0" - ajv-keywords "^3.1.0" - seedrandom@^2.4.4: version "2.4.4" resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-2.4.4.tgz#b25ea98632c73e45f58b77cfaa931678df01f9ba" integrity sha512-9A+PDmgm+2du77B5i0Ip2cxOqqHjgNxnBgglxLcX78A2D6c2rTo61z4jnVABpF4cKeDMDG+cmXXvdnqse2VqMA== -"semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1: version "5.7.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== @@ -5267,10 +4442,10 @@ semver@^6.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.2.0.tgz#4d813d9590aaf8a9192693d6c85b9344de5901db" integrity sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A== -serialize-javascript@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.7.0.tgz#d6e0dfb2a3832a8c94468e6eb1db97e55a192a65" - integrity sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA== +semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" @@ -5328,11 +4503,23 @@ shebang-command@^1.2.0: dependencies: shebang-regex "^1.0.0" +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@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= +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== + shelljs@^0.8.1: version "0.8.3" resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.3.tgz#a7f3319520ebf09ee81275b2368adb286659b097" @@ -5399,11 +4586,6 @@ sinon@^7.2.7: nise "^1.4.10" supports-color "^5.5.0" -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= - slice-ansi@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" @@ -5489,11 +4671,6 @@ socket.io@2.1.1: socket.io-client "2.1.1" socket.io-parser "~3.2.0" -source-list-map@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - source-map-resolve@^0.5.0: version "0.5.2" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" @@ -5505,15 +4682,7 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.5.0, source-map-support@^0.5.3, source-map-support@~0.5.12: - version "0.5.12" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599" - integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-support@^0.5.17: +source-map-support@^0.5.17, source-map-support@~0.5.19: 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== @@ -5531,7 +4700,7 @@ source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.3: +source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.6, source-map@~0.5.3: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -5543,17 +4712,22 @@ source-map@~0.2.0: dependencies: amdefine ">=0.0.4" -spawn-wrap@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.4.2.tgz#cff58e73a8224617b6561abdc32586ea0c82248c" - integrity sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg== +source-map@~0.7.2: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + +spawn-wrap@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-2.0.0.tgz#103685b8b8f9b79771318827aa78650a610d457e" + integrity sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg== dependencies: - foreground-child "^1.5.6" - mkdirp "^0.5.0" - os-homedir "^1.0.1" - rimraf "^2.6.2" + foreground-child "^2.0.0" + is-windows "^1.0.2" + make-dir "^3.0.0" + rimraf "^3.0.0" signal-exit "^3.0.2" - which "^1.3.0" + which "^2.0.1" spdx-correct@^3.0.0: version "3.1.0" @@ -5608,13 +4782,6 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -ssri@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" - integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== - dependencies: - figgy-pudding "^3.5.1" - static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -5641,14 +4808,6 @@ stream-browserify@^2.0.1: inherits "~2.0.1" readable-stream "^2.0.2" -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - stream-http@^2.7.2: version "2.8.3" resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" @@ -5660,11 +4819,6 @@ stream-http@^2.7.2: to-arraybuffer "^1.0.0" xtend "^4.0.0" -stream-shift@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" - integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= - streamroller@0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-0.7.0.tgz#a1d1b7cf83d39afb0d63049a5acbf93493bdf64b" @@ -5694,7 +4848,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2", string-width@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -5702,7 +4856,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string-width@^3.0.0, string-width@^3.1.0: +string-width@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== @@ -5711,7 +4865,16 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string_decoder@^1.0.0, string_decoder@^1.0.3: +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string_decoder@^1.0.3: version "1.2.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" integrity sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w== @@ -5744,13 +4907,20 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: +strip-ansi@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== dependencies: ansi-regex "^4.1.0" +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" @@ -5763,10 +4933,10 @@ strip-bom@^3.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== strip-indent@^1.0.1: version "1.0.1" @@ -5787,18 +4957,6 @@ supports-color@5.4.0: dependencies: has-flag "^3.0.0" -supports-color@6.1.0, supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - supports-color@^3.1.0: version "3.2.3" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" @@ -5813,6 +4971,13 @@ supports-color@^5.3.0, supports-color@^5.5.0: 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" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + table@^5.2.3: version "5.4.4" resolved "https://registry.yarnpkg.com/table/-/table-5.4.4.tgz#6e0f88fdae3692793d1077fd172a4667afe986a6" @@ -5823,11 +4988,6 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" -tapable@^1.0.0, tapable@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - tar-fs@^1.13.0: version "1.16.3" resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.16.3.tgz#966a628841da2c4010406a82167cbd5e0c72d509" @@ -5864,40 +5024,23 @@ tar@^4, tar@^4.4.8: safe-buffer "^5.1.2" yallist "^3.0.3" -terser-webpack-plugin@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.3.0.tgz#69aa22426299f4b5b3775cbed8cb2c5d419aa1d4" - integrity sha512-W2YWmxPjjkUcOWa4pBEv4OP4er1aeQJlSo2UhtCFQCuRXEHjOFscO8VyWHj9JLlA0RzQb8Y2/Ta78XZvT54uGg== - dependencies: - cacache "^11.3.2" - find-cache-dir "^2.0.0" - is-wsl "^1.1.0" - loader-utils "^1.2.3" - schema-utils "^1.0.0" - serialize-javascript "^1.7.0" - source-map "^0.6.1" - terser "^4.0.0" - webpack-sources "^1.3.0" - worker-farm "^1.7.0" - -terser@^4.0.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.1.2.tgz#b2656c8a506f7ce805a3f300a2ff48db022fa391" - integrity sha512-jvNoEQSPXJdssFwqPSgWjsOrb+ELoE+ILpHPKXC83tIxOlh2U75F1KuB2luLD/3a6/7K3Vw5pDn+hvu0C4AzSw== +terser@^5.3.7: + version "5.3.7" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.3.7.tgz#798a4ae2e7ff67050c3e99fcc4e00725827d97e2" + integrity sha512-lJbKdfxWvjpV330U4PBZStCT9h3N9A4zZVA5Y4k9sCWXknrpdyxi1oMsRKLmQ/YDMDxSBKIh88v0SkdhdqX06w== dependencies: commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" + source-map "~0.7.2" + source-map-support "~0.5.19" -test-exclude@^5.1.0: - version "5.2.3" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" - integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== +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: - glob "^7.1.3" + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" minimatch "^3.0.4" - read-pkg-up "^4.0.0" - require-main-filename "^2.0.0" text-table@^0.2.0: version "0.2.0" @@ -5912,20 +5055,12 @@ through2@2.0.1: readable-stream "~2.0.0" xtend "~4.0.0" -through2@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - through@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= -timers-browserify@^2.0.2, timers-browserify@^2.0.4: +timers-browserify@^2.0.2: version "2.0.10" resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae" integrity sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg== @@ -5961,11 +5096,6 @@ to-buffer@^1.1.1: resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== -to-fast-properties@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= - to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" @@ -6008,11 +5138,6 @@ topo@3.x.x: dependencies: hoek "6.x.x" -toposort@^1.0.0: - version "1.0.7" - resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" - integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk= - tough-cookie@^2.3.3: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" @@ -6034,31 +5159,15 @@ trim-newlines@^1.0.0: resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= - ts-custom-error@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/ts-custom-error/-/ts-custom-error-3.1.1.tgz#d30c7415461dac93dc2cc9e9eb2dae92e6423901" integrity sha512-f/syoy+pTE4z82qaiRuthEeZtCGNKzlfs0Zc8jpQFcz/CYMaFSwFSdfFt1sSFnPlDLOEm7RCROdIxZ44N8UlwA== -ts-loader@^5.3.3: - version "5.4.5" - resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-5.4.5.tgz#a0c1f034b017a9344cef0961bfd97cc192492b8b" - integrity sha512-XYsjfnRQCBum9AMRZpk2rTYSVpdZBpZK+kDh0TeT3kxmQNBDVIeUjdPjY5RZry4eIAb8XHc4gYSUiUWPYvzSRw== - dependencies: - chalk "^2.3.0" - enhanced-resolve "^4.0.0" - loader-utils "^1.0.2" - micromatch "^3.1.4" - semver "^5.0.1" - -ts-node@^8.9.0: - version "8.10.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.10.1.tgz#77da0366ff8afbe733596361d2df9a60fc9c9bd3" - integrity sha512-bdNz1L4ekHiJul6SHtZWs1ujEKERJnHs4HxN7rjTyyVOFf3HaJ6sLqe6aPG62XTzAB/63pKRh5jTSWL0D7bsvw== +ts-node@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.0.0.tgz#e7699d2a110cc8c0d3b831715e417688683460b3" + integrity sha512-/TqB4SnererCDR/vb4S/QvSZvzQMJN8daAslg7MeaiHvD8rDZsSfXmNeNumyZZzMned72Xoq/isQljYSt8Ynfg== dependencies: arg "^4.1.0" diff "^4.0.1" @@ -6066,7 +5175,22 @@ ts-node@^8.9.0: source-map-support "^0.5.17" yn "3.1.1" -tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0: +tsconfig-paths@^3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" + integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.0" + strip-bom "^3.0.0" + +tslib@^1.13.0, tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^1.9.0: version "1.10.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== @@ -6076,23 +5200,23 @@ tslint-no-circular-imports@^0.7.0: resolved "https://registry.yarnpkg.com/tslint-no-circular-imports/-/tslint-no-circular-imports-0.7.0.tgz#9df0a15654d66b172e0b7843eed073fa5ae99b5f" integrity sha512-k3wxpeMC4ef40UbpfBVHEHIzKfNZq5/SCtAO1YjGsaNTklo+K53/TWLrym+poA65RJFDiYgYNWvkeIIkJNA0Vw== -tslint@^5.13.1: - version "5.18.0" - resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.18.0.tgz#f61a6ddcf372344ac5e41708095bbf043a147ac6" - integrity sha512-Q3kXkuDEijQ37nXZZLKErssQVnwCV/+23gFEMROi8IlbaBG6tXqLPQJ5Wjcyt/yHPKBC+hD5SzuGaMora+ZS6w== +tslint@^6.1.3: + version "6.1.3" + resolved "https://registry.yarnpkg.com/tslint/-/tslint-6.1.3.tgz#5c23b2eccc32487d5523bd3a470e9aa31789d904" + integrity sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg== dependencies: "@babel/code-frame" "^7.0.0" builtin-modules "^1.1.1" chalk "^2.3.0" commander "^2.12.1" - diff "^3.2.0" + diff "^4.0.1" glob "^7.1.1" js-yaml "^3.13.1" minimatch "^3.0.4" - mkdirp "^0.5.1" + mkdirp "^0.5.3" resolve "^1.3.2" semver "^5.3.0" - tslib "^1.8.0" + tslib "^1.13.0" tsutils "^2.29.0" tsutils@^2.29.0: @@ -6131,6 +5255,11 @@ type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.5: resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== +type-fest@^0.8.0: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + type-is@~1.6.17: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -6139,26 +5268,23 @@ type-is@~1.6.17: media-typer "0.3.0" mime-types "~2.1.24" -type@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/type/-/type-1.0.1.tgz#084c9a17fcc9151a2cdb1459905c2e45e4bb7d61" - integrity sha512-MAM5dBMJCJNKs9E7JXo4CXRAansRfG0nlJxW7Wf6GZzSOvH31zClSaHdIMWLehe/EGMBkqeC55rrkaOr5Oo7Nw== +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= +typescript@^3: + version "3.9.7" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa" + integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw== typescript@^3.0.3: version "3.5.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.5.3.tgz#c830f657f93f1ea846819e929092f5fe5983e977" integrity sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g== -typescript@~3.3.3333: - version "3.3.4000" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.3.4000.tgz#76b0f89cfdbf97827e1112d64f283f1151d6adf0" - integrity sha512-jjOcCZvpkl2+z7JFn0yBOoLQyLoIkNZAs/fYJkUG6VKy6zLPHJGfQJYFHzibB6GJaF/8QrcECtlQ5cpvRHSMEA== - uglify-js@^3.1.4: version "3.7.3" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.7.3.tgz#f918fce9182f466d5140f24bb0ff35c2d32dcc6a" @@ -6167,29 +5293,6 @@ uglify-js@^3.1.4: commander "~2.20.3" source-map "~0.6.1" -uglify-js@^3.4.9, uglify-js@^3.5.12: - version "3.6.0" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.6.0.tgz#704681345c53a8b2079fb6cec294b05ead242ff5" - integrity sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg== - dependencies: - commander "~2.20.0" - source-map "~0.6.1" - -uglifyjs-webpack-plugin@^2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-2.1.3.tgz#b00a18d1acda271deb755c99ba0d93568156eb76" - integrity sha512-/lRkCaFbI6pT3CxsQHDhBcqB6tocOnqba0vJqJ2DzSWFLRgOIiip8q0nVFydyXk+n8UtF7ZuS6hvWopcYH5FuA== - dependencies: - cacache "^11.3.2" - find-cache-dir "^2.1.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^1.7.0" - source-map "^0.6.1" - uglify-js "^3.5.12" - webpack-sources "^1.3.0" - worker-farm "^1.7.0" - ultron@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" @@ -6205,20 +5308,6 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^2.0.1" -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" - unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -6249,11 +5338,6 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= -url-join@^2.0.2: - version "2.0.5" - resolved "https://registry.yarnpkg.com/url-join/-/url-join-2.0.5.tgz#5af22f18c052a000a48d7b82c5e9c2e2feeda728" - integrity sha1-WvIvGMBSoACkjXuCxenC4v7tpyg= - url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" @@ -6294,27 +5378,20 @@ util@^0.10.3: dependencies: inherits "2.0.3" -util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= -uuid@^3.1.0, uuid@^3.3.2: +uuid@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== -v8-compile-cache@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe" - integrity sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w== +uuid@^3.3.3: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== validate-npm-package-license@^3.0.1: version "3.0.4" @@ -6340,25 +5417,11 @@ vm-browserify@0.0.4: dependencies: indexof "0.0.1" -vm-browserify@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019" - integrity sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw== - void-elements@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= -watchpack@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" - integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA== - dependencies: - chokidar "^2.0.2" - graceful-fs "^4.1.2" - neo-async "^2.5.0" - wcwidth@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" @@ -6366,102 +5429,6 @@ wcwidth@^1.0.1: dependencies: defaults "^1.0.3" -webpack-cli@^3.2.3: - version "3.3.6" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.6.tgz#2c8c399a2642133f8d736a359007a052e060032c" - integrity sha512-0vEa83M7kJtxK/jUhlpZ27WHIOndz5mghWL2O53kiDoA9DIxSKnfqB92LoqEn77cT4f3H2cZm1BMEat/6AZz3A== - dependencies: - chalk "2.4.2" - cross-spawn "6.0.5" - enhanced-resolve "4.1.0" - findup-sync "3.0.0" - global-modules "2.0.0" - import-local "2.0.0" - interpret "1.2.0" - loader-utils "1.2.3" - supports-color "6.1.0" - v8-compile-cache "2.0.3" - yargs "13.2.4" - -webpack-combine-loaders@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/webpack-combine-loaders/-/webpack-combine-loaders-2.0.4.tgz#27814d52b8329ed6565be39009aac76361e7e22c" - integrity sha512-5O5PYVE5tZ3I3uUm3QB7niLEJzLketl8hvAcJwa4YmwNWS/vixfVsqhtUaBciP8J4u/GwIHV52d7kkgZJFvDnw== - dependencies: - qs "^6.5.2" - -webpack-config-utils@2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/webpack-config-utils/-/webpack-config-utils-2.3.1.tgz#a51826ddd4de26c10dfdb81cbff8aac0debb0a36" - integrity sha512-0uC5uj7sThFTePTQjfpe5Wqcbw3KSCxqswOmW96lwk2ZI2CU098rWY2ZqOVGJQYJ3hfEltmjcLNkKutw8LJAlg== - dependencies: - webpack-combine-loaders "2.0.4" - -webpack-dev-middleware@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-2.0.6.tgz#a51692801e8310844ef3e3790e1eacfe52326fd4" - integrity sha512-tj5LLD9r4tDuRIDa5Mu9lnY2qBBehAITv6A9irqXhw/HQquZgTx3BCd57zYbU2gMDnncA49ufK2qVQSbaKJwOw== - dependencies: - loud-rejection "^1.6.0" - memory-fs "~0.4.1" - mime "^2.1.0" - path-is-absolute "^1.0.0" - range-parser "^1.0.3" - url-join "^2.0.2" - webpack-log "^1.0.1" - -webpack-log@^1.0.1, webpack-log@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-1.2.0.tgz#a4b34cda6b22b518dbb0ab32e567962d5c72a43d" - integrity sha512-U9AnICnu50HXtiqiDxuli5gLB5PGBo7VvcHx36jRZHwK4vzOYLbImqT4lwWwoMHdQWwEKw736fCHEekokTEKHA== - dependencies: - chalk "^2.1.0" - log-symbols "^2.1.0" - loglevelnext "^1.0.1" - uuid "^3.1.0" - -webpack-node-externals@^1.6.0: - version "1.7.2" - resolved "https://registry.yarnpkg.com/webpack-node-externals/-/webpack-node-externals-1.7.2.tgz#6e1ee79ac67c070402ba700ef033a9b8d52ac4e3" - integrity sha512-ajerHZ+BJKeCLviLUUmnyd5B4RavLF76uv3cs6KNuO8W+HuQaEs0y0L7o40NQxdPy5w0pcv8Ew7yPUAQG0UdCg== - -webpack-sources@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85" - integrity sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack@^4.29.6: - version "4.36.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.36.1.tgz#f546fda7a403a76faeaaa7196c50d12370ed18a9" - integrity sha512-Ej01/N9W8DVyhEpeQnbUdGvOECw0L46FxS12cCOs8gSK7bhUlrbHRnWkjiXckGlHjUrmL89kDpTRIkUk6Y+fKg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-module-context" "1.8.5" - "@webassemblyjs/wasm-edit" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - acorn "^6.2.0" - ajv "^6.1.0" - ajv-keywords "^3.1.0" - chrome-trace-event "^1.0.0" - enhanced-resolve "^4.1.0" - eslint-scope "^4.0.0" - json-parse-better-errors "^1.0.2" - loader-runner "^2.3.0" - loader-utils "^1.1.0" - memory-fs "~0.4.1" - micromatch "^3.1.8" - mkdirp "~0.5.0" - neo-async "^2.5.0" - node-libs-browser "^2.0.0" - schema-utils "^1.0.0" - tapable "^1.1.0" - terser-webpack-plugin "^1.1.0" - watchpack "^1.5.0" - webpack-sources "^1.3.0" - which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" @@ -6472,13 +5439,20 @@ which-pm-runs@^1.0.0: resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= -which@^1.1.1, which@^1.2.1, which@^1.2.14, which@^1.2.9, which@^1.3.0, which@^1.3.1: +which@^1.1.1, which@^1.2.1, which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" +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" + wide-align@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" @@ -6496,43 +5470,29 @@ wordwrap@~0.0.2: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= -worker-farm@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" - integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== - dependencies: - errno "~0.1.7" - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@^2.4.2: - version "2.4.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" - integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== dependencies: - graceful-fs "^4.1.11" imurmurhash "^0.1.4" + is-typedarray "^1.0.0" signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" write@1.0.3: version "1.0.3" @@ -6568,17 +5528,12 @@ xmlhttprequest-ssl@~1.5.4: resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4= -xtend@^4.0.0, xtend@~4.0.0, xtend@~4.0.1: +xtend@^4.0.0, xtend@~4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== -y18n@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= - -"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: +y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== @@ -6588,91 +5543,40 @@ yallist@^2.1.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= -yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: +yallist@^3.0.0, yallist@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== -yargs-parser@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" - integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^13.1.0: - version "13.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" - integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== +yargs@^15.0.2: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== dependencies: - camelcase "^5.0.0" + cliui "^6.0.0" decamelize "^1.2.0" - -yargs-parser@^9.0.2: - version "9.0.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" - integrity sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc= - dependencies: - camelcase "^4.1.0" - -yargs@13.2.4: - version "13.2.4" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83" - integrity sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" + find-up "^4.1.0" get-caller-file "^2.0.1" - os-locale "^3.1.0" require-directory "^2.1.1" require-main-filename "^2.0.0" set-blocking "^2.0.0" - string-width "^3.0.0" + string-width "^4.2.0" which-module "^2.0.0" y18n "^4.0.0" - yargs-parser "^13.1.0" - -yargs@^11.0.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" - integrity sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A== - dependencies: - cliui "^4.0.0" - decamelize "^1.1.1" - find-up "^2.1.0" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^9.0.2" - -yargs@^12.0.5: - version "12.0.5" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" - integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== - dependencies: - cliui "^4.0.0" - decamelize "^1.2.0" - find-up "^3.0.0" - get-caller-file "^1.0.1" - os-locale "^3.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1 || ^4.0.0" - yargs-parser "^11.1.1" + yargs-parser "^18.1.2" yarn@^1.17.3: - version "1.22.0" - resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.0.tgz#acf82906e36bcccd1ccab1cfb73b87509667c881" - integrity sha512-KMHP/Jq53jZKTY9iTUt3dIVl/be6UPs2INo96+BnZHLKxYNTfwMmlgHTaMWyGZoO74RI4AIFvnWhYrXq2USJkg== + version "1.22.10" + resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.10.tgz#c99daa06257c80f8fa2c3f1490724e394c26b18c" + integrity sha512-IanQGI9RRPAN87VGTF7zs2uxkSyQSrSPsju0COgbsKQOOXr5LtcVPeyXWgwVa0ywG3d8dg6kSYKGBuYK021qeA== yeast@0.1.2: version "0.1.2"