From 689a1d32320ea9f214c6eae02cbffe4b4863a50e Mon Sep 17 00:00:00 2001 From: Oleg Klimenko Date: Sun, 24 Mar 2024 01:42:34 +0300 Subject: [PATCH 1/7] update packages --- .eslintignore | 4 + .eslintrc.cjs | 120 + .github/workflows/check.yml | 31 + .gitignore | 59 + .prettierignore | 4 + .prettierrc | 11 + dist/index.js | 107 - dist/src/controller.js | 147 - dist/src/types.js | 2 - index.ts | 18 +- jest.config.cjs | 11 + karma.conf.js | 78 - package.json | 55 +- project.d.ts | 158 - src/controller.ts | 42 +- src/types.ts | 48 +- tests/{controller.ts => controller.spec.ts} | 272 +- tsconfig.json | 12 +- yarn.lock | 6164 ++++++++----------- 19 files changed, 3059 insertions(+), 4284 deletions(-) create mode 100644 .eslintignore create mode 100644 .eslintrc.cjs create mode 100644 .github/workflows/check.yml create mode 100644 .prettierignore create mode 100644 .prettierrc delete mode 100644 dist/index.js delete mode 100644 dist/src/controller.js delete mode 100644 dist/src/types.js create mode 100644 jest.config.cjs delete mode 100644 karma.conf.js delete mode 100644 project.d.ts rename tests/{controller.ts => controller.spec.ts} (72%) diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..5fe0290 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,4 @@ +.eslintrc.cjs +node_modules/ +project.d.ts +dist/ diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 0000000..e5bb435 --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,120 @@ +/* Tyr - Japanese mahjong assistant application + * Copyright (C) 2016 Oleg Klimenko aka ctizen + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +module.exports = { + root: true, + parser: '@typescript-eslint/parser', + parserOptions: { + project: 'tsconfig.json', + ecmaVersion: 2020, + sourceType: 'module', + }, + extends: ['prettier'], + plugins: ['@typescript-eslint', 'unused-imports'], + rules: { + 'unused-imports/no-unused-imports': 'error', + 'array-callback-return': ['error'], + 'getter-return': ['error'], + 'no-async-promise-executor': ['error'], + 'no-class-assign': ['error'], + 'no-cond-assign': ['error'], + 'no-constant-binary-expression': ['error'], + 'no-constant-condition': ['error'], + 'no-constructor-return': ['error'], + 'no-debugger': ['error'], + 'no-dupe-args': ['error'], + 'no-dupe-class-members': ['error'], + 'no-dupe-else-if': ['error'], + 'no-dupe-keys': ['error'], + 'no-duplicate-case': ['error'], + 'no-duplicate-imports': ['error'], + 'no-empty-pattern': ['error'], + 'no-ex-assign': ['error'], + 'no-fallthrough': ['error'], + 'no-func-assign': ['error'], + 'no-import-assign': ['error'], + 'no-inner-declarations': ['error'], + 'no-invalid-regexp': ['error'], + 'no-irregular-whitespace': ['error'], + 'no-obj-calls': ['error'], + 'no-promise-executor-return': ['error'], + 'no-self-assign': ['error'], + 'no-self-compare': ['error'], + 'no-setter-return': ['error'], + 'no-template-curly-in-string': ['error'], + 'no-unexpected-multiline': ['error'], + 'no-unmodified-loop-condition': ['error'], + 'no-unreachable': ['error'], + 'no-unreachable-loop': ['error'], + 'no-unsafe-finally': ['error'], + 'no-unsafe-negation': ['error'], + 'no-unsafe-optional-chaining': ['error'], + 'no-unused-private-class-members': ['error'], + 'require-atomic-updates': ['error'], + 'use-isnan': ['error'], + 'valid-typeof': ['error'], + 'no-eval': ['error'], + 'no-implied-eval': ['error'], + 'no-multi-assign': ['error'], + 'no-useless-return': ['error'], + 'prefer-const': ['error'], + + '@typescript-eslint/await-thenable': 'error', + '@typescript-eslint/consistent-type-assertions': [ + 'error', + { + assertionStyle: 'as', + objectLiteralTypeAssertions: 'allow', + }, + ], + '@typescript-eslint/member-delimiter-style': ['error'], + '@typescript-eslint/no-confusing-void-expression': ['error', { ignoreArrowShorthand: true }], + '@typescript-eslint/no-extra-non-null-assertion': ['error'], + '@typescript-eslint/no-extraneous-class': ['error'], + '@typescript-eslint/no-inferrable-types': ['error'], + '@typescript-eslint/no-invalid-void-type': ['error'], + '@typescript-eslint/no-misused-new': ['error'], + '@typescript-eslint/no-unnecessary-type-arguments': ['error'], + '@typescript-eslint/no-unnecessary-type-assertion': ['error'], + '@typescript-eslint/no-unnecessary-type-constraint': ['error'], + '@typescript-eslint/no-var-requires': ['error'], + '@typescript-eslint/prefer-for-of': ['error'], + '@typescript-eslint/prefer-includes': ['error'], + '@typescript-eslint/prefer-nullish-coalescing': ['error'], + '@typescript-eslint/prefer-readonly': ['error'], + '@typescript-eslint/prefer-string-starts-ends-with': ['error'], + '@typescript-eslint/prefer-ts-expect-error': ['error'], + '@typescript-eslint/require-array-sort-compare': ['error', { ignoreStringArrays: true }], + '@typescript-eslint/restrict-plus-operands': ['error'], + '@typescript-eslint/switch-exhaustiveness-check': ['error'], + '@typescript-eslint/no-invalid-this': ['error'], + '@typescript-eslint/no-shadow': ['error'], + '@typescript-eslint/no-unused-expressions': ['error'], + '@typescript-eslint/no-unused-vars': [ + 'error', + { + argsIgnorePattern: '^_', + }, + ], + '@typescript-eslint/no-use-before-define': [ + 'error', + { functions: false, classes: false, variables: true }, + ], + '@typescript-eslint/no-useless-constructor': ['error'], + '@typescript-eslint/no-non-null-asserted-nullish-coalescing': ['error'], + }, +}; diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml new file mode 100644 index 0000000..8a5917d --- /dev/null +++ b/.github/workflows/check.yml @@ -0,0 +1,31 @@ +name: Unit tests, static analysis, code style + +on: + workflow_dispatch: + push: + +jobs: + checkPr: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - uses: actions/setup-node@v4 + with: + node-version: 20 + cache: 'yarn' + + - name: Install packages + run: yarn install --prefer-offline --frozen-lockfile + + - name: Run lint + run: + yarn lint + + - name: Run typecheck + run: + yarn typecheck + + - name: Run unit tests + run: + yarn test diff --git a/.gitignore b/.gitignore index d570088..f3760a3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,61 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +dist/ +.idea/ + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directories node_modules/ +jspm_packages/ + +# Typescript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity +# dotenv environment variables file +.env diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..0936c25 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,4 @@ +.eslintrc.cjs +node_modules/ +project.d.ts +dist/ \ No newline at end of file diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..eaf1d02 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,11 @@ +{ + "printWidth": 100, + "tabWidth": 2, + "useTabs": false, + "semi": true, + "singleQuote": true, + "jsxSingleQuote": true, + "trailingComma": "es5", + "bracketSpacing": true, + "arrowParens": "always" +} diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index b6f2895..0000000 --- a/dist/index.js +++ /dev/null @@ -1,107 +0,0 @@ -"use strict"; -exports.__esModule = true; -var controller_1 = require("./src/controller"); -exports.TranslationController = controller_1.TranslationController; -exports._tGen = function (ctrl) { return function (str, substitutions) { - if (substitutions === void 0) { substitutions = []; } - return ctrl.getString({ - type: '_t', - msgid: str, - msgstr: '', - substitutions: substitutions - }); -}; }; -exports._ptGen = function (ctrl) { return function (context, str, substitutions) { - if (substitutions === void 0) { substitutions = []; } - return ctrl.getString({ - type: '_pt', - msgid: str, - msgstr: '', - msgctxt: context, - substitutions: substitutions - }); -}; }; -exports._ntGen = function (ctrl) { return function (plurals, factor, substitutions) { - if (substitutions === void 0) { substitutions = []; } - return ctrl.getString({ - type: '_nt', - factor: factor, - msgid: plurals[0], - msgidPlural: plurals[plurals.length - 1], - allPlurals: plurals, - msgstr: [], - substitutions: substitutions - }); -}; }; -exports._nptGen = function (ctrl) { return function (context, plurals, factor, substitutions) { - if (substitutions === void 0) { substitutions = []; } - return ctrl.getString({ - type: '_npt', - factor: factor, - msgid: plurals[0], - msgidPlural: plurals[plurals.length - 1], - allPlurals: plurals, - msgstr: [], - msgctxt: context, - substitutions: substitutions - }); -}; }; -exports._ggGen = function (ctrl) { return function (str, substitutions) { - if (substitutions === void 0) { substitutions = []; } - return ctrl.getString({ - type: '_t', - msgid: str, - msgstr: '', - substitutions: substitutions - }, /* forceUntranslated = */ true); -}; }; -exports._pggGen = function (ctrl) { return function (context, str, substitutions) { - if (substitutions === void 0) { substitutions = []; } - return ctrl.getString({ - type: '_pt', - msgid: str, - msgstr: '', - msgctxt: context, - substitutions: substitutions - }, /* forceUntranslated = */ true); -}; }; -exports._nggGen = function (ctrl) { return function (plurals, factor, substitutions) { - if (substitutions === void 0) { substitutions = []; } - return ctrl.getString({ - type: '_nt', - factor: factor, - msgid: plurals[0], - msgidPlural: plurals[plurals.length - 1], - allPlurals: plurals, - msgstr: [], - substitutions: substitutions - }, /* forceUntranslated = */ true); -}; }; -exports._npggGen = function (ctrl) { return function (context, plurals, factor, substitutions) { - if (substitutions === void 0) { substitutions = []; } - return ctrl.getString({ - type: '_npt', - factor: factor, - msgid: plurals[0], - msgidPlural: plurals[plurals.length - 1], - allPlurals: plurals, - msgstr: [], - msgctxt: context, - substitutions: substitutions - }, /* forceUntranslated = */ true); -}; }; -var TranslationProvider = (function () { - function TranslationProvider(ctrl) { - this.ctrl = ctrl; - this._t = exports._tGen(this.ctrl); - this._pt = exports._ptGen(this.ctrl); - this._nt = exports._ntGen(this.ctrl); - this._npt = exports._nptGen(this.ctrl); - this._gg = exports._ggGen(this.ctrl); - this._pgg = exports._pggGen(this.ctrl); - this._ngg = exports._nggGen(this.ctrl); - this._npgg = exports._npggGen(this.ctrl); - } - return TranslationProvider; -}()); -exports.TranslationProvider = TranslationProvider; diff --git a/dist/src/controller.js b/dist/src/controller.js deleted file mode 100644 index 3c502da..0000000 --- a/dist/src/controller.js +++ /dev/null @@ -1,147 +0,0 @@ -"use strict"; -exports.__esModule = true; -var TranslationController = (function () { - function TranslationController(translationGetter, onFailedSubstitution, defaultPluralSelect) { - this.translationGetter = translationGetter; - this.onFailedSubstitution = onFailedSubstitution; - this.defaultPluralSelect = defaultPluralSelect; - this.dictionary = {}; - } - TranslationController.prototype.getString = function (descriptor, forceUntranslated) { - if (forceUntranslated === void 0) { forceUntranslated = false; } - var key = forceUntranslated ? undefined : this.getDictKeyForDescriptor(descriptor); - var translationForms = key && this.dictionary[key] || this.getUntranslatedFallback(descriptor); - var translation = this.selectPluralForm(translationForms, descriptor, forceUntranslated); - return this.substituteStrings(translation, descriptor); - }; - TranslationController.prototype.setLocale = function (localeName, onReady, // called with new locale name when loading is finished - onError) { - var _this = this; - this.translationGetter(localeName, function (name, contents) { - var poData = JSON.parse(contents); // TODO: better json schema validation? - if (!poData.items || !poData.meta) { - onError && onError('Invalid format of translation file'); - return; - } - try { - var dictionary = _this.makeNewDict(poData.items); - var dictMeta = poData.meta; - var pluralSelect = _this.makePluralSelectFunction(poData.meta.pluralForms); - // Everything seems to be OK, assign it all to object members - _this.dictionary = dictionary; - _this.dictMeta = dictMeta; - _this.pluralSelect = pluralSelect; - onReady(name); - } - catch (e) { - onError && onError(e); - } - }); - }; - // ---------------------------------------------------------------------------------- - // Make key to receive translation from dictionary. - TranslationController.prototype.getDictKeyForDescriptor = function (descriptor) { - switch (descriptor.type) { - case '_t': - return descriptor.msgid; - case '_pt': - return 'ctx:' + descriptor.msgctxt + ';' + descriptor.msgid; - case '_nt': - return 'plural:' + descriptor.msgidPlural + ';' + descriptor.msgid; - case '_npt': - return 'ctx:' + descriptor.msgctxt + ';' + 'plural:' + descriptor.msgidPlural + ';' + descriptor.msgid; - } - }; - // Make key to fill disctionary with translations. - // This should be fully compatible with getDictKeyForDescriptor! - TranslationController.prototype.getDictKeyForEntry = function (item) { - switch (item.type) { - case 'single': - if (item.context) { - return 'ctx:' + item.context + ';' + item.entry; - } - return item.entry; - case 'plural': - if (item.context) { - return 'ctx:' + item.context + ';' + 'plural:' + item.entry[1] + ';' + item.entry[0]; - } - return 'plural:' + item.entry[1] + ';' + item.entry[0]; - } - }; - // Get msgid/msgid_plural as fallback in case of untranslated string - TranslationController.prototype.getUntranslatedFallback = function (descriptor) { - switch (descriptor.type) { - case '_t': - case '_pt': - return [descriptor.msgid]; - case '_nt': - case '_npt': - return descriptor.allPlurals; - } - }; - // Select proper plural form based on descriptor - TranslationController.prototype.selectPluralForm = function (forms, descriptor, forceUntranslated) { - switch (descriptor.type) { - case '_t': - case '_pt': - return forms[0]; - case '_nt': - case '_npt': - if (!this.pluralSelect && !this.defaultPluralSelect) { - throw new Error('Plural form selection formula not found, but plural form requested in sources'); - } - var formIndex = this.pluralSelect && !forceUntranslated - ? this.pluralSelect(descriptor.factor) - : this.defaultPluralSelect(descriptor.factor); - return forms[(formIndex || 0) + 0]; // explicit cast to number; some gettext formulas may return just true/false - that's bad. - } - }; - // Substitute parameters to %1, %2, etc and %% placeholders - TranslationController.prototype.substituteStrings = function (str, descriptor) { - var tmpStr = str; - // substitute optional parameters - descriptor.substitutions.forEach(function (value, index) { - tmpStr = tmpStr.replace(new RegExp('%' + (index + 1), 'ig'), (value || '').toString()); - }); - // substitute plurality factor - if (descriptor.type === '_nt' || descriptor.type === '_npt') { - tmpStr = tmpStr.replace(/%%/gi, descriptor.factor.toString()); - } - // error handling - if (this.onFailedSubstitution && tmpStr.match(/%\d+/)) { - this.onFailedSubstitution(str, descriptor.substitutions); - } - return tmpStr; - }; - // Prepare internal dictionary. - // This should be run once on translation load. - TranslationController.prototype.makeNewDict = function (items) { - var dict = {}; - for (var _i = 0, items_1 = items; _i < items_1.length; _i++) { - var item = items_1[_i]; - // Don't add item in dict if no translation provided - if ((item.type === 'single' && !item.translation) || - (item.type === 'plural' && !item.translations.every(function (i) { return !!i; }))) { - continue; - } - var key = this.getDictKeyForEntry(item); - if (!key) { - continue; - } - dict[key] = item.type === 'single' ? [item.translation || ''] : item.translations; - } - return dict; - }; - // Evaluate Plural-Forms meta header to make plural selection function. - // This should be run once on translation load. - TranslationController.prototype.makePluralSelectFunction = function (selectStr) { - var matches = selectStr.match(/nplurals=(\d+);\s*plural=(.*)/i); - if (!matches) { - throw new Error("Couldn't parse Plural-Forms meta header"); - } - return (new Function('n', 'return ' + matches[2])); - }; - return TranslationController; -}()); -exports.TranslationController = TranslationController; -; diff --git a/dist/src/types.js b/dist/src/types.js deleted file mode 100644 index 0e34578..0000000 --- a/dist/src/types.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/index.ts b/index.ts index 0c8a982..25edb54 100644 --- a/index.ts +++ b/index.ts @@ -8,7 +8,7 @@ import { TranslationController } from './src/controller'; export { TranslationController } from './src/controller'; export const _tGen: (ctrl: TranslationController) => SimpleTranslation = - (ctrl) => (str, substitutions = []): string => { + (ctrl) => (str: string, substitutions = []): string => { return ctrl.getString({ type: '_t', msgid: str, @@ -18,7 +18,7 @@ export const _tGen: (ctrl: TranslationController) => SimpleTranslation = }; export const _ptGen: (ctrl: TranslationController) => ContextualTranslation = - (ctrl) => (context, str, substitutions = []): string => { + (ctrl) => (context: string, str: string, substitutions = []): string => { return ctrl.getString({ type: '_pt', msgid: str, @@ -29,7 +29,7 @@ export const _ptGen: (ctrl: TranslationController) => ContextualTranslation = }; export const _ntGen: (ctrl: TranslationController) => PluralTranslation = - (ctrl) => (plurals, factor, substitutions = []): string => { + (ctrl) => (plurals: string[], factor: number, substitutions = []): string => { return ctrl.getString({ type: '_nt', factor, @@ -42,7 +42,7 @@ export const _ntGen: (ctrl: TranslationController) => PluralTranslation = }; export const _nptGen: (ctrl: TranslationController) => PluralContextualTranslation = - (ctrl) => (context, plurals, factor, substitutions = []): string => { + (ctrl) => (context: string, plurals: string[], factor: number, substitutions = []): string => { return ctrl.getString({ type: '_npt', factor, @@ -56,7 +56,7 @@ export const _nptGen: (ctrl: TranslationController) => PluralContextualTranslati }; export const _ggGen: (ctrl: TranslationController) => SimpleTranslation = - (ctrl) => (str, substitutions = []): string => { + (ctrl) => (str: string, substitutions = []): string => { return ctrl.getString({ type: '_t', msgid: str, @@ -66,7 +66,7 @@ export const _ggGen: (ctrl: TranslationController) => SimpleTranslation = }; export const _pggGen: (ctrl: TranslationController) => ContextualTranslation = - (ctrl) => (context, str, substitutions = []): string => { + (ctrl) => (context: string, str: string, substitutions = []): string => { return ctrl.getString({ type: '_pt', msgid: str, @@ -77,7 +77,7 @@ export const _pggGen: (ctrl: TranslationController) => ContextualTranslation = }; export const _nggGen: (ctrl: TranslationController) => PluralTranslation = - (ctrl) => (plurals, factor, substitutions = []): string => { + (ctrl) => (plurals: string[], factor: number, substitutions = []): string => { return ctrl.getString({ type: '_nt', factor, @@ -90,7 +90,7 @@ export const _nggGen: (ctrl: TranslationController) => PluralTranslation = }; export const _npggGen: (ctrl: TranslationController) => PluralContextualTranslation = - (ctrl) => (context, plurals, factor, substitutions = []): string => { + (ctrl) => (context: string, plurals: string[], factor: number, substitutions = []): string => { return ctrl.getString({ type: '_npt', factor, @@ -104,7 +104,7 @@ export const _npggGen: (ctrl: TranslationController) => PluralContextualTranslat }; export class TranslationProvider { - constructor(private ctrl: TranslationController) { } + constructor(private readonly ctrl: TranslationController) { } public _t: SimpleTranslation = _tGen(this.ctrl); public _pt: ContextualTranslation = _ptGen(this.ctrl); public _nt: PluralTranslation = _ntGen(this.ctrl); diff --git a/jest.config.cjs b/jest.config.cjs new file mode 100644 index 0000000..180acb8 --- /dev/null +++ b/jest.config.cjs @@ -0,0 +1,11 @@ +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + preset: 'ts-jest', + testEnvironment: 'node', + verbose: true, + collectCoverage: false, + testPathIgnorePatterns: ['dist/.*'], + transform: { + '^.+\\.tsx?$': ['ts-jest', { useESM: false }], + }, +}; \ No newline at end of file diff --git a/karma.conf.js b/karma.conf.js deleted file mode 100644 index 1d3e03c..0000000 --- a/karma.conf.js +++ /dev/null @@ -1,78 +0,0 @@ -// Karma configuration -// Generated on Fri Jul 07 2017 15:50:08 GMT+0300 (MSK) - -module.exports = function(config) { - config.set({ - - // base path that will be used to resolve all patterns (eg. files, exclude) - basePath: '', - - - // frameworks to use - // available frameworks: https://npmjs.org/browse/keyword/karma-adapter - frameworks: ['karma-typescript', 'mocha', 'browserify'], - - - // list of files / patterns to load in the browser - files: [ - '**/*.ts' - ], - - - // list of files to exclude - exclude: [ - 'index.ts', // CLI-related tools should not be loaded into browser - 'node_modules/**/*.ts' - ], - - - // preprocess matching files before serving them to the browser - // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor - preprocessors: { - '**/*.ts': [ 'karma-typescript' ] - }, - - typescriptPreprocessor: { - tsconfigPath: './tsconfig.json', - ignorePath: function(path){ - return /\.d\.ts$/.test(path); - } - }, - - // test results reporter to use - // possible values: 'dots', 'progress' - // available reporters: https://npmjs.org/browse/keyword/karma-reporter - reporters: ['progress'], - - - // web server port - port: 9876, - - - // enable / disable colors in the output (reporters and logs) - colors: true, - - - // level of logging - // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG - logLevel: config.LOG_INFO, - - - // enable / disable watching file and executing tests whenever any file changes - autoWatch: true, - - - // start these browsers - // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher - browsers: ['Firefox'], - - - // Continuous Integration mode - // if true, Karma captures browsers, runs the tests and exits - singleRun: true, - - // Concurrency level - // how many browser should be started simultaneous - concurrency: Infinity - }) -} diff --git a/package.json b/package.json index 73f7b65..7dc13be 100644 --- a/package.json +++ b/package.json @@ -3,10 +3,12 @@ "version": "1.0.8", "description": "Internationalization support library", "main": "dist/index.js", + "type": "module", "scripts": { - "test": "karma start --browsers Firefox --single-run", - "build": "tsc --noEmit && tsc index.ts --outDir dist", - "testwatch": "karma start --browsers Firefox" + "lint": "eslint . --ext .js,.ts,.tsx", + "test": "jest", + "typecheck": "tsc -p . --noEmit", + "build": "tsc -p . --outDir dist" }, "repository": { "type": "git", @@ -21,26 +23,33 @@ "url": "https://github.com/2gis/i18n-dialect/issues" }, "homepage": "https://github.com/2gis/i18n-dialect#readme", + "resolutions": { + "wrap-ansi": "7.0.0", + "string-width": "4.1.0", + "strip-ansi": "6.0.1" + }, "devDependencies": { - "array-xor": "^0.1.1", - "assert": "^1.4.1", - "browserify": "^14.4.0", - "eslint": "3.13.1", - "i18n-po-json": "1.0.5", + "@types/assert": "^1.5.10", + "@types/cli": "^0.11.25", + "@types/get-stdin": "^7.0.0", + "@types/glob": "^8.1.0", + "@types/jest": "^29.5.12", + "@types/node": "^20.11.30", + "@typescript-eslint/eslint-plugin": "6.21.0", + "@typescript-eslint/parser": "6.21.0", + "cli": "^1.0.1", + "cross-env": "^7.0.3", + "eslint": "8.57.0", + "eslint-config-prettier": "9.1.0", + "eslint-plugin-unused-imports": "3.0.0", + "glob": "^10.3.10", "i18n-proto": "1.0.5", - "i18n-stex": "1.0.9", - "karma": "1.7.0", - "karma-browserify": "^5.1.1", - "karma-firefox-launcher": "^1.0.1", - "karma-mocha": "^1.3.0", - "karma-typescript": "^3.0.4", - "mocha": "^3.4.2", - "ts-node": "^3.3.0", - "tslib": "1.5.0", - "tslint": "4.3.1", - "tslint-eslint-rules": "3.2.3", - "typescript": "^2.4.2", - "watchify": "^3.9.0" - }, - "dependencies": {} + "i18n-stex": "https://github.com/ctizen/stex.git", + "jest": "^29.7.0", + "prettier": "3.2.5", + "ts-jest": "^29.1.2", + "ts-node": "^10.9.2", + "tslib": "2.6.2", + "typescript": "5.3.3" + } } diff --git a/project.d.ts b/project.d.ts deleted file mode 100644 index 3104aa1..0000000 --- a/project.d.ts +++ /dev/null @@ -1,158 +0,0 @@ -// ================= mocha ======================= - -// Type definitions for mocha 2.2.5 -// Project: http://mochajs.org/ -// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// Fixed for ts2.0 - -interface MochaSetupOptions { - // milliseconds to wait before considering a test slow - slow?: number; - - // timeout in milliseconds - timeout?: number; - - // ui name "bdd", "tdd", "exports" etc - ui?: string; - - // array of accepted globals - globals?: any[]; - - // reporter instance (function or string), defaults to `mocha.reporters.Spec` - reporter?: any; - - // bail on the first test failure - bail?: boolean; - - // ignore global leaks - ignoreLeaks?: boolean; - - // grep string or regexp to filter tests with - grep?: any; -} - -declare var describe: Mocha.MochaContextDefinition; -declare var xdescribe: Mocha.MochaContextDefinition; -// alias for `describe` -declare var context: Mocha.MochaContextDefinition; -// alias for `describe` -declare var suite: Mocha.MochaContextDefinition; -declare var it: Mocha.MochaTestDefinition; -declare var xit: Mocha.MochaTestDefinition; -// alias for `it` -declare var test: Mocha.MochaTestDefinition; -declare var specify: Mocha.MochaTestDefinition; - -interface MochaDone { - (error?: any): any; -} - -interface ActionFunction { - (done: MochaDone): any | PromiseLike; -} - -declare function setup(action: ActionFunction): void; -declare function teardown(action: ActionFunction): void; -declare function suiteSetup(action: ActionFunction): void; -declare function suiteTeardown(action: ActionFunction): void; -declare function before(action: ActionFunction): void; -declare function before(description: string, action: ActionFunction): void; -declare function after(action: ActionFunction): void; -declare function after(description: string, action: ActionFunction): void; -declare function beforeEach(action: ActionFunction): void; -declare function beforeEach(description: string, action: ActionFunction): void; -declare function afterEach(action: ActionFunction): void; -declare function afterEach(description: string, action: ActionFunction): void; - -// merge the Mocha class declaration with a module -declare namespace Mocha { - /** Partial interface for Mocha's `Runnable` class. */ - interface MochaRunnable { - title: string; - fn: Function; - async: boolean; - sync: boolean; - timedOut: boolean; - } - - /** Partial interface for Mocha's `Suite` class. */ - interface MochaSuite { - parent: MochaSuite; - title: string; - - fullTitle(): string; - } - - /** Partial interface for Mocha's `Test` class. */ - interface MochaTest extends MochaRunnable { - parent: MochaSuite; - pending: boolean; - - fullTitle(): string; - } - - /** Partial interface for Mocha's `Runner` class. */ - interface MochaRunner { } - - interface MochaContextDefinition { - (description: string, spec: () => void): MochaSuite; - only(description: string, spec: () => void): MochaSuite; - skip(description: string, spec: () => void): void; - timeout(ms: number): void; - } - - interface MochaTestDefinition { - state: 'failed' | 'passed'; - (expectation: string, assertion?: ActionFunction): MochaTest; - only(expectation: string, assertion?: ActionFunction): MochaTest; - skip(expectation: string, assertion?: ActionFunction): void; - timeout(ms: number): void; - } - - export namespace reporters { - export class Base { - public stats: { - suites: number; - tests: number; - passes: number; - pending: number; - failures: number; - }; - - constructor(runner: MochaRunner); - } - - export class Doc extends Base { } - export class Dot extends Base { } - export class HTML extends Base { } - export class HTMLCov extends Base { } - export class JSON extends Base { } - export class JSONCov extends Base { } - export class JSONStream extends Base { } - export class Landing extends Base { } - export class List extends Base { } - export class Markdown extends Base { } - export class Min extends Base { } - export class Nyan extends Base { } - export class Progress extends Base { - /** - * @param options.open String used to indicate the start of the progress bar. - * @param options.complete String used to indicate a complete test on the progress bar. - * @param options.incomplete String used to indicate an incomplete test on the progress bar. - * @param options.close String used to indicate the end of the progress bar. - */ - constructor(runner: MochaRunner, options?: { - open?: string; - complete?: string; - incomplete?: string; - close?: string; - }); - } - export class Spec extends Base { } - export class TAP extends Base { } - export class XUnit extends Base { - constructor(runner: MochaRunner, options?: any); - } - } -} - diff --git a/src/controller.ts b/src/controller.ts index 542cb45..5d5e69d 100644 --- a/src/controller.ts +++ b/src/controller.ts @@ -8,14 +8,14 @@ export class TranslationController { constructor( protected translationGetter: (name: string, onReady: (name: string, contents: string) => void) => void, - protected onFailedSubstitution: (str: string, substitutions: Scalar[]) => void | undefined, + protected onFailedSubstitution: (str: string, substitutions: Scalar[]) => void, protected defaultPluralSelect: (factor: number) => number ) { } - public getString(descriptor: Descriptor, forceUntranslated: boolean = false): string { - let key: string | undefined = forceUntranslated ? undefined : this.getDictKeyForDescriptor(descriptor); - let translationForms: string[] = key && this.dictionary[key] || this.getUntranslatedFallback(descriptor); - let translation = this.selectPluralForm(translationForms, descriptor, forceUntranslated); + public getString(descriptor: Descriptor, forceUntranslated = false): string { + const key: string | undefined = forceUntranslated ? undefined : this.getDictKeyForDescriptor(descriptor); + const translationForms: string[] = this.dictionary[key ?? ''] ?? this.getUntranslatedFallback(descriptor); + const translation = this.selectPluralForm(translationForms, descriptor, forceUntranslated); return this.substituteStrings(translation, descriptor); } @@ -25,16 +25,16 @@ export class TranslationController { onError?: (e: any) => void ): void { this.translationGetter(localeName, (name: string, contents: string) => { - let poData: TranslationJson = JSON.parse(contents); // TODO: better json schema validation? + const poData: TranslationJson = JSON.parse(contents); // TODO: better json schema validation? if (!poData.items || !poData.meta) { - onError && onError('Invalid format of translation file'); + onError?.('Invalid format of translation file'); return; } try { - let dictionary = this.makeNewDict(poData.items); - let dictMeta = poData.meta; - let pluralSelect = this.makePluralSelectFunction(poData.meta.pluralForms); + const dictionary = this.makeNewDict(poData.items); + const dictMeta = poData.meta; + const pluralSelect = this.makePluralSelectFunction(poData.meta.pluralForms); // Everything seems to be OK, assign it all to object members this.dictionary = dictionary; @@ -42,7 +42,7 @@ export class TranslationController { this.pluralSelect = pluralSelect; onReady(name); } catch (e) { - onError && onError(e); + onError?.(e); } }); } @@ -104,10 +104,10 @@ export class TranslationController { if (!this.pluralSelect && !this.defaultPluralSelect) { throw new Error('Plural form selection formula not found, but plural form requested in sources'); } - let formIndex = this.pluralSelect && !forceUntranslated + const formIndex = this.pluralSelect !== undefined && !forceUntranslated ? this.pluralSelect(descriptor.factor) : this.defaultPluralSelect(descriptor.factor); - return forms[(formIndex || 0) + 0]; // explicit cast to number; some gettext formulas may return just true/false - that's bad. + return forms[parseInt(formIndex?.toString() ?? '', 10) ?? 0]; // explicit cast to number; some gettext formulas may return just true/false - that's bad. } } @@ -117,7 +117,7 @@ export class TranslationController { // substitute optional parameters descriptor.substitutions.forEach((value, index) => { - tmpStr = tmpStr.replace(new RegExp('%' + (index + 1), 'ig'), (value || '').toString()); + tmpStr = tmpStr.replace(new RegExp('%' + (index + 1), 'ig'), (value ?? '').toString()); }); // substitute plurality factor @@ -136,8 +136,8 @@ export class TranslationController { // Prepare internal dictionary. // This should be run once on translation load. protected makeNewDict(items: I18NEntry[]): { [key: string]: string[] } { - let dict: { [key: string]: string[] } = {}; - for (let item of items) { + const dict: { [key: string]: string[] } = {}; + for (const item of items) { // Don't add item in dict if no translation provided if ((item.type === 'single' && !item.translation) || (item.type === 'plural' && !item.translations.every((i) => !!i)) @@ -145,11 +145,11 @@ export class TranslationController { continue; } - let key = this.getDictKeyForEntry(item); + const key = this.getDictKeyForEntry(item); if (!key) { continue; } - dict[key] = item.type === 'single' ? [item.translation || ''] : item.translations; + dict[key] = item.type === 'single' ? [item.translation ?? ''] : item.translations; } return dict; @@ -158,11 +158,11 @@ export class TranslationController { // Evaluate Plural-Forms meta header to make plural selection function. // This should be run once on translation load. protected makePluralSelectFunction(selectStr: string) { - let matches = selectStr.match(/nplurals=(\d+);\s*plural=(.*)/i); + const matches = selectStr.match(/nplurals=(\d+);\s*plural=(.*)/i); if (!matches) { throw new Error("Couldn't parse Plural-Forms meta header"); } - return (new Function('n', 'return ' + matches[2])) as (factor: number) => number; + return (new Function('n', 'return Number(' + matches[2].replace(/;$/, '') + ');')) as (factor: number) => number; } -}; +} diff --git a/src/types.ts b/src/types.ts index 22f59a6..9751df8 100644 --- a/src/types.ts +++ b/src/types.ts @@ -8,39 +8,39 @@ export { import { Scalar } from 'i18n-stex/src/types'; export type SingleSimpleDescriptor = { - type: '_t', - msgid: string, - msgstr: string, - substitutions: Scalar[] + type: '_t'; + msgid: string; + msgstr: string; + substitutions: Scalar[]; }; export type SingleContextualDescriptor = { - type: '_pt', - msgid: string, - msgstr: string, - msgctxt: string, - substitutions: Scalar[] + type: '_pt'; + msgid: string; + msgstr: string; + msgctxt: string; + substitutions: Scalar[]; }; export type PluralSimpleDescriptor = { - type: '_nt', - factor: number, - msgid: string, - msgidPlural: string, - allPlurals: string[], // for untranslated fallbacks - msgstr: string[], - substitutions: Scalar[] + type: '_nt'; + factor: number; + msgid: string; + msgidPlural: string; + allPlurals: string[]; // for untranslated fallbacks + msgstr: string[]; + substitutions: Scalar[]; }; export type PluralContextualDescriptor = { - type: '_npt', - factor: number, - msgid: string, - msgidPlural: string, - allPlurals: string[], // for untranslated fallbacks - msgstr: string[], - msgctxt: string, - substitutions: Scalar[] + type: '_npt'; + factor: number; + msgid: string; + msgidPlural: string; + allPlurals: string[]; // for untranslated fallbacks + msgstr: string[]; + msgctxt: string; + substitutions: Scalar[]; }; export type SingleDescriptor = SingleSimpleDescriptor | SingleContextualDescriptor; diff --git a/tests/controller.ts b/tests/controller.spec.ts similarity index 72% rename from tests/controller.ts rename to tests/controller.spec.ts index aae2f9a..dc861c4 100644 --- a/tests/controller.ts +++ b/tests/controller.spec.ts @@ -1,8 +1,6 @@ -declare function require(name: string): any; -const assert = require('assert'); -import { PluralI18NEntry, SingleI18NEntry } from 'i18n-proto'; +import assert from 'assert'; +import { I18NEntry, PluralI18NEntry, SingleI18NEntry } from 'i18n-proto'; import { Descriptor } from '../src/types'; -import { I18NEntry } from 'i18n-proto'; import { getController, getFailedSubstitutions, @@ -18,51 +16,51 @@ describe('I18n end-user library', () => { // that dictionary keys are formed in same way for i18n entries and descriptors. it('Compatibility: getDictKeyForEntry and getDictKeyForDescriptor values are compatible for _t', () => { - let t = getController(); - let entry: SingleI18NEntry = { + const t = getController(); + const entry: SingleI18NEntry = { type: 'single', entry: 'test' }; - let descr: Descriptor = { + const descr: Descriptor = { type: '_t', msgid: 'test', msgstr: '', substitutions: [] }; - assert.equal( + assert.strictEqual( t.pGetDictKeyForDescriptor(descr), t.pGetDictKeyForEntry(entry) ); }); it('Compatibility: getDictKeyForEntry and getDictKeyForDescriptor values are compatible for _pt', () => { - let t = getController(); - let entry: SingleI18NEntry = { + const t = getController(); + const entry: SingleI18NEntry = { type: 'single', entry: 'test', context: 'ctx' }; - let descr: Descriptor = { + const descr: Descriptor = { type: '_pt', msgid: 'test', msgstr: '', msgctxt: 'ctx', substitutions: [] }; - assert.equal( + assert.strictEqual( t.pGetDictKeyForDescriptor(descr), t.pGetDictKeyForEntry(entry) ); }); it('Compatibility: getDictKeyForEntry and getDictKeyForDescriptor values are compatible for _nt', () => { - let t = getController(); - let entry: PluralI18NEntry = { + const t = getController(); + const entry: PluralI18NEntry = { type: 'plural', entry: ['test1', 'test3'], translations: [] }; - let descr: Descriptor = { + const descr: Descriptor = { type: '_nt', factor: 2, msgid: 'test1', @@ -71,21 +69,21 @@ describe('I18n end-user library', () => { msgstr: [], substitutions: [] }; - assert.equal( + assert.strictEqual( t.pGetDictKeyForDescriptor(descr), t.pGetDictKeyForEntry(entry) ); }); it('Compatibility: getDictKeyForEntry and getDictKeyForDescriptor values are compatible for _npt', () => { - let t = getController(); - let entry: PluralI18NEntry = { + const t = getController(); + const entry: PluralI18NEntry = { type: 'plural', entry: ['test1', 'test3'], translations: [], context: 'ctx' }; - let descr: Descriptor = { + const descr: Descriptor = { type: '_npt', factor: 2, msgid: 'test1', @@ -95,15 +93,15 @@ describe('I18n end-user library', () => { msgstr: [], substitutions: [] }; - assert.equal( + assert.strictEqual( t.pGetDictKeyForDescriptor(descr), t.pGetDictKeyForEntry(entry) ); }); it('Selects proper plural form with selectPluralForm and default selector', () => { - let t = getController(); - let descr: Descriptor = { + const t = getController(); + const descr: Descriptor = { type: '_nt', factor: 2, msgid: 'test1', // ignored @@ -114,25 +112,25 @@ describe('I18n end-user library', () => { }; // default selector is russian - assert.equal( + assert.strictEqual( t.pSelectPluralForm(['одна форма', 'две-четыре формы', 'пять и более форм'], descr, /*forceUntranslated = */ false), 'две-четыре формы' ); descr.factor = 1; - assert.equal( + assert.strictEqual( t.pSelectPluralForm(['одна форма', 'две-четыре формы', 'пять и более форм'], descr, /*forceUntranslated = */ false), 'одна форма' ); descr.factor = 6; - assert.equal( + assert.strictEqual( t.pSelectPluralForm(['одна форма', 'две-четыре формы', 'пять и более форм'], descr, /*forceUntranslated = */ false), 'пять и более форм' ); }); it('Selects one and only form with selectPluralForm and default selector, if descriptor is not plural', () => { - let t = getController(); - let descr: Descriptor = { + const t = getController(); + const descr: Descriptor = { type: '_t', msgid: 'test1', // ignored msgstr: '', @@ -140,16 +138,16 @@ describe('I18n end-user library', () => { }; // default selector is russian - assert.equal( + assert.strictEqual( t.pSelectPluralForm(['одна форма'], descr, /*forceUntranslated = */ false), 'одна форма' ); }); it('substituteStrings: proper substitution of single parameter', () => { - let t = getController(); - let str = 'This str has %1 as a value'; - let descr: Descriptor = { + const t = getController(); + const str = 'This str has %1 as a value'; + const descr: Descriptor = { type: '_t', msgid: 'test1', // ignored msgstr: '', @@ -158,16 +156,16 @@ describe('I18n end-user library', () => { ] }; - assert.equal( + assert.strictEqual( t.pSubstituteStrings(str, descr), 'This str has param1 as a value' ); }); it('substituteStrings: proper substitution of single parameter in many places', () => { - let t = getController(); - let str = 'This str has %1 as a value and %1 once again'; - let descr: Descriptor = { + const t = getController(); + const str = 'This str has %1 as a value and %1 once again'; + const descr: Descriptor = { type: '_t', msgid: 'test1', // ignored msgstr: '', @@ -176,16 +174,16 @@ describe('I18n end-user library', () => { ] }; - assert.equal( + assert.strictEqual( t.pSubstituteStrings(str, descr), 'This str has param1 as a value and param1 once again' ); }); it('substituteStrings: proper substitution of multiple different parameters', () => { - let t = getController(); - let str = 'This str has %1, %2 and %3 as values'; - let descr: Descriptor = { + const t = getController(); + const str = 'This str has %1, %2 and %3 as values'; + const descr: Descriptor = { type: '_t', msgid: 'test1', // ignored msgstr: '', @@ -196,16 +194,16 @@ describe('I18n end-user library', () => { ] }; - assert.equal( + assert.strictEqual( t.pSubstituteStrings(str, descr), 'This str has param1, param2 and param3 as values' ); }); it('substituteStrings: proper substitution of multiple different parameters in many places', () => { - let t = getController(); - let str = 'This str has %1, %2 and %3 as values, and also %1 and %3 as more values'; - let descr: Descriptor = { + const t = getController(); + const str = 'This str has %1, %2 and %3 as values, and also %1 and %3 as more values'; + const descr: Descriptor = { type: '_t', msgid: 'test1', // ignored msgstr: '', @@ -216,16 +214,16 @@ describe('I18n end-user library', () => { ] }; - assert.equal( + assert.strictEqual( t.pSubstituteStrings(str, descr), 'This str has param1, param2 and param3 as values, and also param1 and param3 as more values' ); }); it('substituteStrings: proper substitution of plurality factor for plural forms', () => { - let t = getController(); - let str = 'This str has %% plurality factor'; - let descr: Descriptor = { + const t = getController(); + const str = 'This str has %% plurality factor'; + const descr: Descriptor = { type: '_nt', factor: 2, msgid: 'test1', // ignored @@ -235,16 +233,16 @@ describe('I18n end-user library', () => { substitutions: [] }; - assert.equal( + assert.strictEqual( t.pSubstituteStrings(str, descr), 'This str has 2 plurality factor' ); }); it('substituteStrings: proper substitution of plurality factor in many places for plural forms', () => { - let t = getController(); - let str = 'This str has %% plurality factor and %% factor again'; - let descr: Descriptor = { + const t = getController(); + const str = 'This str has %% plurality factor and %% factor again'; + const descr: Descriptor = { type: '_nt', factor: 2, msgid: 'test1', // ignored @@ -254,16 +252,16 @@ describe('I18n end-user library', () => { substitutions: [] }; - assert.equal( + assert.strictEqual( t.pSubstituteStrings(str, descr), 'This str has 2 plurality factor and 2 factor again' ); }); it('substituteStrings: proper substitution of parameters and plurality factor for plural forms', () => { - let t = getController(); - let str = 'This str has %% plurality factor and %1, %2 and %3 with %1 and %3 values again'; - let descr: Descriptor = { + const t = getController(); + const str = 'This str has %% plurality factor and %1, %2 and %3 with %1 and %3 values again'; + const descr: Descriptor = { type: '_nt', factor: 2, msgid: 'test1', // ignored @@ -277,16 +275,16 @@ describe('I18n end-user library', () => { ] }; - assert.equal( + assert.strictEqual( t.pSubstituteStrings(str, descr), 'This str has 2 plurality factor and param1, param2 and param3 with param1 and param3 values again' ); }); it('substituteStrings throws error if not all substitutions have been done', () => { - let t = getController(); - let str = 'This str has %1, %2 and %3 as values'; - let descr: Descriptor = { + const t = getController(); + const str = 'This str has %1, %2 and %3 as values'; + const descr: Descriptor = { type: '_t', msgid: 'test1', // ignored msgstr: '', @@ -296,16 +294,16 @@ describe('I18n end-user library', () => { ] }; - assert.equal( + assert.strictEqual( t.pSubstituteStrings(str, descr), 'This str has param1, param2 and %3 as values' ); - assert.equal(getFailedSubstitutions().length, 1); + assert.strictEqual(getFailedSubstitutions().length, 1); }); it('Makes new dictionary from JSON file items', () => { - let t = getController(); - let items: I18NEntry[] = [{ + const t = getController(); + const items: I18NEntry[] = [{ type: 'single', entry: 'test1', translation: 'trans1' @@ -334,7 +332,7 @@ describe('I18n end-user library', () => { translations: ['', '', 'trans5-3'] // not all translations provided }]; - assert.deepEqual(t.pMakeNewDict(items), { + assert.deepStrictEqual(t.pMakeNewDict(items), { 'test1': ['trans1'], 'ctx:ctx1;test2': ['trans2'], 'plural:test3-2;test3-1': ['trans3-1', 'trans3-2', 'trans3-3'], @@ -343,8 +341,8 @@ describe('I18n end-user library', () => { }); it('Makes proper selection function from JSON file', () => { - let t = getController(); - let funcs: any = { + const t = getController(); + const funcs: any = { // key: plurality formula 'nplurals=1; plural=0;': { 0: 0, // key: plurality factor; value: expected # of plural form @@ -394,11 +392,11 @@ describe('I18n end-user library', () => { } }; - for (let strfun in funcs) { - let plural = t.pMakePluralSelectFunction(strfun); - for (let factor in funcs[strfun]) { - let plVal = plural(parseInt(factor)); - assert.equal( + for (const strfun in funcs) { + const plural = t.pMakePluralSelectFunction(strfun); + for (const factor in funcs[strfun]) { + const plVal = plural(parseInt(factor) ?? 0); + assert.strictEqual( plVal, funcs[strfun][factor], `Func: ${strfun} (failed on factor ${factor}: expected ${funcs[strfun][factor]} but got ${plVal})` @@ -408,8 +406,8 @@ describe('I18n end-user library', () => { }); it('Throws error on incorrect selection function in JSON file', () => { - let t = getController(); - let exceptions = []; + const t = getController(); + const exceptions = []; try { t.pMakePluralSelectFunction('nprals=1; plural=0;'); // typo @@ -423,67 +421,67 @@ describe('I18n end-user library', () => { exceptions.push(e); } - assert.equal(exceptions[0] instanceof Error, true); - assert.equal(exceptions[1] instanceof SyntaxError, true); + assert.strictEqual(exceptions[0] instanceof Error, true); + assert.strictEqual(exceptions[1] instanceof SyntaxError, true); }); it('Integration: properly loads locale file by name (via setLocale)', (done) => { setTranslationGetter((name: string, onReady: (name: string, contents: string) => void) => onReady(name, testLocaleJson)); - let t = getController(); + const t = getController(); t.setLocale('cs_cz', (name: string) => { - assert.equal(name, 'cs_cz'); // should match with name passed to setLocale - assert.equal((t.mDictMeta() || { language: '' }).language, 'cs_CZ'); // should match with value in json - assert.equal(Object.keys(t.mDictionary()).length, 4); // entries count in test file - assert.notEqual(t.mPluralSelect(), undefined); + assert.strictEqual(name, 'cs_cz'); // should match with name passed to setLocale + assert.strictEqual((t.mDictMeta() ?? { language: '' }).language, 'cs_CZ'); // should match with value in json + assert.strictEqual(Object.keys(t.mDictionary()).length, 4); // entries count in test file + assert.notStrictEqual(t.mPluralSelect(), undefined); done(); }, (err: any) => { - assert.equal(err, undefined); + assert.strictEqual(err, undefined); done(); }); }); it('Integration: properly gets string from loaded dictionary with _t', (done) => { setTranslationGetter((name: string, onReady: (name: string, contents: string) => void) => onReady(name, testLocaleJson)); - let t = getController(); + const t = getController(); t.setLocale('cs_cz', (_name: string) => { - let descr: Descriptor = { + const descr: Descriptor = { type: '_t', msgid: '"%1" не подключает по вашему адресу.', msgstr: '', substitutions: ['Provider'] }; - assert.equal(t.getString(descr), '"Provider" neumožňuje připojení na Vaší adrese.'); + assert.strictEqual(t.getString(descr), '"Provider" neumožňuje připojení na Vaší adrese.'); done(); }, (err: any) => { - assert.equal(err, undefined); + assert.strictEqual(err, undefined); done(); }); }); it('Integration: properly gets string from loaded dictionary with _pt', (done) => { setTranslationGetter((name: string, onReady: (name: string, contents: string) => void) => onReady(name, testLocaleJson)); - let t = getController(); + const t = getController(); t.setLocale('cs_cz', (_name: string) => { - let descr: Descriptor = { + const descr: Descriptor = { type: '_pt', msgid: '%1 км', msgctxt: 'километры', msgstr: '', substitutions: ['23'] }; - assert.equal(t.getString(descr), '23 km'); + assert.strictEqual(t.getString(descr), '23 km'); done(); }, (err: any) => { - assert.equal(err, undefined); + assert.strictEqual(err, undefined); done(); }); }); it('Integration: properly gets string from loaded dictionary with _nt', (done) => { setTranslationGetter((name: string, onReady: (name: string, contents: string) => void) => onReady(name, testLocaleJson)); - let t = getController(); + const t = getController(); t.setLocale('cs_cz', (_name: string) => { - let descr: Descriptor = { + const descr: Descriptor = { type: '_nt', factor: 0, msgid: '%% ТВ-канал', @@ -494,26 +492,26 @@ describe('I18n end-user library', () => { }; descr.factor = 1; - assert.equal(t.getString(descr), '1 TV kanál'); + assert.strictEqual(t.getString(descr), '1 TV kanál'); descr.factor = 3; - assert.equal(t.getString(descr), '3 TV kanály'); + assert.strictEqual(t.getString(descr), '3 TV kanály'); descr.factor = 8; - assert.equal(t.getString(descr), '8 TV kanálů'); + assert.strictEqual(t.getString(descr), '8 TV kanálů'); done(); }, (err: any) => { - assert.equal(err, undefined); + assert.strictEqual(err, undefined); done(); }); }); it('Integration: properly gets string from loaded dictionary with _npt', (done) => { setTranslationGetter((name: string, onReady: (name: string, contents: string) => void) => onReady(name, testLocaleJson)); - let t = getController(); + const t = getController(); t.setLocale('cs_cz', (_name: string) => { - let descr: Descriptor = { + const descr: Descriptor = { type: '_npt', factor: 0, msgid: '%% место', @@ -525,47 +523,47 @@ describe('I18n end-user library', () => { }; descr.factor = 1; - assert.equal(t.getString(descr), '1 místo'); + assert.strictEqual(t.getString(descr), '1 místo'); descr.factor = 3; - assert.equal(t.getString(descr), '3 místa'); + assert.strictEqual(t.getString(descr), '3 místa'); descr.factor = 8; - assert.equal(t.getString(descr), '8 míst'); + assert.strictEqual(t.getString(descr), '8 míst'); done(); }, (err: any) => { - assert.equal(err, undefined); + assert.strictEqual(err, undefined); done(); }); }); it('Integration: properly gets fallback string when no dictionary loaded with _t', () => { - let t = getController(); - let descr: Descriptor = { + const t = getController(); + const descr: Descriptor = { type: '_t', msgid: '"%1" не подключает по вашему адресу.', msgstr: '', substitutions: ['Provider'] }; - assert.equal(t.getString(descr), '"Provider" не подключает по вашему адресу.'); + assert.strictEqual(t.getString(descr), '"Provider" не подключает по вашему адресу.'); }); it('Integration: properly gets fallback string when no dictionary loaded with _pt', () => { - let t = getController(); - let descr: Descriptor = { + const t = getController(); + const descr: Descriptor = { type: '_pt', msgid: '%1 км', msgctxt: 'километры', msgstr: '', substitutions: ['23'] }; - assert.equal(t.getString(descr), '23 км'); + assert.strictEqual(t.getString(descr), '23 км'); }); it('Integration: properly gets fallback string when no dictionary loaded with _nt', () => { - let t = getController(); - let descr: Descriptor = { + const t = getController(); + const descr: Descriptor = { type: '_nt', factor: 0, msgid: '%% ТВ-канал', @@ -576,18 +574,18 @@ describe('I18n end-user library', () => { }; descr.factor = 1; - assert.equal(t.getString(descr), '1 ТВ-канал'); + assert.strictEqual(t.getString(descr), '1 ТВ-канал'); descr.factor = 3; - assert.equal(t.getString(descr), '3 ТВ-канала'); + assert.strictEqual(t.getString(descr), '3 ТВ-канала'); descr.factor = 8; - assert.equal(t.getString(descr), '8 ТВ-каналов'); + assert.strictEqual(t.getString(descr), '8 ТВ-каналов'); }); it('Integration: properly gets fallback string when no dictionary loaded with _npt', () => { - let t = getController(); - let descr: Descriptor = { + const t = getController(); + const descr: Descriptor = { type: '_npt', factor: 0, msgid: '%% место', @@ -599,57 +597,57 @@ describe('I18n end-user library', () => { }; descr.factor = 1; - assert.equal(t.getString(descr), '1 место'); + assert.strictEqual(t.getString(descr), '1 место'); descr.factor = 3; - assert.equal(t.getString(descr), '3 места'); + assert.strictEqual(t.getString(descr), '3 места'); descr.factor = 8; - assert.equal(t.getString(descr), '8 мест'); + assert.strictEqual(t.getString(descr), '8 мест'); }); it('Integration: properly gets forced untranslated string from loaded dictionary with _t', (done) => { setTranslationGetter((name: string, onReady: (name: string, contents: string) => void) => onReady(name, testLocaleJson)); - let t = getController(); + const t = getController(); t.setLocale('cs_cz', (_name: string) => { - let descr: Descriptor = { + const descr: Descriptor = { type: '_t', msgid: '"%1" не подключает по вашему адресу.', msgstr: '', substitutions: ['Provider'] }; - assert.equal(t.getString(descr, true), '"Provider" не подключает по вашему адресу.'); + assert.strictEqual(t.getString(descr, true), '"Provider" не подключает по вашему адресу.'); done(); }, (err: any) => { - assert.equal(err, undefined); + assert.strictEqual(err, undefined); done(); }); }); it('Integration: properly gets forced untranslated string from loaded dictionary with _pt', (done) => { setTranslationGetter((name: string, onReady: (name: string, contents: string) => void) => onReady(name, testLocaleJson)); - let t = getController(); + const t = getController(); t.setLocale('cs_cz', (_name: string) => { - let descr: Descriptor = { + const descr: Descriptor = { type: '_pt', msgid: '%1 км', msgctxt: 'километры', msgstr: '', substitutions: ['23'] }; - assert.equal(t.getString(descr, true), '23 км'); + assert.strictEqual(t.getString(descr, true), '23 км'); done(); }, (err: any) => { - assert.equal(err, undefined); + assert.strictEqual(err, undefined); done(); }); }); it('Integration: properly gets forced untranslated string from loaded dictionary with _nt', (done) => { setTranslationGetter((name: string, onReady: (name: string, contents: string) => void) => onReady(name, testLocaleJson)); - let t = getController(); + const t = getController(); t.setLocale('cs_cz', (_name: string) => { - let descr: Descriptor = { + const descr: Descriptor = { type: '_nt', factor: 0, msgid: '%% ТВ-канал', @@ -660,26 +658,26 @@ describe('I18n end-user library', () => { }; descr.factor = 1; - assert.equal(t.getString(descr, true), '1 ТВ-канал'); + assert.strictEqual(t.getString(descr, true), '1 ТВ-канал'); descr.factor = 3; - assert.equal(t.getString(descr, true), '3 ТВ-канала'); + assert.strictEqual(t.getString(descr, true), '3 ТВ-канала'); descr.factor = 8; - assert.equal(t.getString(descr, true), '8 ТВ-каналов'); + assert.strictEqual(t.getString(descr, true), '8 ТВ-каналов'); done(); }, (err: any) => { - assert.equal(err, undefined); + assert.strictEqual(err, undefined); done(); }); }); it('Integration: properly gets forced untranslated string from loaded dictionary with _npt', (done) => { setTranslationGetter((name: string, onReady: (name: string, contents: string) => void) => onReady(name, testLocaleJson)); - let t = getController(); + const t = getController(); t.setLocale('cs_cz', (_name: string) => { - let descr: Descriptor = { + const descr: Descriptor = { type: '_npt', factor: 0, msgid: '%% место', @@ -691,17 +689,17 @@ describe('I18n end-user library', () => { }; descr.factor = 1; - assert.equal(t.getString(descr, true), '1 место'); + assert.strictEqual(t.getString(descr, true), '1 место'); descr.factor = 3; - assert.equal(t.getString(descr, true), '3 места'); + assert.strictEqual(t.getString(descr, true), '3 места'); descr.factor = 8; - assert.equal(t.getString(descr, true), '8 мест'); + assert.strictEqual(t.getString(descr, true), '8 мест'); done(); }, (err: any) => { - assert.equal(err, undefined); + assert.strictEqual(err, undefined); done(); }); }); diff --git a/tsconfig.json b/tsconfig.json index 55b2570..04bf0af 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -4,20 +4,18 @@ "paths": { "tslib": ["./node_modules/tslib/tslib.d.ts"] }, - - "target": "es5", - "experimentalDecorators": true, + "target": "es2020", + "moduleResolution": "Node", + "esModuleInterop": true, "sourceMap": true, "noImplicitAny": true, - "jsx": "react", "strictNullChecks": true, "noEmitHelpers": true, "importHelpers": true, "noUnusedLocals": true, - "noUnusedParameters": true + "noUnusedParameters": true, }, "exclude": [ "node_modules" - ], - "compileOnSave": false + ] } diff --git a/yarn.lock b/yarn.lock index 47b9764..fc52a10 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,632 +2,1164 @@ # yarn lockfile v1 -JSONStream@^1.0.3: - version "1.3.1" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.1.tgz#707f761e01dae9e16f1bcf93703b78c70966579a" - dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" - -abbrev@1, abbrev@1.0.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== -accepts@1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca" - dependencies: - mime-types "~2.1.11" - negotiator "0.6.1" +"@ampproject/remapping@^2.2.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" + integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.1", "@babel/code-frame@^7.24.2": + version "7.24.2" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" + integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== + dependencies: + "@babel/highlight" "^7.24.2" + picocolors "^1.0.0" + +"@babel/compat-data@^7.23.5": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.1.tgz#31c1f66435f2a9c329bb5716a6d6186c516c3742" + integrity sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA== + +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.23.9": + version "7.24.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.3.tgz#568864247ea10fbd4eff04dda1e05f9e2ea985c3" + integrity sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.24.2" + "@babel/generator" "^7.24.1" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helpers" "^7.24.1" + "@babel/parser" "^7.24.1" + "@babel/template" "^7.24.0" + "@babel/traverse" "^7.24.1" + "@babel/types" "^7.24.0" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/generator@^7.24.1", "@babel/generator@^7.7.2": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.1.tgz#e67e06f68568a4ebf194d1c6014235344f0476d0" + integrity sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A== + dependencies: + "@babel/types" "^7.24.0" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^2.5.1" + +"@babel/helper-compilation-targets@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" + integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== + dependencies: + "@babel/compat-data" "^7.23.5" + "@babel/helper-validator-option" "^7.23.5" + browserslist "^4.22.2" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-environment-visitor@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + +"@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + dependencies: + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" + +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-module-imports@^7.22.15": + version "7.24.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz#6ac476e6d168c7c23ff3ba3cf4f7841d46ac8128" + integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg== + dependencies: + "@babel/types" "^7.24.0" + +"@babel/helper-module-transforms@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" + integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.8.0": + version "7.24.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz#945681931a52f15ce879fd5b86ce2dae6d3d7f2a" + integrity sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w== + +"@babel/helper-simple-access@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" + integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-string-parser@^7.23.4": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e" + integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ== + +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + +"@babel/helper-validator-option@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" + integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== + +"@babel/helpers@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.1.tgz#183e44714b9eba36c3038e442516587b1e0a1a94" + integrity sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg== + dependencies: + "@babel/template" "^7.24.0" + "@babel/traverse" "^7.24.1" + "@babel/types" "^7.24.0" -acorn-jsx@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" +"@babel/highlight@^7.24.2": + version "7.24.2" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.2.tgz#3f539503efc83d3c59080a10e6634306e0370d26" + integrity sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA== dependencies: - acorn "^3.0.4" - -acorn@^3.0.4: - version "3.3.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" -acorn@^4.0.3, acorn@^4.0.4: - version "4.0.13" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.24.0", "@babel/parser@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.1.tgz#1e416d3627393fab1cb5b0f2f1796a100ae9133a" + integrity sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg== -acorn@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.1.tgz#53fe161111f912ab999ee887a90a0bc52822fd75" - -after@0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" - -ajv-keywords@^1.0.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" - -ajv@^4.7.0, ajv@^4.9.1: - version "4.11.8" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== dependencies: - co "^4.6.0" - json-stable-stringify "^1.0.1" + "@babel/helper-plugin-utils" "^7.8.0" -align-text@^0.1.1, align-text@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== dependencies: - kind-of "^3.0.2" - longest "^1.0.1" - repeat-string "^1.5.2" - -amdefine@1.0.0, amdefine@>=0.0.4, amdefine@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.0.tgz#fd17474700cb5cc9c2b709f0be9d23ce3c198c33" + "@babel/helper-plugin-utils" "^7.8.0" -ansi-align@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-1.1.0.tgz#2f0c1658829739add5ebb15e6b0c6e3423f016ba" +"@babel/plugin-syntax-class-properties@^7.8.3": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== dependencies: - string-width "^1.0.1" - -ansi-escapes@^1.1.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" + "@babel/helper-plugin-utils" "^7.12.13" -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" +"@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" -ansi-styles@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" +"@babel/plugin-syntax-jsx@^7.7.2": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz#3f6ca04b8c841811dbc3c5c5f837934e0d626c10" + integrity sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA== dependencies: - color-convert "^1.9.0" + "@babel/helper-plugin-utils" "^7.24.0" -anymatch@^1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" +"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== dependencies: - micromatch "^2.1.5" - normalize-path "^2.0.0" - -aproba@^1.0.3: - version "1.1.2" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.2.tgz#45c6629094de4e96f693ef7eab74ae079c240fc1" + "@babel/helper-plugin-utils" "^7.10.4" -are-we-there-yet@~1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" + "@babel/helper-plugin-utils" "^7.8.0" -argparse@^1.0.7: - version "1.0.9" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" +"@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== dependencies: - sprintf-js "~1.0.2" + "@babel/helper-plugin-utils" "^7.10.4" -arr-diff@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-1.1.0.tgz#687c32758163588fef7de7b36fabe495eb1a399a" +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: - arr-flatten "^1.0.1" - array-slice "^0.2.3" + "@babel/helper-plugin-utils" "^7.8.0" -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== dependencies: - arr-flatten "^1.0.1" + "@babel/helper-plugin-utils" "^7.8.0" -arr-flatten@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" -array-differ@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" +"@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" -array-filter@~0.0.0: - version "0.0.1" - resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" +"@babel/plugin-syntax-typescript@^7.7.2": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz#b3bcc51f396d15f3591683f90239de143c076844" + integrity sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" -array-find-index@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" +"@babel/template@^7.22.15", "@babel/template@^7.24.0", "@babel/template@^7.3.3": + version "7.24.0" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50" + integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/parser" "^7.24.0" + "@babel/types" "^7.24.0" -array-map@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" +"@babel/traverse@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.1.tgz#d65c36ac9dd17282175d1e4a3c49d5b7988f530c" + integrity sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ== + dependencies: + "@babel/code-frame" "^7.24.1" + "@babel/generator" "^7.24.1" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.24.1" + "@babel/types" "^7.24.0" + debug "^4.3.1" + globals "^11.1.0" -array-reduce@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.24.0", "@babel/types@^7.3.3": + version "7.24.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.0.tgz#3b951f435a92e7333eba05b7566fd297960ea1bf" + integrity sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w== + dependencies: + "@babel/helper-string-parser" "^7.23.4" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" -array-slice@^0.2.3: +"@bcoe/v8-coverage@^0.2.3": version "0.2.3" - resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== dependencies: - array-uniq "^1.0.1" - -array-uniq@^1.0.1, array-uniq@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + "@jridgewell/trace-mapping" "0.3.9" -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - -array-xor@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/array-xor/-/array-xor-0.1.1.tgz#688bb6d96c4880fa767e71f5059d2a7f09363f95" +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== dependencies: - arr-diff "^1.1.0" - array-unique "^0.2.1" + eslint-visitor-keys "^3.3.0" -arraybuffer.slice@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca" +"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": + version "4.10.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" + integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== -arrify@^1.0.0: +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.57.0": + version "8.57.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" + integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== + +"@humanwhocodes/config-array@^0.11.14": + version "0.11.14" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" + integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== + dependencies: + "@humanwhocodes/object-schema" "^2.0.2" + debug "^4.3.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -asn1.js@^4.0.0: - version "4.9.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40" +"@humanwhocodes/object-schema@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz#d9fae00a2d5cb40f92cfe64b47ad749fbc38f917" + integrity sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw== + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.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: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" + 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" -asn1@~0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" +"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" + integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + slash "^3.0.0" + +"@jest/core@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" + integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== + dependencies: + "@jest/console" "^29.7.0" + "@jest/reporters" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + ci-info "^3.2.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^29.7.0" + jest-config "^29.7.0" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-resolve-dependencies "^29.7.0" + jest-runner "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + jest-watcher "^29.7.0" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" + integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== + dependencies: + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + +"@jest/expect-utils@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" + integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== + dependencies: + jest-get-type "^29.6.3" + +"@jest/expect@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" + integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== + dependencies: + expect "^29.7.0" + jest-snapshot "^29.7.0" + +"@jest/fake-timers@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" + integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== + dependencies: + "@jest/types" "^29.6.3" + "@sinonjs/fake-timers" "^10.0.2" + "@types/node" "*" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-util "^29.7.0" + +"@jest/globals@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" + integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/types" "^29.6.3" + jest-mock "^29.7.0" + +"@jest/reporters@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" + integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" + "@types/node" "*" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^6.0.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + jest-worker "^29.7.0" + slash "^3.0.0" + string-length "^4.0.1" + strip-ansi "^6.0.0" + v8-to-istanbul "^9.0.1" + +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== + dependencies: + "@sinclair/typebox" "^0.27.8" + +"@jest/source-map@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" + integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== + dependencies: + "@jridgewell/trace-mapping" "^0.3.18" + callsites "^3.0.0" + graceful-fs "^4.2.9" + +"@jest/test-result@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c" + integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== + dependencies: + "@jest/console" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" + integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== + dependencies: + "@jest/test-result" "^29.7.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + slash "^3.0.0" + +"@jest/transform@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" + integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== + dependencies: + "@babel/core" "^7.11.6" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + write-file-atomic "^4.0.2" + +"@jest/types@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" + integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== + dependencies: + "@jest/schemas" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jridgewell/gen-mapping@^0.3.5": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" + integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" +"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== -assert-plus@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== -assert@^1.4.0, assert@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== dependencies: - util "0.10.3" + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" -astw@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/astw/-/astw-2.2.0.tgz#7bd41784d32493987aeb239b6b4e1c57a873b917" +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.25" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== dependencies: - acorn "^4.0.3" + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" -async-each@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" -async@1.x, async@^1.4.0: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -async@^2.1.4: - version "2.5.0" - resolved "https://registry.yarnpkg.com/async/-/async-2.5.0.tgz#843190fd6b7357a0b9e1c956edddd5ec8462b54d" +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: - lodash "^4.14.0" + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== -aws-sign2@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== -aws4@^1.2.1: - version "1.6.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" +"@sinonjs/commons@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" + integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== + dependencies: + type-detect "4.0.8" -babel-code-frame@^6.16.0, babel-code-frame@^6.20.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" +"@sinonjs/fake-timers@^10.0.2": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" + integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== dependencies: - chalk "^1.1.0" - esutils "^2.0.2" - js-tokens "^3.0.0" + "@sinonjs/commons" "^3.0.0" -backo2@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" +"@tsconfig/node10@^1.0.7": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== -base64-arraybuffer@0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== -base64-js@^1.0.2, base64-js@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886" +"@tsconfig/node16@^1.0.2": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== -base64id@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" +"@types/assert@^1.5.10": + version "1.5.10" + resolved "https://registry.yarnpkg.com/@types/assert/-/assert-1.5.10.tgz#27eceb3e0705d1d76a4ec0a5586a48921d209eee" + integrity sha512-qEO+AUgYab7GVbeDDgUNCU3o0aZUoIMpNAe+w5LDbRxfxQX7vQAdDgwj1AroX+i8KaV56FWg0srXlSZROnsrIQ== -bcrypt-pbkdf@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" +"@types/babel__core@^7.1.14": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" + integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== dependencies: - tweetnacl "^0.14.3" - -beeper@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" -better-assert@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" +"@types/babel__generator@*": + version "7.6.8" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab" + integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== dependencies: - callsite "1.0.0" - -binary-extensions@^1.0.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.9.0.tgz#66506c16ce6f4d6928a5b3cd6a33ca41e941e37b" - -blob@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" - -block-stream@*: - version "0.0.9" - resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" - dependencies: - inherits "~2.0.0" - -bluebird@^3.3.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" - -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" - -body-parser@^1.16.1: - version "1.17.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.17.2.tgz#f8892abc8f9e627d42aedafbca66bf5ab99104ee" - dependencies: - bytes "2.4.0" - content-type "~1.0.2" - debug "2.6.7" - depd "~1.1.0" - http-errors "~1.6.1" - iconv-lite "0.4.15" - on-finished "~2.3.0" - qs "6.4.0" - raw-body "~2.2.0" - type-is "~1.6.15" - -boom@2.x.x: - version "2.10.1" - resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" - dependencies: - hoek "2.x.x" - -boxen@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-0.6.0.tgz#8364d4248ac34ff0ef1b2f2bf49a6c60ce0d81b6" - dependencies: - ansi-align "^1.1.0" - camelcase "^2.1.0" - chalk "^1.1.1" - cli-boxes "^1.0.0" - filled-array "^1.0.0" - object-assign "^4.0.1" - repeating "^2.0.0" - string-width "^1.0.1" - widest-line "^1.0.0" + "@babel/types" "^7.0.0" -brace-expansion@^1.1.7: - version "1.1.8" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" +"@types/babel__template@*": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" + integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" -braces@^0.1.2: - version "0.1.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6" +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.5.tgz#7b7502be0aa80cc4ef22978846b983edaafcd4dd" + integrity sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ== dependencies: - expand-range "^0.1.0" + "@babel/types" "^7.20.7" -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" +"@types/cli@^0.11.25": + version "0.11.25" + resolved "https://registry.yarnpkg.com/@types/cli/-/cli-0.11.25.tgz#d17305a56d2ccc8ed084aba1000938417c481f65" + integrity sha512-dO7U6Q+6f7IIDtPwFe3RGIC7QBKEq6zPmQ2UaNt6NskhrupafbrftJ+PzzfMnxCL+y1oGKMJb7vC6vvSGEIElg== dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" + "@types/node" "*" -brorand@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" +"@types/get-stdin@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@types/get-stdin/-/get-stdin-7.0.0.tgz#54ebd05a5c5cbdaeded7b8133752ff44e44fe534" + integrity sha512-kiDwIsKQvsLRvtBOnasij+6eChbCzcUT7OyVvrC5BEOE4QSKbpnwejEp0xND/9sIdOTfiu+BBl3zsB16MJ3Fww== + dependencies: + get-stdin "*" -browser-pack@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/browser-pack/-/browser-pack-6.0.2.tgz#f86cd6cef4f5300c8e63e07a4d512f65fbff4531" +"@types/glob@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-8.1.0.tgz#b63e70155391b0584dce44e7ea25190bbc38f2fc" + integrity sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w== dependencies: - JSONStream "^1.0.3" - combine-source-map "~0.7.1" - defined "^1.0.0" - through2 "^2.0.0" - umd "^3.0.0" + "@types/minimatch" "^5.1.2" + "@types/node" "*" -browser-resolve@^1.11.0, browser-resolve@^1.7.0: - version "1.11.2" - resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce" +"@types/graceful-fs@^4.1.3": + version "4.1.9" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" + integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== dependencies: - resolve "1.1.7" + "@types/node" "*" -browser-stdout@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" + integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a" +"@types/istanbul-lib-report@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" + integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== dependencies: - buffer-xor "^1.0.2" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.0" - inherits "^2.0.1" + "@types/istanbul-lib-coverage" "*" -browserify-cipher@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a" +"@types/istanbul-reports@^3.0.0": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" + integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" + "@types/istanbul-lib-report" "*" -browserify-des@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd" +"@types/jest@^29.5.12": + version "29.5.12" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.12.tgz#7f7dc6eb4cf246d2474ed78744b05d06ce025544" + integrity sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw== dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" + expect "^29.0.0" + pretty-format "^29.0.0" -browserify-rsa@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" +"@types/json-schema@^7.0.12": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + +"@types/minimatch@^5.1.2": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" + integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== + +"@types/node@*", "@types/node@^20.11.30": + version "20.11.30" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.30.tgz#9c33467fc23167a347e73834f788f4b9f399d66f" + integrity sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw== dependencies: - bn.js "^4.1.0" - randombytes "^2.0.1" + undici-types "~5.26.4" -browserify-sign@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" +"@types/semver@^7.5.0": + version "7.5.8" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" + integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== + +"@types/stack-utils@^2.0.0": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" + integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== + +"@types/yargs-parser@*": + version "21.0.3" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" + integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== + +"@types/yargs@^17.0.8": + version "17.0.32" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" + integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/eslint-plugin@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz#30830c1ca81fd5f3c2714e524c4303e0194f9cd3" + integrity sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA== + dependencies: + "@eslint-community/regexpp" "^4.5.1" + "@typescript-eslint/scope-manager" "6.21.0" + "@typescript-eslint/type-utils" "6.21.0" + "@typescript-eslint/utils" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.4" + natural-compare "^1.4.0" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/parser@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.21.0.tgz#af8fcf66feee2edc86bc5d1cf45e33b0630bf35b" + integrity sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ== + dependencies: + "@typescript-eslint/scope-manager" "6.21.0" + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/typescript-estree" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz#ea8a9bfc8f1504a6ac5d59a6df308d3a0630a2b1" + integrity sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg== + dependencies: + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" + +"@typescript-eslint/type-utils@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz#6473281cfed4dacabe8004e8521cee0bd9d4c01e" + integrity sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag== + dependencies: + "@typescript-eslint/typescript-estree" "6.21.0" + "@typescript-eslint/utils" "6.21.0" + debug "^4.3.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/types@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d" + integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== + +"@typescript-eslint/typescript-estree@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz#c47ae7901db3b8bddc3ecd73daff2d0895688c46" + integrity sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ== + dependencies: + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + minimatch "9.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/utils@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.21.0.tgz#4714e7a6b39e773c1c8e97ec587f520840cd8134" + integrity sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "6.21.0" + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/typescript-estree" "6.21.0" + semver "^7.5.4" + +"@typescript-eslint/visitor-keys@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz#87a99d077aa507e20e238b11d56cc26ade45fe47" + integrity sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A== + dependencies: + "@typescript-eslint/types" "6.21.0" + eslint-visitor-keys "^3.4.1" + +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^8.1.1: + version "8.3.2" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" + integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== + +acorn@^8.4.1, acorn@^8.9.0: + version "8.11.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + +ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-escapes@^4.2.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== dependencies: - bn.js "^4.1.1" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.2" - elliptic "^6.0.0" - inherits "^2.0.1" - parse-asn1 "^5.0.0" + type-fest "^0.21.3" -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: - pako "~1.0.5" + color-convert "^1.9.0" -browserify-zlib@~0.1.2: - version "0.1.4" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" - dependencies: - pako "~0.2.0" - -browserify@^14.0.0, browserify@^14.4.0: - version "14.4.0" - resolved "https://registry.yarnpkg.com/browserify/-/browserify-14.4.0.tgz#089a3463af58d0e48d8cd4070b3f74654d5abca9" - dependencies: - JSONStream "^1.0.3" - assert "^1.4.0" - browser-pack "^6.0.1" - browser-resolve "^1.11.0" - browserify-zlib "~0.1.2" - buffer "^5.0.2" - cached-path-relative "^1.0.0" - concat-stream "~1.5.1" - console-browserify "^1.1.0" - constants-browserify "~1.0.0" - crypto-browserify "^3.0.0" - defined "^1.0.0" - deps-sort "^2.0.0" - domain-browser "~1.1.0" - duplexer2 "~0.1.2" - events "~1.1.0" - glob "^7.1.0" - has "^1.0.0" - htmlescape "^1.1.0" - https-browserify "^1.0.0" - inherits "~2.0.1" - insert-module-globals "^7.0.0" - labeled-stream-splicer "^2.0.0" - module-deps "^4.0.8" - os-browserify "~0.1.1" - parents "^1.0.1" - path-browserify "~0.0.0" - process "~0.11.0" - punycode "^1.3.2" - querystring-es3 "~0.2.0" - read-only-stream "^2.0.0" - readable-stream "^2.0.2" - resolve "^1.1.4" - shasum "^1.0.0" - shell-quote "^1.6.1" - stream-browserify "^2.0.0" - stream-http "^2.0.0" - string_decoder "~1.0.0" - subarg "^1.0.0" - syntax-error "^1.1.1" - through2 "^2.0.0" - timers-browserify "^1.0.1" - tty-browserify "~0.0.0" - url "~0.11.0" - util "~0.10.1" - vm-browserify "~0.0.1" - xtend "^4.0.0" - -buffer-xor@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" +ansi-styles@^4.0.0, ansi-styles@^4.1.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" -buffer@^5.0.2, buffer@^5.0.6: - version "5.0.7" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.0.7.tgz#570a290b625cf2603290c1149223d27ccf04db97" +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +anymatch@^3.0.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" + normalize-path "^3.0.0" + picomatch "^2.0.4" -builtin-modules@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== -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" +argparse@^1.0.7: + version "1.0.9" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" + dependencies: + sprintf-js "~1.0.2" -bytes@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -cached-path-relative@^1.0.0: +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +babel-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" + integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== + dependencies: + "@jest/transform" "^29.7.0" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^29.6.3" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" + integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.1.14" + "@types/babel__traverse" "^7.0.6" + +babel-preset-current-node-syntax@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.0.1.tgz#d09c4b52800aa4c078e2dd81a869aac90d2e54e7" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + +babel-preset-jest@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" + integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== + dependencies: + babel-plugin-jest-hoist "^29.6.3" + babel-preset-current-node-syntax "^1.0.0" -caller-path@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + +brace-expansion@^1.1.7: + version "1.1.8" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" dependencies: - callsites "^0.2.0" + balanced-match "^1.0.0" + concat-map "0.0.1" -callsite@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" -callsites@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" +braces@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" -camelcase-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" +browserslist@^4.22.2: + version "4.23.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" + integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== dependencies: - camelcase "^2.0.0" - map-obj "^1.0.0" + caniuse-lite "^1.0.30001587" + electron-to-chromium "^1.4.668" + node-releases "^2.0.14" + update-browserslist-db "^1.0.13" -camelcase@^1.0.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" +bs-logger@0.x: + version "0.2.6" + resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== + dependencies: + fast-json-stable-stringify "2.x" -camelcase@^2.0.0, camelcase@^2.1.0: +bser@2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" -capture-stack-trace@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -center-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" - dependencies: - align-text "^0.1.3" - lazy-cache "^1.0.3" +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== -chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - 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" +camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -chalk@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e" +caniuse-lite@^1.0.30001587: + version "1.0.30001600" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001600.tgz#93a3ee17a35aa6a9f0c6ef1b2ab49507d1ab9079" + integrity sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ== + +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== dependencies: - ansi-styles "^3.1.0" + ansi-styles "^3.2.1" escape-string-regexp "^1.0.5" - supports-color "^4.0.0" - -chokidar@^1.0.0, chokidar@^1.4.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" - dependencies: - anymatch "^1.3.0" - async-each "^1.0.0" - glob-parent "^2.0.0" - inherits "^2.0.1" - is-binary-path "^1.0.0" - is-glob "^2.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.0.0" - optionalDependencies: - fsevents "^1.0.0" + supports-color "^5.3.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" +chalk@^4.0.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" + ansi-styles "^4.1.0" + supports-color "^7.1.0" -circular-json@^0.3.1: - version "0.3.3" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" - -cli-boxes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" - -cli-cursor@^1.0.1: +char-regex@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" - dependencies: - restore-cursor "^1.0.1" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== -cli-width@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a" +ci-info@^3.2.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== + +cjs-module-lexer@^1.0.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107" + integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ== cli@^1.0.1: version "1.0.1" @@ -636,29 +1168,23 @@ cli@^1.0.1: exit "0.1.2" glob "^7.1.1" -cliui@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== dependencies: - center-align "^0.1.1" - right-align "^0.1.1" - wordwrap "0.0.2" - -clone-stats@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" - -clone@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" +collect-v8-coverage@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" + integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== color-convert@^1.9.0: version "1.9.0" @@ -666,3364 +1192,1860 @@ color-convert@^1.9.0: dependencies: color-name "^1.1.1" +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.1: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" -colors@^1.1.0, colors@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" +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== -combine-lists@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/combine-lists/-/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6" - dependencies: - lodash "^4.5.0" +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" -combine-source-map@~0.7.1: - version "0.7.2" - resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.7.2.tgz#0870312856b307a87cc4ac486f3a9a62aeccc09e" +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +create-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" + integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== + dependencies: + "@jest/types" "^29.6.3" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-config "^29.7.0" + jest-util "^29.7.0" + prompts "^2.0.1" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cross-env@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" + integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== dependencies: - convert-source-map "~1.1.0" - inline-source-map "~0.6.0" - lodash.memoize "~3.0.3" - source-map "~0.5.3" + cross-spawn "^7.0.1" -combined-stream@^1.0.5, combined-stream@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" +cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: - delayed-stream "~1.0.0" + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" -commander@2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" +debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: - graceful-readlink ">= 1.0.0" + ms "2.1.2" -component-bind@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" +dedent@^1.0.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.1.tgz#4f3fc94c8b711e9bb2800d185cd6ad20f2a90aff" + integrity sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg== -component-emitter@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3" +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== -component-emitter@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" +deepmerge@^4.2.2: + version "4.3.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== -component-inherit@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" +diff-sequences@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" + integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== -concat-stream@^1.4.6, concat-stream@~1.5.0, concat-stream@~1.5.1: - version "1.5.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.2.tgz#708978624d856af41a5a741defdd261da752c266" - dependencies: - inherits "~2.0.1" - readable-stream "~2.0.0" - typedarray "~0.0.5" +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== -configstore@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-2.1.0.tgz#737a3a7036e9886102aa6099e47bb33ab1aba1a1" - dependencies: - dot-prop "^3.0.0" - graceful-fs "^4.1.2" - mkdirp "^0.5.0" - object-assign "^4.0.1" - os-tmpdir "^1.0.0" - osenv "^0.1.0" - uuid "^2.0.1" - write-file-atomic "^1.1.2" - xdg-basedir "^2.0.0" - -connect@^3.6.0: - version "3.6.3" - resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.3.tgz#f7320d46a25b4be7b483a2236517f24b1e27e301" - dependencies: - debug "2.6.8" - finalhandler "1.0.4" - parseurl "~1.3.1" - utils-merge "1.0.0" - -console-browserify@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== dependencies: - date-now "^0.1.4" + path-type "^4.0.0" -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" -constants-browserify@^1.0.0, constants-browserify@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" +electron-to-chromium@^1.4.668: + version "1.4.715" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.715.tgz#bb16bcf2a3537962fccfa746b5c98c5f7404ff46" + integrity sha512-XzWNH4ZSa9BwVUQSDorPWAUQ5WGuYz7zJUNpNif40zFCiCl20t8zgylmreNmn26h5kiyw2lg7RfTmeMBsDklqg== -content-type@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed" +emittery@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" + integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== -convert-source-map@^1.1.3: - version "1.5.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" +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== -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" +error-ex@^1.3.1: + 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" -cookie@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" +escalade@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== -core-js@^2.2.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.0.tgz#569c050918be6486b3837552028ae0466b717086" +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" -core-util-is@1.0.2, core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== -create-ecdh@^4.0.0: +escape-string-regexp@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" - dependencies: - bn.js "^4.1.0" - elliptic "^6.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -create-error-class@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" - dependencies: - capture-stack-trace "^1.0.0" +eslint-config-prettier@9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" + integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== -create-hash@^1.1.0, create-hash@^1.1.1, create-hash@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd" +eslint-plugin-unused-imports@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-3.0.0.tgz#d25175b0072ff16a91892c3aa72a09ca3a9e69e7" + integrity sha512-sduiswLJfZHeeBJ+MQaG+xYzSWdRXoSw61DpU13mzWumCkR0ufD0HmO4kdNokjrkluMHpj/7PJeN35pgbhW3kw== dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - ripemd160 "^2.0.0" - sha.js "^2.4.0" + eslint-rule-composer "^0.3.0" -create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: - version "1.1.6" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06" - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" +eslint-rule-composer@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz#79320c927b0c5c0d3d3d2b76c8b4a488f25bbaf9" + integrity sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg== + +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint@8.57.0: + version "8.57.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" + integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.57.0" + "@humanwhocodes/config-array" "^0.11.14" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" -cryptiles@2.x.x: - version "2.0.5" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" - dependencies: - boom "2.x.x" - -crypto-browserify@^3.0.0, crypto-browserify@^3.11.1: - version "3.11.1" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.11.1.tgz#948945efc6757a400d6e5e5af47194d10064279f" - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - -currently-unhandled@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== dependencies: - array-find-index "^1.0.1" + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" -custom-event@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" +esprima@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" -d@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" +esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== dependencies: - es5-ext "^0.10.9" + estraverse "^5.1.0" -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: - assert-plus "^1.0.0" + estraverse "^5.2.0" -date-format@^0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/date-format/-/date-format-0.0.0.tgz#09206863ab070eb459acea5542cbd856b11966b3" +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== -date-now@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" +esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" -dateformat@^1.0.11, dateformat@^1.0.6: - version "1.0.12" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9" - dependencies: - get-stdin "^4.0.1" - meow "^3.3.0" +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +exit@0.1.2, exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" -debug@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" +expect@^29.0.0, expect@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" + integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== dependencies: - ms "0.7.1" + "@jest/expect-utils" "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" -debug@2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c" - dependencies: - ms "0.7.2" +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -debug@2.6.7: - version "2.6.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.7.tgz#92bad1f6d05bbb6bba22cca88bcd0ec894c2861e" +fast-glob@^3.2.9: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== dependencies: - ms "2.0.0" + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" -debug@2.6.8, debug@^2.1.1, debug@^2.2.0: - version "2.6.8" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" - dependencies: - ms "2.0.0" +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -debug@^0.7.2: - version "0.7.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39" - -decamelize@^1.0.0, decamelize@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - -deep-extend@~0.4.0: - version "0.4.2" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" - -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - -defined@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" - -del@^2.0.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" - dependencies: - globby "^5.0.0" - is-path-cwd "^1.0.0" - is-path-in-cwd "^1.0.0" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - rimraf "^2.2.8" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - -depd@1.1.1, depd@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" - -deps-sort@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/deps-sort/-/deps-sort-2.0.0.tgz#091724902e84658260eb910748cccd1af6e21fb5" - dependencies: - JSONStream "^1.0.3" - shasum "^1.0.0" - subarg "^1.0.0" - through2 "^2.0.0" - -des.js@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -detective@^4.0.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/detective/-/detective-4.5.0.tgz#6e5a8c6b26e6c7a254b1c6b6d7490d98ec91edd1" - dependencies: - acorn "^4.0.3" - defined "^1.0.0" - -di@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" - -diff@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" - -diff@^3.0.1, diff@^3.1.0, diff@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.0.tgz#056695150d7aa93237ca7e378ac3b1682b7963b9" - -diffie-hellman@^5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e" - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -doctrine@^0.7.2: - version "0.7.2" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-0.7.2.tgz#7cb860359ba3be90e040b26b729ce4bfa654c523" - dependencies: - esutils "^1.1.6" - isarray "0.0.1" - -doctrine@^1.2.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" - dependencies: - esutils "^2.0.2" - isarray "^1.0.0" - -dom-serialize@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" - dependencies: - custom-event "~1.0.0" - ent "~2.2.0" - extend "^3.0.0" - void-elements "^2.0.0" - -dom-walk@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" - -domain-browser@^1.1.7, domain-browser@~1.1.0: - version "1.1.7" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" - -dot-prop@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" - dependencies: - is-obj "^1.0.0" - -duplexer2@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" - dependencies: - readable-stream "~1.1.9" - -duplexer2@^0.1.2, duplexer2@^0.1.4, duplexer2@~0.1.0, duplexer2@~0.1.2: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" - dependencies: - readable-stream "^2.0.2" - -ecc-jsbn@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" - dependencies: - jsbn "~0.1.0" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - -elliptic@^6.0.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" - dependencies: - bn.js "^4.4.0" - brorand "^1.0.1" - hash.js "^1.0.0" - hmac-drbg "^1.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.0" - -encodeurl@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" - -engine.io-client@1.8.3: - version "1.8.3" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.8.3.tgz#1798ed93451246453d4c6f635d7a201fe940d5ab" - dependencies: - component-emitter "1.2.1" - component-inherit "0.0.3" - debug "2.3.3" - engine.io-parser "1.3.2" - has-cors "1.1.0" - indexof "0.0.1" - parsejson "0.0.3" - parseqs "0.0.5" - parseuri "0.0.5" - ws "1.1.2" - xmlhttprequest-ssl "1.5.3" - yeast "0.1.2" - -engine.io-parser@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.3.2.tgz#937b079f0007d0893ec56d46cb220b8cb435220a" - dependencies: - after "0.8.2" - arraybuffer.slice "0.0.6" - base64-arraybuffer "0.1.5" - blob "0.0.4" - has-binary "0.1.7" - wtf-8 "1.0.0" - -engine.io@1.8.3: - version "1.8.3" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.8.3.tgz#8de7f97895d20d39b85f88eeee777b2bd42b13d4" - dependencies: - accepts "1.3.3" - base64id "1.0.0" - cookie "0.3.1" - debug "2.3.3" - engine.io-parser "1.3.2" - ws "1.1.2" - -ent@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" - -error-ex@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" - dependencies: - is-arrayish "^0.2.1" - -es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14: - version "0.10.26" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.26.tgz#51b2128a531b70c4f6764093a73cbebb82186372" - dependencies: - es6-iterator "2" - es6-symbol "~3.1" - -es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.1.tgz#8e319c9f0453bf575d374940a655920e59ca5512" - dependencies: - d "1" - es5-ext "^0.10.14" - es6-symbol "^3.1" - -es6-map@^0.1.3: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-set "~0.1.5" - es6-symbol "~3.1.1" - event-emitter "~0.3.5" - -es6-promise@^4.0.5: - version "4.1.1" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.1.1.tgz#8811e90915d9a0dba36274f0b242dbda78f9c92a" - -es6-set@~0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-symbol "3.1.1" - event-emitter "~0.3.5" - -es6-symbol@3.1.1, es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1, es6-symbol@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" - dependencies: - d "1" - es5-ext "~0.10.14" - -es6-weak-map@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" - dependencies: - d "1" - es5-ext "^0.10.14" - es6-iterator "^2.0.1" - es6-symbol "^3.1.1" - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, 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" - -escodegen@1.8.x: - version "1.8.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" - dependencies: - esprima "^2.7.1" - estraverse "^1.9.1" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.2.0" - -escope@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" - dependencies: - es6-map "^0.1.3" - es6-weak-map "^2.0.1" - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint@3.13.1: - version "3.13.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.13.1.tgz#564d2646b5efded85df96985332edd91a23bff25" - dependencies: - babel-code-frame "^6.16.0" - chalk "^1.1.3" - concat-stream "^1.4.6" - debug "^2.1.1" - doctrine "^1.2.2" - escope "^3.6.0" - espree "^3.3.1" - estraverse "^4.2.0" - esutils "^2.0.2" - file-entry-cache "^2.0.0" - glob "^7.0.3" - globals "^9.14.0" - ignore "^3.2.0" - imurmurhash "^0.1.4" - inquirer "^0.12.0" - is-my-json-valid "^2.10.0" - is-resolvable "^1.0.0" - js-yaml "^3.5.1" - json-stable-stringify "^1.0.0" - levn "^0.3.0" - lodash "^4.0.0" - mkdirp "^0.5.0" - natural-compare "^1.4.0" - optionator "^0.8.2" - path-is-inside "^1.0.1" - pluralize "^1.2.1" - progress "^1.1.8" - require-uncached "^1.0.2" - shelljs "^0.7.5" - strip-bom "^3.0.0" - strip-json-comments "~2.0.1" - table "^3.7.8" - text-table "~0.2.0" - user-home "^2.0.0" - -espree@^3.3.1: - version "3.5.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.0.tgz#98358625bdd055861ea27e2867ea729faf463d8d" - dependencies: - acorn "^5.1.1" - acorn-jsx "^3.0.0" - -esprima@2.7.x, esprima@^2.7.1: - version "2.7.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" - -esprima@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" - -esrecurse@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.0.tgz#fa9568d98d3823f9a41d91e902dcab9ea6e5b163" - dependencies: - estraverse "^4.1.0" - object-assign "^4.0.1" - -estraverse@^1.9.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" - -estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" - -esutils@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-1.1.6.tgz#c01ccaa9ae4b897c6d0c3e210ae52f3c7a844375" - -esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" - -event-emitter@~0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" - dependencies: - d "1" - es5-ext "~0.10.14" - -eventemitter3@1.x.x: - version "1.2.0" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" - -events@^1.1.1, events@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" - -evp_bytestokey@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz#497b66ad9fef65cd7c08a6180824ba1476b66e53" - dependencies: - create-hash "^1.1.1" - -exit-hook@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" - -exit@0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - -expand-braces@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea" - dependencies: - array-slice "^0.2.3" - array-unique "^0.2.1" - braces "^0.1.2" - -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - dependencies: - is-posix-bracket "^0.1.0" - -expand-range@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044" - dependencies: - is-number "^0.1.1" - repeat-string "^0.2.2" - -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - dependencies: - fill-range "^2.1.0" - -extend@^3.0.0, extend@~3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" - -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - dependencies: - is-extglob "^1.0.0" - -extsprintf@1.3.0, extsprintf@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - -fancy-log@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.0.tgz#45be17d02bb9917d60ccffd4995c999e6c8c9948" - dependencies: - chalk "^1.1.1" - time-stamp "^1.0.0" - -fast-levenshtein@~2.0.4: +fast-levenshtein@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== -figures@^1.3.5: - version "1.7.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" - dependencies: - escape-string-regexp "^1.0.5" - object-assign "^4.1.0" - -file-entry-cache@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" +fastq@^1.6.0: + version "1.17.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== dependencies: - flat-cache "^1.2.1" - object-assign "^4.0.1" + reusify "^1.0.4" -filename-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" - -fill-range@^2.1.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" +fb-watchman@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^1.1.3" - repeat-element "^1.1.2" - repeat-string "^1.5.2" + bser "2.1.1" -filled-array@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/filled-array/-/filled-array-1.1.0.tgz#c3c4f6c663b923459a9aa29912d2d031f1507f84" - -finalhandler@1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.4.tgz#18574f2e7c4b98b8ae3b230c21f201f31bdb3fb7" +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== dependencies: - debug "2.6.8" - encodeurl "~1.0.1" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.1" - statuses "~1.3.1" - unpipe "~1.0.0" + flat-cache "^3.0.4" -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" + to-regex-range "^5.0.1" -findup-sync@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.3.0.tgz#37930aa5d816b777c03445e1966cc6790a4c0b16" +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: - glob "~5.0.0" + locate-path "^5.0.0" + path-exists "^4.0.0" -flat-cache@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96" +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: - circular-json "^0.3.1" - del "^2.0.2" - graceful-fs "^4.1.2" - write "^0.2.1" + locate-path "^6.0.0" + path-exists "^4.0.0" -for-in@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - -for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" +flat-cache@^3.0.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== dependencies: - for-in "^1.0.1" + flatted "^3.2.9" + keyv "^4.5.3" + rimraf "^3.0.2" -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" +flatted@^3.2.9: + version "3.3.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" + integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== -form-data@~2.1.1: - version "2.1.4" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" +foreground-child@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" + integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.5" - mime-types "^2.1.12" + cross-spawn "^7.0.0" + signal-exit "^4.0.1" fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" -fsevents@^1.0.0: +fsevents@^2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.2.tgz#3282b713fb3ad80ede0e9fcf4611b5aa6fc033f4" - dependencies: - nan "^2.3.0" - node-pre-gyp "^0.6.36" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== -fstream-ignore@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" - dependencies: - fstream "^1.0.0" - inherits "2" - minimatch "^3.0.0" +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: - version "1.0.11" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -function-bind@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771" - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -generate-function@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" +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== -generate-object-property@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" - dependencies: - is-property "^1.0.0" +get-stdin@*: + version "9.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-9.0.0.tgz#3983ff82e03d56f1b2ea0d3e60325f39d703a575" + integrity sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA== -get-stdin@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" +glob-parent@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: - assert-plus "^1.0.0" + is-glob "^4.0.1" -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" + is-glob "^4.0.3" -glob-parent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" +glob@^10.3.10: + version "10.3.10" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" + integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== dependencies: - is-glob "^2.0.0" + foreground-child "^3.1.0" + jackspeak "^2.3.5" + minimatch "^9.0.1" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry "^1.10.1" -glob@7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" +glob@^7.1.1: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.0.2" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^5.0.15, glob@~5.0.0: - version "5.0.15" - resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" - dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "2 || 3" + minimatch "^3.0.4" once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.0, glob@^7.1.1, glob@^7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" +glob@^7.1.3, glob@^7.1.4: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.0.4" + minimatch "^3.1.1" once "^1.3.0" path-is-absolute "^1.0.0" -global@^4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" - dependencies: - min-document "^2.19.0" - process "~0.5.1" - -globals@^9.14.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" +globals@^11.1.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== -globby@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" +globals@^13.19.0: + version "13.24.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== dependencies: - array-union "^1.0.1" - arrify "^1.0.0" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -glogg@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.0.tgz#7fe0f199f57ac906cf512feead8f90ee4a284fc5" - dependencies: - sparkles "^1.0.0" - -got@^5.0.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/got/-/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35" - dependencies: - create-error-class "^3.0.1" - duplexer2 "^0.1.4" - is-redirect "^1.0.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - lowercase-keys "^1.0.0" - node-status-codes "^1.0.0" - object-assign "^4.0.1" - parse-json "^2.1.0" - pinkie-promise "^2.0.0" - read-all-stream "^3.0.0" - readable-stream "^2.0.5" - timed-out "^3.0.0" - unzip-response "^1.0.2" - url-parse-lax "^1.0.0" - -graceful-fs@^4.1.11, graceful-fs@^4.1.2: - version "4.1.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" - -"graceful-readlink@>= 1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" + type-fest "^0.20.2" -growl@1.9.2: - version "1.9.2" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" - -gulp-util@3.0.7: - version "3.0.7" - resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.7.tgz#78925c4b8f8b49005ac01a011c557e6218941cbb" - dependencies: - array-differ "^1.0.0" - array-uniq "^1.0.2" - beeper "^1.0.0" - chalk "^1.0.0" - dateformat "^1.0.11" - fancy-log "^1.1.0" - gulplog "^1.0.0" - has-gulplog "^0.1.0" - lodash._reescape "^3.0.0" - lodash._reevaluate "^3.0.0" - lodash._reinterpolate "^3.0.0" - lodash.template "^3.0.0" - minimist "^1.1.0" - multipipe "^0.1.2" - object-assign "^3.0.0" - replace-ext "0.0.1" - through2 "^2.0.0" - vinyl "^0.5.0" - -gulplog@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== dependencies: - glogg "^1.0.0" + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" -handlebars@^4.0.1: - version "4.0.10" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.10.tgz#3d30c718b09a3d96f23ea4cc1f403c4d3ba9ff4f" - dependencies: - async "^1.4.0" - optimist "^0.6.1" - source-map "^0.4.4" - optionalDependencies: - uglify-js "^2.6" +graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== -har-schema@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== -har-validator@~4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" - dependencies: - ajv "^4.9.1" - har-schema "^1.0.5" +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - dependencies: - ansi-regex "^2.0.0" +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-binary@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/has-binary/-/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c" +hasown@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== dependencies: - isarray "0.0.1" - -has-cors@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" + function-bind "^1.1.2" -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" +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== -has-flag@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -has-gulplog@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce" - dependencies: - sparkles "^1.0.0" +i18n-proto@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/i18n-proto/-/i18n-proto-1.0.5.tgz#5688a311022b46ca25612a15d53bee649930da0d" -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" +"i18n-stex@https://github.com/ctizen/stex.git": + version "1.0.13" + resolved "https://github.com/ctizen/stex.git#713bdc48114d728524b5f097e264fd47bf5475b9" -has@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" - dependencies: - function-bind "^1.0.2" +ignore@^5.2.0, ignore@^5.2.4: + version "5.3.1" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" + integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== -hash-base@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1" +import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: - inherits "^2.0.1" + parent-module "^1.0.0" + resolve-from "^4.0.0" -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" +import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.0" - -hat@^0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/hat/-/hat-0.0.3.tgz#bb014a9e64b3788aed8005917413d4ff3d502d8a" + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" -hawk@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" - dependencies: - boom "2.x.x" - cryptiles "2.x.x" - hoek "2.x.x" - sntp "1.x.x" +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" -hmac-drbg@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -hoek@2.x.x: - version "2.16.3" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + once "^1.3.0" + wrappy "1" -hosted-git-info@^2.1.4: - version "2.5.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" +inherits@2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" -htmlescape@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351" +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" -http-errors@~1.6.1: - version "1.6.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" +is-core-module@^2.13.0: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== dependencies: - depd "1.1.1" - inherits "2.0.3" - setprototypeof "1.0.3" - statuses ">= 1.3.1 < 2" + hasown "^2.0.0" -http-proxy@^1.13.0: - version "1.16.2" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742" - dependencies: - eventemitter3 "1.x.x" - requires-port "1.x.x" +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== -http-signature@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" - dependencies: - assert-plus "^0.2.0" - jsprim "^1.2.2" - sshpk "^1.7.0" +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== -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== -i18n-po-json@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/i18n-po-json/-/i18n-po-json-1.0.5.tgz#d6c8d357bdec672d09de38b2447960ca24cb0f23" +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: - cli "^1.0.1" + is-extglob "^2.1.1" -i18n-proto@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/i18n-proto/-/i18n-proto-1.0.5.tgz#5688a311022b46ca25612a15d53bee649930da0d" +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -i18n-stex@1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/i18n-stex/-/i18n-stex-1.0.9.tgz#cde638d2c4ed14dc1ec178aaf84162cb28cc4d7a" - dependencies: - cli "^1.0.1" - glob "^7.1.2" +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== -iconv-lite@0.4.15: - version "0.4.15" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb" - -ieee754@^1.1.4, ieee754@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" - -ignore@^3.2.0: - version "3.3.3" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.3.tgz#432352e57accd87ab3110e82d3fea0e47812156d" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - -indent-string@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" - dependencies: - repeating "^2.0.0" - -indexof@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - -ini@~1.3.0: - version "1.3.4" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" - -inline-source-map@~0.6.0: - version "0.6.2" - resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5" - dependencies: - source-map "~0.5.3" - -inquirer@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e" - dependencies: - ansi-escapes "^1.1.0" - ansi-regex "^2.0.0" - chalk "^1.0.0" - cli-cursor "^1.0.1" - cli-width "^2.0.0" - figures "^1.3.5" - lodash "^4.3.0" - readline2 "^1.0.1" - run-async "^0.1.0" - rx-lite "^3.1.2" - string-width "^1.0.1" - strip-ansi "^3.0.0" - through "^2.3.6" - -insert-module-globals@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-7.0.1.tgz#c03bf4e01cb086d5b5e5ace8ad0afe7889d638c3" - dependencies: - JSONStream "^1.0.3" - combine-source-map "~0.7.1" - concat-stream "~1.5.1" - is-buffer "^1.1.0" - lexical-scope "^1.2.0" - process "~0.11.0" - through2 "^2.0.0" - xtend "^4.0.0" - -interpret@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - dependencies: - binary-extensions "^1.0.0" - -is-buffer@^1.1.0, is-buffer@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" - -is-builtin-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" - dependencies: - builtin-modules "^1.0.0" - -is-dotfile@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" - -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" - dependencies: - is-primitive "^2.0.0" - -is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - -is-finite@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - -is-glob@^2.0.0, is-glob@^2.0.1: +is-stream@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" - dependencies: - is-extglob "^1.0.0" - -is-my-json-valid@^2.10.0: - version "2.16.0" - resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693" - dependencies: - generate-function "^2.0.0" - generate-object-property "^1.1.0" - jsonpointer "^4.0.0" - xtend "^4.0.0" - -is-npm@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" - -is-number@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" - -is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - dependencies: - kind-of "^3.0.2" - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - dependencies: - kind-of "^3.0.2" - -is-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - -is-path-cwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" - -is-path-in-cwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" - dependencies: - is-path-inside "^1.0.0" - -is-path-inside@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f" - dependencies: - path-is-inside "^1.0.1" - -is-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - -is-property@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" - -is-redirect@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" - -is-resolvable@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62" - dependencies: - tryit "^1.0.1" - -is-retry-allowed@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" - -is-stream@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - -is-utf8@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - -isarray@0.0.1, isarray@~0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - -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" - -isbinaryfile@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - dependencies: - isarray "1.0.0" - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - -istanbul@0.4.5, istanbul@^0.4.0: - version "0.4.5" - resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b" - dependencies: - abbrev "1.0.x" - async "1.x" - escodegen "1.8.x" - esprima "2.7.x" - glob "^5.0.15" - handlebars "^4.0.1" - js-yaml "3.x" - mkdirp "0.5.x" - nopt "3.x" - once "1.x" - resolve "1.1.x" - supports-color "^3.1.0" - which "^1.1.1" - wordwrap "^1.0.0" - -js-string-escape@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef" - -js-tokens@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - -js-yaml@3.x, js-yaml@^3.5.1: - version "3.9.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.9.1.tgz#08775cebdfdd359209f0d2acd383c8f86a6904a0" - 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" - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - -json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - dependencies: - jsonify "~0.0.0" - -json-stable-stringify@~0.0.0: - version "0.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz#611c23e814db375527df851193db59dd2af27f45" - dependencies: - jsonify "~0.0.0" - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - -json3@3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" - -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - -jsonparse@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - -jsonpointer@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" - -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - -karma-browserify@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/karma-browserify/-/karma-browserify-5.1.1.tgz#f642d70d776d9ab3b73526c5732abcfea2400319" - dependencies: - convert-source-map "^1.1.3" - hat "^0.0.3" - js-string-escape "^1.0.0" - lodash "^3.10.1" - minimatch "^3.0.0" - os-shim "^0.1.3" - -karma-coverage@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/karma-coverage/-/karma-coverage-1.1.1.tgz#5aff8b39cf6994dc22de4c84362c76001b637cf6" - dependencies: - dateformat "^1.0.6" - istanbul "^0.4.0" - lodash "^3.8.0" - minimatch "^3.0.0" - source-map "^0.5.1" - -karma-firefox-launcher@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/karma-firefox-launcher/-/karma-firefox-launcher-1.0.1.tgz#ce58f47c2013a88156d55a5d61337c099cf5bb51" - -karma-mocha@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/karma-mocha/-/karma-mocha-1.3.0.tgz#eeaac7ffc0e201eb63c467440d2b69c7cf3778bf" - dependencies: - minimist "1.2.0" - -karma-typescript@^3.0.4: - version "3.0.5" - resolved "https://registry.yarnpkg.com/karma-typescript/-/karma-typescript-3.0.5.tgz#f49fadf3765753be543fe46692e8050145519a9f" - dependencies: - acorn "^4.0.4" - amdefine "1.0.0" - assert "^1.4.1" - async "^2.1.4" - base64-js "^1.2.1" - browser-resolve "^1.11.0" - browserify-zlib "^0.2.0" - buffer "^5.0.6" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.1" - diff "^3.2.0" - domain-browser "^1.1.7" - es6-promise "^4.0.5" - events "^1.1.1" - glob "^7.1.1" - gulp-util "3.0.7" - https-browserify "^1.0.0" - ieee754 "^1.1.8" - isarray "^1.0.0" - istanbul "0.4.5" - karma-coverage "^1.1.1" - lodash "^4.17.4" - log4js "^1.1.1" - magic-string "^0.19.0" - minimatch "^3.0.3" - os-browserify "^0.3.0" - pad "^1.1.0" - path-browserify "0.0.0" - process "^0.11.10" - punycode "^1.4.1" - querystring-es3 "^0.2.1" - readable-stream "^2.3.3" - remap-istanbul "^0.8.4" - source-map ">=0.5.6" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.3" - through2 "2.0.1" - timers-browserify "^2.0.2" - tmp "0.0.29" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.10.3" - vm-browserify "0.0.4" - -karma@1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/karma/-/karma-1.7.0.tgz#6f7a1a406446fa2e187ec95398698f4cee476269" - dependencies: - bluebird "^3.3.0" - body-parser "^1.16.1" - chokidar "^1.4.1" - colors "^1.1.0" - combine-lists "^1.0.0" - connect "^3.6.0" - core-js "^2.2.0" - di "^0.0.1" - dom-serialize "^2.2.0" - expand-braces "^0.1.1" - glob "^7.1.1" - graceful-fs "^4.1.2" - http-proxy "^1.13.0" - isbinaryfile "^3.0.0" - lodash "^3.8.0" - log4js "^0.6.31" - mime "^1.3.4" - minimatch "^3.0.2" - optimist "^0.6.1" - qjobs "^1.1.4" - range-parser "^1.2.0" - rimraf "^2.6.0" - safe-buffer "^5.0.1" - socket.io "1.7.3" - source-map "^0.5.3" - tmp "0.0.31" - useragent "^2.1.12" - -kind-of@^3.0.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - dependencies: - is-buffer "^1.1.5" - -labeled-stream-splicer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/labeled-stream-splicer/-/labeled-stream-splicer-2.0.0.tgz#a52e1d138024c00b86b1c0c91f677918b8ae0a59" - dependencies: - inherits "^2.0.1" - isarray "~0.0.1" - stream-splicer "^2.0.0" - -latest-version@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-2.0.0.tgz#56f8d6139620847b8017f8f1f4d78e211324168b" - dependencies: - package-json "^2.0.0" - -lazy-cache@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" - -lazy-req@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/lazy-req/-/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac" - -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -lexical-scope@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/lexical-scope/-/lexical-scope-1.2.0.tgz#fcea5edc704a4b3a8796cdca419c3a0afaf22df4" - dependencies: - astw "^2.0.0" - -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - -lodash._baseassign@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" - dependencies: - lodash._basecopy "^3.0.0" - lodash.keys "^3.0.0" - -lodash._basecopy@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" - -lodash._basecreate@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821" - -lodash._basetostring@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5" - -lodash._basevalues@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7" - -lodash._getnative@^3.0.0: - version "3.9.1" - resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" - -lodash._isiterateecall@^3.0.0: - version "3.0.9" - resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" - -lodash._reescape@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a" - -lodash._reevaluate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz#58bc74c40664953ae0b124d806996daca431e2ed" - -lodash._reinterpolate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - -lodash._root@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" - -lodash.create@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7" - dependencies: - lodash._baseassign "^3.0.0" - lodash._basecreate "^3.0.0" - lodash._isiterateecall "^3.0.0" - -lodash.escape@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698" - dependencies: - lodash._root "^3.0.0" - -lodash.isarguments@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" - -lodash.isarray@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" - -lodash.keys@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" - dependencies: - lodash._getnative "^3.0.0" - lodash.isarguments "^3.0.0" - lodash.isarray "^3.0.0" - -lodash.memoize@~3.0.3: - version "3.0.4" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f" - -lodash.restparam@^3.0.0: - version "3.6.1" - resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" - -lodash.template@^3.0.0: - version "3.6.2" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f" - dependencies: - lodash._basecopy "^3.0.0" - lodash._basetostring "^3.0.0" - lodash._basevalues "^3.0.0" - lodash._isiterateecall "^3.0.0" - lodash._reinterpolate "^3.0.0" - lodash.escape "^3.0.0" - lodash.keys "^3.0.0" - lodash.restparam "^3.0.0" - lodash.templatesettings "^3.0.0" - -lodash.templatesettings@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5" - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.escape "^3.0.0" - -lodash@^3.10.1, lodash@^3.8.0: - version "3.10.1" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" - -lodash@^4.0.0, lodash@^4.14.0, lodash@^4.17.4, lodash@^4.3.0, lodash@^4.5.0: - version "4.17.4" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" - -log4js@^0.6.31: - version "0.6.38" - resolved "https://registry.yarnpkg.com/log4js/-/log4js-0.6.38.tgz#2c494116695d6fb25480943d3fc872e662a522fd" - dependencies: - readable-stream "~1.0.2" - semver "~4.3.3" - -log4js@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/log4js/-/log4js-1.1.1.tgz#c21d29c7604089e4f255833e7f94b3461de1ff43" - dependencies: - debug "^2.2.0" - semver "^5.3.0" - streamroller "^0.4.0" - -longest@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" - -loud-rejection@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" - dependencies: - currently-unhandled "^0.4.1" - signal-exit "^3.0.0" - -lowercase-keys@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" - -lru-cache@2.2.x: - version "2.2.4" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d" - -magic-string@^0.19.0: - version "0.19.1" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.19.1.tgz#14d768013caf2ec8fdea16a49af82fc377e75201" - dependencies: - vlq "^0.2.1" - -make-error@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.0.tgz#52ad3a339ccf10ce62b4040b708fe707244b8b96" - -map-obj@^1.0.0, map-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - -meow@^3.3.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" - dependencies: - camelcase-keys "^2.0.0" - decamelize "^1.1.2" - loud-rejection "^1.0.0" - map-obj "^1.0.1" - minimist "^1.1.3" - normalize-package-data "^2.3.4" - object-assign "^4.0.1" - read-pkg-up "^1.0.1" - redent "^1.0.0" - trim-newlines "^1.0.0" - -micromatch@^2.1.5: - version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" - -miller-rabin@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.0.tgz#4a62fb1d42933c05583982f4c716f6fb9e6c6d3d" - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@~1.29.0: - version "1.29.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.29.0.tgz#48d26d235589651704ac5916ca06001914266878" - -mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.7: - version "2.1.16" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.16.tgz#2b858a52e5ecd516db897ac2be87487830698e23" - dependencies: - mime-db "~1.29.0" - -mime@^1.3.4: - version "1.3.6" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.6.tgz#591d84d3653a6b0b4a3b9df8de5aa8108e72e5e0" - -min-document@^2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" - dependencies: - dom-walk "^0.1.0" - -minimalistic-assert@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" - -minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - -"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - dependencies: - brace-expansion "^1.1.7" - -minimist@0.0.8, minimist@~0.0.1: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - -minimist@1.2.0, minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - -mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - dependencies: - minimist "0.0.8" - -mocha@^3.4.2: - version "3.5.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.5.0.tgz#1328567d2717f997030f8006234bce9b8cd72465" - dependencies: - browser-stdout "1.3.0" - commander "2.9.0" - debug "2.6.8" - diff "3.2.0" - escape-string-regexp "1.0.5" - glob "7.1.1" - growl "1.9.2" - json3 "3.3.2" - lodash.create "3.1.1" - mkdirp "0.5.1" - supports-color "3.1.2" - -module-deps@^4.0.8: - version "4.1.1" - resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-4.1.1.tgz#23215833f1da13fd606ccb8087b44852dcb821fd" - dependencies: - JSONStream "^1.0.3" - browser-resolve "^1.7.0" - cached-path-relative "^1.0.0" - concat-stream "~1.5.0" - defined "^1.0.0" - detective "^4.0.0" - duplexer2 "^0.1.2" - inherits "^2.0.1" - parents "^1.0.0" - readable-stream "^2.0.2" - resolve "^1.1.3" - stream-combiner2 "^1.1.1" - subarg "^1.0.0" - through2 "^2.0.0" - xtend "^4.0.0" - -ms@0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" - -ms@0.7.2: - version "0.7.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - -multipipe@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b" - dependencies: - duplexer2 "0.0.2" - -mute-stream@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" - -nan@^2.3.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - -negotiator@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" - -node-pre-gyp@^0.6.36: - version "0.6.36" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz#db604112cb74e0d477554e9b505b17abddfab786" - dependencies: - mkdirp "^0.5.1" - nopt "^4.0.1" - npmlog "^4.0.2" - rc "^1.1.7" - request "^2.81.0" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^2.2.1" - tar-pack "^3.4.0" - -node-status-codes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-status-codes/-/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f" - -nopt@3.x: - version "3.0.6" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" - dependencies: - abbrev "1" - -nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - dependencies: - abbrev "1" - osenv "^0.1.4" - -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: - version "2.4.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" - dependencies: - hosted-git-info "^2.1.4" - is-builtin-module "^1.0.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^2.0.0, normalize-path@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - dependencies: - remove-trailing-separator "^1.0.1" - -npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - -oauth-sign@~0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" - -object-assign@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" - -object-assign@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" - -object-assign@^4.0.1, object-assign@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - -object-component@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" - -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" - dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - dependencies: - ee-first "1.1.1" - -once@1.x, once@^1.3.0, once@^1.3.3: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - dependencies: - wrappy "1" - -onetime@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" - -optimist@^0.6.1, optimist@~0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - -optionator@^0.8.1, optionator@^0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.4" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - wordwrap "~1.0.0" - -options@>=0.0.5: - version "0.0.6" - resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" - -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - -os-browserify@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.1.2.tgz#49ca0293e0b19590a5f5de10c7f265a617d8fe54" - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - -os-shim@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/os-shim/-/os-shim-0.1.3.tgz#6b62c3791cf7909ea35ed46e17658bb417cb3917" - -os-tmpdir@^1.0.0, os-tmpdir@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - -osenv@^0.1.0, osenv@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -outpipe@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/outpipe/-/outpipe-1.1.1.tgz#50cf8616365e87e031e29a5ec9339a3da4725fa2" - dependencies: - shell-quote "^1.4.2" - -package-json@^2.0.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-2.4.0.tgz#0d15bd67d1cbbddbb2ca222ff2edb86bcb31a8bb" - dependencies: - got "^5.0.0" - registry-auth-token "^3.0.1" - registry-url "^3.0.3" - semver "^5.1.0" - -pad@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pad/-/pad-1.1.0.tgz#7a7d185200ebac32f9f12ee756c3a1d087b3190b" - -pako@~0.2.0: - version "0.2.9" - resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" - -pako@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.5.tgz#d2205dfe5b9da8af797e7c163db4d1f84e4600bc" - -parents@^1.0.0, parents@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parents/-/parents-1.0.1.tgz#fedd4d2bf193a77745fe71e371d73c3307d9c751" - dependencies: - path-platform "~0.11.15" - -parse-asn1@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712" - dependencies: - asn1.js "^4.0.0" - browserify-aes "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" - -parse-json@^2.1.0, parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - dependencies: - error-ex "^1.2.0" - -parsejson@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/parsejson/-/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab" - dependencies: - better-assert "~1.0.0" - -parseqs@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" - dependencies: - better-assert "~1.0.0" - -parseuri@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" - dependencies: - better-assert "~1.0.0" - -parseurl@~1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56" - -path-browserify@0.0.0, path-browserify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" - -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - dependencies: - pinkie-promise "^2.0.0" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - -path-is-inside@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - -path-parse@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" - -path-platform@~0.11.15: - version "0.11.15" - resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2" - -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -pbkdf2@^3.0.3: - version "3.0.13" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.13.tgz#c37d295531e786b1da3e3eadc840426accb0ae25" - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -performance-now@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" - -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - -pluralize@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - -prepend-http@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - -process-nextick-args@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" - -process@^0.11.10, process@~0.11.0: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - -process@~0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" - -progress@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" - -public-encrypt@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6" - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - -punycode@^1.3.2, punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - -qjobs@^1.1.4: - version "1.1.5" - resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.1.5.tgz#659de9f2cf8dcc27a1481276f205377272382e73" - -qs@6.4.0, qs@~6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" - -querystring-es3@^0.2.1, querystring-es3@~0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - -randomatic@^1.1.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -randombytes@^2.0.0, randombytes@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.5.tgz#dc009a246b8d09a177b4b7a0ae77bc570f4b1b79" - dependencies: - safe-buffer "^5.1.0" - -range-parser@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" - -raw-body@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.2.0.tgz#994976cf6a5096a41162840492f0bdc5d6e7fb96" - dependencies: - bytes "2.4.0" - iconv-lite "0.4.15" - unpipe "1.0.0" - -rc@^1.0.1, rc@^1.1.6, rc@^1.1.7: - version "1.2.1" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" - dependencies: - deep-extend "~0.4.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -read-all-stream@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/read-all-stream/-/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa" - dependencies: - pinkie-promise "^2.0.0" - readable-stream "^2.0.0" - -read-only-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-only-stream/-/read-only-stream-2.0.0.tgz#2724fd6a8113d73764ac288d4386270c1dbf17f0" - dependencies: - readable-stream "^2.0.2" - -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - dependencies: - find-up "^1.0.0" - read-pkg "^1.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" - dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" - -readable-stream@^1.1.7, readable-stream@~1.1.9: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - 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, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.6, readable-stream@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - safe-buffer "~5.1.1" - string_decoder "~1.0.3" - util-deprecate "~1.0.1" - -readable-stream@~1.0.2: - version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - 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" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - string_decoder "~0.10.x" - util-deprecate "~1.0.1" - -readdirp@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" - dependencies: - graceful-fs "^4.1.2" - minimatch "^3.0.2" - readable-stream "^2.0.2" - set-immediate-shim "^1.0.1" - -readline2@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35" - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - mute-stream "0.0.5" - -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - dependencies: - resolve "^1.1.6" - -redent@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" - dependencies: - indent-string "^2.1.0" - strip-indent "^1.0.1" - -regex-cache@^0.4.2: - version "0.4.3" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" - dependencies: - is-equal-shallow "^0.1.3" - is-primitive "^2.0.0" - -registry-auth-token@^3.0.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.1.tgz#fb0d3289ee0d9ada2cbb52af5dfe66cb070d3006" - dependencies: - rc "^1.1.6" - safe-buffer "^5.0.1" - -registry-url@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" - dependencies: - rc "^1.0.1" - -remap-istanbul@^0.8.4: - version "0.8.4" - resolved "https://registry.yarnpkg.com/remap-istanbul/-/remap-istanbul-0.8.4.tgz#b4bfdfdbc90efa635e9a28b1f4a116e22c8c2697" - dependencies: - amdefine "^1.0.0" - gulp-util "3.0.7" - istanbul "0.4.5" - source-map ">=0.5.6" - through2 "2.0.1" - -remove-trailing-separator@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz#69b062d978727ad14dc6b56ba4ab772fd8d70511" - -repeat-element@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" - -repeat-string@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae" + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" -repeat-string@^1.5.2: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" + integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" +istanbul-lib-instrument@^5.0.4: + version "5.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== dependencies: - is-finite "^1.0.0" + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" -replace-ext@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" - -request@^2.81.0: - version "2.81.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - caseless "~0.12.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.1.1" - har-validator "~4.2.1" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - oauth-sign "~0.8.1" - performance-now "^0.2.0" - qs "~6.4.0" - safe-buffer "^5.0.1" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "^0.6.0" - uuid "^3.0.0" - -require-uncached@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" +istanbul-lib-instrument@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz#91655936cf7380e4e473383081e38478b69993b1" + integrity sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw== dependencies: - caller-path "^0.1.0" - resolve-from "^1.0.0" - -requires-port@1.x.x: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - -resolve-from@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" - -resolve@1.1.7, resolve@1.1.x: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + "@babel/core" "^7.23.9" + "@babel/parser" "^7.23.9" + "@istanbuljs/schema" "^0.1.3" + istanbul-lib-coverage "^3.2.0" + semver "^7.5.4" -resolve@^1.1.3, resolve@^1.1.4, resolve@^1.1.6, resolve@^1.1.7: - version "1.4.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.4.0.tgz#a75be01c53da25d934a98ebd0e4c4a7312f92a86" +istanbul-lib-report@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" + integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== dependencies: - path-parse "^1.0.5" + istanbul-lib-coverage "^3.0.0" + make-dir "^4.0.0" + supports-color "^7.1.0" -restore-cursor@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" +istanbul-lib-source-maps@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== dependencies: - exit-hook "^1.0.0" - onetime "^1.0.0" + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" -right-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" +istanbul-reports@^3.1.3: + version "3.1.7" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b" + integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g== dependencies: - align-text "^0.1.1" + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" -rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.6.0, rimraf@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" +jackspeak@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" + integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== dependencies: - glob "^7.0.5" + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +jest-changed-files@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" + integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== + dependencies: + execa "^5.0.0" + jest-util "^29.7.0" + p-limit "^3.1.0" + +jest-circus@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" + integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^1.0.0" + is-generator-fn "^2.0.0" + jest-each "^29.7.0" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + p-limit "^3.1.0" + pretty-format "^29.7.0" + pure-rand "^6.0.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-cli@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" + integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== + dependencies: + "@jest/core" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + chalk "^4.0.0" + create-jest "^29.7.0" + exit "^0.1.2" + import-local "^3.0.2" + jest-config "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + yargs "^17.3.1" + +jest-config@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" + integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== + dependencies: + "@babel/core" "^7.11.6" + "@jest/test-sequencer" "^29.7.0" + "@jest/types" "^29.6.3" + babel-jest "^29.7.0" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-circus "^29.7.0" + jest-environment-node "^29.7.0" + jest-get-type "^29.6.3" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-runner "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^29.7.0" + slash "^3.0.0" + strip-json-comments "^3.1.1" + +jest-diff@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" + integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== + dependencies: + chalk "^4.0.0" + diff-sequences "^29.6.3" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-docblock@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" + integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== + dependencies: + detect-newline "^3.0.0" + +jest-each@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" + integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== + dependencies: + "@jest/types" "^29.6.3" + chalk "^4.0.0" + jest-get-type "^29.6.3" + jest-util "^29.7.0" + pretty-format "^29.7.0" + +jest-environment-node@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" + integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + jest-util "^29.7.0" + +jest-get-type@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" + integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== + +jest-haste-map@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" + integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== + dependencies: + "@jest/types" "^29.6.3" + "@types/graceful-fs" "^4.1.3" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + jest-worker "^29.7.0" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" + +jest-leak-detector@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" + integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== + dependencies: + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-matcher-utils@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" + integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== + dependencies: + chalk "^4.0.0" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-message-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" + integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.6.3" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" + integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-util "^29.7.0" + +jest-pnp-resolver@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== + +jest-regex-util@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" + integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== + +jest-resolve-dependencies@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" + integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== + dependencies: + jest-regex-util "^29.6.3" + jest-snapshot "^29.7.0" + +jest-resolve@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" + integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== + dependencies: + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-pnp-resolver "^1.2.2" + jest-util "^29.7.0" + jest-validate "^29.7.0" + resolve "^1.20.0" + resolve.exports "^2.0.0" + slash "^3.0.0" + +jest-runner@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" + integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== + dependencies: + "@jest/console" "^29.7.0" + "@jest/environment" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.13.1" + graceful-fs "^4.2.9" + jest-docblock "^29.7.0" + jest-environment-node "^29.7.0" + jest-haste-map "^29.7.0" + jest-leak-detector "^29.7.0" + jest-message-util "^29.7.0" + jest-resolve "^29.7.0" + jest-runtime "^29.7.0" + jest-util "^29.7.0" + jest-watcher "^29.7.0" + jest-worker "^29.7.0" + p-limit "^3.1.0" + source-map-support "0.5.13" + +jest-runtime@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" + integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/globals" "^29.7.0" + "@jest/source-map" "^29.6.3" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + slash "^3.0.0" + strip-bom "^4.0.0" + +jest-snapshot@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" + integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== + dependencies: + "@babel/core" "^7.11.6" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-jsx" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/types" "^7.3.3" + "@jest/expect-utils" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^29.7.0" + graceful-fs "^4.2.9" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + natural-compare "^1.4.0" + pretty-format "^29.7.0" + semver "^7.5.3" + +jest-util@^29.0.0, jest-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" + integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" + integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== + dependencies: + "@jest/types" "^29.6.3" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^29.6.3" + leven "^3.1.0" + pretty-format "^29.7.0" + +jest-watcher@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" + integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== + dependencies: + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.13.1" + jest-util "^29.7.0" + string-length "^4.0.1" + +jest-worker@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" + integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== + dependencies: + "@types/node" "*" + jest-util "^29.7.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" + integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== + dependencies: + "@jest/core" "^29.7.0" + "@jest/types" "^29.6.3" + import-local "^3.0.2" + jest-cli "^29.7.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== -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7" +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== dependencies: - hash-base "^2.0.0" - inherits "^2.0.1" + argparse "^1.0.7" + esprima "^4.0.0" -run-async@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389" +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: - once "^1.3.0" + argparse "^2.0.1" -rx-lite@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== -semver-diff@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" - dependencies: - semver "^5.0.3" +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== -"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" +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" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== -semver@~4.3.3: - version "4.3.6" - resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== -set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" +json5@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== -set-immediate-shim@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" -setimmediate@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== -setprototypeof@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== -sha.js@^2.4.0, sha.js@^2.4.8, sha.js@~2.4.4: - version "2.4.8" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f" +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== dependencies: - inherits "^2.0.1" + prelude-ls "^1.2.1" + type-check "~0.4.0" -shasum@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/shasum/-/shasum-1.0.2.tgz#e7012310d8f417f4deb5712150e5678b87ae565f" - dependencies: - json-stable-stringify "~0.0.0" - sha.js "~2.4.4" +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -shell-quote@^1.4.2, shell-quote@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" +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: - array-filter "~0.0.0" - array-map "~0.0.0" - array-reduce "~0.0.0" - jsonify "~0.0.0" + p-locate "^4.1.0" -shelljs@^0.7.5: - version "0.7.8" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3" +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" + p-locate "^5.0.0" -signal-exit@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" +lodash.memoize@4.x: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== -slice-ansi@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -slide@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" +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" -sntp@1.x.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" - dependencies: - hoek "2.x.x" - -socket.io-adapter@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b" - dependencies: - debug "2.3.3" - socket.io-parser "2.3.1" - -socket.io-client@1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.7.3.tgz#b30e86aa10d5ef3546601c09cde4765e381da377" - dependencies: - backo2 "1.0.2" - component-bind "1.0.0" - component-emitter "1.2.1" - debug "2.3.3" - engine.io-client "1.8.3" - has-binary "0.1.7" - indexof "0.0.1" - object-component "0.0.3" - parseuri "0.0.5" - socket.io-parser "2.3.1" - to-array "0.1.4" - -socket.io-parser@2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0" +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== dependencies: - component-emitter "1.1.2" - debug "2.2.0" - isarray "0.0.1" - json3 "3.3.2" + yallist "^4.0.0" -socket.io@1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.7.3.tgz#b8af9caba00949e568e369f1327ea9be9ea2461b" +"lru-cache@^9.1.1 || ^10.0.0": + version "10.2.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" + integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== + +make-dir@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" + integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== dependencies: - debug "2.3.3" - engine.io "1.8.3" - has-binary "0.1.7" - object-assign "4.1.0" - socket.io-adapter "0.5.0" - socket.io-client "1.7.3" - socket.io-parser "2.3.1" + semver "^7.5.3" + +make-error@1.x: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +make-error@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.0.tgz#52ad3a339ccf10ce62b4040b708fe707244b8b96" -source-map-support@^0.4.0: - version "0.4.15" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.15.tgz#03202df65c06d2bd8c7ec2362a193056fef8d3b1" +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== dependencies: - source-map "^0.5.6" + tmpl "1.0.5" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -source-map@>=0.5.6, source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3: - version "0.5.6" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -source-map@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== dependencies: - amdefine ">=0.0.4" + braces "^3.0.2" + picomatch "^2.3.1" -source-map@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +minimatch@9.0.3, minimatch@^9.0.1: + version "9.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== dependencies: - amdefine ">=0.0.4" + brace-expansion "^2.0.1" -sparkles@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3" +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" -spdx-correct@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" +minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: - spdx-license-ids "^1.0.2" + brace-expansion "^1.1.7" -spdx-expression-parse@~1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": + version "7.0.4" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" + integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== -spdx-license-ids@^1.0.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -sprintf-js@^1.0.3: - version "1.1.1" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.1.tgz#36be78320afe5801f6cea3ee78b6e5aab940ea0c" +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== -sshpk@^1.7.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - dashdash "^1.12.0" - getpass "^0.1.1" - optionalDependencies: - bcrypt-pbkdf "^1.0.0" - ecc-jsbn "~0.1.1" - jsbn "~0.1.0" - tweetnacl "~0.14.0" +node-releases@^2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" + integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== -"statuses@>= 1.3.1 < 2", statuses@~1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -stream-browserify@^2.0.0, stream-browserify@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" + path-key "^3.0.0" -stream-combiner2@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe" +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: - duplexer2 "~0.1.0" - readable-stream "^2.0.2" + wrappy "1" -stream-http@^2.0.0, stream-http@^2.7.2: - version "2.7.2" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.2.tgz#40a050ec8dc3b53b33d9909415c02c0bf1abfbad" +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.2.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" + mimic-fn "^2.1.0" -stream-splicer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/stream-splicer/-/stream-splicer-2.0.0.tgz#1b63be438a133e4b671cc1935197600175910d83" +optionator@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" + integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== dependencies: - inherits "^2.0.1" - readable-stream "^2.0.2" + "@aashutoshrathi/word-wrap" "^1.2.3" + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" -streamroller@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-0.4.1.tgz#d435bd5974373abd9bd9068359513085106cc05f" +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: - date-format "^0.0.0" - debug "^0.7.2" - mkdirp "^0.5.1" - readable-stream "^1.1.7" + p-try "^2.0.0" -string-width@^1.0.1, string-width@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" +p-limit@^3.0.2, p-limit@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" + yocto-queue "^0.1.0" -string-width@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" +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: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" + p-limit "^2.2.0" -string_decoder@^1.0.3, string_decoder@~1.0.0, string_decoder@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== dependencies: - safe-buffer "~5.1.0" - -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - -stringstream@~0.0.4: - version "0.0.5" - resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" + p-limit "^3.0.2" -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - dependencies: - ansi-regex "^2.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== -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== dependencies: - ansi-regex "^3.0.0" + callsites "^3.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" +parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: - is-utf8 "^0.2.0" + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" +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== -strip-indent@^1.0.1: +path-is-absolute@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" - dependencies: - get-stdin "^4.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" -strip-json-comments@^2.0.0, strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" +path-key@^3.0.0, 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== -subarg@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" - dependencies: - minimist "^1.1.0" +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -supports-color@3.1.2, supports-color@^3.1.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5" +path-scurry@^1.10.1: + version "1.10.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" + integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== dependencies: - has-flag "^1.0.0" + lru-cache "^9.1.1 || ^10.0.0" + minipass "^5.0.0 || ^6.0.2 || ^7.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" +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -supports-color@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.2.1.tgz#65a4bb2631e90e02420dba5554c375a4754bb836" - dependencies: - has-flag "^2.0.0" +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -syntax-error@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.3.0.tgz#1ed9266c4d40be75dc55bf9bb1cb77062bb96ca1" - dependencies: - acorn "^4.0.3" - -table@^3.7.8: - version "3.8.3" - resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" - dependencies: - ajv "^4.7.0" - ajv-keywords "^1.0.0" - chalk "^1.1.1" - lodash "^4.0.0" - slice-ansi "0.0.4" - string-width "^2.0.0" - -tar-pack@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984" - dependencies: - debug "^2.2.0" - fstream "^1.0.10" - fstream-ignore "^1.0.5" - once "^1.3.3" - readable-stream "^2.1.4" - rimraf "^2.5.1" - tar "^2.2.1" - uid-number "^0.0.6" - -tar@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" - dependencies: - block-stream "*" - fstream "^1.0.2" - inherits "2" +picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -text-table@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" +pirates@^4.0.4: + version "4.0.6" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== -through2@2.0.1, through2@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.1.tgz#384e75314d49f32de12eebb8136b8eb6b5d59da9" +pkg-dir@^4.2.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: - readable-stream "~2.0.0" - xtend "~4.0.0" + find-up "^4.0.0" -"through@>=2.2.7 <3", through@^2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - -time-stamp@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" - -timed-out@^3.0.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217" - -timers-browserify@^1.0.1: - version "1.4.2" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.4.2.tgz#c9c58b575be8407375cb5e2462dacee74359f41d" - dependencies: - process "~0.11.0" +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -timers-browserify@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.3.tgz#41fd0bdc926a5feedc33a17a8e1f7d491925f7fc" - dependencies: - global "^4.3.2" - setimmediate "^1.0.4" +prettier@3.2.5: + version "3.2.5" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.5.tgz#e52bc3090586e824964a8813b09aba6233b28368" + integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A== -tmp@0.0.29: - version "0.0.29" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.29.tgz#f25125ff0dd9da3ccb0c2dd371ee1288bb9128c0" +pretty-format@^29.0.0, pretty-format@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== dependencies: - os-tmpdir "~1.0.1" + "@jest/schemas" "^29.6.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" -tmp@0.0.31, tmp@0.0.x: - version "0.0.31" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7" +prompts@^2.0.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== dependencies: - os-tmpdir "~1.0.1" + kleur "^3.0.3" + sisteransi "^1.0.5" -to-array@0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" +punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" +pure-rand@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.1.0.tgz#d173cf23258231976ccbdb05247c9787957604f2" + integrity sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA== -tough-cookie@~2.3.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" - dependencies: - punycode "^1.4.1" +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -trim-newlines@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" +react-is@^18.0.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== -tryit@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== -ts-node@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-3.3.0.tgz#c13c6a3024e30be1180dd53038fc209289d4bf69" - dependencies: - arrify "^1.0.0" - chalk "^2.0.0" - diff "^3.1.0" - make-error "^1.1.1" - minimist "^1.2.0" - mkdirp "^0.5.1" - source-map-support "^0.4.0" - tsconfig "^6.0.0" - v8flags "^3.0.0" - yn "^2.0.0" - -tsconfig@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-6.0.0.tgz#6b0e8376003d7af1864f8df8f89dd0059ffcd032" +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== dependencies: - strip-bom "^3.0.0" - strip-json-comments "^2.0.0" - -tslib@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.5.0.tgz#3bb50f871e5fdf9a4555a9ff237b730860048fea" + resolve-from "^5.0.0" -tslint-eslint-rules@3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/tslint-eslint-rules/-/tslint-eslint-rules-3.2.3.tgz#e4ad7dd9071c8effdac9a2ea86b927c11a39dcf1" - dependencies: - doctrine "^0.7.2" - tslint "^4.0.0" +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== -tslint@4.3.1, tslint@^4.0.0: - version "4.3.1" - resolved "https://registry.yarnpkg.com/tslint/-/tslint-4.3.1.tgz#28f679c53ca4b273688bcb6fcf0dde7ff1bb2169" - dependencies: - babel-code-frame "^6.20.0" - colors "^1.1.2" - diff "^3.0.1" - findup-sync "~0.3.0" - glob "^7.1.1" - optimist "~0.6.0" - resolve "^1.1.7" - underscore.string "^3.3.4" - update-notifier "^1.0.2" +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== -tty-browserify@0.0.0, tty-browserify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" +resolve.exports@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" + integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" +resolve@^1.20.0: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== dependencies: - safe-buffer "^5.0.1" + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: - prelude-ls "~1.1.2" + glob "^7.1.3" -type-is@~1.6.15: - version "1.6.15" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410" +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== dependencies: - media-typer "0.3.0" - mime-types "~2.1.15" + queue-microtask "^1.2.2" -typedarray@~0.0.5: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" +semver@^6.3.0, semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -typescript@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.4.2.tgz#f8395f85d459276067c988aa41837a8f82870844" +semver@^7.5.3, semver@^7.5.4: + version "7.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" + integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== + dependencies: + lru-cache "^6.0.0" -uglify-js@^2.6: - version "2.8.29" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" +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: - source-map "~0.5.1" - yargs "~3.10.0" - optionalDependencies: - uglify-to-browserify "~1.0.0" + shebang-regex "^3.0.0" -uglify-to-browserify@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" +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== -uid-number@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" +signal-exit@^3.0.3, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== -ultron@1.0.x: - version "1.0.2" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== -umd@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.1.tgz#8ae556e11011f63c2596708a8837259f01b3d60e" +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== -underscore.string@^3.3.4: - version "3.3.4" - resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.4.tgz#2c2a3f9f83e64762fdc45e6ceac65142864213db" - dependencies: - sprintf-js "^1.0.3" - util-deprecate "^1.0.2" +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" +source-map-support@0.5.13: + version "0.5.13" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" -unzip-response@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe" +source-map@^0.6.0, source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -update-notifier@^1.0.2: +sprintf-js@~1.0.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-1.0.3.tgz#8f92c515482bd6831b7c93013e70f87552c7cf5a" - dependencies: - boxen "^0.6.0" - chalk "^1.0.0" - configstore "^2.0.0" - is-npm "^1.0.0" - latest-version "^2.0.0" - lazy-req "^1.1.0" - semver-diff "^2.0.0" - xdg-basedir "^2.0.0" - -url-parse-lax@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" - dependencies: - prepend-http "^1.0.1" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" -url@^0.11.0, url@~0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" +stack-utils@^2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== dependencies: - punycode "1.3.2" - querystring "0.2.0" - -user-home@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" + escape-string-regexp "^2.0.0" -user-home@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== dependencies: - os-homedir "^1.0.0" + char-regex "^1.0.2" + strip-ansi "^6.0.0" -useragent@^2.1.12: - version "2.2.1" - resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.2.1.tgz#cf593ef4f2d175875e8bb658ea92e18a4fd06d8e" +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: - lru-cache "2.2.x" - tmp "0.0.x" + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" -util-deprecate@^1.0.2, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" +string-width@4.1.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3, string-width@^5.1.2: + version "4.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.1.0.tgz#ba846d1daa97c3c596155308063e075ed1c99aff" + integrity sha512-NrX+1dVVh+6Y9dnQ19pR0pP4FiEIlUvdTGn8pw6CKTNq5sgib2nIhmUNT5TAmhWmvKr3WcxBcP3E8nWezuipuQ== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^5.2.0" -util@0.10.3, util@^0.10.3, util@~0.10.1: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@6.0.1, strip-ansi@^5.2.0, strip-ansi@^6.0.0, strip-ansi@^6.0.1, strip-ansi@^7.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: - inherits "2.0.1" + ansi-regex "^5.0.1" -utils-merge@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" +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== -uuid@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -uuid@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -v8flags@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.0.0.tgz#4be9604488e0c4123645def705b1848d16b8e01f" +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: - user-home "^1.1.1" + has-flag "^3.0.0" -validate-npm-package-license@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" +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: - spdx-correct "~1.0.0" - spdx-expression-parse "~1.0.0" + has-flag "^4.0.0" -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -vinyl@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz#b0455b38fc5e0cf30d4325132e461970c2091cde" +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: - clone "^1.0.0" - clone-stats "^0.0.1" - replace-ext "0.0.1" + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" -vlq@^0.2.1: - version "0.2.2" - resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.2.tgz#e316d5257b40b86bb43cb8d5fea5d7f54d6b0ca1" +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== -vm-browserify@0.0.4, vm-browserify@~0.0.1: - version "0.0.4" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" - dependencies: - indexof "0.0.1" +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== -void-elements@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" +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" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== -watchify@^3.9.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/watchify/-/watchify-3.9.0.tgz#f075fd2e8a86acde84cedba6e5c2a0bedd523d9e" +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: - anymatch "^1.3.0" - browserify "^14.0.0" - chokidar "^1.0.0" - defined "^1.0.0" - outpipe "^1.1.0" - through2 "^2.0.0" - xtend "^4.0.0" + is-number "^7.0.0" -which@^1.1.1: +ts-api-utils@^1.0.1: version "1.3.0" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" - dependencies: - isexe "^2.0.0" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1" + integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== + +ts-jest@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.1.2.tgz#7613d8c81c43c8cb312c6904027257e814c40e09" + integrity sha512-br6GJoH/WUX4pu7FbZXuWGKGNDuU7b8Uj77g/Sp7puZV6EXzuByl6JrECvm0MzVzSTkSHWTihsXt+5XYER5b+g== + dependencies: + bs-logger "0.x" + fast-json-stable-stringify "2.x" + jest-util "^29.0.0" + json5 "^2.2.3" + lodash.memoize "4.x" + make-error "1.x" + semver "^7.5.3" + yargs-parser "^21.0.1" + +ts-node@^10.9.2: + version "10.9.2" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" + integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" -wide-align@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" - dependencies: - string-width "^1.0.2" +tslib@2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== -widest-line@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c" +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== dependencies: - string-width "^1.0.1" + prelude-ls "^1.2.1" -window-size@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== -wordwrap@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -wordwrap@^1.0.0, wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" +typescript@5.3.3: + version "5.3.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37" + integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== -write-file-atomic@^1.1.2: - version "1.3.4" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - slide "^1.1.5" + escalade "^3.1.1" + picocolors "^1.0.0" -write@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: - mkdirp "^0.5.1" + punycode "^2.1.0" -ws@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f" +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +v8-to-istanbul@^9.0.1: + version "9.2.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz#2ed7644a245cddd83d4e087b9b33b3e62dfd10ad" + integrity sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA== dependencies: - options ">=0.0.5" - ultron "1.0.x" + "@jridgewell/trace-mapping" "^0.3.12" + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^2.0.0" -wtf-8@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a" +walker@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" -xdg-basedir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-2.0.0.tgz#edbc903cc385fc04523d966a335504b5504d1bd2" +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: - os-homedir "^1.0.0" + isexe "^2.0.0" -xmlhttprequest-ssl@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d" +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@7.0.0, wrap-ansi@^7.0.0, wrap-ansi@^8.1.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" -xtend@^4.0.0, xtend@~4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" -yargs@~3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" +write-file-atomic@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== dependencies: - camelcase "^1.0.2" - cliui "^2.1.0" - decamelize "^1.0.0" - window-size "0.1.0" + imurmurhash "^0.1.4" + signal-exit "^3.0.7" -yeast@0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== -yn@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a" +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yargs-parser@^21.0.1, yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^17.3.1: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From 4131f6e6b3589067b14f572e499e20a5f5c14513 Mon Sep 17 00:00:00 2001 From: Oleg Klimenko Date: Sun, 24 Mar 2024 01:49:12 +0300 Subject: [PATCH 2/7] backport upstream changes --- package.json | 1 + src/controller.ts | 8 ++++++++ tests/controller.spec.ts | 17 +++++++++++++++++ tsconfig.json | 1 + 4 files changed, 27 insertions(+) diff --git a/package.json b/package.json index 7dc13be..5ea4d42 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "version": "1.0.8", "description": "Internationalization support library", "main": "dist/index.js", + "types": "dist/index.d.ts", "type": "module", "scripts": { "lint": "eslint . --ext .js,.ts,.tsx", diff --git a/src/controller.ts b/src/controller.ts index 5d5e69d..90dc66d 100644 --- a/src/controller.ts +++ b/src/controller.ts @@ -115,6 +115,14 @@ export class TranslationController { protected substituteStrings(str: string, descriptor: Descriptor): string { let tmpStr = str; + // Fallback, if everything went wrong + if (!tmpStr.length) { + if (this.onFailedSubstitution) { + this.onFailedSubstitution('', descriptor.substitutions); + } + return descriptor.msgid; + } + // substitute optional parameters descriptor.substitutions.forEach((value, index) => { tmpStr = tmpStr.replace(new RegExp('%' + (index + 1), 'ig'), (value ?? '').toString()); diff --git a/tests/controller.spec.ts b/tests/controller.spec.ts index dc861c4..b90cb2e 100644 --- a/tests/controller.spec.ts +++ b/tests/controller.spec.ts @@ -703,5 +703,22 @@ describe('I18n end-user library', () => { done(); }); }); + + it('substituteStrings throws error if there is no plural form for current factor in current locale', () => { + const t = getController(); + const str = ''; + const descr: Descriptor = { + type: '_nt', + factor: 2, + msgid: 'test1', // ignored + msgidPlural: 'test3', // ignored + allPlurals: ['test1', 'test2'], + msgstr: [], + substitutions: ['param1', 'param2'], + }; + + assert.strictEqual(t.pSubstituteStrings(str, descr), 'test1'); + assert.strictEqual(getFailedSubstitutions().length, 1); + }); }); diff --git a/tsconfig.json b/tsconfig.json index 04bf0af..1e4676e 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -14,6 +14,7 @@ "importHelpers": true, "noUnusedLocals": true, "noUnusedParameters": true, + "declaration": true }, "exclude": [ "node_modules" From b3f5493824df43d2f918fdcee6f0eb2193c3af5b Mon Sep 17 00:00:00 2001 From: Oleg Klimenko Date: Sun, 24 Mar 2024 01:57:26 +0300 Subject: [PATCH 3/7] add prepare script --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 5ea4d42..5b2c99e 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,8 @@ "lint": "eslint . --ext .js,.ts,.tsx", "test": "jest", "typecheck": "tsc -p . --noEmit", - "build": "tsc -p . --outDir dist" + "build": "tsc -p . --outDir dist", + "prepare": "yarn build" }, "repository": { "type": "git", From f0649d73a06f2860e29b0e968db2308a0896811c Mon Sep 17 00:00:00 2001 From: Oleg Klimenko Date: Sun, 24 Mar 2024 20:48:25 +0300 Subject: [PATCH 4/7] add yon --- package.json | 11 ++++---- src/controller.ts | 4 +-- yarn.lock | 66 +++++++++++++++++++++++++++++++++++++---------- 3 files changed, 60 insertions(+), 21 deletions(-) diff --git a/package.json b/package.json index 5b2c99e..b978056 100644 --- a/package.json +++ b/package.json @@ -1,16 +1,15 @@ { "name": "i18n-dialect", - "version": "1.0.8", + "version": "2.0.0", "description": "Internationalization support library", "main": "dist/index.js", "types": "dist/index.d.ts", - "type": "module", "scripts": { "lint": "eslint . --ext .js,.ts,.tsx", "test": "jest", "typecheck": "tsc -p . --noEmit", - "build": "tsc -p . --outDir dist", - "prepare": "yarn build" + "build": "rm -rf dist && tsc -p . --outDir dist", + "prepare": "yon build" }, "repository": { "type": "git", @@ -34,7 +33,6 @@ "@types/assert": "^1.5.10", "@types/cli": "^0.11.25", "@types/get-stdin": "^7.0.0", - "@types/glob": "^8.1.0", "@types/jest": "^29.5.12", "@types/node": "^20.11.30", "@typescript-eslint/eslint-plugin": "6.21.0", @@ -52,6 +50,7 @@ "ts-jest": "^29.1.2", "ts-node": "^10.9.2", "tslib": "2.6.2", - "typescript": "5.3.3" + "typescript": "5.3.3", + "yarn-or-npm": "^3.0.1" } } diff --git a/src/controller.ts b/src/controller.ts index 90dc66d..56ba800 100644 --- a/src/controller.ts +++ b/src/controller.ts @@ -107,7 +107,7 @@ export class TranslationController { const formIndex = this.pluralSelect !== undefined && !forceUntranslated ? this.pluralSelect(descriptor.factor) : this.defaultPluralSelect(descriptor.factor); - return forms[parseInt(formIndex?.toString() ?? '', 10) ?? 0]; // explicit cast to number; some gettext formulas may return just true/false - that's bad. + return forms[parseInt(formIndex?.toString() ?? '', 10) || 0]; // explicit cast to number; some gettext formulas may return just true/false - that's bad. } } @@ -116,7 +116,7 @@ export class TranslationController { let tmpStr = str; // Fallback, if everything went wrong - if (!tmpStr.length) { + if (!tmpStr || !tmpStr.length) { if (this.onFailedSubstitution) { this.onFailedSubstitution('', descriptor.substitutions); } diff --git a/yarn.lock b/yarn.lock index fc52a10..0dd213d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -738,14 +738,6 @@ dependencies: get-stdin "*" -"@types/glob@^8.1.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-8.1.0.tgz#b63e70155391b0584dce44e7ea25190bbc38f2fc" - integrity sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w== - dependencies: - "@types/minimatch" "^5.1.2" - "@types/node" "*" - "@types/graceful-fs@^4.1.3": version "4.1.9" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" @@ -785,11 +777,6 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== -"@types/minimatch@^5.1.2": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" - integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== - "@types/node@*", "@types/node@^20.11.30": version "20.11.30" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.30.tgz#9c33467fc23167a347e73834f788f4b9f399d66f" @@ -1242,6 +1229,17 @@ cross-env@^7.0.3: dependencies: cross-spawn "^7.0.1" +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== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -2442,6 +2440,11 @@ natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -2548,6 +2551,11 @@ path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" +path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== + path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" @@ -2695,6 +2703,11 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" +semver@^5.5.0: + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" @@ -2707,6 +2720,13 @@ semver@^7.5.3, semver@^7.5.4: dependencies: lru-cache "^6.0.0" +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== + 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" @@ -2714,6 +2734,11 @@ shebang-command@^2.0.0: 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 sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== + shebang-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" @@ -2979,6 +3004,13 @@ walker@^1.0.8: dependencies: makeerror "1.0.12" +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" @@ -3040,6 +3072,14 @@ yargs@^17.3.1: y18n "^5.0.5" yargs-parser "^21.1.1" +yarn-or-npm@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/yarn-or-npm/-/yarn-or-npm-3.0.1.tgz#6336eea4dff7e23e226acc98c1a8ada17a1b8666" + integrity sha512-fTiQP6WbDAh5QZAVdbMQkecZoahnbOjClTQhzv74WX5h2Uaidj1isf9FDes11TKtsZ0/ZVfZsqZ+O3x6aLERHQ== + dependencies: + cross-spawn "^6.0.5" + pkg-dir "^4.2.0" + yn@3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" From 07b3efc81e35842339f84aa0a8e2f514abb80abf Mon Sep 17 00:00:00 2001 From: Oleg Klimenko Date: Sun, 24 Mar 2024 22:12:16 +0300 Subject: [PATCH 5/7] update build --- .gitignore | 1 - dist/index.d.ts | 23 ++ dist/index.js | 95 +++++ dist/index.js.map | 1 + dist/src/controller.d.ts | 25 ++ dist/src/controller.js | 147 ++++++++ dist/src/controller.js.map | 1 + dist/src/types.d.ts | 37 ++ dist/src/types.js | 2 + dist/src/types.js.map | 1 + dist/tests/controller.spec.d.ts | 1 + dist/tests/controller.spec.js | 596 ++++++++++++++++++++++++++++++ dist/tests/controller.spec.js.map | 1 + dist/tests/fixture.d.ts | 1 + dist/tests/fixture.js | 58 +++ dist/tests/fixture.js.map | 1 + dist/tests/utils.d.ts | 23 ++ dist/tests/utils.js | 36 ++ dist/tests/utils.js.map | 1 + package.json | 8 +- 20 files changed, 1053 insertions(+), 6 deletions(-) create mode 100644 dist/index.d.ts create mode 100644 dist/index.js create mode 100644 dist/index.js.map create mode 100644 dist/src/controller.d.ts create mode 100644 dist/src/controller.js create mode 100644 dist/src/controller.js.map create mode 100644 dist/src/types.d.ts create mode 100644 dist/src/types.js create mode 100644 dist/src/types.js.map create mode 100644 dist/tests/controller.spec.d.ts create mode 100644 dist/tests/controller.spec.js create mode 100644 dist/tests/controller.spec.js.map create mode 100644 dist/tests/fixture.d.ts create mode 100644 dist/tests/fixture.js create mode 100644 dist/tests/fixture.js.map create mode 100644 dist/tests/utils.d.ts create mode 100644 dist/tests/utils.js create mode 100644 dist/tests/utils.js.map diff --git a/.gitignore b/.gitignore index f3760a3..36a0767 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,6 @@ npm-debug.log* yarn-debug.log* yarn-error.log* -dist/ .idea/ # Runtime data diff --git a/dist/index.d.ts b/dist/index.d.ts new file mode 100644 index 0000000..ebd3e40 --- /dev/null +++ b/dist/index.d.ts @@ -0,0 +1,23 @@ +import { SimpleTranslation, ContextualTranslation, PluralTranslation, PluralContextualTranslation } from './src/types'; +import { TranslationController } from './src/controller'; +export { TranslationController } from './src/controller'; +export declare const _tGen: (ctrl: TranslationController) => SimpleTranslation; +export declare const _ptGen: (ctrl: TranslationController) => ContextualTranslation; +export declare const _ntGen: (ctrl: TranslationController) => PluralTranslation; +export declare const _nptGen: (ctrl: TranslationController) => PluralContextualTranslation; +export declare const _ggGen: (ctrl: TranslationController) => SimpleTranslation; +export declare const _pggGen: (ctrl: TranslationController) => ContextualTranslation; +export declare const _nggGen: (ctrl: TranslationController) => PluralTranslation; +export declare const _npggGen: (ctrl: TranslationController) => PluralContextualTranslation; +export declare class TranslationProvider { + private readonly ctrl; + constructor(ctrl: TranslationController); + _t: SimpleTranslation; + _pt: ContextualTranslation; + _nt: PluralTranslation; + _npt: PluralContextualTranslation; + _gg: SimpleTranslation; + _pgg: ContextualTranslation; + _ngg: PluralTranslation; + _npgg: PluralContextualTranslation; +} diff --git a/dist/index.js b/dist/index.js new file mode 100644 index 0000000..a2b6d28 --- /dev/null +++ b/dist/index.js @@ -0,0 +1,95 @@ +export { TranslationController } from './src/controller'; +export const _tGen = (ctrl) => (str, substitutions = []) => { + return ctrl.getString({ + type: '_t', + msgid: str, + msgstr: '', // just for type conformity + substitutions + }); +}; +export const _ptGen = (ctrl) => (context, str, substitutions = []) => { + return ctrl.getString({ + type: '_pt', + msgid: str, + msgstr: '', // just for type conformity + msgctxt: context, + substitutions + }); +}; +export const _ntGen = (ctrl) => (plurals, factor, substitutions = []) => { + return ctrl.getString({ + type: '_nt', + factor, + msgid: plurals[0], + msgidPlural: plurals[plurals.length - 1], + allPlurals: plurals, + msgstr: [], // just for type conformity + substitutions + }); +}; +export const _nptGen = (ctrl) => (context, plurals, factor, substitutions = []) => { + return ctrl.getString({ + type: '_npt', + factor, + msgid: plurals[0], + msgidPlural: plurals[plurals.length - 1], + allPlurals: plurals, + msgstr: [], // just for type conformity + msgctxt: context, + substitutions + }); +}; +export const _ggGen = (ctrl) => (str, substitutions = []) => { + return ctrl.getString({ + type: '_t', + msgid: str, + msgstr: '', // just for type conformity + substitutions + }, /* forceUntranslated = */ true); +}; +export const _pggGen = (ctrl) => (context, str, substitutions = []) => { + return ctrl.getString({ + type: '_pt', + msgid: str, + msgstr: '', // just for type conformity + msgctxt: context, + substitutions + }, /* forceUntranslated = */ true); +}; +export const _nggGen = (ctrl) => (plurals, factor, substitutions = []) => { + return ctrl.getString({ + type: '_nt', + factor, + msgid: plurals[0], + msgidPlural: plurals[plurals.length - 1], + allPlurals: plurals, + msgstr: [], // just for type conformity + substitutions + }, /* forceUntranslated = */ true); +}; +export const _npggGen = (ctrl) => (context, plurals, factor, substitutions = []) => { + return ctrl.getString({ + type: '_npt', + factor, + msgid: plurals[0], + msgidPlural: plurals[plurals.length - 1], + allPlurals: plurals, + msgstr: [], // just for type conformity + msgctxt: context, + substitutions + }, /* forceUntranslated = */ true); +}; +export class TranslationProvider { + constructor(ctrl) { + this.ctrl = ctrl; + this._t = _tGen(this.ctrl); + this._pt = _ptGen(this.ctrl); + this._nt = _ntGen(this.ctrl); + this._npt = _nptGen(this.ctrl); + this._gg = _ggGen(this.ctrl); + this._pgg = _pggGen(this.ctrl); + this._ngg = _nggGen(this.ctrl); + this._npgg = _npggGen(this.ctrl); + } +} +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/index.js.map b/dist/index.js.map new file mode 100644 index 0000000..3ec8e74 --- /dev/null +++ b/dist/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/src/controller.d.ts b/dist/src/controller.d.ts new file mode 100644 index 0000000..c37ac7f --- /dev/null +++ b/dist/src/controller.d.ts @@ -0,0 +1,25 @@ +import { Descriptor, Scalar } from './types'; +import { I18NEntry, TranslationMeta } from 'i18n-proto'; +export declare class TranslationController { + protected translationGetter: (name: string, onReady: (name: string, contents: string) => void) => void; + protected onFailedSubstitution: (str: string, substitutions: Scalar[]) => void; + protected defaultPluralSelect: (factor: number) => number; + protected dictMeta: TranslationMeta | undefined; + protected pluralSelect: (factor: number) => number | undefined; + protected dictionary: { + [key: string]: string[]; + }; + constructor(translationGetter: (name: string, onReady: (name: string, contents: string) => void) => void, onFailedSubstitution: (str: string, substitutions: Scalar[]) => void, defaultPluralSelect: (factor: number) => number); + getString(descriptor: Descriptor, forceUntranslated?: boolean): string; + setLocale(localeName: string, onReady: (name: string) => void, // called with new locale name when loading is finished + onError?: (e: any) => void): void; + protected getDictKeyForDescriptor(descriptor: Descriptor): string | undefined; + protected getDictKeyForEntry(item: I18NEntry): string | undefined; + protected getUntranslatedFallback(descriptor: Descriptor): string[]; + protected selectPluralForm(forms: string[], descriptor: Descriptor, forceUntranslated: boolean): string; + protected substituteStrings(str: string, descriptor: Descriptor): string; + protected makeNewDict(items: I18NEntry[]): { + [key: string]: string[]; + }; + protected makePluralSelectFunction(selectStr: string): (factor: number) => number; +} diff --git a/dist/src/controller.js b/dist/src/controller.js new file mode 100644 index 0000000..92d41a0 --- /dev/null +++ b/dist/src/controller.js @@ -0,0 +1,147 @@ +export class TranslationController { + constructor(translationGetter, onFailedSubstitution, defaultPluralSelect) { + this.translationGetter = translationGetter; + this.onFailedSubstitution = onFailedSubstitution; + this.defaultPluralSelect = defaultPluralSelect; + this.dictionary = {}; + } + getString(descriptor, forceUntranslated = false) { + const key = forceUntranslated ? undefined : this.getDictKeyForDescriptor(descriptor); + const translationForms = this.dictionary[key ?? ''] ?? this.getUntranslatedFallback(descriptor); + const translation = this.selectPluralForm(translationForms, descriptor, forceUntranslated); + return this.substituteStrings(translation, descriptor); + } + setLocale(localeName, onReady, // called with new locale name when loading is finished + onError) { + this.translationGetter(localeName, (name, contents) => { + const poData = JSON.parse(contents); // TODO: better json schema validation? + if (!poData.items || !poData.meta) { + onError?.('Invalid format of translation file'); + return; + } + try { + const dictionary = this.makeNewDict(poData.items); + const dictMeta = poData.meta; + const pluralSelect = this.makePluralSelectFunction(poData.meta.pluralForms); + // Everything seems to be OK, assign it all to object members + this.dictionary = dictionary; + this.dictMeta = dictMeta; + this.pluralSelect = pluralSelect; + onReady(name); + } + catch (e) { + onError?.(e); + } + }); + } + // ---------------------------------------------------------------------------------- + // Make key to receive translation from dictionary. + getDictKeyForDescriptor(descriptor) { + switch (descriptor.type) { + case '_t': + return descriptor.msgid; + case '_pt': + return 'ctx:' + descriptor.msgctxt + ';' + descriptor.msgid; + case '_nt': + return 'plural:' + descriptor.msgidPlural + ';' + descriptor.msgid; + case '_npt': + return 'ctx:' + descriptor.msgctxt + ';' + 'plural:' + descriptor.msgidPlural + ';' + descriptor.msgid; + } + } + // Make key to fill disctionary with translations. + // This should be fully compatible with getDictKeyForDescriptor! + getDictKeyForEntry(item) { + switch (item.type) { + case 'single': + if (item.context) { + return 'ctx:' + item.context + ';' + item.entry; + } + return item.entry; + case 'plural': + if (item.context) { + return 'ctx:' + item.context + ';' + 'plural:' + item.entry[1] + ';' + item.entry[0]; + } + return 'plural:' + item.entry[1] + ';' + item.entry[0]; + } + } + // Get msgid/msgid_plural as fallback in case of untranslated string + getUntranslatedFallback(descriptor) { + switch (descriptor.type) { + case '_t': + case '_pt': + return [descriptor.msgid]; + case '_nt': + case '_npt': + return descriptor.allPlurals; + } + } + // Select proper plural form based on descriptor + selectPluralForm(forms, descriptor, forceUntranslated) { + switch (descriptor.type) { + case '_t': + case '_pt': + return forms[0]; + case '_nt': + case '_npt': + if (!this.pluralSelect && !this.defaultPluralSelect) { + throw new Error('Plural form selection formula not found, but plural form requested in sources'); + } + const formIndex = this.pluralSelect !== undefined && !forceUntranslated + ? this.pluralSelect(descriptor.factor) + : this.defaultPluralSelect(descriptor.factor); + return forms[parseInt(formIndex?.toString() ?? '', 10) || 0]; // explicit cast to number; some gettext formulas may return just true/false - that's bad. + } + } + // Substitute parameters to %1, %2, etc and %% placeholders + substituteStrings(str, descriptor) { + let tmpStr = str; + // Fallback, if everything went wrong + if (!tmpStr || !tmpStr.length) { + if (this.onFailedSubstitution) { + this.onFailedSubstitution('', descriptor.substitutions); + } + return descriptor.msgid; + } + // substitute optional parameters + descriptor.substitutions.forEach((value, index) => { + tmpStr = tmpStr.replace(new RegExp('%' + (index + 1), 'ig'), (value ?? '').toString()); + }); + // substitute plurality factor + if (descriptor.type === '_nt' || descriptor.type === '_npt') { + tmpStr = tmpStr.replace(/%%/gi, descriptor.factor.toString()); + } + // error handling + if (this.onFailedSubstitution && tmpStr.match(/%\d+/)) { + this.onFailedSubstitution(str, descriptor.substitutions); + } + return tmpStr; + } + // Prepare internal dictionary. + // This should be run once on translation load. + makeNewDict(items) { + const dict = {}; + for (const item of items) { + // Don't add item in dict if no translation provided + if ((item.type === 'single' && !item.translation) || + (item.type === 'plural' && !item.translations.every((i) => !!i))) { + continue; + } + const key = this.getDictKeyForEntry(item); + if (!key) { + continue; + } + dict[key] = item.type === 'single' ? [item.translation ?? ''] : item.translations; + } + return dict; + } + // Evaluate Plural-Forms meta header to make plural selection function. + // This should be run once on translation load. + makePluralSelectFunction(selectStr) { + const matches = selectStr.match(/nplurals=(\d+);\s*plural=(.*)/i); + if (!matches) { + throw new Error("Couldn't parse Plural-Forms meta header"); + } + return (new Function('n', 'return Number(' + matches[2].replace(/;$/, '') + ');')); + } +} +//# sourceMappingURL=controller.js.map \ No newline at end of file diff --git a/dist/src/controller.js.map b/dist/src/controller.js.map new file mode 100644 index 0000000..e24f23e --- /dev/null +++ b/dist/src/controller.js.map @@ -0,0 +1 @@ +{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/controller.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/src/types.d.ts b/dist/src/types.d.ts new file mode 100644 index 0000000..6d32b17 --- /dev/null +++ b/dist/src/types.d.ts @@ -0,0 +1,37 @@ +export { SimpleTranslation, ContextualTranslation, PluralTranslation, PluralContextualTranslation, Scalar } from 'i18n-stex/src/types'; +import { Scalar } from 'i18n-stex/src/types'; +export type SingleSimpleDescriptor = { + type: '_t'; + msgid: string; + msgstr: string; + substitutions: Scalar[]; +}; +export type SingleContextualDescriptor = { + type: '_pt'; + msgid: string; + msgstr: string; + msgctxt: string; + substitutions: Scalar[]; +}; +export type PluralSimpleDescriptor = { + type: '_nt'; + factor: number; + msgid: string; + msgidPlural: string; + allPlurals: string[]; + msgstr: string[]; + substitutions: Scalar[]; +}; +export type PluralContextualDescriptor = { + type: '_npt'; + factor: number; + msgid: string; + msgidPlural: string; + allPlurals: string[]; + msgstr: string[]; + msgctxt: string; + substitutions: Scalar[]; +}; +export type SingleDescriptor = SingleSimpleDescriptor | SingleContextualDescriptor; +export type PluralDescriptor = PluralSimpleDescriptor | PluralContextualDescriptor; +export type Descriptor = SingleDescriptor | PluralDescriptor; diff --git a/dist/src/types.js b/dist/src/types.js new file mode 100644 index 0000000..718fd38 --- /dev/null +++ b/dist/src/types.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/dist/src/types.js.map b/dist/src/types.js.map new file mode 100644 index 0000000..7b5fff8 --- /dev/null +++ b/dist/src/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/tests/controller.spec.d.ts b/dist/tests/controller.spec.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/dist/tests/controller.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/dist/tests/controller.spec.js b/dist/tests/controller.spec.js new file mode 100644 index 0000000..b13c097 --- /dev/null +++ b/dist/tests/controller.spec.js @@ -0,0 +1,596 @@ +import assert from 'assert'; +import { getController, getFailedSubstitutions, clearFailedSubstitutions, setTranslationGetter } from './utils'; +import { testLocaleJson } from './fixture'; +describe('I18n end-user library', () => { + beforeEach(() => clearFailedSubstitutions()); + // Note: these compatibility tests are very important to guarantee + // that dictionary keys are formed in same way for i18n entries and descriptors. + it('Compatibility: getDictKeyForEntry and getDictKeyForDescriptor values are compatible for _t', () => { + const t = getController(); + const entry = { + type: 'single', + entry: 'test' + }; + const descr = { + type: '_t', + msgid: 'test', + msgstr: '', + substitutions: [] + }; + assert.strictEqual(t.pGetDictKeyForDescriptor(descr), t.pGetDictKeyForEntry(entry)); + }); + it('Compatibility: getDictKeyForEntry and getDictKeyForDescriptor values are compatible for _pt', () => { + const t = getController(); + const entry = { + type: 'single', + entry: 'test', + context: 'ctx' + }; + const descr = { + type: '_pt', + msgid: 'test', + msgstr: '', + msgctxt: 'ctx', + substitutions: [] + }; + assert.strictEqual(t.pGetDictKeyForDescriptor(descr), t.pGetDictKeyForEntry(entry)); + }); + it('Compatibility: getDictKeyForEntry and getDictKeyForDescriptor values are compatible for _nt', () => { + const t = getController(); + const entry = { + type: 'plural', + entry: ['test1', 'test3'], + translations: [] + }; + const descr = { + type: '_nt', + factor: 2, + msgid: 'test1', + msgidPlural: 'test3', + allPlurals: ['test1', 'test2', 'test3'], + msgstr: [], + substitutions: [] + }; + assert.strictEqual(t.pGetDictKeyForDescriptor(descr), t.pGetDictKeyForEntry(entry)); + }); + it('Compatibility: getDictKeyForEntry and getDictKeyForDescriptor values are compatible for _npt', () => { + const t = getController(); + const entry = { + type: 'plural', + entry: ['test1', 'test3'], + translations: [], + context: 'ctx' + }; + const descr = { + type: '_npt', + factor: 2, + msgid: 'test1', + msgidPlural: 'test3', + allPlurals: ['test1', 'test2', 'test3'], + msgctxt: 'ctx', + msgstr: [], + substitutions: [] + }; + assert.strictEqual(t.pGetDictKeyForDescriptor(descr), t.pGetDictKeyForEntry(entry)); + }); + it('Selects proper plural form with selectPluralForm and default selector', () => { + const t = getController(); + const descr = { + type: '_nt', + factor: 2, + msgid: 'test1', // ignored + msgidPlural: 'test3', // ignored + allPlurals: ['test1', 'test2', 'test3'], + msgstr: [], + substitutions: [] + }; + // default selector is russian + assert.strictEqual(t.pSelectPluralForm(['одна форма', 'две-четыре формы', 'пять и более форм'], descr, /*forceUntranslated = */ false), 'две-четыре формы'); + descr.factor = 1; + assert.strictEqual(t.pSelectPluralForm(['одна форма', 'две-четыре формы', 'пять и более форм'], descr, /*forceUntranslated = */ false), 'одна форма'); + descr.factor = 6; + assert.strictEqual(t.pSelectPluralForm(['одна форма', 'две-четыре формы', 'пять и более форм'], descr, /*forceUntranslated = */ false), 'пять и более форм'); + }); + it('Selects one and only form with selectPluralForm and default selector, if descriptor is not plural', () => { + const t = getController(); + const descr = { + type: '_t', + msgid: 'test1', // ignored + msgstr: '', + substitutions: [] + }; + // default selector is russian + assert.strictEqual(t.pSelectPluralForm(['одна форма'], descr, /*forceUntranslated = */ false), 'одна форма'); + }); + it('substituteStrings: proper substitution of single parameter', () => { + const t = getController(); + const str = 'This str has %1 as a value'; + const descr = { + type: '_t', + msgid: 'test1', // ignored + msgstr: '', + substitutions: [ + 'param1' + ] + }; + assert.strictEqual(t.pSubstituteStrings(str, descr), 'This str has param1 as a value'); + }); + it('substituteStrings: proper substitution of single parameter in many places', () => { + const t = getController(); + const str = 'This str has %1 as a value and %1 once again'; + const descr = { + type: '_t', + msgid: 'test1', // ignored + msgstr: '', + substitutions: [ + 'param1' + ] + }; + assert.strictEqual(t.pSubstituteStrings(str, descr), 'This str has param1 as a value and param1 once again'); + }); + it('substituteStrings: proper substitution of multiple different parameters', () => { + const t = getController(); + const str = 'This str has %1, %2 and %3 as values'; + const descr = { + type: '_t', + msgid: 'test1', // ignored + msgstr: '', + substitutions: [ + 'param1', + 'param2', + 'param3' + ] + }; + assert.strictEqual(t.pSubstituteStrings(str, descr), 'This str has param1, param2 and param3 as values'); + }); + it('substituteStrings: proper substitution of multiple different parameters in many places', () => { + const t = getController(); + const str = 'This str has %1, %2 and %3 as values, and also %1 and %3 as more values'; + const descr = { + type: '_t', + msgid: 'test1', // ignored + msgstr: '', + substitutions: [ + 'param1', + 'param2', + 'param3' + ] + }; + assert.strictEqual(t.pSubstituteStrings(str, descr), 'This str has param1, param2 and param3 as values, and also param1 and param3 as more values'); + }); + it('substituteStrings: proper substitution of plurality factor for plural forms', () => { + const t = getController(); + const str = 'This str has %% plurality factor'; + const descr = { + type: '_nt', + factor: 2, + msgid: 'test1', // ignored + msgidPlural: 'test3', // ignored + allPlurals: ['test1', 'test2', 'test3'], + msgstr: [], + substitutions: [] + }; + assert.strictEqual(t.pSubstituteStrings(str, descr), 'This str has 2 plurality factor'); + }); + it('substituteStrings: proper substitution of plurality factor in many places for plural forms', () => { + const t = getController(); + const str = 'This str has %% plurality factor and %% factor again'; + const descr = { + type: '_nt', + factor: 2, + msgid: 'test1', // ignored + msgidPlural: 'test3', // ignored + allPlurals: ['test1', 'test2', 'test3'], + msgstr: [], + substitutions: [] + }; + assert.strictEqual(t.pSubstituteStrings(str, descr), 'This str has 2 plurality factor and 2 factor again'); + }); + it('substituteStrings: proper substitution of parameters and plurality factor for plural forms', () => { + const t = getController(); + const str = 'This str has %% plurality factor and %1, %2 and %3 with %1 and %3 values again'; + const descr = { + type: '_nt', + factor: 2, + msgid: 'test1', // ignored + msgidPlural: 'test3', // ignored + allPlurals: ['test1', 'test2', 'test3'], + msgstr: [], + substitutions: [ + 'param1', + 'param2', + 'param3' + ] + }; + assert.strictEqual(t.pSubstituteStrings(str, descr), 'This str has 2 plurality factor and param1, param2 and param3 with param1 and param3 values again'); + }); + it('substituteStrings throws error if not all substitutions have been done', () => { + const t = getController(); + const str = 'This str has %1, %2 and %3 as values'; + const descr = { + type: '_t', + msgid: 'test1', // ignored + msgstr: '', + substitutions: [ + 'param1', + 'param2' + ] + }; + assert.strictEqual(t.pSubstituteStrings(str, descr), 'This str has param1, param2 and %3 as values'); + assert.strictEqual(getFailedSubstitutions().length, 1); + }); + it('Makes new dictionary from JSON file items', () => { + const t = getController(); + const items = [{ + type: 'single', + entry: 'test1', + translation: 'trans1' + }, { + type: 'single', + entry: 'test2', + context: 'ctx1', + translation: 'trans2' + }, { + type: 'plural', + entry: ['test3-1', 'test3-2'], + translations: ['trans3-1', 'trans3-2', 'trans3-3'] // different forms count! + }, { + type: 'plural', + context: 'ctx2', + entry: ['test4-1', 'test4-2'], + translations: ['trans4-1', 'trans4-2', 'trans4-3'] // different forms count! + }, { + type: 'single', // no transaltion provided + entry: 'test2', + context: 'ctx3' + }, { + type: 'plural', + context: 'ctx4', + entry: ['test5-1', 'test5-2'], + translations: ['', '', 'trans5-3'] // not all translations provided + }]; + assert.deepStrictEqual(t.pMakeNewDict(items), { + 'test1': ['trans1'], + 'ctx:ctx1;test2': ['trans2'], + 'plural:test3-2;test3-1': ['trans3-1', 'trans3-2', 'trans3-3'], + 'ctx:ctx2;plural:test4-2;test4-1': ['trans4-1', 'trans4-2', 'trans4-3'] + }); + }); + it('Makes proper selection function from JSON file', () => { + const t = getController(); + const funcs = { + // key: plurality formula + 'nplurals=1; plural=0;': { + 0: 0, // key: plurality factor; value: expected # of plural form + 1: 0, + 2: 0, + 5: 0 + }, + 'nplurals=2; plural=n != 1;': { + 0: 1, + 1: 0, + 2: 1, + 5: 1 + }, + 'nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;': { + 0: 2, + 1: 0, + 2: 1, + 10: 1, + 11: 1, + 21: 0, + 111: 1 + }, + 'nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;': { + 0: 2, + 1: 0, + 2: 1, + 3: 1, + 4: 1, + 5: 2, + 11: 2, + 21: 0, + 111: 2 + }, + 'nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5;': { + 0: 0, + 1: 1, + 2: 2, + 3: 3, + 4: 3, + 9: 3, + 10: 3, + 101: 5, + 102: 5, + 108: 3, + 112: 4, + 120: 4 + } + }; + for (const strfun in funcs) { + const plural = t.pMakePluralSelectFunction(strfun); + for (const factor in funcs[strfun]) { + const plVal = plural(parseInt(factor) ?? 0); + assert.strictEqual(plVal, funcs[strfun][factor], `Func: ${strfun} (failed on factor ${factor}: expected ${funcs[strfun][factor]} but got ${plVal})`); + } + } + }); + it('Throws error on incorrect selection function in JSON file', () => { + const t = getController(); + const exceptions = []; + try { + t.pMakePluralSelectFunction('nprals=1; plural=0;'); // typo + } + catch (e) { + exceptions.push(e); + } + try { + t.pMakePluralSelectFunction('nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 :'); // invalid func syntax + } + catch (e) { + exceptions.push(e); + } + assert.strictEqual(exceptions[0] instanceof Error, true); + assert.strictEqual(exceptions[1] instanceof SyntaxError, true); + }); + it('Integration: properly loads locale file by name (via setLocale)', (done) => { + setTranslationGetter((name, onReady) => onReady(name, testLocaleJson)); + const t = getController(); + t.setLocale('cs_cz', (name) => { + assert.strictEqual(name, 'cs_cz'); // should match with name passed to setLocale + assert.strictEqual((t.mDictMeta() ?? { language: '' }).language, 'cs_CZ'); // should match with value in json + assert.strictEqual(Object.keys(t.mDictionary()).length, 4); // entries count in test file + assert.notStrictEqual(t.mPluralSelect(), undefined); + done(); + }, (err) => { + assert.strictEqual(err, undefined); + done(); + }); + }); + it('Integration: properly gets string from loaded dictionary with _t', (done) => { + setTranslationGetter((name, onReady) => onReady(name, testLocaleJson)); + const t = getController(); + t.setLocale('cs_cz', (_name) => { + const descr = { + type: '_t', + msgid: '"%1" не подключает по вашему адресу.', + msgstr: '', + substitutions: ['Provider'] + }; + assert.strictEqual(t.getString(descr), '"Provider" neumožňuje připojení na Vaší adrese.'); + done(); + }, (err) => { + assert.strictEqual(err, undefined); + done(); + }); + }); + it('Integration: properly gets string from loaded dictionary with _pt', (done) => { + setTranslationGetter((name, onReady) => onReady(name, testLocaleJson)); + const t = getController(); + t.setLocale('cs_cz', (_name) => { + const descr = { + type: '_pt', + msgid: '%1 км', + msgctxt: 'километры', + msgstr: '', + substitutions: ['23'] + }; + assert.strictEqual(t.getString(descr), '23 km'); + done(); + }, (err) => { + assert.strictEqual(err, undefined); + done(); + }); + }); + it('Integration: properly gets string from loaded dictionary with _nt', (done) => { + setTranslationGetter((name, onReady) => onReady(name, testLocaleJson)); + const t = getController(); + t.setLocale('cs_cz', (_name) => { + const descr = { + type: '_nt', + factor: 0, + msgid: '%% ТВ-канал', + msgidPlural: '%% ТВ-каналов', + allPlurals: ['%% ТВ-канал', '%% ТВ-канала', '%% ТВ-каналов'], + msgstr: [], + substitutions: [] + }; + descr.factor = 1; + assert.strictEqual(t.getString(descr), '1 TV kanál'); + descr.factor = 3; + assert.strictEqual(t.getString(descr), '3 TV kanály'); + descr.factor = 8; + assert.strictEqual(t.getString(descr), '8 TV kanálů'); + done(); + }, (err) => { + assert.strictEqual(err, undefined); + done(); + }); + }); + it('Integration: properly gets string from loaded dictionary with _npt', (done) => { + setTranslationGetter((name, onReady) => onReady(name, testLocaleJson)); + const t = getController(); + t.setLocale('cs_cz', (_name) => { + const descr = { + type: '_npt', + factor: 0, + msgid: '%% место', + msgidPlural: '%% мест', + allPlurals: ['%% место', '%% места', '%% мест'], + msgctxt: 'Вместимость парковки', + msgstr: [], + substitutions: [] + }; + descr.factor = 1; + assert.strictEqual(t.getString(descr), '1 místo'); + descr.factor = 3; + assert.strictEqual(t.getString(descr), '3 místa'); + descr.factor = 8; + assert.strictEqual(t.getString(descr), '8 míst'); + done(); + }, (err) => { + assert.strictEqual(err, undefined); + done(); + }); + }); + it('Integration: properly gets fallback string when no dictionary loaded with _t', () => { + const t = getController(); + const descr = { + type: '_t', + msgid: '"%1" не подключает по вашему адресу.', + msgstr: '', + substitutions: ['Provider'] + }; + assert.strictEqual(t.getString(descr), '"Provider" не подключает по вашему адресу.'); + }); + it('Integration: properly gets fallback string when no dictionary loaded with _pt', () => { + const t = getController(); + const descr = { + type: '_pt', + msgid: '%1 км', + msgctxt: 'километры', + msgstr: '', + substitutions: ['23'] + }; + assert.strictEqual(t.getString(descr), '23 км'); + }); + it('Integration: properly gets fallback string when no dictionary loaded with _nt', () => { + const t = getController(); + const descr = { + type: '_nt', + factor: 0, + msgid: '%% ТВ-канал', + msgidPlural: '%% ТВ-каналов', + allPlurals: ['%% ТВ-канал', '%% ТВ-канала', '%% ТВ-каналов'], + msgstr: [], + substitutions: [] + }; + descr.factor = 1; + assert.strictEqual(t.getString(descr), '1 ТВ-канал'); + descr.factor = 3; + assert.strictEqual(t.getString(descr), '3 ТВ-канала'); + descr.factor = 8; + assert.strictEqual(t.getString(descr), '8 ТВ-каналов'); + }); + it('Integration: properly gets fallback string when no dictionary loaded with _npt', () => { + const t = getController(); + const descr = { + type: '_npt', + factor: 0, + msgid: '%% место', + msgidPlural: '%% мест', + allPlurals: ['%% место', '%% места', '%% мест'], + msgctxt: 'Вместимость парковки', + msgstr: [], + substitutions: [] + }; + descr.factor = 1; + assert.strictEqual(t.getString(descr), '1 место'); + descr.factor = 3; + assert.strictEqual(t.getString(descr), '3 места'); + descr.factor = 8; + assert.strictEqual(t.getString(descr), '8 мест'); + }); + it('Integration: properly gets forced untranslated string from loaded dictionary with _t', (done) => { + setTranslationGetter((name, onReady) => onReady(name, testLocaleJson)); + const t = getController(); + t.setLocale('cs_cz', (_name) => { + const descr = { + type: '_t', + msgid: '"%1" не подключает по вашему адресу.', + msgstr: '', + substitutions: ['Provider'] + }; + assert.strictEqual(t.getString(descr, true), '"Provider" не подключает по вашему адресу.'); + done(); + }, (err) => { + assert.strictEqual(err, undefined); + done(); + }); + }); + it('Integration: properly gets forced untranslated string from loaded dictionary with _pt', (done) => { + setTranslationGetter((name, onReady) => onReady(name, testLocaleJson)); + const t = getController(); + t.setLocale('cs_cz', (_name) => { + const descr = { + type: '_pt', + msgid: '%1 км', + msgctxt: 'километры', + msgstr: '', + substitutions: ['23'] + }; + assert.strictEqual(t.getString(descr, true), '23 км'); + done(); + }, (err) => { + assert.strictEqual(err, undefined); + done(); + }); + }); + it('Integration: properly gets forced untranslated string from loaded dictionary with _nt', (done) => { + setTranslationGetter((name, onReady) => onReady(name, testLocaleJson)); + const t = getController(); + t.setLocale('cs_cz', (_name) => { + const descr = { + type: '_nt', + factor: 0, + msgid: '%% ТВ-канал', + msgidPlural: '%% ТВ-каналов', + allPlurals: ['%% ТВ-канал', '%% ТВ-канала', '%% ТВ-каналов'], + msgstr: [], + substitutions: [] + }; + descr.factor = 1; + assert.strictEqual(t.getString(descr, true), '1 ТВ-канал'); + descr.factor = 3; + assert.strictEqual(t.getString(descr, true), '3 ТВ-канала'); + descr.factor = 8; + assert.strictEqual(t.getString(descr, true), '8 ТВ-каналов'); + done(); + }, (err) => { + assert.strictEqual(err, undefined); + done(); + }); + }); + it('Integration: properly gets forced untranslated string from loaded dictionary with _npt', (done) => { + setTranslationGetter((name, onReady) => onReady(name, testLocaleJson)); + const t = getController(); + t.setLocale('cs_cz', (_name) => { + const descr = { + type: '_npt', + factor: 0, + msgid: '%% место', + msgidPlural: '%% мест', + allPlurals: ['%% место', '%% места', '%% мест'], + msgctxt: 'Вместимость парковки', + msgstr: [], + substitutions: [] + }; + descr.factor = 1; + assert.strictEqual(t.getString(descr, true), '1 место'); + descr.factor = 3; + assert.strictEqual(t.getString(descr, true), '3 места'); + descr.factor = 8; + assert.strictEqual(t.getString(descr, true), '8 мест'); + done(); + }, (err) => { + assert.strictEqual(err, undefined); + done(); + }); + }); + it('substituteStrings throws error if there is no plural form for current factor in current locale', () => { + const t = getController(); + const str = ''; + const descr = { + type: '_nt', + factor: 2, + msgid: 'test1', // ignored + msgidPlural: 'test3', // ignored + allPlurals: ['test1', 'test2'], + msgstr: [], + substitutions: ['param1', 'param2'], + }; + assert.strictEqual(t.pSubstituteStrings(str, descr), 'test1'); + assert.strictEqual(getFailedSubstitutions().length, 1); + }); +}); +//# sourceMappingURL=controller.spec.js.map \ No newline at end of file diff --git a/dist/tests/controller.spec.js.map b/dist/tests/controller.spec.js.map new file mode 100644 index 0000000..f99c8e7 --- /dev/null +++ b/dist/tests/controller.spec.js.map @@ -0,0 +1 @@ +{"version":3,"file":"controller.spec.js","sourceRoot":"","sources":["../../tests/controller.spec.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/fixture.d.ts b/dist/tests/fixture.d.ts new file mode 100644 index 0000000..a8d9640 --- /dev/null +++ b/dist/tests/fixture.d.ts @@ -0,0 +1 @@ +export declare const testLocaleJson = "{\n \"meta\": {\n \"projectIdVersion\": \"2gis-online\",\n \"reportMsgidBugsTo\": \"online4@2gis.ru\",\n \"potCreationDate\": \"2017-07-05 11:17+0700\",\n \"poRevisionDate\": \"2017-06-30 15:30+0700\",\n \"lastTranslator\": {\n \"name\": \"2GIS\",\n \"email\": \"crowdin@2gis.ru\"\n },\n \"language\": \"cs_CZ\",\n \"languageTeam\": \"Czech\",\n \"pluralForms\": \"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\",\n \"mimeVersion\": \"1.0\",\n \"contentType\": \"text/plain; charset=utf-8\",\n \"contentTransferEncoding\": \"8bit\",\n \"generatedBy\": \"Babel 2.1.1\"\n },\n \"items\": [\n {\n \"type\": \"single\",\n \"entry\": \"\\\"%1\\\" \u043D\u0435 \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0430\u0435\u0442 \u043F\u043E \u0432\u0430\u0448\u0435\u043C\u0443 \u0430\u0434\u0440\u0435\u0441\u0443.\",\n \"translation\": \"\\\"%1\\\" neumo\u017E\u0148uje p\u0159ipojen\u00ED na Va\u0161\u00ED adrese.\"\n },\n {\n \"type\": \"single\",\n \"entry\": \"%1 \u043A\u043C\",\n \"context\": \"\u043A\u0438\u043B\u043E\u043C\u0435\u0442\u0440\u044B\",\n \"translation\": \"%1 km\"\n },\n {\n \"type\": \"plural\",\n \"entry\": [\n \"%% \u0422\u0412-\u043A\u0430\u043D\u0430\u043B\",\n \"%% \u0422\u0412-\u043A\u0430\u043D\u0430\u043B\u043E\u0432\"\n ],\n \"translations\": [\n \"%% TV kan\u00E1l\",\n \"%% TV kan\u00E1ly\",\n \"%% TV kan\u00E1l\u016F\"\n ]\n },\n {\n \"type\": \"plural\",\n \"entry\": [\n \"%% \u043C\u0435\u0441\u0442\u043E\",\n \"%% \u043C\u0435\u0441\u0442\"\n ],\n \"context\": \"\u0412\u043C\u0435\u0441\u0442\u0438\u043C\u043E\u0441\u0442\u044C \u043F\u0430\u0440\u043A\u043E\u0432\u043A\u0438\",\n \"translations\": [\n \"%% m\u00EDsto\",\n \"%% m\u00EDsta\",\n \"%% m\u00EDst\"\n ]\n }\n ]\n}"; diff --git a/dist/tests/fixture.js b/dist/tests/fixture.js new file mode 100644 index 0000000..60dea4e --- /dev/null +++ b/dist/tests/fixture.js @@ -0,0 +1,58 @@ +export const testLocaleJson = `{ + "meta": { + "projectIdVersion": "2gis-online", + "reportMsgidBugsTo": "online4@2gis.ru", + "potCreationDate": "2017-07-05 11:17+0700", + "poRevisionDate": "2017-06-30 15:30+0700", + "lastTranslator": { + "name": "2GIS", + "email": "crowdin@2gis.ru" + }, + "language": "cs_CZ", + "languageTeam": "Czech", + "pluralForms": "nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2", + "mimeVersion": "1.0", + "contentType": "text/plain; charset=utf-8", + "contentTransferEncoding": "8bit", + "generatedBy": "Babel 2.1.1" + }, + "items": [ + { + "type": "single", + "entry": "\\"%1\\" не подключает по вашему адресу.", + "translation": "\\"%1\\" neumožňuje připojení na Vaší adrese." + }, + { + "type": "single", + "entry": "%1 км", + "context": "километры", + "translation": "%1 km" + }, + { + "type": "plural", + "entry": [ + "%% ТВ-канал", + "%% ТВ-каналов" + ], + "translations": [ + "%% TV kanál", + "%% TV kanály", + "%% TV kanálů" + ] + }, + { + "type": "plural", + "entry": [ + "%% место", + "%% мест" + ], + "context": "Вместимость парковки", + "translations": [ + "%% místo", + "%% místa", + "%% míst" + ] + } + ] +}`; +//# sourceMappingURL=fixture.js.map \ No newline at end of file diff --git a/dist/tests/fixture.js.map b/dist/tests/fixture.js.map new file mode 100644 index 0000000..ad79d5a --- /dev/null +++ b/dist/tests/fixture.js.map @@ -0,0 +1 @@ +{"version":3,"file":"fixture.js","sourceRoot":"","sources":["../../tests/fixture.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwD5B,CAAC"} \ No newline at end of file diff --git a/dist/tests/utils.d.ts b/dist/tests/utils.d.ts new file mode 100644 index 0000000..402f6e3 --- /dev/null +++ b/dist/tests/utils.d.ts @@ -0,0 +1,23 @@ +import { TranslationController } from '../src/controller'; +import { I18NEntry } from 'i18n-proto'; +import { Descriptor } from '../src/types'; +export declare class TranslationControllerTestable extends TranslationController { + mDictMeta: () => import("i18n-proto").TranslationMeta | undefined; + mPluralSelect: () => (factor: number) => number | undefined; + mDictionary: () => { + [key: string]: string[]; + }; + pGetDictKeyForDescriptor: (descriptor: Descriptor) => string | undefined; + pGetDictKeyForEntry: (item: I18NEntry) => string | undefined; + pGetUntranslatedFallback: (descriptor: Descriptor) => string[]; + pSelectPluralForm: (forms: string[], descriptor: Descriptor, forceUntranslated: boolean) => string; + pSubstituteStrings: (str: string, descriptor: Descriptor) => string; + pMakeNewDict: (items: I18NEntry[]) => { + [key: string]: string[]; + }; + pMakePluralSelectFunction: (selectStr: string) => (factor: number) => number; +} +export declare function getFailedSubstitutions(): any[]; +export declare function clearFailedSubstitutions(): void; +export declare function setTranslationGetter(getter: (name: string, onReady: (name: string, contents: string) => void) => void): void; +export declare function getController(): TranslationControllerTestable; diff --git a/dist/tests/utils.js b/dist/tests/utils.js new file mode 100644 index 0000000..78f1f59 --- /dev/null +++ b/dist/tests/utils.js @@ -0,0 +1,36 @@ +import { TranslationController } from '../src/controller'; +export class TranslationControllerTestable extends TranslationController { + constructor() { + super(...arguments); + // prefix 'm' for 'exposed member' + this.mDictMeta = () => this.dictMeta; + this.mPluralSelect = () => this.pluralSelect; + this.mDictionary = () => this.dictionary; + // prefix 'p' for 'exposed protected' + this.pGetDictKeyForDescriptor = (descriptor) => this.getDictKeyForDescriptor(descriptor); + this.pGetDictKeyForEntry = (item) => this.getDictKeyForEntry(item); + this.pGetUntranslatedFallback = (descriptor) => this.getUntranslatedFallback(descriptor); + this.pSelectPluralForm = (forms, descriptor, forceUntranslated) => this.selectPluralForm(forms, descriptor, forceUntranslated); + this.pSubstituteStrings = (str, descriptor) => this.substituteStrings(str, descriptor); + this.pMakeNewDict = (items) => this.makeNewDict(items); + this.pMakePluralSelectFunction = (selectStr) => this.makePluralSelectFunction(selectStr); + } +} +// helpers +let failedSubstitutions = []; +let translationGetter = (name, onReady) => onReady(name, ''); +export function getFailedSubstitutions() { + return failedSubstitutions; +} +export function clearFailedSubstitutions() { + failedSubstitutions = []; +} +export function setTranslationGetter(getter) { + translationGetter = getter; +} +export function getController() { + return new TranslationControllerTestable(translationGetter, (str, substitutions) => { failedSubstitutions.push({ str, substitutions }); }, + // russian default plural selector + (n) => n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2); +} +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/dist/tests/utils.js.map b/dist/tests/utils.js.map new file mode 100644 index 0000000..57e54d7 --- /dev/null +++ b/dist/tests/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../tests/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAI1D,MAAM,OAAO,6BAA8B,SAAQ,qBAAqB;IAAxE;;QACE,kCAAkC;QAC3B,cAAS,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;QAChC,kBAAa,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC;QACxC,gBAAW,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;QAE3C,qCAAqC;QAC9B,6BAAwB,GAAG,CAAC,UAAsB,EAAE,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;QAChG,wBAAmB,GAAG,CAAC,IAAe,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACzE,6BAAwB,GAAG,CAAC,UAAsB,EAAE,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;QAChG,sBAAiB,GAAG,CACzB,KAAe,EAAE,UAAsB,EAAE,iBAA0B,EACnE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC;QAC1D,uBAAkB,GAAG,CAAC,GAAW,EAAE,UAAsB,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACtG,iBAAY,GAAG,CAAC,KAAkB,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC/D,8BAAyB,GAAG,CAAC,SAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;IACrG,CAAC;CAAA;AAED,UAAU;AAEV,IAAI,mBAAmB,GAAU,EAAE,CAAC;AACpC,IAAI,iBAAiB,GAAG,CAAC,IAAY,EAAE,OAAiD,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAE/G,MAAM,UAAU,sBAAsB;IACpC,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,mBAAmB,GAAG,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAiF;IACpH,iBAAiB,GAAG,MAAM,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,6BAA6B,CACtC,iBAAiB,EACjB,CAAC,GAAG,EAAE,aAAa,EAAE,EAAE,GAAG,mBAAmB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,CAAA,CAAC,CAAC;IAC5E,kCAAkC;IAClC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAChH,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/package.json b/package.json index b978056..b6c59b4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "i18n-dialect", - "version": "2.0.0", + "version": "2.0.1", "description": "Internationalization support library", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -8,8 +8,7 @@ "lint": "eslint . --ext .js,.ts,.tsx", "test": "jest", "typecheck": "tsc -p . --noEmit", - "build": "rm -rf dist && tsc -p . --outDir dist", - "prepare": "yon build" + "build": "rm -rf dist && tsc -p . --outDir dist" }, "repository": { "type": "git", @@ -50,7 +49,6 @@ "ts-jest": "^29.1.2", "ts-node": "^10.9.2", "tslib": "2.6.2", - "typescript": "5.3.3", - "yarn-or-npm": "^3.0.1" + "typescript": "5.3.3" } } From 392cc08f9937aa8bfdbe5e45a7327954d5dcb01e Mon Sep 17 00:00:00 2001 From: Oleg Klimenko Date: Sun, 24 Mar 2024 23:51:15 +0300 Subject: [PATCH 6/7] rollback to commonjs build --- dist/index.js | 102 +++++--- dist/index.js.map | 2 +- dist/src/controller.js | 101 ++++---- dist/src/controller.js.map | 2 +- dist/src/types.js | 3 +- dist/tests/controller.spec.js | 407 +++++++++++++++--------------- dist/tests/controller.spec.js.map | 2 +- dist/tests/fixture.js | 61 +---- dist/tests/fixture.js.map | 2 +- dist/tests/utils.js | 58 +++-- dist/tests/utils.js.map | 2 +- package.json | 2 +- tsconfig.json | 2 +- 13 files changed, 372 insertions(+), 374 deletions(-) diff --git a/dist/index.js b/dist/index.js index a2b6d28..2f47be1 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,95 +1,117 @@ -export { TranslationController } from './src/controller'; -export const _tGen = (ctrl) => (str, substitutions = []) => { +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.TranslationProvider = exports._npggGen = exports._nggGen = exports._pggGen = exports._ggGen = exports._nptGen = exports._ntGen = exports._ptGen = exports._tGen = exports.TranslationController = void 0; +var controller_1 = require("./src/controller"); +Object.defineProperty(exports, "TranslationController", { enumerable: true, get: function () { return controller_1.TranslationController; } }); +var _tGen = function (ctrl) { return function (str, substitutions) { + if (substitutions === void 0) { substitutions = []; } return ctrl.getString({ type: '_t', msgid: str, msgstr: '', // just for type conformity - substitutions + substitutions: substitutions }); -}; -export const _ptGen = (ctrl) => (context, str, substitutions = []) => { +}; }; +exports._tGen = _tGen; +var _ptGen = function (ctrl) { return function (context, str, substitutions) { + if (substitutions === void 0) { substitutions = []; } return ctrl.getString({ type: '_pt', msgid: str, msgstr: '', // just for type conformity msgctxt: context, - substitutions + substitutions: substitutions }); -}; -export const _ntGen = (ctrl) => (plurals, factor, substitutions = []) => { +}; }; +exports._ptGen = _ptGen; +var _ntGen = function (ctrl) { return function (plurals, factor, substitutions) { + if (substitutions === void 0) { substitutions = []; } return ctrl.getString({ type: '_nt', - factor, + factor: factor, msgid: plurals[0], msgidPlural: plurals[plurals.length - 1], allPlurals: plurals, msgstr: [], // just for type conformity - substitutions + substitutions: substitutions }); -}; -export const _nptGen = (ctrl) => (context, plurals, factor, substitutions = []) => { +}; }; +exports._ntGen = _ntGen; +var _nptGen = function (ctrl) { return function (context, plurals, factor, substitutions) { + if (substitutions === void 0) { substitutions = []; } return ctrl.getString({ type: '_npt', - factor, + factor: factor, msgid: plurals[0], msgidPlural: plurals[plurals.length - 1], allPlurals: plurals, msgstr: [], // just for type conformity msgctxt: context, - substitutions + substitutions: substitutions }); -}; -export const _ggGen = (ctrl) => (str, substitutions = []) => { +}; }; +exports._nptGen = _nptGen; +var _ggGen = function (ctrl) { return function (str, substitutions) { + if (substitutions === void 0) { substitutions = []; } return ctrl.getString({ type: '_t', msgid: str, msgstr: '', // just for type conformity - substitutions + substitutions: substitutions }, /* forceUntranslated = */ true); -}; -export const _pggGen = (ctrl) => (context, str, substitutions = []) => { +}; }; +exports._ggGen = _ggGen; +var _pggGen = function (ctrl) { return function (context, str, substitutions) { + if (substitutions === void 0) { substitutions = []; } return ctrl.getString({ type: '_pt', msgid: str, msgstr: '', // just for type conformity msgctxt: context, - substitutions + substitutions: substitutions }, /* forceUntranslated = */ true); -}; -export const _nggGen = (ctrl) => (plurals, factor, substitutions = []) => { +}; }; +exports._pggGen = _pggGen; +var _nggGen = function (ctrl) { return function (plurals, factor, substitutions) { + if (substitutions === void 0) { substitutions = []; } return ctrl.getString({ type: '_nt', - factor, + factor: factor, msgid: plurals[0], msgidPlural: plurals[plurals.length - 1], allPlurals: plurals, msgstr: [], // just for type conformity - substitutions + substitutions: substitutions }, /* forceUntranslated = */ true); -}; -export const _npggGen = (ctrl) => (context, plurals, factor, substitutions = []) => { +}; }; +exports._nggGen = _nggGen; +var _npggGen = function (ctrl) { return function (context, plurals, factor, substitutions) { + if (substitutions === void 0) { substitutions = []; } return ctrl.getString({ type: '_npt', - factor, + factor: factor, msgid: plurals[0], msgidPlural: plurals[plurals.length - 1], allPlurals: plurals, msgstr: [], // just for type conformity msgctxt: context, - substitutions + substitutions: substitutions }, /* forceUntranslated = */ true); -}; -export class TranslationProvider { - constructor(ctrl) { +}; }; +exports._npggGen = _npggGen; +var TranslationProvider = /** @class */ (function () { + function TranslationProvider(ctrl) { this.ctrl = ctrl; - this._t = _tGen(this.ctrl); - this._pt = _ptGen(this.ctrl); - this._nt = _ntGen(this.ctrl); - this._npt = _nptGen(this.ctrl); - this._gg = _ggGen(this.ctrl); - this._pgg = _pggGen(this.ctrl); - this._ngg = _nggGen(this.ctrl); - this._npgg = _npggGen(this.ctrl); + this._t = (0, exports._tGen)(this.ctrl); + this._pt = (0, exports._ptGen)(this.ctrl); + this._nt = (0, exports._ntGen)(this.ctrl); + this._npt = (0, exports._nptGen)(this.ctrl); + this._gg = (0, exports._ggGen)(this.ctrl); + this._pgg = (0, exports._pggGen)(this.ctrl); + this._ngg = (0, exports._nggGen)(this.ctrl); + this._npgg = (0, exports._npggGen)(this.ctrl); } -} + return TranslationProvider; +}()); +exports.TranslationProvider = TranslationProvider; //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/index.js.map b/dist/index.js.map index 3ec8e74..86c22ee 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/src/controller.js b/dist/src/controller.js index 92d41a0..91c8848 100644 --- a/dist/src/controller.js +++ b/dist/src/controller.js @@ -1,42 +1,48 @@ -export class TranslationController { - constructor(translationGetter, onFailedSubstitution, defaultPluralSelect) { +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.TranslationController = void 0; +var TranslationController = /** @class */ (function () { + function TranslationController(translationGetter, onFailedSubstitution, defaultPluralSelect) { this.translationGetter = translationGetter; this.onFailedSubstitution = onFailedSubstitution; this.defaultPluralSelect = defaultPluralSelect; this.dictionary = {}; } - getString(descriptor, forceUntranslated = false) { - const key = forceUntranslated ? undefined : this.getDictKeyForDescriptor(descriptor); - const translationForms = this.dictionary[key ?? ''] ?? this.getUntranslatedFallback(descriptor); - const translation = this.selectPluralForm(translationForms, descriptor, forceUntranslated); + TranslationController.prototype.getString = function (descriptor, forceUntranslated) { + var _a; + if (forceUntranslated === void 0) { forceUntranslated = false; } + var key = forceUntranslated ? undefined : this.getDictKeyForDescriptor(descriptor); + var translationForms = (_a = this.dictionary[key !== null && key !== void 0 ? key : '']) !== null && _a !== void 0 ? _a : this.getUntranslatedFallback(descriptor); + var translation = this.selectPluralForm(translationForms, descriptor, forceUntranslated); return this.substituteStrings(translation, descriptor); - } - setLocale(localeName, onReady, // called with new locale name when loading is finished + }; + TranslationController.prototype.setLocale = function (localeName, onReady, // called with new locale name when loading is finished onError) { - this.translationGetter(localeName, (name, contents) => { - const poData = JSON.parse(contents); // TODO: better json schema validation? + var _this = this; + this.translationGetter(localeName, function (name, contents) { + var poData = JSON.parse(contents); // TODO: better json schema validation? if (!poData.items || !poData.meta) { - onError?.('Invalid format of translation file'); + onError === null || onError === void 0 ? void 0 : onError('Invalid format of translation file'); return; } try { - const dictionary = this.makeNewDict(poData.items); - const dictMeta = poData.meta; - const pluralSelect = this.makePluralSelectFunction(poData.meta.pluralForms); + var dictionary = _this.makeNewDict(poData.items); + var dictMeta = poData.meta; + var pluralSelect = _this.makePluralSelectFunction(poData.meta.pluralForms); // Everything seems to be OK, assign it all to object members - this.dictionary = dictionary; - this.dictMeta = dictMeta; - this.pluralSelect = pluralSelect; + _this.dictionary = dictionary; + _this.dictMeta = dictMeta; + _this.pluralSelect = pluralSelect; onReady(name); } catch (e) { - onError?.(e); + onError === null || onError === void 0 ? void 0 : onError(e); } }); - } + }; // ---------------------------------------------------------------------------------- // Make key to receive translation from dictionary. - getDictKeyForDescriptor(descriptor) { + TranslationController.prototype.getDictKeyForDescriptor = function (descriptor) { switch (descriptor.type) { case '_t': return descriptor.msgid; @@ -47,10 +53,10 @@ export class TranslationController { case '_npt': return 'ctx:' + descriptor.msgctxt + ';' + 'plural:' + descriptor.msgidPlural + ';' + descriptor.msgid; } - } + }; // Make key to fill disctionary with translations. // This should be fully compatible with getDictKeyForDescriptor! - getDictKeyForEntry(item) { + TranslationController.prototype.getDictKeyForEntry = function (item) { switch (item.type) { case 'single': if (item.context) { @@ -63,9 +69,9 @@ export class TranslationController { } return 'plural:' + item.entry[1] + ';' + item.entry[0]; } - } + }; // Get msgid/msgid_plural as fallback in case of untranslated string - getUntranslatedFallback(descriptor) { + TranslationController.prototype.getUntranslatedFallback = function (descriptor) { switch (descriptor.type) { case '_t': case '_pt': @@ -74,9 +80,10 @@ export class TranslationController { case '_npt': return descriptor.allPlurals; } - } + }; // Select proper plural form based on descriptor - selectPluralForm(forms, descriptor, forceUntranslated) { + TranslationController.prototype.selectPluralForm = function (forms, descriptor, forceUntranslated) { + var _a; switch (descriptor.type) { case '_t': case '_pt': @@ -86,15 +93,15 @@ export class TranslationController { if (!this.pluralSelect && !this.defaultPluralSelect) { throw new Error('Plural form selection formula not found, but plural form requested in sources'); } - const formIndex = this.pluralSelect !== undefined && !forceUntranslated + var formIndex = this.pluralSelect !== undefined && !forceUntranslated ? this.pluralSelect(descriptor.factor) : this.defaultPluralSelect(descriptor.factor); - return forms[parseInt(formIndex?.toString() ?? '', 10) || 0]; // explicit cast to number; some gettext formulas may return just true/false - that's bad. + return forms[parseInt((_a = formIndex === null || formIndex === void 0 ? void 0 : formIndex.toString()) !== null && _a !== void 0 ? _a : '', 10) || 0]; // explicit cast to number; some gettext formulas may return just true/false - that's bad. } - } + }; // Substitute parameters to %1, %2, etc and %% placeholders - substituteStrings(str, descriptor) { - let tmpStr = str; + TranslationController.prototype.substituteStrings = function (str, descriptor) { + var tmpStr = str; // Fallback, if everything went wrong if (!tmpStr || !tmpStr.length) { if (this.onFailedSubstitution) { @@ -103,8 +110,8 @@ export class TranslationController { return descriptor.msgid; } // substitute optional parameters - descriptor.substitutions.forEach((value, index) => { - tmpStr = tmpStr.replace(new RegExp('%' + (index + 1), 'ig'), (value ?? '').toString()); + descriptor.substitutions.forEach(function (value, index) { + tmpStr = tmpStr.replace(new RegExp('%' + (index + 1), 'ig'), (value !== null && value !== void 0 ? value : '').toString()); }); // substitute plurality factor if (descriptor.type === '_nt' || descriptor.type === '_npt') { @@ -115,33 +122,37 @@ export class TranslationController { this.onFailedSubstitution(str, descriptor.substitutions); } return tmpStr; - } + }; // Prepare internal dictionary. // This should be run once on translation load. - makeNewDict(items) { - const dict = {}; - for (const item of items) { + TranslationController.prototype.makeNewDict = function (items) { + var _a; + var dict = {}; + for (var _i = 0, items_1 = items; _i < items_1.length; _i++) { + var item = items_1[_i]; // Don't add item in dict if no translation provided if ((item.type === 'single' && !item.translation) || - (item.type === 'plural' && !item.translations.every((i) => !!i))) { + (item.type === 'plural' && !item.translations.every(function (i) { return !!i; }))) { continue; } - const key = this.getDictKeyForEntry(item); + var key = this.getDictKeyForEntry(item); if (!key) { continue; } - dict[key] = item.type === 'single' ? [item.translation ?? ''] : item.translations; + dict[key] = item.type === 'single' ? [(_a = item.translation) !== null && _a !== void 0 ? _a : ''] : item.translations; } return dict; - } + }; // Evaluate Plural-Forms meta header to make plural selection function. // This should be run once on translation load. - makePluralSelectFunction(selectStr) { - const matches = selectStr.match(/nplurals=(\d+);\s*plural=(.*)/i); + TranslationController.prototype.makePluralSelectFunction = function (selectStr) { + var matches = selectStr.match(/nplurals=(\d+);\s*plural=(.*)/i); if (!matches) { throw new Error("Couldn't parse Plural-Forms meta header"); } return (new Function('n', 'return Number(' + matches[2].replace(/;$/, '') + ');')); - } -} + }; + return TranslationController; +}()); +exports.TranslationController = TranslationController; //# sourceMappingURL=controller.js.map \ No newline at end of file diff --git a/dist/src/controller.js.map b/dist/src/controller.js.map index e24f23e..3eac743 100644 --- a/dist/src/controller.js.map +++ b/dist/src/controller.js.map @@ -1 +1 @@ -{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/controller.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/controller.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/src/types.js b/dist/src/types.js index 718fd38..11e638d 100644 --- a/dist/src/types.js +++ b/dist/src/types.js @@ -1,2 +1,3 @@ -export {}; +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); //# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/dist/tests/controller.spec.js b/dist/tests/controller.spec.js index b13c097..4bad494 100644 --- a/dist/tests/controller.spec.js +++ b/dist/tests/controller.spec.js @@ -1,48 +1,51 @@ -import assert from 'assert'; -import { getController, getFailedSubstitutions, clearFailedSubstitutions, setTranslationGetter } from './utils'; -import { testLocaleJson } from './fixture'; -describe('I18n end-user library', () => { - beforeEach(() => clearFailedSubstitutions()); +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var tslib_1 = require("tslib"); +var assert_1 = tslib_1.__importDefault(require("assert")); +var utils_1 = require("./utils"); +var fixture_1 = require("./fixture"); +describe('I18n end-user library', function () { + beforeEach(function () { return (0, utils_1.clearFailedSubstitutions)(); }); // Note: these compatibility tests are very important to guarantee // that dictionary keys are formed in same way for i18n entries and descriptors. - it('Compatibility: getDictKeyForEntry and getDictKeyForDescriptor values are compatible for _t', () => { - const t = getController(); - const entry = { + it('Compatibility: getDictKeyForEntry and getDictKeyForDescriptor values are compatible for _t', function () { + var t = (0, utils_1.getController)(); + var entry = { type: 'single', entry: 'test' }; - const descr = { + var descr = { type: '_t', msgid: 'test', msgstr: '', substitutions: [] }; - assert.strictEqual(t.pGetDictKeyForDescriptor(descr), t.pGetDictKeyForEntry(entry)); + assert_1.default.strictEqual(t.pGetDictKeyForDescriptor(descr), t.pGetDictKeyForEntry(entry)); }); - it('Compatibility: getDictKeyForEntry and getDictKeyForDescriptor values are compatible for _pt', () => { - const t = getController(); - const entry = { + it('Compatibility: getDictKeyForEntry and getDictKeyForDescriptor values are compatible for _pt', function () { + var t = (0, utils_1.getController)(); + var entry = { type: 'single', entry: 'test', context: 'ctx' }; - const descr = { + var descr = { type: '_pt', msgid: 'test', msgstr: '', msgctxt: 'ctx', substitutions: [] }; - assert.strictEqual(t.pGetDictKeyForDescriptor(descr), t.pGetDictKeyForEntry(entry)); + assert_1.default.strictEqual(t.pGetDictKeyForDescriptor(descr), t.pGetDictKeyForEntry(entry)); }); - it('Compatibility: getDictKeyForEntry and getDictKeyForDescriptor values are compatible for _nt', () => { - const t = getController(); - const entry = { + it('Compatibility: getDictKeyForEntry and getDictKeyForDescriptor values are compatible for _nt', function () { + var t = (0, utils_1.getController)(); + var entry = { type: 'plural', entry: ['test1', 'test3'], translations: [] }; - const descr = { + var descr = { type: '_nt', factor: 2, msgid: 'test1', @@ -51,17 +54,17 @@ describe('I18n end-user library', () => { msgstr: [], substitutions: [] }; - assert.strictEqual(t.pGetDictKeyForDescriptor(descr), t.pGetDictKeyForEntry(entry)); + assert_1.default.strictEqual(t.pGetDictKeyForDescriptor(descr), t.pGetDictKeyForEntry(entry)); }); - it('Compatibility: getDictKeyForEntry and getDictKeyForDescriptor values are compatible for _npt', () => { - const t = getController(); - const entry = { + it('Compatibility: getDictKeyForEntry and getDictKeyForDescriptor values are compatible for _npt', function () { + var t = (0, utils_1.getController)(); + var entry = { type: 'plural', entry: ['test1', 'test3'], translations: [], context: 'ctx' }; - const descr = { + var descr = { type: '_npt', factor: 2, msgid: 'test1', @@ -71,11 +74,11 @@ describe('I18n end-user library', () => { msgstr: [], substitutions: [] }; - assert.strictEqual(t.pGetDictKeyForDescriptor(descr), t.pGetDictKeyForEntry(entry)); + assert_1.default.strictEqual(t.pGetDictKeyForDescriptor(descr), t.pGetDictKeyForEntry(entry)); }); - it('Selects proper plural form with selectPluralForm and default selector', () => { - const t = getController(); - const descr = { + it('Selects proper plural form with selectPluralForm and default selector', function () { + var t = (0, utils_1.getController)(); + var descr = { type: '_nt', factor: 2, msgid: 'test1', // ignored @@ -85,27 +88,27 @@ describe('I18n end-user library', () => { substitutions: [] }; // default selector is russian - assert.strictEqual(t.pSelectPluralForm(['одна форма', 'две-четыре формы', 'пять и более форм'], descr, /*forceUntranslated = */ false), 'две-четыре формы'); + assert_1.default.strictEqual(t.pSelectPluralForm(['одна форма', 'две-четыре формы', 'пять и более форм'], descr, /*forceUntranslated = */ false), 'две-четыре формы'); descr.factor = 1; - assert.strictEqual(t.pSelectPluralForm(['одна форма', 'две-четыре формы', 'пять и более форм'], descr, /*forceUntranslated = */ false), 'одна форма'); + assert_1.default.strictEqual(t.pSelectPluralForm(['одна форма', 'две-четыре формы', 'пять и более форм'], descr, /*forceUntranslated = */ false), 'одна форма'); descr.factor = 6; - assert.strictEqual(t.pSelectPluralForm(['одна форма', 'две-четыре формы', 'пять и более форм'], descr, /*forceUntranslated = */ false), 'пять и более форм'); + assert_1.default.strictEqual(t.pSelectPluralForm(['одна форма', 'две-четыре формы', 'пять и более форм'], descr, /*forceUntranslated = */ false), 'пять и более форм'); }); - it('Selects one and only form with selectPluralForm and default selector, if descriptor is not plural', () => { - const t = getController(); - const descr = { + it('Selects one and only form with selectPluralForm and default selector, if descriptor is not plural', function () { + var t = (0, utils_1.getController)(); + var descr = { type: '_t', msgid: 'test1', // ignored msgstr: '', substitutions: [] }; // default selector is russian - assert.strictEqual(t.pSelectPluralForm(['одна форма'], descr, /*forceUntranslated = */ false), 'одна форма'); + assert_1.default.strictEqual(t.pSelectPluralForm(['одна форма'], descr, /*forceUntranslated = */ false), 'одна форма'); }); - it('substituteStrings: proper substitution of single parameter', () => { - const t = getController(); - const str = 'This str has %1 as a value'; - const descr = { + it('substituteStrings: proper substitution of single parameter', function () { + var t = (0, utils_1.getController)(); + var str = 'This str has %1 as a value'; + var descr = { type: '_t', msgid: 'test1', // ignored msgstr: '', @@ -113,12 +116,12 @@ describe('I18n end-user library', () => { 'param1' ] }; - assert.strictEqual(t.pSubstituteStrings(str, descr), 'This str has param1 as a value'); + assert_1.default.strictEqual(t.pSubstituteStrings(str, descr), 'This str has param1 as a value'); }); - it('substituteStrings: proper substitution of single parameter in many places', () => { - const t = getController(); - const str = 'This str has %1 as a value and %1 once again'; - const descr = { + it('substituteStrings: proper substitution of single parameter in many places', function () { + var t = (0, utils_1.getController)(); + var str = 'This str has %1 as a value and %1 once again'; + var descr = { type: '_t', msgid: 'test1', // ignored msgstr: '', @@ -126,12 +129,12 @@ describe('I18n end-user library', () => { 'param1' ] }; - assert.strictEqual(t.pSubstituteStrings(str, descr), 'This str has param1 as a value and param1 once again'); + assert_1.default.strictEqual(t.pSubstituteStrings(str, descr), 'This str has param1 as a value and param1 once again'); }); - it('substituteStrings: proper substitution of multiple different parameters', () => { - const t = getController(); - const str = 'This str has %1, %2 and %3 as values'; - const descr = { + it('substituteStrings: proper substitution of multiple different parameters', function () { + var t = (0, utils_1.getController)(); + var str = 'This str has %1, %2 and %3 as values'; + var descr = { type: '_t', msgid: 'test1', // ignored msgstr: '', @@ -141,12 +144,12 @@ describe('I18n end-user library', () => { 'param3' ] }; - assert.strictEqual(t.pSubstituteStrings(str, descr), 'This str has param1, param2 and param3 as values'); + assert_1.default.strictEqual(t.pSubstituteStrings(str, descr), 'This str has param1, param2 and param3 as values'); }); - it('substituteStrings: proper substitution of multiple different parameters in many places', () => { - const t = getController(); - const str = 'This str has %1, %2 and %3 as values, and also %1 and %3 as more values'; - const descr = { + it('substituteStrings: proper substitution of multiple different parameters in many places', function () { + var t = (0, utils_1.getController)(); + var str = 'This str has %1, %2 and %3 as values, and also %1 and %3 as more values'; + var descr = { type: '_t', msgid: 'test1', // ignored msgstr: '', @@ -156,12 +159,12 @@ describe('I18n end-user library', () => { 'param3' ] }; - assert.strictEqual(t.pSubstituteStrings(str, descr), 'This str has param1, param2 and param3 as values, and also param1 and param3 as more values'); + assert_1.default.strictEqual(t.pSubstituteStrings(str, descr), 'This str has param1, param2 and param3 as values, and also param1 and param3 as more values'); }); - it('substituteStrings: proper substitution of plurality factor for plural forms', () => { - const t = getController(); - const str = 'This str has %% plurality factor'; - const descr = { + it('substituteStrings: proper substitution of plurality factor for plural forms', function () { + var t = (0, utils_1.getController)(); + var str = 'This str has %% plurality factor'; + var descr = { type: '_nt', factor: 2, msgid: 'test1', // ignored @@ -170,12 +173,12 @@ describe('I18n end-user library', () => { msgstr: [], substitutions: [] }; - assert.strictEqual(t.pSubstituteStrings(str, descr), 'This str has 2 plurality factor'); + assert_1.default.strictEqual(t.pSubstituteStrings(str, descr), 'This str has 2 plurality factor'); }); - it('substituteStrings: proper substitution of plurality factor in many places for plural forms', () => { - const t = getController(); - const str = 'This str has %% plurality factor and %% factor again'; - const descr = { + it('substituteStrings: proper substitution of plurality factor in many places for plural forms', function () { + var t = (0, utils_1.getController)(); + var str = 'This str has %% plurality factor and %% factor again'; + var descr = { type: '_nt', factor: 2, msgid: 'test1', // ignored @@ -184,12 +187,12 @@ describe('I18n end-user library', () => { msgstr: [], substitutions: [] }; - assert.strictEqual(t.pSubstituteStrings(str, descr), 'This str has 2 plurality factor and 2 factor again'); + assert_1.default.strictEqual(t.pSubstituteStrings(str, descr), 'This str has 2 plurality factor and 2 factor again'); }); - it('substituteStrings: proper substitution of parameters and plurality factor for plural forms', () => { - const t = getController(); - const str = 'This str has %% plurality factor and %1, %2 and %3 with %1 and %3 values again'; - const descr = { + it('substituteStrings: proper substitution of parameters and plurality factor for plural forms', function () { + var t = (0, utils_1.getController)(); + var str = 'This str has %% plurality factor and %1, %2 and %3 with %1 and %3 values again'; + var descr = { type: '_nt', factor: 2, msgid: 'test1', // ignored @@ -202,12 +205,12 @@ describe('I18n end-user library', () => { 'param3' ] }; - assert.strictEqual(t.pSubstituteStrings(str, descr), 'This str has 2 plurality factor and param1, param2 and param3 with param1 and param3 values again'); + assert_1.default.strictEqual(t.pSubstituteStrings(str, descr), 'This str has 2 plurality factor and param1, param2 and param3 with param1 and param3 values again'); }); - it('substituteStrings throws error if not all substitutions have been done', () => { - const t = getController(); - const str = 'This str has %1, %2 and %3 as values'; - const descr = { + it('substituteStrings throws error if not all substitutions have been done', function () { + var t = (0, utils_1.getController)(); + var str = 'This str has %1, %2 and %3 as values'; + var descr = { type: '_t', msgid: 'test1', // ignored msgstr: '', @@ -216,12 +219,12 @@ describe('I18n end-user library', () => { 'param2' ] }; - assert.strictEqual(t.pSubstituteStrings(str, descr), 'This str has param1, param2 and %3 as values'); - assert.strictEqual(getFailedSubstitutions().length, 1); + assert_1.default.strictEqual(t.pSubstituteStrings(str, descr), 'This str has param1, param2 and %3 as values'); + assert_1.default.strictEqual((0, utils_1.getFailedSubstitutions)().length, 1); }); - it('Makes new dictionary from JSON file items', () => { - const t = getController(); - const items = [{ + it('Makes new dictionary from JSON file items', function () { + var t = (0, utils_1.getController)(); + var items = [{ type: 'single', entry: 'test1', translation: 'trans1' @@ -249,16 +252,17 @@ describe('I18n end-user library', () => { entry: ['test5-1', 'test5-2'], translations: ['', '', 'trans5-3'] // not all translations provided }]; - assert.deepStrictEqual(t.pMakeNewDict(items), { + assert_1.default.deepStrictEqual(t.pMakeNewDict(items), { 'test1': ['trans1'], 'ctx:ctx1;test2': ['trans2'], 'plural:test3-2;test3-1': ['trans3-1', 'trans3-2', 'trans3-3'], 'ctx:ctx2;plural:test4-2;test4-1': ['trans4-1', 'trans4-2', 'trans4-3'] }); }); - it('Makes proper selection function from JSON file', () => { - const t = getController(); - const funcs = { + it('Makes proper selection function from JSON file', function () { + var _a; + var t = (0, utils_1.getController)(); + var funcs = { // key: plurality formula 'nplurals=1; plural=0;': { 0: 0, // key: plurality factor; value: expected # of plural form @@ -307,17 +311,17 @@ describe('I18n end-user library', () => { 120: 4 } }; - for (const strfun in funcs) { - const plural = t.pMakePluralSelectFunction(strfun); - for (const factor in funcs[strfun]) { - const plVal = plural(parseInt(factor) ?? 0); - assert.strictEqual(plVal, funcs[strfun][factor], `Func: ${strfun} (failed on factor ${factor}: expected ${funcs[strfun][factor]} but got ${plVal})`); + for (var strfun in funcs) { + var plural = t.pMakePluralSelectFunction(strfun); + for (var factor in funcs[strfun]) { + var plVal = plural((_a = parseInt(factor)) !== null && _a !== void 0 ? _a : 0); + assert_1.default.strictEqual(plVal, funcs[strfun][factor], "Func: ".concat(strfun, " (failed on factor ").concat(factor, ": expected ").concat(funcs[strfun][factor], " but got ").concat(plVal, ")")); } } }); - it('Throws error on incorrect selection function in JSON file', () => { - const t = getController(); - const exceptions = []; + it('Throws error on incorrect selection function in JSON file', function () { + var t = (0, utils_1.getController)(); + var exceptions = []; try { t.pMakePluralSelectFunction('nprals=1; plural=0;'); // typo } @@ -330,63 +334,64 @@ describe('I18n end-user library', () => { catch (e) { exceptions.push(e); } - assert.strictEqual(exceptions[0] instanceof Error, true); - assert.strictEqual(exceptions[1] instanceof SyntaxError, true); + assert_1.default.strictEqual(exceptions[0] instanceof Error, true); + assert_1.default.strictEqual(exceptions[1] instanceof SyntaxError, true); }); - it('Integration: properly loads locale file by name (via setLocale)', (done) => { - setTranslationGetter((name, onReady) => onReady(name, testLocaleJson)); - const t = getController(); - t.setLocale('cs_cz', (name) => { - assert.strictEqual(name, 'cs_cz'); // should match with name passed to setLocale - assert.strictEqual((t.mDictMeta() ?? { language: '' }).language, 'cs_CZ'); // should match with value in json - assert.strictEqual(Object.keys(t.mDictionary()).length, 4); // entries count in test file - assert.notStrictEqual(t.mPluralSelect(), undefined); + it('Integration: properly loads locale file by name (via setLocale)', function (done) { + (0, utils_1.setTranslationGetter)(function (name, onReady) { return onReady(name, fixture_1.testLocaleJson); }); + var t = (0, utils_1.getController)(); + t.setLocale('cs_cz', function (name) { + var _a; + assert_1.default.strictEqual(name, 'cs_cz'); // should match with name passed to setLocale + assert_1.default.strictEqual(((_a = t.mDictMeta()) !== null && _a !== void 0 ? _a : { language: '' }).language, 'cs_CZ'); // should match with value in json + assert_1.default.strictEqual(Object.keys(t.mDictionary()).length, 4); // entries count in test file + assert_1.default.notStrictEqual(t.mPluralSelect(), undefined); done(); - }, (err) => { - assert.strictEqual(err, undefined); + }, function (err) { + assert_1.default.strictEqual(err, undefined); done(); }); }); - it('Integration: properly gets string from loaded dictionary with _t', (done) => { - setTranslationGetter((name, onReady) => onReady(name, testLocaleJson)); - const t = getController(); - t.setLocale('cs_cz', (_name) => { - const descr = { + it('Integration: properly gets string from loaded dictionary with _t', function (done) { + (0, utils_1.setTranslationGetter)(function (name, onReady) { return onReady(name, fixture_1.testLocaleJson); }); + var t = (0, utils_1.getController)(); + t.setLocale('cs_cz', function (_name) { + var descr = { type: '_t', msgid: '"%1" не подключает по вашему адресу.', msgstr: '', substitutions: ['Provider'] }; - assert.strictEqual(t.getString(descr), '"Provider" neumožňuje připojení na Vaší adrese.'); + assert_1.default.strictEqual(t.getString(descr), '"Provider" neumožňuje připojení na Vaší adrese.'); done(); - }, (err) => { - assert.strictEqual(err, undefined); + }, function (err) { + assert_1.default.strictEqual(err, undefined); done(); }); }); - it('Integration: properly gets string from loaded dictionary with _pt', (done) => { - setTranslationGetter((name, onReady) => onReady(name, testLocaleJson)); - const t = getController(); - t.setLocale('cs_cz', (_name) => { - const descr = { + it('Integration: properly gets string from loaded dictionary with _pt', function (done) { + (0, utils_1.setTranslationGetter)(function (name, onReady) { return onReady(name, fixture_1.testLocaleJson); }); + var t = (0, utils_1.getController)(); + t.setLocale('cs_cz', function (_name) { + var descr = { type: '_pt', msgid: '%1 км', msgctxt: 'километры', msgstr: '', substitutions: ['23'] }; - assert.strictEqual(t.getString(descr), '23 km'); + assert_1.default.strictEqual(t.getString(descr), '23 km'); done(); - }, (err) => { - assert.strictEqual(err, undefined); + }, function (err) { + assert_1.default.strictEqual(err, undefined); done(); }); }); - it('Integration: properly gets string from loaded dictionary with _nt', (done) => { - setTranslationGetter((name, onReady) => onReady(name, testLocaleJson)); - const t = getController(); - t.setLocale('cs_cz', (_name) => { - const descr = { + it('Integration: properly gets string from loaded dictionary with _nt', function (done) { + (0, utils_1.setTranslationGetter)(function (name, onReady) { return onReady(name, fixture_1.testLocaleJson); }); + var t = (0, utils_1.getController)(); + t.setLocale('cs_cz', function (_name) { + var descr = { type: '_nt', factor: 0, msgid: '%% ТВ-канал', @@ -396,22 +401,22 @@ describe('I18n end-user library', () => { substitutions: [] }; descr.factor = 1; - assert.strictEqual(t.getString(descr), '1 TV kanál'); + assert_1.default.strictEqual(t.getString(descr), '1 TV kanál'); descr.factor = 3; - assert.strictEqual(t.getString(descr), '3 TV kanály'); + assert_1.default.strictEqual(t.getString(descr), '3 TV kanály'); descr.factor = 8; - assert.strictEqual(t.getString(descr), '8 TV kanálů'); + assert_1.default.strictEqual(t.getString(descr), '8 TV kanálů'); done(); - }, (err) => { - assert.strictEqual(err, undefined); + }, function (err) { + assert_1.default.strictEqual(err, undefined); done(); }); }); - it('Integration: properly gets string from loaded dictionary with _npt', (done) => { - setTranslationGetter((name, onReady) => onReady(name, testLocaleJson)); - const t = getController(); - t.setLocale('cs_cz', (_name) => { - const descr = { + it('Integration: properly gets string from loaded dictionary with _npt', function (done) { + (0, utils_1.setTranslationGetter)(function (name, onReady) { return onReady(name, fixture_1.testLocaleJson); }); + var t = (0, utils_1.getController)(); + t.setLocale('cs_cz', function (_name) { + var descr = { type: '_npt', factor: 0, msgid: '%% место', @@ -422,41 +427,41 @@ describe('I18n end-user library', () => { substitutions: [] }; descr.factor = 1; - assert.strictEqual(t.getString(descr), '1 místo'); + assert_1.default.strictEqual(t.getString(descr), '1 místo'); descr.factor = 3; - assert.strictEqual(t.getString(descr), '3 místa'); + assert_1.default.strictEqual(t.getString(descr), '3 místa'); descr.factor = 8; - assert.strictEqual(t.getString(descr), '8 míst'); + assert_1.default.strictEqual(t.getString(descr), '8 míst'); done(); - }, (err) => { - assert.strictEqual(err, undefined); + }, function (err) { + assert_1.default.strictEqual(err, undefined); done(); }); }); - it('Integration: properly gets fallback string when no dictionary loaded with _t', () => { - const t = getController(); - const descr = { + it('Integration: properly gets fallback string when no dictionary loaded with _t', function () { + var t = (0, utils_1.getController)(); + var descr = { type: '_t', msgid: '"%1" не подключает по вашему адресу.', msgstr: '', substitutions: ['Provider'] }; - assert.strictEqual(t.getString(descr), '"Provider" не подключает по вашему адресу.'); + assert_1.default.strictEqual(t.getString(descr), '"Provider" не подключает по вашему адресу.'); }); - it('Integration: properly gets fallback string when no dictionary loaded with _pt', () => { - const t = getController(); - const descr = { + it('Integration: properly gets fallback string when no dictionary loaded with _pt', function () { + var t = (0, utils_1.getController)(); + var descr = { type: '_pt', msgid: '%1 км', msgctxt: 'километры', msgstr: '', substitutions: ['23'] }; - assert.strictEqual(t.getString(descr), '23 км'); + assert_1.default.strictEqual(t.getString(descr), '23 км'); }); - it('Integration: properly gets fallback string when no dictionary loaded with _nt', () => { - const t = getController(); - const descr = { + it('Integration: properly gets fallback string when no dictionary loaded with _nt', function () { + var t = (0, utils_1.getController)(); + var descr = { type: '_nt', factor: 0, msgid: '%% ТВ-канал', @@ -466,15 +471,15 @@ describe('I18n end-user library', () => { substitutions: [] }; descr.factor = 1; - assert.strictEqual(t.getString(descr), '1 ТВ-канал'); + assert_1.default.strictEqual(t.getString(descr), '1 ТВ-канал'); descr.factor = 3; - assert.strictEqual(t.getString(descr), '3 ТВ-канала'); + assert_1.default.strictEqual(t.getString(descr), '3 ТВ-канала'); descr.factor = 8; - assert.strictEqual(t.getString(descr), '8 ТВ-каналов'); + assert_1.default.strictEqual(t.getString(descr), '8 ТВ-каналов'); }); - it('Integration: properly gets fallback string when no dictionary loaded with _npt', () => { - const t = getController(); - const descr = { + it('Integration: properly gets fallback string when no dictionary loaded with _npt', function () { + var t = (0, utils_1.getController)(); + var descr = { type: '_npt', factor: 0, msgid: '%% место', @@ -485,52 +490,52 @@ describe('I18n end-user library', () => { substitutions: [] }; descr.factor = 1; - assert.strictEqual(t.getString(descr), '1 место'); + assert_1.default.strictEqual(t.getString(descr), '1 место'); descr.factor = 3; - assert.strictEqual(t.getString(descr), '3 места'); + assert_1.default.strictEqual(t.getString(descr), '3 места'); descr.factor = 8; - assert.strictEqual(t.getString(descr), '8 мест'); + assert_1.default.strictEqual(t.getString(descr), '8 мест'); }); - it('Integration: properly gets forced untranslated string from loaded dictionary with _t', (done) => { - setTranslationGetter((name, onReady) => onReady(name, testLocaleJson)); - const t = getController(); - t.setLocale('cs_cz', (_name) => { - const descr = { + it('Integration: properly gets forced untranslated string from loaded dictionary with _t', function (done) { + (0, utils_1.setTranslationGetter)(function (name, onReady) { return onReady(name, fixture_1.testLocaleJson); }); + var t = (0, utils_1.getController)(); + t.setLocale('cs_cz', function (_name) { + var descr = { type: '_t', msgid: '"%1" не подключает по вашему адресу.', msgstr: '', substitutions: ['Provider'] }; - assert.strictEqual(t.getString(descr, true), '"Provider" не подключает по вашему адресу.'); + assert_1.default.strictEqual(t.getString(descr, true), '"Provider" не подключает по вашему адресу.'); done(); - }, (err) => { - assert.strictEqual(err, undefined); + }, function (err) { + assert_1.default.strictEqual(err, undefined); done(); }); }); - it('Integration: properly gets forced untranslated string from loaded dictionary with _pt', (done) => { - setTranslationGetter((name, onReady) => onReady(name, testLocaleJson)); - const t = getController(); - t.setLocale('cs_cz', (_name) => { - const descr = { + it('Integration: properly gets forced untranslated string from loaded dictionary with _pt', function (done) { + (0, utils_1.setTranslationGetter)(function (name, onReady) { return onReady(name, fixture_1.testLocaleJson); }); + var t = (0, utils_1.getController)(); + t.setLocale('cs_cz', function (_name) { + var descr = { type: '_pt', msgid: '%1 км', msgctxt: 'километры', msgstr: '', substitutions: ['23'] }; - assert.strictEqual(t.getString(descr, true), '23 км'); + assert_1.default.strictEqual(t.getString(descr, true), '23 км'); done(); - }, (err) => { - assert.strictEqual(err, undefined); + }, function (err) { + assert_1.default.strictEqual(err, undefined); done(); }); }); - it('Integration: properly gets forced untranslated string from loaded dictionary with _nt', (done) => { - setTranslationGetter((name, onReady) => onReady(name, testLocaleJson)); - const t = getController(); - t.setLocale('cs_cz', (_name) => { - const descr = { + it('Integration: properly gets forced untranslated string from loaded dictionary with _nt', function (done) { + (0, utils_1.setTranslationGetter)(function (name, onReady) { return onReady(name, fixture_1.testLocaleJson); }); + var t = (0, utils_1.getController)(); + t.setLocale('cs_cz', function (_name) { + var descr = { type: '_nt', factor: 0, msgid: '%% ТВ-канал', @@ -540,22 +545,22 @@ describe('I18n end-user library', () => { substitutions: [] }; descr.factor = 1; - assert.strictEqual(t.getString(descr, true), '1 ТВ-канал'); + assert_1.default.strictEqual(t.getString(descr, true), '1 ТВ-канал'); descr.factor = 3; - assert.strictEqual(t.getString(descr, true), '3 ТВ-канала'); + assert_1.default.strictEqual(t.getString(descr, true), '3 ТВ-канала'); descr.factor = 8; - assert.strictEqual(t.getString(descr, true), '8 ТВ-каналов'); + assert_1.default.strictEqual(t.getString(descr, true), '8 ТВ-каналов'); done(); - }, (err) => { - assert.strictEqual(err, undefined); + }, function (err) { + assert_1.default.strictEqual(err, undefined); done(); }); }); - it('Integration: properly gets forced untranslated string from loaded dictionary with _npt', (done) => { - setTranslationGetter((name, onReady) => onReady(name, testLocaleJson)); - const t = getController(); - t.setLocale('cs_cz', (_name) => { - const descr = { + it('Integration: properly gets forced untranslated string from loaded dictionary with _npt', function (done) { + (0, utils_1.setTranslationGetter)(function (name, onReady) { return onReady(name, fixture_1.testLocaleJson); }); + var t = (0, utils_1.getController)(); + t.setLocale('cs_cz', function (_name) { + var descr = { type: '_npt', factor: 0, msgid: '%% место', @@ -566,21 +571,21 @@ describe('I18n end-user library', () => { substitutions: [] }; descr.factor = 1; - assert.strictEqual(t.getString(descr, true), '1 место'); + assert_1.default.strictEqual(t.getString(descr, true), '1 место'); descr.factor = 3; - assert.strictEqual(t.getString(descr, true), '3 места'); + assert_1.default.strictEqual(t.getString(descr, true), '3 места'); descr.factor = 8; - assert.strictEqual(t.getString(descr, true), '8 мест'); + assert_1.default.strictEqual(t.getString(descr, true), '8 мест'); done(); - }, (err) => { - assert.strictEqual(err, undefined); + }, function (err) { + assert_1.default.strictEqual(err, undefined); done(); }); }); - it('substituteStrings throws error if there is no plural form for current factor in current locale', () => { - const t = getController(); - const str = ''; - const descr = { + it('substituteStrings throws error if there is no plural form for current factor in current locale', function () { + var t = (0, utils_1.getController)(); + var str = ''; + var descr = { type: '_nt', factor: 2, msgid: 'test1', // ignored @@ -589,8 +594,8 @@ describe('I18n end-user library', () => { msgstr: [], substitutions: ['param1', 'param2'], }; - assert.strictEqual(t.pSubstituteStrings(str, descr), 'test1'); - assert.strictEqual(getFailedSubstitutions().length, 1); + assert_1.default.strictEqual(t.pSubstituteStrings(str, descr), 'test1'); + assert_1.default.strictEqual((0, utils_1.getFailedSubstitutions)().length, 1); }); }); //# sourceMappingURL=controller.spec.js.map \ No newline at end of file diff --git a/dist/tests/controller.spec.js.map b/dist/tests/controller.spec.js.map index f99c8e7..df8240f 100644 --- a/dist/tests/controller.spec.js.map +++ b/dist/tests/controller.spec.js.map @@ -1 +1 @@ -{"version":3,"file":"controller.spec.js","sourceRoot":"","sources":["../../tests/controller.spec.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"controller.spec.js","sourceRoot":"","sources":["../../tests/controller.spec.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/fixture.js b/dist/tests/fixture.js index 60dea4e..c9f3d89 100644 --- a/dist/tests/fixture.js +++ b/dist/tests/fixture.js @@ -1,58 +1,5 @@ -export const testLocaleJson = `{ - "meta": { - "projectIdVersion": "2gis-online", - "reportMsgidBugsTo": "online4@2gis.ru", - "potCreationDate": "2017-07-05 11:17+0700", - "poRevisionDate": "2017-06-30 15:30+0700", - "lastTranslator": { - "name": "2GIS", - "email": "crowdin@2gis.ru" - }, - "language": "cs_CZ", - "languageTeam": "Czech", - "pluralForms": "nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2", - "mimeVersion": "1.0", - "contentType": "text/plain; charset=utf-8", - "contentTransferEncoding": "8bit", - "generatedBy": "Babel 2.1.1" - }, - "items": [ - { - "type": "single", - "entry": "\\"%1\\" не подключает по вашему адресу.", - "translation": "\\"%1\\" neumožňuje připojení na Vaší adrese." - }, - { - "type": "single", - "entry": "%1 км", - "context": "километры", - "translation": "%1 km" - }, - { - "type": "plural", - "entry": [ - "%% ТВ-канал", - "%% ТВ-каналов" - ], - "translations": [ - "%% TV kanál", - "%% TV kanály", - "%% TV kanálů" - ] - }, - { - "type": "plural", - "entry": [ - "%% место", - "%% мест" - ], - "context": "Вместимость парковки", - "translations": [ - "%% místo", - "%% místa", - "%% míst" - ] - } - ] -}`; +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.testLocaleJson = void 0; +exports.testLocaleJson = "{\n \"meta\": {\n \"projectIdVersion\": \"2gis-online\",\n \"reportMsgidBugsTo\": \"online4@2gis.ru\",\n \"potCreationDate\": \"2017-07-05 11:17+0700\",\n \"poRevisionDate\": \"2017-06-30 15:30+0700\",\n \"lastTranslator\": {\n \"name\": \"2GIS\",\n \"email\": \"crowdin@2gis.ru\"\n },\n \"language\": \"cs_CZ\",\n \"languageTeam\": \"Czech\",\n \"pluralForms\": \"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\",\n \"mimeVersion\": \"1.0\",\n \"contentType\": \"text/plain; charset=utf-8\",\n \"contentTransferEncoding\": \"8bit\",\n \"generatedBy\": \"Babel 2.1.1\"\n },\n \"items\": [\n {\n \"type\": \"single\",\n \"entry\": \"\\\"%1\\\" \u043D\u0435 \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0430\u0435\u0442 \u043F\u043E \u0432\u0430\u0448\u0435\u043C\u0443 \u0430\u0434\u0440\u0435\u0441\u0443.\",\n \"translation\": \"\\\"%1\\\" neumo\u017E\u0148uje p\u0159ipojen\u00ED na Va\u0161\u00ED adrese.\"\n },\n {\n \"type\": \"single\",\n \"entry\": \"%1 \u043A\u043C\",\n \"context\": \"\u043A\u0438\u043B\u043E\u043C\u0435\u0442\u0440\u044B\",\n \"translation\": \"%1 km\"\n },\n {\n \"type\": \"plural\",\n \"entry\": [\n \"%% \u0422\u0412-\u043A\u0430\u043D\u0430\u043B\",\n \"%% \u0422\u0412-\u043A\u0430\u043D\u0430\u043B\u043E\u0432\"\n ],\n \"translations\": [\n \"%% TV kan\u00E1l\",\n \"%% TV kan\u00E1ly\",\n \"%% TV kan\u00E1l\u016F\"\n ]\n },\n {\n \"type\": \"plural\",\n \"entry\": [\n \"%% \u043C\u0435\u0441\u0442\u043E\",\n \"%% \u043C\u0435\u0441\u0442\"\n ],\n \"context\": \"\u0412\u043C\u0435\u0441\u0442\u0438\u043C\u043E\u0441\u0442\u044C \u043F\u0430\u0440\u043A\u043E\u0432\u043A\u0438\",\n \"translations\": [\n \"%% m\u00EDsto\",\n \"%% m\u00EDsta\",\n \"%% m\u00EDst\"\n ]\n }\n ]\n}"; //# sourceMappingURL=fixture.js.map \ No newline at end of file diff --git a/dist/tests/fixture.js.map b/dist/tests/fixture.js.map index ad79d5a..3a741c0 100644 --- a/dist/tests/fixture.js.map +++ b/dist/tests/fixture.js.map @@ -1 +1 @@ -{"version":3,"file":"fixture.js","sourceRoot":"","sources":["../../tests/fixture.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwD5B,CAAC"} \ No newline at end of file +{"version":3,"file":"fixture.js","sourceRoot":"","sources":["../../tests/fixture.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAG,s7DAwD5B,CAAC"} \ No newline at end of file diff --git a/dist/tests/utils.js b/dist/tests/utils.js index 78f1f59..b1e37b6 100644 --- a/dist/tests/utils.js +++ b/dist/tests/utils.js @@ -1,36 +1,48 @@ -import { TranslationController } from '../src/controller'; -export class TranslationControllerTestable extends TranslationController { - constructor() { - super(...arguments); +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getController = exports.setTranslationGetter = exports.clearFailedSubstitutions = exports.getFailedSubstitutions = exports.TranslationControllerTestable = void 0; +var tslib_1 = require("tslib"); +var controller_1 = require("../src/controller"); +var TranslationControllerTestable = /** @class */ (function (_super) { + tslib_1.__extends(TranslationControllerTestable, _super); + function TranslationControllerTestable() { + var _this = _super !== null && _super.apply(this, arguments) || this; // prefix 'm' for 'exposed member' - this.mDictMeta = () => this.dictMeta; - this.mPluralSelect = () => this.pluralSelect; - this.mDictionary = () => this.dictionary; + _this.mDictMeta = function () { return _this.dictMeta; }; + _this.mPluralSelect = function () { return _this.pluralSelect; }; + _this.mDictionary = function () { return _this.dictionary; }; // prefix 'p' for 'exposed protected' - this.pGetDictKeyForDescriptor = (descriptor) => this.getDictKeyForDescriptor(descriptor); - this.pGetDictKeyForEntry = (item) => this.getDictKeyForEntry(item); - this.pGetUntranslatedFallback = (descriptor) => this.getUntranslatedFallback(descriptor); - this.pSelectPluralForm = (forms, descriptor, forceUntranslated) => this.selectPluralForm(forms, descriptor, forceUntranslated); - this.pSubstituteStrings = (str, descriptor) => this.substituteStrings(str, descriptor); - this.pMakeNewDict = (items) => this.makeNewDict(items); - this.pMakePluralSelectFunction = (selectStr) => this.makePluralSelectFunction(selectStr); + _this.pGetDictKeyForDescriptor = function (descriptor) { return _this.getDictKeyForDescriptor(descriptor); }; + _this.pGetDictKeyForEntry = function (item) { return _this.getDictKeyForEntry(item); }; + _this.pGetUntranslatedFallback = function (descriptor) { return _this.getUntranslatedFallback(descriptor); }; + _this.pSelectPluralForm = function (forms, descriptor, forceUntranslated) { return _this.selectPluralForm(forms, descriptor, forceUntranslated); }; + _this.pSubstituteStrings = function (str, descriptor) { return _this.substituteStrings(str, descriptor); }; + _this.pMakeNewDict = function (items) { return _this.makeNewDict(items); }; + _this.pMakePluralSelectFunction = function (selectStr) { return _this.makePluralSelectFunction(selectStr); }; + return _this; } -} + return TranslationControllerTestable; +}(controller_1.TranslationController)); +exports.TranslationControllerTestable = TranslationControllerTestable; // helpers -let failedSubstitutions = []; -let translationGetter = (name, onReady) => onReady(name, ''); -export function getFailedSubstitutions() { +var failedSubstitutions = []; +var translationGetter = function (name, onReady) { return onReady(name, ''); }; +function getFailedSubstitutions() { return failedSubstitutions; } -export function clearFailedSubstitutions() { +exports.getFailedSubstitutions = getFailedSubstitutions; +function clearFailedSubstitutions() { failedSubstitutions = []; } -export function setTranslationGetter(getter) { +exports.clearFailedSubstitutions = clearFailedSubstitutions; +function setTranslationGetter(getter) { translationGetter = getter; } -export function getController() { - return new TranslationControllerTestable(translationGetter, (str, substitutions) => { failedSubstitutions.push({ str, substitutions }); }, +exports.setTranslationGetter = setTranslationGetter; +function getController() { + return new TranslationControllerTestable(translationGetter, function (str, substitutions) { failedSubstitutions.push({ str: str, substitutions: substitutions }); }, // russian default plural selector - (n) => n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2); + function (n) { return n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2; }); } +exports.getController = getController; //# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/dist/tests/utils.js.map b/dist/tests/utils.js.map index 57e54d7..f2125da 100644 --- a/dist/tests/utils.js.map +++ b/dist/tests/utils.js.map @@ -1 +1 @@ -{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../tests/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAI1D,MAAM,OAAO,6BAA8B,SAAQ,qBAAqB;IAAxE;;QACE,kCAAkC;QAC3B,cAAS,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;QAChC,kBAAa,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC;QACxC,gBAAW,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;QAE3C,qCAAqC;QAC9B,6BAAwB,GAAG,CAAC,UAAsB,EAAE,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;QAChG,wBAAmB,GAAG,CAAC,IAAe,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACzE,6BAAwB,GAAG,CAAC,UAAsB,EAAE,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;QAChG,sBAAiB,GAAG,CACzB,KAAe,EAAE,UAAsB,EAAE,iBAA0B,EACnE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC;QAC1D,uBAAkB,GAAG,CAAC,GAAW,EAAE,UAAsB,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACtG,iBAAY,GAAG,CAAC,KAAkB,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC/D,8BAAyB,GAAG,CAAC,SAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;IACrG,CAAC;CAAA;AAED,UAAU;AAEV,IAAI,mBAAmB,GAAU,EAAE,CAAC;AACpC,IAAI,iBAAiB,GAAG,CAAC,IAAY,EAAE,OAAiD,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAE/G,MAAM,UAAU,sBAAsB;IACpC,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,mBAAmB,GAAG,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAiF;IACpH,iBAAiB,GAAG,MAAM,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,6BAA6B,CACtC,iBAAiB,EACjB,CAAC,GAAG,EAAE,aAAa,EAAE,EAAE,GAAG,mBAAmB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,CAAA,CAAC,CAAC;IAC5E,kCAAkC;IAClC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAChH,CAAC;AACJ,CAAC"} \ No newline at end of file +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../tests/utils.ts"],"names":[],"mappings":";;;;AAAA,gDAA0D;AAI1D;IAAmD,yDAAqB;IAAxE;;QACE,kCAAkC;QAC3B,eAAS,GAAG,cAAM,OAAA,KAAI,CAAC,QAAQ,EAAb,CAAa,CAAC;QAChC,mBAAa,GAAG,cAAM,OAAA,KAAI,CAAC,YAAY,EAAjB,CAAiB,CAAC;QACxC,iBAAW,GAAG,cAAM,OAAA,KAAI,CAAC,UAAU,EAAf,CAAe,CAAC;QAE3C,qCAAqC;QAC9B,8BAAwB,GAAG,UAAC,UAAsB,IAAK,OAAA,KAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,EAAxC,CAAwC,CAAC;QAChG,yBAAmB,GAAG,UAAC,IAAe,IAAK,OAAA,KAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAA7B,CAA6B,CAAC;QACzE,8BAAwB,GAAG,UAAC,UAAsB,IAAK,OAAA,KAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,EAAxC,CAAwC,CAAC;QAChG,uBAAiB,GAAG,UACzB,KAAe,EAAE,UAAsB,EAAE,iBAA0B,IAChE,OAAA,KAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,iBAAiB,CAAC,EAA3D,CAA2D,CAAC;QAC1D,wBAAkB,GAAG,UAAC,GAAW,EAAE,UAAsB,IAAK,OAAA,KAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,UAAU,CAAC,EAAvC,CAAuC,CAAC;QACtG,kBAAY,GAAG,UAAC,KAAkB,IAAK,OAAA,KAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAvB,CAAuB,CAAC;QAC/D,+BAAyB,GAAG,UAAC,SAAiB,IAAK,OAAA,KAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,EAAxC,CAAwC,CAAC;;IACrG,CAAC;IAAD,oCAAC;AAAD,CAAC,AAhBD,CAAmD,kCAAqB,GAgBvE;AAhBY,sEAA6B;AAkB1C,UAAU;AAEV,IAAI,mBAAmB,GAAU,EAAE,CAAC;AACpC,IAAI,iBAAiB,GAAG,UAAC,IAAY,EAAE,OAAiD,IAAK,OAAA,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAjB,CAAiB,CAAC;AAE/G,SAAgB,sBAAsB;IACpC,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAFD,wDAEC;AAED,SAAgB,wBAAwB;IACtC,mBAAmB,GAAG,EAAE,CAAC;AAC3B,CAAC;AAFD,4DAEC;AAED,SAAgB,oBAAoB,CAAC,MAAiF;IACpH,iBAAiB,GAAG,MAAM,CAAC;AAC7B,CAAC;AAFD,oDAEC;AAED,SAAgB,aAAa;IAC3B,OAAO,IAAI,6BAA6B,CACtC,iBAAiB,EACjB,UAAC,GAAG,EAAE,aAAa,IAAO,mBAAmB,CAAC,IAAI,CAAC,EAAE,GAAG,KAAA,EAAE,aAAa,eAAA,EAAE,CAAC,CAAA,CAAC,CAAC;IAC5E,kCAAkC;IAClC,UAAC,CAAC,IAAK,OAAA,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAxG,CAAwG,CAChH,CAAC;AACJ,CAAC;AAPD,sCAOC"} \ No newline at end of file diff --git a/package.json b/package.json index b6c59b4..0b5a6ad 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "i18n-dialect", - "version": "2.0.1", + "version": "2.0.2", "description": "Internationalization support library", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/tsconfig.json b/tsconfig.json index 1e4676e..8140a7e 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -4,7 +4,7 @@ "paths": { "tslib": ["./node_modules/tslib/tslib.d.ts"] }, - "target": "es2020", + "target": "es5", "moduleResolution": "Node", "esModuleInterop": true, "sourceMap": true, From 266c0ff0f5a3451c9f6bd9bee7af3a910954dc4d Mon Sep 17 00:00:00 2001 From: Oleg Klimenko Date: Fri, 29 Mar 2024 22:05:25 +0300 Subject: [PATCH 7/7] remove comment --- .eslintrc.cjs | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/.eslintrc.cjs b/.eslintrc.cjs index e5bb435..5c3e3fe 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -1,20 +1,3 @@ -/* Tyr - Japanese mahjong assistant application - * Copyright (C) 2016 Oleg Klimenko aka ctizen - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - module.exports = { root: true, parser: '@typescript-eslint/parser',