diff --git a/.eslintignore b/.eslintignore index c89ce4db..5533069f 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,6 +1,6 @@ !.eslintrc.js +!.meta-updater coverage dist -test/setup.ts +services/**/*.mjs *.js -*.mjs diff --git a/.eslintrc.js b/.eslintrc.js index 87d3a860..fafded78 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,7 +1,7 @@ module.exports = { root: true, extends: ['@heise'], - plugins: ['sort-keys-fix', 'eslint-plugin-no-only-tests'], + plugins: ['sort-keys-fix'], rules: { 'sort-keys-fix/sort-keys-fix': 'error', 'no-prototype-builtins': 'off', @@ -17,6 +17,10 @@ module.exports = { es6: true, }, overrides: [ + { + files: ['jest.config.ts'], + rules: {'node/no-extraneous-import': 'off'}, + }, { files: ['*.test.ts', '*.js', '__tests__/**/*.ts'], rules: { diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7ea989cb..52425ad1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -42,4 +42,4 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} NPM_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }} - run: pnpm semantic-release + run: pnpm release diff --git a/.gitignore b/.gitignore index 4f78fd5f..086e4cc5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ -tsconfig.build.tsbuildinfo +**/main +*.tsbuildinfo .eslintcache dist # Logs diff --git a/.meta-updater/.releaserc.json b/.meta-updater/.releaserc.json new file mode 100644 index 00000000..1e5af021 --- /dev/null +++ b/.meta-updater/.releaserc.json @@ -0,0 +1 @@ +{"tagFormat":"@edged/updater@v${version}"} diff --git a/.meta-updater/main.mjs b/.meta-updater/main.mjs new file mode 100644 index 00000000..2c4a90c1 --- /dev/null +++ b/.meta-updater/main.mjs @@ -0,0 +1,3 @@ +import updater from './dist/index.js' + +export default updater diff --git a/.meta-updater/package.json b/.meta-updater/package.json new file mode 100644 index 00000000..adc63e58 --- /dev/null +++ b/.meta-updater/package.json @@ -0,0 +1,20 @@ +{ + "name": "@edged/updater", + "version": "1.0.0", + "main": "dist/index.js", + "private": true, + "type": "module", + "scripts": { + "build": "tsc --build" + }, + "dependencies": { + "@pnpm/find-workspace-packages": "^3.1.12", + "@pnpm/lockfile-file": "^4.1.1", + "@pnpm/logger": "^4.0.0", + "@pnpm/types": "^7.4.0", + "@types/normalize-path": "^3.0.0", + "is-subdir": "^1.2.0", + "normalize-path": "^3.0.0" + }, + "author": "Philipp Busse" +} diff --git a/.meta-updater/src/index.ts b/.meta-updater/src/index.ts new file mode 100644 index 00000000..b211e200 --- /dev/null +++ b/.meta-updater/src/index.ts @@ -0,0 +1,92 @@ +/* eslint-disable sonarjs/cognitive-complexity */ + +import { readWantedLockfile } from '@pnpm/lockfile-file' +import { LockfileFile } from '@pnpm/lockfile-file/lib/write' +import { ProjectManifest } from '@pnpm/types' +import { existsSync } from 'fs' +import normalizePath from 'normalize-path' +import path from 'path' + +type UpdateFunc = ( + data: Record, + dir: string, + manifest: ProjectManifest, +) => Record | Promise | null> | null + +export default async ( + workspaceDir: string, +): Promise> => { + const lockfile = await readWantedLockfile(workspaceDir, { + ignoreIncompatible: false, + }) + + if (lockfile == null) { + throw new Error('no lockfile found') + } + + return { + '.releaserc.json': (releaseRc, _dir: string, manifest) => { + if (!manifest.name) { + return {} + } + + return { tagFormat: `${manifest.name}@v\${version}`, ...releaseRc } + }, + 'package.json': updatePackageJson(workspaceDir, lockfile), + 'tsconfig.build.json': updateTsConfig(workspaceDir, lockfile), + 'tsconfig.json': updateTsConfig(workspaceDir, lockfile), + } +} + +function updatePackageJson(_workspaceDir: string, _lockfile: LockfileFile) { + return (manifest: ProjectManifest, _dir: string) => { + return { + ...manifest, + author: 'Philipp Busse', + } + } +} + +function updateTsConfig(workspaceDir: string, lockfile: LockfileFile) { + return ( + tsConfig: Record, + dir: string, + manifest: ProjectManifest, + ) => { + if (tsConfig == null || manifest.name?.includes('/tsconfig')) { + return tsConfig + } + + const relative = normalizePath(path.relative(workspaceDir, dir)) + + const importer = lockfile.importers?.[relative] + + if (!importer) { + return tsConfig + } + + const deps = { + ...importer.dependencies, + ...importer.devDependencies, + } + + const references = Object.values(deps) + .filter((dep) => dep.startsWith('link:')) + .filter((dep) => !dep.endsWith('tsconfig')) + .map((dep) => dep.slice('link:'.length)) + .filter((relativePath) => + existsSync(path.join(dir, relativePath, 'tsconfig.json')), + ) + .map((path) => ({ path })) + + console.log(`Updating tsconfig for ${dir}: ${JSON.stringify(references)}`) + + return { + ...tsConfig, + exclude: ['node_modules', 'dist'], + ...(references && { + references: references.sort((r1, r2) => r1.path.localeCompare(r2.path)), + }), + } + } +} diff --git a/.meta-updater/tsconfig.json b/.meta-updater/tsconfig.json new file mode 100644 index 00000000..fae16ba5 --- /dev/null +++ b/.meta-updater/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "@edged/tsconfig", + "compilerOptions": { + "outDir": "dist", + "rootDir": "src", + "module": "ES2020" + }, + "include": ["src/**/*"], + "references": [], + "exclude": ["node_modules", "dist"] +} diff --git a/.releaserc b/.releaserc deleted file mode 100644 index ea05852a..00000000 --- a/.releaserc +++ /dev/null @@ -1,18 +0,0 @@ - { - "branches": ["master"], - "repositoryUrl": "git@github.com:pmb0/express-sharp.git", - "plugins": [ - "@semantic-release/commit-analyzer", - "@semantic-release/release-notes-generator", - ["@semantic-release/changelog", { - "changelogFile": "CHANGELOG.md" - }], - "@semantic-release/npm", - ["@semantic-release/git", { - "assets": ["package.json", "CHANGELOG.md"], - "message": "chore(release): ${nextRelease.version}\n\n${nextRelease.notes}" - }] - ], - "fail": false, - "success": false -} diff --git a/.releaserc.json b/.releaserc.json new file mode 100644 index 00000000..d822a84c --- /dev/null +++ b/.releaserc.json @@ -0,0 +1,25 @@ +{ + "tagFormat": "@edged/repo@v${version}", + "branches": ["master"], + "repositoryUrl": "git@github.com:pmb0/express-sharp.git", + "plugins": [ + "@semantic-release/commit-analyzer", + "@semantic-release/release-notes-generator", + [ + "@semantic-release/changelog", + { + "changelogFile": "CHANGELOG.md" + } + ], + "@semantic-release/npm", + [ + "@semantic-release/git", + { + "assets": ["package.json", "CHANGELOG.md"], + "message": "chore(release): ${nextRelease.version}\n\n${nextRelease.notes}" + } + ] + ], + "fail": false, + "success": false +} diff --git a/__mocks__/got.ts b/__mocks__/got.ts deleted file mode 100644 index 905f2d03..00000000 --- a/__mocks__/got.ts +++ /dev/null @@ -1,9 +0,0 @@ -export default class GotMock { - static extend = jest.fn().mockReturnValue(new GotMock()) - - defaults = { - options: {}, - } - - get = jest.fn().mockReturnValue({ body: Buffer.from('test') }) -} diff --git a/jest.config.js b/jest.config.js deleted file mode 100644 index 8af548cf..00000000 --- a/jest.config.js +++ /dev/null @@ -1,179 +0,0 @@ -/* eslint-disable toplevel/no-toplevel-side-effect */ -// For a detailed explanation regarding each configuration property, visit: -// https://jestjs.io/docs/en/configuration.html - -module.exports = { - // All imported modules in your tests should be mocked automatically - // automock: false, - - // Stop running tests after `n` failures - // bail: 0, - - // Respect "browser" field in package.json when resolving modules - // browser: false, - - // The directory where Jest should store its cached dependency information - // cacheDirectory: "/private/var/folders/3z/vt4dq0w132b_kg4gm2s7j33c0000gn/T/jest_dx", - - // Automatically clear mock calls and instances between every test - clearMocks: true, - - // Indicates whether the coverage information should be collected while executing the test - // collectCoverage: false, - - // An array of glob patterns indicating a set of files for which coverage information should be collected - collectCoverageFrom: ['index.ts', './src/**'], - - // The directory where Jest should output its coverage files - coverageDirectory: 'coverage', - - // An array of regexp pattern strings used to skip coverage collection - coveragePathIgnorePatterns: ['.dto.ts$'], - - // A list of reporter names that Jest uses when writing coverage reports - coverageReporters: ['text', 'lcov'], - - // An object that configures minimum threshold enforcement for coverage results - // coverageThreshold: undefined, - - // A path to a custom dependency extractor - // dependencyExtractor: undefined, - - // Make calling deprecated APIs throw helpful error messages - // errorOnDeprecated: false, - - // Force coverage collection from ignored files using an array of glob patterns - // forceCoverageMatch: [], - - // A path to a module which exports an async function that is triggered once before all test suites - // globalSetup: undefined, - - // A path to a module which exports an async function that is triggered once after all test suites - // globalTeardown: undefined, - - // A set of global variables that need to be available in all test environments - globals: { - 'ts-jest': { - tsconfig: 'tsconfig.json', - }, - }, - - // The maximum amount of workers used to run your tests. Can be specified as % or a number. E.g. maxWorkers: 10% will use 10% of your CPU amount + 1 as the maximum worker number. maxWorkers: 2 will use a maximum of 2 workers. - // maxWorkers: "50%", - - // An array of directory names to be searched recursively up from the requiring module's location - // moduleDirectories: [ - // "node_modules" - // ], - - // An array of file extensions your modules use - moduleFileExtensions: ['js', 'json', 'jsx', 'ts', 'tsx', 'node'], - - // A map from regular expressions to module names that allow to stub out resources with a single module - // moduleNameMapper: {}, - - // An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader - // modulePathIgnorePatterns: [], - - // Activates notifications for test results - // notify: false, - - // An enum that specifies notification mode. Requires { notify: true } - // notifyMode: "failure-change", - - // A preset that is used as a base for Jest's configuration - // preset: undefined, - - // Run tests from one or more projects - // projects: undefined, - - // Use this configuration option to add custom reporters to Jest - // reporters: undefined, - - // Automatically reset mock state between every test - // resetMocks: false, - - // Reset the module registry before running each individual test - // resetModules: false, - - // A path to a custom resolver - // resolver: undefined, - - // Automatically restore mock state between every test - // restoreMocks: false, - - // The root directory that Jest should scan for tests and modules within - // rootDir: undefined, - - // A list of paths to directories that Jest should use to search for files in - // roots: [ - // "" - // ], - - // Allows you to use a custom runner instead of Jest's default test runner - // runner: "jest-runner", - - // The paths to modules that run some code to configure or set up the testing environment before each test - setupFiles: ['./test/setup.ts'], - - // A list of paths to modules that run some code to configure or set up the testing framework before each test - // setupFilesAfterEnv: [], - - // A list of paths to snapshot serializer modules Jest should use for snapshot testing - // snapshotSerializers: [], - - // The test environment that will be used for testing - testEnvironment: 'node', - - // Options that will be passed to the testEnvironment - // testEnvironmentOptions: {}, - - // Adds a location field to test results - // testLocationInResults: false, - - // The glob patterns Jest uses to detect test files - // testMatch: [ - // "**/__tests__/**/*.[jt]s?(x)", - // "**/?(*.)+(spec|test).[tj]s?(x)" - // ], - - // An array of regexp pattern strings that are matched against all test paths, matched tests are skipped - testPathIgnorePatterns: ['/dist/'], - - // The regexp pattern or array of patterns that Jest uses to detect test files - // testRegex: [], - - // This option allows the use of a custom results processor - // testResultsProcessor: undefined, - - // This option allows use of a custom test runner - // testRunner: "jasmine2", - - // This option sets the URL for the jsdom environment. It is reflected in properties such as location.href - // testURL: "http://localhost", - - // Setting this value to "fake" allows the use of fake timers for functions such as "setTimeout" - // timers: "real", - - // A map from regular expressions to paths to transformers - transform: { - '^.+\\.(ts|tsx)$': 'ts-jest', - }, - - // An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation - // transformIgnorePatterns: [ - // "/node_modules/" - // ], - - // An array of regexp pattern strings that are matched against all modules before the module loader will automatically return a mock for them - modulePathIgnorePatterns: ["/dist/"] - - // Indicates whether each individual test should be reported during the run - // verbose: undefined, - - // An array of regexp patterns that are matched against all source file paths before re-running tests in watch mode - // watchPathIgnorePatterns: [], - - // Whether to use watchman for file crawling - // watchman: true, -} diff --git a/jest.config.ts b/jest.config.ts new file mode 100644 index 00000000..2b3ef9af --- /dev/null +++ b/jest.config.ts @@ -0,0 +1,10 @@ +/* eslint-disable node/no-unpublished-import */ +import baseConfig from '@edged/jest-config' +import { Config } from '@jest/types' + +const config: Config.InitialOptions = { + ...baseConfig, + setupFiles: ['/libs/express-sharp/setup-jest.ts'], +} + +export default config diff --git a/libs/adapters/fs-adapter/.releaserc.json b/libs/adapters/fs-adapter/.releaserc.json new file mode 100644 index 00000000..43193ae2 --- /dev/null +++ b/libs/adapters/fs-adapter/.releaserc.json @@ -0,0 +1 @@ +{"tagFormat":"@edged/fs-adapter@v${version}"} diff --git a/libs/adapters/fs-adapter/package.json b/libs/adapters/fs-adapter/package.json new file mode 100644 index 00000000..dde7d0f5 --- /dev/null +++ b/libs/adapters/fs-adapter/package.json @@ -0,0 +1,41 @@ +{ + "name": "@edged/fs-adapter", + "version": "1.0.0", + "description": "", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "dependencies": { + "@edged/core": "workspace:^1.0.0", + "tslib": "^2.3.1" + }, + "devDependencies": { + "@edged/tsconfig": "workspace:^1.0.0" + }, + "scripts": { + "build": "tsc --build tsconfig.build.json", + "clean": "rimraf dist *.tsbuildinfo", + "start:example": "DEBUG=express-sharp* nodemon --exec 'node -r ts-node/register' -w . --inspect example/app.ts", + "lint": "eslint --cache .", + "test": "jest", + "ci:test": "jest --coverage" + }, + "engines": { + "node": ">= 12.0.0" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/pmb0/express-sharp.git" + }, + "keywords": [ + "express", + "sharp", + "image", + "scale" + ], + "author": "Philipp Busse", + "license": "MIT", + "bugs": { + "url": "https://github.com/pmb0/express-sharp/issues" + }, + "homepage": "https://github.com/pmb0/express-sharp#readme" +} diff --git a/src/adapter/fs.adapter.test.ts b/libs/adapters/fs-adapter/src/fs.adapter.test.ts similarity index 95% rename from src/adapter/fs.adapter.test.ts rename to libs/adapters/fs-adapter/src/fs.adapter.test.ts index 6f611027..54ff39e1 100644 --- a/src/adapter/fs.adapter.test.ts +++ b/libs/adapters/fs-adapter/src/fs.adapter.test.ts @@ -1,4 +1,5 @@ import { promises as fs } from 'fs' +// eslint-disable-next-line node/no-extraneous-import import { mocked } from 'ts-jest/utils' import { FsAdapter } from './fs.adapter' diff --git a/src/adapter/fs.adapter.ts b/libs/adapters/fs-adapter/src/fs.adapter.ts similarity index 87% rename from src/adapter/fs.adapter.ts rename to libs/adapters/fs-adapter/src/fs.adapter.ts index 067d0a35..ab76f595 100644 --- a/src/adapter/fs.adapter.ts +++ b/libs/adapters/fs-adapter/src/fs.adapter.ts @@ -1,7 +1,6 @@ -import { ImageAdapter } from '../interfaces' +import { getLogger, ImageAdapter } from '@edged/core' import { promises as fs } from 'fs' import { join } from 'path' -import { getLogger } from '../logger' export class FsAdapter implements ImageAdapter { private log = getLogger('adapter:fs') diff --git a/libs/adapters/fs-adapter/src/index.ts b/libs/adapters/fs-adapter/src/index.ts new file mode 100644 index 00000000..eedb2c9f --- /dev/null +++ b/libs/adapters/fs-adapter/src/index.ts @@ -0,0 +1 @@ +export * from './fs.adapter' diff --git a/libs/adapters/fs-adapter/tsconfig.build.json b/libs/adapters/fs-adapter/tsconfig.build.json new file mode 100644 index 00000000..33f8611b --- /dev/null +++ b/libs/adapters/fs-adapter/tsconfig.build.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "exclude": ["node_modules", "dist"], + "references": [ + { + "path": "../../core" + } + ] +} diff --git a/libs/adapters/fs-adapter/tsconfig.json b/libs/adapters/fs-adapter/tsconfig.json new file mode 100644 index 00000000..60de5f2a --- /dev/null +++ b/libs/adapters/fs-adapter/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "@edged/tsconfig", + "compilerOptions": { + "outDir": "./dist", + "rootDir": "src" + }, + "include": ["src/**/*"], + "references": [ + { + "path": "../../core" + } + ], + "exclude": ["node_modules", "dist"] +} diff --git a/libs/adapters/http-adapter/.releaserc.json b/libs/adapters/http-adapter/.releaserc.json new file mode 100644 index 00000000..9332721a --- /dev/null +++ b/libs/adapters/http-adapter/.releaserc.json @@ -0,0 +1 @@ +{"tagFormat":"@edged/http-adapter@v${version}"} diff --git a/libs/adapters/http-adapter/__mocks__/axios.ts b/libs/adapters/http-adapter/__mocks__/axios.ts new file mode 100644 index 00000000..3f4113fa --- /dev/null +++ b/libs/adapters/http-adapter/__mocks__/axios.ts @@ -0,0 +1,13 @@ +import { AxiosStatic } from 'axios' + +const original = jest.requireActual('axios') + +const mockAxios = jest.createMockFromModule('axios') + +// this is the key to fix the axios.create() undefined error! +mockAxios.create = jest.fn(() => mockAxios) + +// eslint-disable-next-line @typescript-eslint/unbound-method +mockAxios.isAxiosError = original.isAxiosError + +export default mockAxios diff --git a/libs/adapters/http-adapter/jest.config.ts b/libs/adapters/http-adapter/jest.config.ts new file mode 100644 index 00000000..35c4fb91 --- /dev/null +++ b/libs/adapters/http-adapter/jest.config.ts @@ -0,0 +1,8 @@ +import baseConfig from '@edged/jest-config' +import { Config } from '@jest/types' + +const config: Config.InitialOptions = { + ...baseConfig, +} + +export default config diff --git a/libs/adapters/http-adapter/package.json b/libs/adapters/http-adapter/package.json new file mode 100644 index 00000000..38d44653 --- /dev/null +++ b/libs/adapters/http-adapter/package.json @@ -0,0 +1,44 @@ +{ + "name": "@edged/http-adapter", + "version": "1.0.0", + "description": "", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "dependencies": { + "@edged/core": "workspace:^1.0.0", + "axios": "^0.21.4", + "http-status": "^1.5.0", + "tslib": "^2.3.1" + }, + "devDependencies": { + "@edged/testing": "workspace:^1.0.0", + "@edged/tsconfig": "workspace:^1.0.0" + }, + "scripts": { + "build": "tsc --build tsconfig.build.json", + "clean": "rimraf dist *.tsbuildinfo", + "start:example": "DEBUG=express-sharp* nodemon --exec 'node -r ts-node/register' -w . --inspect example/app.ts", + "lint": "eslint --cache .", + "test": "jest", + "ci:test": "jest --coverage" + }, + "engines": { + "node": ">= 12.0.0" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/pmb0/express-sharp.git" + }, + "keywords": [ + "express", + "sharp", + "image", + "scale" + ], + "author": "Philipp Busse", + "license": "MIT", + "bugs": { + "url": "https://github.com/pmb0/express-sharp/issues" + }, + "homepage": "https://github.com/pmb0/express-sharp#readme" +} diff --git a/libs/adapters/http-adapter/src/http.adapter.test.ts b/libs/adapters/http-adapter/src/http.adapter.test.ts new file mode 100644 index 00000000..ff8eb5d1 --- /dev/null +++ b/libs/adapters/http-adapter/src/http.adapter.test.ts @@ -0,0 +1,70 @@ +import { + axios, + mockNextResponse, + mockNextResponseAsError, + setAxiosConfig, +} from '@edged/testing' +import { AxiosRequestConfig, AxiosResponse } from 'axios' +import httpStatus from 'http-status' +import { HttpAdapter } from './http.adapter' + +const axiosConfig: AxiosRequestConfig = { baseURL: 'http://example.com/foo' } +setAxiosConfig(axiosConfig) + +describe('HttpAdapter', () => { + let adapter: HttpAdapter + + beforeEach(() => { + adapter = new HttpAdapter(axiosConfig) + }) + + test('constructor()', () => { + expect(axios.create).toHaveBeenCalledWith({ + baseURL: 'http://example.com/foo', + }) + }) + + describe('fetch()', () => { + it('returns the image', async () => { + mockNextResponse(Buffer.from('test')) + + const image = await adapter.fetch('/foo/bar') + expect(image?.toString()).toBe('test') + + expect(axios.get).toHaveBeenCalledWith('/foo/bar', { + responseType: 'arraybuffer', + }) + }) + + it('returns undefined on 404', async () => { + mockNextResponseAsError('error', 'ohoh', undefined, httpStatus.NOT_FOUND) + + expect(await adapter.fetch('/foo/bar')).toBeUndefined() + }) + + it('re-throws other HTTP errors', async () => { + mockNextResponseAsError( + 'error', + 'ohoh', + undefined, + httpStatus.BAD_GATEWAY, + ) + + await expect(() => adapter.fetch('/foo/bar')).rejects.toMatchObject<{ + response: Partial + }>({ + response: { status: httpStatus.BAD_GATEWAY }, + }) + }) + + it('re-throws other errors', async () => { + axios.get.mockImplementation(() => { + throw new Error('some other error') + }) + + await expect(() => adapter.fetch('/foo/bar')).rejects.toThrow( + 'some other error', + ) + }) + }) +}) diff --git a/libs/adapters/http-adapter/src/http.adapter.ts b/libs/adapters/http-adapter/src/http.adapter.ts new file mode 100644 index 00000000..2375edbb --- /dev/null +++ b/libs/adapters/http-adapter/src/http.adapter.ts @@ -0,0 +1,32 @@ +import { getLogger, ImageAdapter } from '@edged/core' +import axios, { AxiosInstance, AxiosRequestConfig } from 'axios' +import httpStatus from 'http-status' +export class HttpAdapter implements ImageAdapter { + private client: AxiosInstance + private log = getLogger('adapter:http') + + constructor(axiosOptions: AxiosRequestConfig) { + this.client = axios.create({ + ...axiosOptions, + }) + } + + async fetch(url: string): Promise { + this.log(`Fetching: ${this.client.getUri()}`) + try { + const response = await this.client.get(url, { + responseType: 'arraybuffer', + }) + return response.data + } catch (error) { + if ( + axios.isAxiosError(error) && + error.response?.status === httpStatus.NOT_FOUND + ) { + return undefined + } + + throw error + } + } +} diff --git a/libs/adapters/http-adapter/src/index.ts b/libs/adapters/http-adapter/src/index.ts new file mode 100644 index 00000000..397d4c00 --- /dev/null +++ b/libs/adapters/http-adapter/src/index.ts @@ -0,0 +1 @@ +export * from './http.adapter' diff --git a/libs/adapters/http-adapter/tsconfig.build.json b/libs/adapters/http-adapter/tsconfig.build.json new file mode 100644 index 00000000..7ec0073f --- /dev/null +++ b/libs/adapters/http-adapter/tsconfig.build.json @@ -0,0 +1,12 @@ +{ + "extends": "./tsconfig.json", + "exclude": ["node_modules", "dist"], + "references": [ + { + "path": "../../core" + }, + { + "path": "../../testing" + } + ] +} diff --git a/libs/adapters/http-adapter/tsconfig.json b/libs/adapters/http-adapter/tsconfig.json new file mode 100644 index 00000000..37620565 --- /dev/null +++ b/libs/adapters/http-adapter/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "@edged/tsconfig", + "compilerOptions": { + "outDir": "./dist", + "rootDir": "src" + }, + "include": ["src/**/*"], + "references": [ + { + "path": "../../core" + }, + { + "path": "../../testing" + } + ], + "exclude": ["node_modules", "dist"] +} diff --git a/libs/adapters/s3-adapter/.releaserc.json b/libs/adapters/s3-adapter/.releaserc.json new file mode 100644 index 00000000..20cefd82 --- /dev/null +++ b/libs/adapters/s3-adapter/.releaserc.json @@ -0,0 +1 @@ +{"tagFormat":"@edged/s3-adapter@v${version}"} diff --git a/libs/adapters/s3-adapter/package.json b/libs/adapters/s3-adapter/package.json new file mode 100644 index 00000000..fb140821 --- /dev/null +++ b/libs/adapters/s3-adapter/package.json @@ -0,0 +1,42 @@ +{ + "name": "@edged/s3-adapter", + "version": "1.0.0", + "description": "", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "dependencies": { + "@edged/core": "workspace:^1.0.0", + "aws-sdk": "^2.987.0", + "tslib": "^2.3.1" + }, + "devDependencies": { + "@edged/tsconfig": "workspace:^1.0.0" + }, + "scripts": { + "build": "tsc --build tsconfig.build.json", + "clean": "rimraf dist *.tsbuildinfo", + "start:example": "DEBUG=express-sharp* nodemon --exec 'node -r ts-node/register' -w . --inspect example/app.ts", + "lint": "eslint --cache .", + "test": "jest", + "ci:test": "jest --coverage" + }, + "engines": { + "node": ">= 12.0.0" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/pmb0/express-sharp.git" + }, + "keywords": [ + "express", + "sharp", + "image", + "scale" + ], + "author": "Philipp Busse", + "license": "MIT", + "bugs": { + "url": "https://github.com/pmb0/express-sharp/issues" + }, + "homepage": "https://github.com/pmb0/express-sharp#readme" +} diff --git a/libs/adapters/s3-adapter/src/index.ts b/libs/adapters/s3-adapter/src/index.ts new file mode 100644 index 00000000..84de3298 --- /dev/null +++ b/libs/adapters/s3-adapter/src/index.ts @@ -0,0 +1 @@ +export * from './s3.adapter' diff --git a/src/adapter/s3.adapter.test.ts b/libs/adapters/s3-adapter/src/s3.adapter.test.ts similarity index 92% rename from src/adapter/s3.adapter.test.ts rename to libs/adapters/s3-adapter/src/s3.adapter.test.ts index 20807252..343c9bfe 100644 --- a/src/adapter/s3.adapter.test.ts +++ b/libs/adapters/s3-adapter/src/s3.adapter.test.ts @@ -1,5 +1,4 @@ import { S3Adapter } from './s3.adapter' -import { container } from 'tsyringe' const awsPromiseMock = jest .fn() @@ -21,10 +20,6 @@ describe('S3Adapter', () => { adapter = new S3Adapter('my-bucket') }) - afterEach(() => { - container.clearInstances() - }) - describe('fetch()', () => { it('fetches the image', async () => { expect(await adapter.fetch('foo')).toEqual(Buffer.from('mocked')) diff --git a/src/adapter/s3.adapter.ts b/libs/adapters/s3-adapter/src/s3.adapter.ts similarity index 90% rename from src/adapter/s3.adapter.ts rename to libs/adapters/s3-adapter/src/s3.adapter.ts index f18117e2..d8550762 100644 --- a/src/adapter/s3.adapter.ts +++ b/libs/adapters/s3-adapter/src/s3.adapter.ts @@ -1,6 +1,5 @@ +import { getLogger, ImageAdapter } from '@edged/core' import { S3 } from 'aws-sdk' -import { ImageAdapter } from '../interfaces' -import { getLogger } from '../logger' export class S3Adapter implements ImageAdapter { private log = getLogger('adapter:s3') diff --git a/libs/adapters/s3-adapter/tsconfig.build.json b/libs/adapters/s3-adapter/tsconfig.build.json new file mode 100644 index 00000000..33f8611b --- /dev/null +++ b/libs/adapters/s3-adapter/tsconfig.build.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "exclude": ["node_modules", "dist"], + "references": [ + { + "path": "../../core" + } + ] +} diff --git a/libs/adapters/s3-adapter/tsconfig.json b/libs/adapters/s3-adapter/tsconfig.json new file mode 100644 index 00000000..954ea7df --- /dev/null +++ b/libs/adapters/s3-adapter/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "@edged/tsconfig", + "compilerOptions": { + "outDir": "dist", + "rootDir": "src" + }, + "include": ["src/**/*", "__tests__/**/*", "example/**/*", "__mocks__/**/*"], + "references": [ + { + "path": "../../core" + } + ], + "exclude": ["node_modules", "dist"] +} diff --git a/libs/client/.releaserc.json b/libs/client/.releaserc.json new file mode 100644 index 00000000..f704e7c1 --- /dev/null +++ b/libs/client/.releaserc.json @@ -0,0 +1 @@ +{"tagFormat":"@edged/client@v${version}"} diff --git a/libs/client/package.json b/libs/client/package.json new file mode 100644 index 00000000..84f88b15 --- /dev/null +++ b/libs/client/package.json @@ -0,0 +1,41 @@ +{ + "name": "@edged/client", + "version": "1.0.0", + "description": "", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "dependencies": { + "@edged/common": "workspace:^1.0.0", + "@edged/config": "workspace:^1.0.0", + "tsyringe": "^4.6.0" + }, + "devDependencies": { + "@edged/tsconfig": "workspace:^1.0.0" + }, + "scripts": { + "build": "tsc --build tsconfig.build.json", + "clean": "rimraf dist *.tsbuildinfo", + "lint": "eslint --cache .", + "test": "jest", + "ci:test": "jest --coverage" + }, + "engines": { + "node": ">= 12.0.0" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/pmb0/express-sharp.git" + }, + "keywords": [ + "express", + "sharp", + "image", + "scale" + ], + "author": "Philipp Busse", + "license": "MIT", + "bugs": { + "url": "https://github.com/pmb0/express-sharp/issues" + }, + "homepage": "https://github.com/pmb0/express-sharp#readme" +} diff --git a/src/express-sharp-client.test.ts b/libs/client/src/express-sharp-client.test.ts similarity index 100% rename from src/express-sharp-client.test.ts rename to libs/client/src/express-sharp-client.test.ts diff --git a/src/express-sharp-client.ts b/libs/client/src/express-sharp-client.ts similarity index 79% rename from src/express-sharp-client.ts rename to libs/client/src/express-sharp-client.ts index a990304b..343e2add 100644 --- a/src/express-sharp-client.ts +++ b/libs/client/src/express-sharp-client.ts @@ -1,6 +1,6 @@ +import { ImageUrl } from '@edged/common' +import { ConfigService } from '@edged/config' import { container } from 'tsyringe' -import { ImageUrl } from './image-url.service' -import { ConfigService } from './config.service' export function createClient(endpoint: string, secret?: string): ImageUrl { const clientContainer = container.createChildContainer() diff --git a/libs/client/src/index.ts b/libs/client/src/index.ts new file mode 100644 index 00000000..68d8c7de --- /dev/null +++ b/libs/client/src/index.ts @@ -0,0 +1 @@ +export * from './express-sharp-client' diff --git a/libs/client/tsconfig.build.json b/libs/client/tsconfig.build.json new file mode 100644 index 00000000..c142f9c3 --- /dev/null +++ b/libs/client/tsconfig.build.json @@ -0,0 +1,12 @@ +{ + "extends": "./tsconfig.json", + "exclude": ["node_modules", "dist"], + "references": [ + { + "path": "../common" + }, + { + "path": "../config" + } + ] +} diff --git a/libs/client/tsconfig.json b/libs/client/tsconfig.json new file mode 100644 index 00000000..02022e89 --- /dev/null +++ b/libs/client/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "@edged/tsconfig", + "compilerOptions": { + "outDir": "./dist", + "rootDir": "src" + }, + "include": ["src/**/*", "__tests__/**/*", "example/**/*", "__mocks__/**/*"], + "references": [ + { + "path": "../common" + }, + { + "path": "../config" + } + ], + "exclude": ["node_modules", "dist"] +} diff --git a/libs/common/.releaserc.json b/libs/common/.releaserc.json new file mode 100644 index 00000000..1be2b220 --- /dev/null +++ b/libs/common/.releaserc.json @@ -0,0 +1 @@ +{"tagFormat":"@edged/common@v${version}"} diff --git a/libs/common/package.json b/libs/common/package.json new file mode 100644 index 00000000..cf053d38 --- /dev/null +++ b/libs/common/package.json @@ -0,0 +1,44 @@ +{ + "name": "@edged/common", + "version": "1.0.0", + "description": "", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "dependencies": { + "@edged/config": "workspace:^1.0.0", + "@edged/core": "workspace:^1.0.0", + "class-validator": "^0.13.1", + "reflect-metadata": "^0.1.13", + "sharp": "^0.29.1", + "tsyringe": "^4.6.0" + }, + "devDependencies": { + "@edged/tsconfig": "workspace:^1.0.0" + }, + "scripts": { + "build": "tsc --build tsconfig.build.json", + "clean": "rimraf dist *.tsbuildinfo", + "lint": "eslint --cache .", + "test": "jest", + "ci:test": "jest --coverage" + }, + "engines": { + "node": ">= 12.0.0" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/pmb0/express-sharp.git" + }, + "keywords": [ + "express", + "sharp", + "image", + "scale" + ], + "author": "Philipp Busse", + "license": "MIT", + "bugs": { + "url": "https://github.com/pmb0/express-sharp/issues" + }, + "homepage": "https://github.com/pmb0/express-sharp#readme" +} diff --git a/src/decorators.test.ts b/libs/common/src/decorators.test.ts similarity index 100% rename from src/decorators.test.ts rename to libs/common/src/decorators.test.ts diff --git a/src/decorators.ts b/libs/common/src/decorators.ts similarity index 100% rename from src/decorators.ts rename to libs/common/src/decorators.ts diff --git a/src/image-url.service.test.ts b/libs/common/src/image-url.service.test.ts similarity index 95% rename from src/image-url.service.test.ts rename to libs/common/src/image-url.service.test.ts index 69a8deb0..4964f596 100644 --- a/src/image-url.service.test.ts +++ b/libs/common/src/image-url.service.test.ts @@ -1,6 +1,6 @@ -import { ImageUrl } from './image-url.service' +import { ConfigService } from '@edged/config' import { container } from 'tsyringe' -import { ConfigService } from './config.service' +import { ImageUrl } from './image-url.service' describe('ImaegUrl', () => { let url: ImageUrl diff --git a/src/image-url.service.ts b/libs/common/src/image-url.service.ts similarity index 94% rename from src/image-url.service.ts rename to libs/common/src/image-url.service.ts index 0aabcaf1..00578df0 100644 --- a/src/image-url.service.ts +++ b/libs/common/src/image-url.service.ts @@ -1,7 +1,7 @@ +import { ConfigService } from '@edged/config' +import { QueryParams, Signer } from '@edged/core' import { inject, injectable } from 'tsyringe' import { URL } from 'url' -import { ConfigService } from './config.service' -import { QueryParams, Signer } from './interfaces' import { ResizeDto } from './resize.dto' import { UrlSigner } from './signed-url.service' diff --git a/libs/common/src/index.ts b/libs/common/src/index.ts new file mode 100644 index 00000000..b4405476 --- /dev/null +++ b/libs/common/src/index.ts @@ -0,0 +1,5 @@ +export * from './decorators' +export * from './image-url.service' +export * from './resize.dto' +export * from './signed-url.service' +export * from './validator/is-url' diff --git a/src/resize.dto.ts b/libs/common/src/resize.dto.ts similarity index 97% rename from src/resize.dto.ts rename to libs/common/src/resize.dto.ts index aea04e9b..10e19310 100644 --- a/src/resize.dto.ts +++ b/libs/common/src/resize.dto.ts @@ -1,5 +1,6 @@ /* eslint-disable @typescript-eslint/no-inferrable-types */ /* eslint-disable no-magic-numbers */ +import { format } from '@edged/core' import { IsBoolean, IsIn, @@ -13,7 +14,6 @@ import { import 'reflect-metadata' import { GravityEnum } from 'sharp' import { Transform } from './decorators' -import { format } from './interfaces' import { IsUrl } from './validator/is-url' export class ResizeDto { diff --git a/src/signed-url.service.test.ts b/libs/common/src/signed-url.service.test.ts similarity index 97% rename from src/signed-url.service.test.ts rename to libs/common/src/signed-url.service.test.ts index c13db84a..437aa957 100644 --- a/src/signed-url.service.test.ts +++ b/libs/common/src/signed-url.service.test.ts @@ -1,5 +1,5 @@ +import { ConfigService } from '@edged/config' import { container } from 'tsyringe' -import { ConfigService } from './config.service' import { UrlSigner } from './signed-url.service' describe('URLSigner', () => { diff --git a/src/signed-url.service.ts b/libs/common/src/signed-url.service.ts similarity index 96% rename from src/signed-url.service.ts rename to libs/common/src/signed-url.service.ts index 2e5b2224..baaa5ee1 100644 --- a/src/signed-url.service.ts +++ b/libs/common/src/signed-url.service.ts @@ -1,7 +1,7 @@ +import { ConfigService } from '@edged/config' import crypto from 'crypto' import { injectable } from 'tsyringe' import { URL } from 'url' -import { ConfigService } from './config.service' @injectable() export class UrlSigner { diff --git a/src/validator/is-url.test.ts b/libs/common/src/validator/is-url.test.ts similarity index 100% rename from src/validator/is-url.test.ts rename to libs/common/src/validator/is-url.test.ts diff --git a/src/validator/is-url.ts b/libs/common/src/validator/is-url.ts similarity index 100% rename from src/validator/is-url.ts rename to libs/common/src/validator/is-url.ts diff --git a/libs/common/tsconfig.build.json b/libs/common/tsconfig.build.json new file mode 100644 index 00000000..cd278251 --- /dev/null +++ b/libs/common/tsconfig.build.json @@ -0,0 +1,12 @@ +{ + "extends": "./tsconfig.json", + "exclude": ["node_modules", "dist"], + "references": [ + { + "path": "../config" + }, + { + "path": "../core" + } + ] +} diff --git a/libs/common/tsconfig.json b/libs/common/tsconfig.json new file mode 100644 index 00000000..b8e8653e --- /dev/null +++ b/libs/common/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "@edged/tsconfig", + "compilerOptions": { + "outDir": "./dist", + "rootDir": "src" + }, + "include": ["src/**/*", "__tests__/**/*", "example/**/*", "__mocks__/**/*"], + "references": [ + { + "path": "../config" + }, + { + "path": "../core" + } + ], + "exclude": ["node_modules", "dist"] +} diff --git a/libs/config/.releaserc.json b/libs/config/.releaserc.json new file mode 100644 index 00000000..2dbceea4 --- /dev/null +++ b/libs/config/.releaserc.json @@ -0,0 +1 @@ +{"tagFormat":"@edged/config@v${version}"} diff --git a/libs/config/package.json b/libs/config/package.json new file mode 100644 index 00000000..453436aa --- /dev/null +++ b/libs/config/package.json @@ -0,0 +1,41 @@ +{ + "name": "@edged/config", + "version": "1.0.0", + "description": "", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "dependencies": { + "@edged/core": "workspace:^1.0.0", + "dotenv": "^10.0.0", + "tsyringe": "^4.6.0" + }, + "devDependencies": { + "@edged/tsconfig": "workspace:^1.0.0" + }, + "scripts": { + "build": "tsc --build tsconfig.build.json", + "clean": "rimraf dist *.tsbuildinfo", + "lint": "eslint --cache .", + "test": "jest", + "ci:test": "jest --coverage" + }, + "engines": { + "node": ">= 12.0.0" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/pmb0/express-sharp.git" + }, + "keywords": [ + "express", + "sharp", + "image", + "scale" + ], + "author": "Philipp Busse", + "license": "MIT", + "bugs": { + "url": "https://github.com/pmb0/express-sharp/issues" + }, + "homepage": "https://github.com/pmb0/express-sharp#readme" +} diff --git a/src/config.service.test.ts b/libs/config/src/config.service.test.ts similarity index 100% rename from src/config.service.test.ts rename to libs/config/src/config.service.test.ts diff --git a/src/config.service.ts b/libs/config/src/config.service.ts similarity index 95% rename from src/config.service.ts rename to libs/config/src/config.service.ts index 85e729e5..dab929db 100644 --- a/src/config.service.ts +++ b/libs/config/src/config.service.ts @@ -1,6 +1,6 @@ +import { camelToSnake } from '@edged/core' import { config } from 'dotenv' import { singleton } from 'tsyringe' -import { camelToSnake } from './util' @singleton() export class ConfigService { diff --git a/libs/config/src/index.ts b/libs/config/src/index.ts new file mode 100644 index 00000000..3724e12f --- /dev/null +++ b/libs/config/src/index.ts @@ -0,0 +1 @@ +export * from './config.service' diff --git a/libs/config/tsconfig.build.json b/libs/config/tsconfig.build.json new file mode 100644 index 00000000..efed2a02 --- /dev/null +++ b/libs/config/tsconfig.build.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "exclude": ["node_modules", "dist"], + "references": [ + { + "path": "../core" + } + ] +} diff --git a/libs/config/tsconfig.json b/libs/config/tsconfig.json new file mode 100644 index 00000000..febed3a5 --- /dev/null +++ b/libs/config/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "@edged/tsconfig", + "compilerOptions": { + "outDir": "./dist", + "rootDir": "src" + }, + "include": ["src/**/*", "__tests__/**/*", "example/**/*", "__mocks__/**/*"], + "references": [ + { + "path": "../core" + } + ], + "exclude": ["node_modules", "dist"] +} diff --git a/libs/core/.releaserc.json b/libs/core/.releaserc.json new file mode 100644 index 00000000..255b5e57 --- /dev/null +++ b/libs/core/.releaserc.json @@ -0,0 +1 @@ +{"tagFormat":"@edged/core@v${version}"} diff --git a/libs/core/package.json b/libs/core/package.json new file mode 100644 index 00000000..dccf815b --- /dev/null +++ b/libs/core/package.json @@ -0,0 +1,42 @@ +{ + "name": "@edged/core", + "version": "1.0.0", + "description": "", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "dependencies": { + "cors": "^2.8.5", + "debug": "^4.3.2", + "keyv": "^4.0.3", + "tslib": "^2.3.1" + }, + "devDependencies": { + "@edged/tsconfig": "workspace:^1.0.0" + }, + "scripts": { + "build": "tsc --build tsconfig.build.json", + "clean": "rimraf dist *.tsbuildinfo", + "lint": "eslint --cache .", + "test": "jest", + "ci:test": "jest --coverage" + }, + "engines": { + "node": ">= 12.0.0" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/pmb0/express-sharp.git" + }, + "keywords": [ + "express", + "sharp", + "image", + "scale" + ], + "author": "Philipp Busse", + "license": "MIT", + "bugs": { + "url": "https://github.com/pmb0/express-sharp/issues" + }, + "homepage": "https://github.com/pmb0/express-sharp#readme" +} diff --git a/libs/core/src/index.ts b/libs/core/src/index.ts new file mode 100644 index 00000000..46e2a483 --- /dev/null +++ b/libs/core/src/index.ts @@ -0,0 +1,3 @@ +export * from './interfaces' +export * from './logger' +export * from './util' diff --git a/src/interfaces.ts b/libs/core/src/interfaces.ts similarity index 100% rename from src/interfaces.ts rename to libs/core/src/interfaces.ts diff --git a/src/logger.ts b/libs/core/src/logger.ts similarity index 100% rename from src/logger.ts rename to libs/core/src/logger.ts diff --git a/src/util.test.ts b/libs/core/src/util.test.ts similarity index 100% rename from src/util.test.ts rename to libs/core/src/util.test.ts diff --git a/src/util.ts b/libs/core/src/util.ts similarity index 66% rename from src/util.ts rename to libs/core/src/util.ts index 530bba06..1bad4230 100644 --- a/src/util.ts +++ b/libs/core/src/util.ts @@ -1,6 +1,7 @@ export function camelToSnake(string: string): string { return string .replace(/\w([A-Z])/g, (m) => { + // eslint-disable-next-line @typescript-eslint/restrict-template-expressions return `${m[0]}_${m[1]}` }) .toLowerCase() diff --git a/libs/core/tsconfig.build.json b/libs/core/tsconfig.build.json new file mode 100644 index 00000000..2f44ee20 --- /dev/null +++ b/libs/core/tsconfig.build.json @@ -0,0 +1,5 @@ +{ + "extends": "./tsconfig.json", + "exclude": ["node_modules", "dist"], + "references": [] +} diff --git a/libs/core/tsconfig.json b/libs/core/tsconfig.json new file mode 100644 index 00000000..a01b1fd0 --- /dev/null +++ b/libs/core/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "@edged/tsconfig", + "compilerOptions": { + "outDir": "./dist", + "rootDir": "src" + }, + "include": ["src/**/*", "__tests__/**/*", "example/**/*", "__mocks__/**/*"], + "references": [], + "exclude": ["node_modules", "dist"] +} diff --git a/.npmignore b/libs/express-sharp/.npmignore similarity index 100% rename from .npmignore rename to libs/express-sharp/.npmignore diff --git a/libs/express-sharp/.releaserc.json b/libs/express-sharp/.releaserc.json new file mode 100644 index 00000000..a0ffec7d --- /dev/null +++ b/libs/express-sharp/.releaserc.json @@ -0,0 +1 @@ +{"tagFormat":"express-sharp@v${version}"} diff --git a/CHANGELOG.md b/libs/express-sharp/CHANGELOG.md similarity index 100% rename from CHANGELOG.md rename to libs/express-sharp/CHANGELOG.md diff --git a/__mocks__/fs.ts b/libs/express-sharp/__mocks__/fs.ts similarity index 100% rename from __mocks__/fs.ts rename to libs/express-sharp/__mocks__/fs.ts diff --git a/__tests__/cors.ts b/libs/express-sharp/__tests__/cors.ts similarity index 100% rename from __tests__/cors.ts rename to libs/express-sharp/__tests__/cors.ts diff --git a/__tests__/express-sharp.ts b/libs/express-sharp/__tests__/express-sharp.ts similarity index 98% rename from __tests__/express-sharp.ts rename to libs/express-sharp/__tests__/express-sharp.ts index eea87763..95cbd6e8 100644 --- a/__tests__/express-sharp.ts +++ b/libs/express-sharp/__tests__/express-sharp.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-unsafe-member-access */ import express from 'express' import { AddressInfo } from 'net' import { join } from 'path' diff --git a/__tests__/images/a.jpg b/libs/express-sharp/__tests__/images/a.jpg similarity index 100% rename from __tests__/images/a.jpg rename to libs/express-sharp/__tests__/images/a.jpg diff --git a/__tests__/images/b.png b/libs/express-sharp/__tests__/images/b.png similarity index 100% rename from __tests__/images/b.png rename to libs/express-sharp/__tests__/images/b.png diff --git a/__tests__/images/foo-_A.jpg b/libs/express-sharp/__tests__/images/foo-_A.jpg similarity index 100% rename from __tests__/images/foo-_A.jpg rename to libs/express-sharp/__tests__/images/foo-_A.jpg diff --git a/__tests__/images/zade4np6qh-bardokat-designs-makramee-schlusselanhanger-noa-hellgrau.jpg b/libs/express-sharp/__tests__/images/zade4np6qh-bardokat-designs-makramee-schlusselanhanger-noa-hellgrau.jpg similarity index 100% rename from __tests__/images/zade4np6qh-bardokat-designs-makramee-schlusselanhanger-noa-hellgrau.jpg rename to libs/express-sharp/__tests__/images/zade4np6qh-bardokat-designs-makramee-schlusselanhanger-noa-hellgrau.jpg diff --git a/libs/express-sharp/jest.config.ts b/libs/express-sharp/jest.config.ts new file mode 100644 index 00000000..0af0592f --- /dev/null +++ b/libs/express-sharp/jest.config.ts @@ -0,0 +1,9 @@ +import baseConfig from '@edged/jest-config' +import { Config } from '@jest/types' + +const config: Config.InitialOptions = { + ...baseConfig, + setupFiles: ['./setup-jest.ts'], +} + +export default config diff --git a/libs/express-sharp/package.json b/libs/express-sharp/package.json new file mode 100644 index 00000000..b8ece861 --- /dev/null +++ b/libs/express-sharp/package.json @@ -0,0 +1,68 @@ +{ + "name": "express-sharp", + "version": "4.2.36", + "description": "Real-time image processing for your express application", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "dependencies": { + "@edged/client": "workspace:^1.0.0", + "@edged/common": "workspace:^1.0.0", + "@edged/config": "workspace:^1.0.0", + "@edged/core": "workspace:^1.0.0", + "@edged/fs-adapter": "workspace:^1.0.0", + "class-validator": "^0.13.1", + "cors": "^2.8.5", + "debug": "^4.3.2", + "etag": "^1.8.1", + "reflect-metadata": "^0.1.13", + "sharp": "^0.29.1", + "tslib": "^2.3.1", + "tsyringe": "^4.6.0" + }, + "devDependencies": { + "@edged/http-adapter": "workspace:^1.0.0", + "@edged/tsconfig": "workspace:^1.0.0", + "@keyv/redis": "^2.1.2", + "@types/cache-manager": "^3.4.2", + "@types/cors": "^2.8.12", + "@types/debug": "^4.1.7", + "@types/etag": "^1.8.1", + "@types/express": "^4.17.13", + "@types/keyv": "^3.1.3", + "@types/node": "^14.17.15", + "@types/sharp": "^0.28.6", + "@types/supertest": "^2.0.11", + "express": "^4.17.1", + "keyv": "^4.0.3", + "supertest": "^6.1.6" + }, + "peerDependencies": { + "express": "^4.0.0" + }, + "scripts": { + "build": "tsc --build tsconfig.build.json", + "clean": "rimraf dist *.tsbuildinfo", + "lint": "eslint --cache .", + "test": "jest", + "ci:test": "jest --coverage" + }, + "engines": { + "node": ">= 12.0.0" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/pmb0/express-sharp.git" + }, + "keywords": [ + "express", + "sharp", + "image", + "scale" + ], + "author": "Philipp Busse", + "license": "MIT", + "bugs": { + "url": "https://github.com/pmb0/express-sharp/issues" + }, + "homepage": "https://github.com/pmb0/express-sharp#readme" +} diff --git a/test/setup.ts b/libs/express-sharp/setup-jest.ts similarity index 100% rename from test/setup.ts rename to libs/express-sharp/setup-jest.ts diff --git a/src/cached-image.test.ts b/libs/express-sharp/src/cached-image.test.ts similarity index 95% rename from src/cached-image.test.ts rename to libs/express-sharp/src/cached-image.test.ts index fc9800d9..cdca6f0f 100644 --- a/src/cached-image.test.ts +++ b/libs/express-sharp/src/cached-image.test.ts @@ -1,6 +1,6 @@ import Keyv from 'keyv' +import { ImageAdapter } from '../../core/src/interfaces' import { CachedImage } from './cached-image' -import { ImageAdapter } from './interfaces' class ImageAdapterMock implements ImageAdapter { fetchMock: Buffer | undefined = undefined diff --git a/src/cached-image.ts b/libs/express-sharp/src/cached-image.ts similarity index 88% rename from src/cached-image.ts rename to libs/express-sharp/src/cached-image.ts index 38415d90..3636b52d 100644 --- a/src/cached-image.ts +++ b/libs/express-sharp/src/cached-image.ts @@ -1,6 +1,5 @@ +import { getLogger, ImageAdapter } from '@edged/core' import Keyv from 'keyv' -import { ImageAdapter } from './interfaces' -import { getLogger } from './logger' import { singleton } from 'tsyringe' @singleton() diff --git a/src/http-exception.test.ts b/libs/express-sharp/src/http-exception.test.ts similarity index 100% rename from src/http-exception.test.ts rename to libs/express-sharp/src/http-exception.test.ts diff --git a/src/http-exception.ts b/libs/express-sharp/src/http-exception.ts similarity index 100% rename from src/http-exception.ts rename to libs/express-sharp/src/http-exception.ts diff --git a/src/index.ts b/libs/express-sharp/src/index.ts similarity index 61% rename from src/index.ts rename to libs/express-sharp/src/index.ts index e89f348d..b3d16f5a 100644 --- a/src/index.ts +++ b/libs/express-sharp/src/index.ts @@ -1,8 +1,8 @@ import 'reflect-metadata' -export * from './adapter' -export * from './express-sharp-client' -export * from './interfaces' +export * from '@edged/client' +export * from '@edged/core' +export * from '@edged/fs-adapter' +export * from './http-exception' export * from './middleware/express-sharp.middleware' export * from './transformer.service' -export * from './http-exception' diff --git a/src/middleware/etag-caching.middleware.test.ts b/libs/express-sharp/src/middleware/etag-caching.middleware.test.ts similarity index 100% rename from src/middleware/etag-caching.middleware.test.ts rename to libs/express-sharp/src/middleware/etag-caching.middleware.test.ts diff --git a/src/middleware/etag-caching.middleware.ts b/libs/express-sharp/src/middleware/etag-caching.middleware.ts similarity index 100% rename from src/middleware/etag-caching.middleware.ts rename to libs/express-sharp/src/middleware/etag-caching.middleware.ts diff --git a/src/middleware/express-sharp.middleware.test.ts b/libs/express-sharp/src/middleware/express-sharp.middleware.test.ts similarity index 95% rename from src/middleware/express-sharp.middleware.test.ts rename to libs/express-sharp/src/middleware/express-sharp.middleware.test.ts index 825f567c..0f730f8c 100644 --- a/src/middleware/express-sharp.middleware.test.ts +++ b/libs/express-sharp/src/middleware/express-sharp.middleware.test.ts @@ -1,8 +1,8 @@ +import { ConfigService } from '@edged/config' +import { HttpAdapter } from '@edged/http-adapter' import { Router } from 'express' import Keyv from 'keyv' import { container } from 'tsyringe' -import { HttpAdapter } from '../adapter' -import { ConfigService } from '../config.service' import { Transformer } from '../transformer.service' import { expressSharp } from './express-sharp.middleware' import { signedUrl } from './signed-url.middleware' diff --git a/src/middleware/express-sharp.middleware.ts b/libs/express-sharp/src/middleware/express-sharp.middleware.ts similarity index 92% rename from src/middleware/express-sharp.middleware.ts rename to libs/express-sharp/src/middleware/express-sharp.middleware.ts index 93a39bc6..cad58467 100644 --- a/src/middleware/express-sharp.middleware.ts +++ b/libs/express-sharp/src/middleware/express-sharp.middleware.ts @@ -1,3 +1,6 @@ +import { ResizeDto } from '@edged/common' +import { ConfigService } from '@edged/config' +import { ExpressSharpOptions } from '@edged/core' import cors from 'cors' import { NextFunction, @@ -8,9 +11,6 @@ import { } from 'express' import Keyv from 'keyv' import { container } from 'tsyringe' -import { ConfigService } from '../config.service' -import { ExpressSharpOptions } from '../interfaces' -import { ResizeDto } from '../resize.dto' import { etagCaching } from './etag-caching.middleware' import { signedUrl } from './signed-url.middleware' import { transformImage } from './transform-image.middleware' diff --git a/src/middleware/signed-url.middleware.test.ts b/libs/express-sharp/src/middleware/signed-url.middleware.test.ts similarity index 95% rename from src/middleware/signed-url.middleware.test.ts rename to libs/express-sharp/src/middleware/signed-url.middleware.test.ts index 704d2b0b..92151422 100644 --- a/src/middleware/signed-url.middleware.test.ts +++ b/libs/express-sharp/src/middleware/signed-url.middleware.test.ts @@ -1,8 +1,8 @@ +import { ConfigService } from '@edged/config' import { NextFunction } from 'express' -import { signedUrl } from './signed-url.middleware' import { container } from 'tsyringe' -import { ConfigService } from '../config.service' import { ForbiddenException } from '../http-exception' +import { signedUrl } from './signed-url.middleware' describe('signedUrl()', () => { let next: jest.Mock diff --git a/src/middleware/signed-url.middleware.ts b/libs/express-sharp/src/middleware/signed-url.middleware.ts similarity index 91% rename from src/middleware/signed-url.middleware.ts rename to libs/express-sharp/src/middleware/signed-url.middleware.ts index 63654601..59152d76 100644 --- a/src/middleware/signed-url.middleware.ts +++ b/libs/express-sharp/src/middleware/signed-url.middleware.ts @@ -1,7 +1,7 @@ +import { UrlSigner } from '@edged/common' import { NextFunction, Request, Response } from 'express' import { container } from 'tsyringe' import { ForbiddenException } from '../http-exception' -import { UrlSigner } from '../signed-url.service' export function signedUrl( req: Request, diff --git a/src/middleware/transform-image.middleware.test.ts b/libs/express-sharp/src/middleware/transform-image.middleware.test.ts similarity index 100% rename from src/middleware/transform-image.middleware.test.ts rename to libs/express-sharp/src/middleware/transform-image.middleware.test.ts diff --git a/src/middleware/transform-image.middleware.ts b/libs/express-sharp/src/middleware/transform-image.middleware.ts similarity index 90% rename from src/middleware/transform-image.middleware.ts rename to libs/express-sharp/src/middleware/transform-image.middleware.ts index 93655b00..b27b2b93 100644 --- a/src/middleware/transform-image.middleware.ts +++ b/libs/express-sharp/src/middleware/transform-image.middleware.ts @@ -1,7 +1,7 @@ +import { ResizeDto } from '@edged/common' +import { ImageAdapter } from '@edged/core' import { NextFunction, Request, Response } from 'express' import { container } from 'tsyringe' -import { ImageAdapter } from '../interfaces' -import { ResizeDto } from '../resize.dto' import { Transformer } from '../transformer.service' export async function transformImage( diff --git a/src/middleware/transform-query-params.middleware.ts b/libs/express-sharp/src/middleware/transform-query-params.middleware.ts similarity index 90% rename from src/middleware/transform-query-params.middleware.ts rename to libs/express-sharp/src/middleware/transform-query-params.middleware.ts index a1cff8f3..e49d5828 100644 --- a/src/middleware/transform-query-params.middleware.ts +++ b/libs/express-sharp/src/middleware/transform-query-params.middleware.ts @@ -1,5 +1,5 @@ +import { QueryParams } from '@edged/core' import { NextFunction, Request, Response } from 'express' -import { QueryParams } from '../interfaces' export function transformQueryParams( req: Request, diff --git a/src/middleware/use-webp-if-supported.middleware.test.ts b/libs/express-sharp/src/middleware/use-webp-if-supported.middleware.test.ts similarity index 100% rename from src/middleware/use-webp-if-supported.middleware.test.ts rename to libs/express-sharp/src/middleware/use-webp-if-supported.middleware.test.ts diff --git a/src/middleware/use-webp-if-supported.middleware.ts b/libs/express-sharp/src/middleware/use-webp-if-supported.middleware.ts similarity index 87% rename from src/middleware/use-webp-if-supported.middleware.ts rename to libs/express-sharp/src/middleware/use-webp-if-supported.middleware.ts index 64fdb0c3..27e55f37 100644 --- a/src/middleware/use-webp-if-supported.middleware.ts +++ b/libs/express-sharp/src/middleware/use-webp-if-supported.middleware.ts @@ -1,5 +1,5 @@ +import { ResizeDto } from '@edged/common' import { NextFunction, Request, Response } from 'express' -import { ResizeDto } from '../resize.dto' export function useWebpIfSupported( req: Request, diff --git a/src/middleware/validator.middleware.test.ts b/libs/express-sharp/src/middleware/validator.middleware.test.ts similarity index 98% rename from src/middleware/validator.middleware.test.ts rename to libs/express-sharp/src/middleware/validator.middleware.test.ts index dc4ed820..6f09cdd3 100644 --- a/src/middleware/validator.middleware.test.ts +++ b/libs/express-sharp/src/middleware/validator.middleware.test.ts @@ -1,7 +1,7 @@ +import { ToNumber } from '@edged/common' import * as ClassValidator from 'class-validator' import { IsDefined, IsOptional, Min } from 'class-validator' import { NextFunction } from 'express' -import { ToNumber } from '../decorators' import { BadRequestException, HttpException } from '../http-exception' import { validate } from './validator.middleware' diff --git a/src/middleware/validator.middleware.ts b/libs/express-sharp/src/middleware/validator.middleware.ts similarity index 100% rename from src/middleware/validator.middleware.ts rename to libs/express-sharp/src/middleware/validator.middleware.ts diff --git a/src/object-hash.service.test.ts b/libs/express-sharp/src/object-hash.service.test.ts similarity index 95% rename from src/object-hash.service.test.ts rename to libs/express-sharp/src/object-hash.service.test.ts index 536e39c7..185a38f8 100644 --- a/src/object-hash.service.test.ts +++ b/libs/express-sharp/src/object-hash.service.test.ts @@ -1,6 +1,6 @@ +import { ToNumber, Transform } from '@edged/common' +import { ConfigService } from '@edged/config' import { container } from 'tsyringe' -import { ConfigService } from './config.service' -import { ToNumber, Transform } from './decorators' import { ObjectHash } from './object-hash.service' describe('ObjectHash', () => { diff --git a/src/object-hash.service.ts b/libs/express-sharp/src/object-hash.service.ts similarity index 93% rename from src/object-hash.service.ts rename to libs/express-sharp/src/object-hash.service.ts index e71029ab..9834d8bd 100644 --- a/src/object-hash.service.ts +++ b/libs/express-sharp/src/object-hash.service.ts @@ -1,6 +1,6 @@ +import { ConfigService } from '@edged/config' import crypto from 'crypto' import { injectable } from 'tsyringe' -import { ConfigService } from './config.service' @injectable() export class ObjectHash { diff --git a/src/transformer.service.test.ts b/libs/express-sharp/src/transformer.service.test.ts similarity index 96% rename from src/transformer.service.test.ts rename to libs/express-sharp/src/transformer.service.test.ts index 9a85359c..45a8ac4a 100644 --- a/src/transformer.service.test.ts +++ b/libs/express-sharp/src/transformer.service.test.ts @@ -1,9 +1,9 @@ import Keyv from 'keyv' import { container } from 'tsyringe' -import { ImageAdapter } from './interfaces' +import { ImageAdapter } from '../../core/src/interfaces' +import { CachedImage } from './cached-image' import { ObjectHash } from './object-hash.service' import { Transformer } from './transformer.service' -import { CachedImage } from './cached-image' class ImageMockAdapter implements ImageAdapter { // eslint-disable-next-line @typescript-eslint/require-await diff --git a/src/transformer.service.ts b/libs/express-sharp/src/transformer.service.ts similarity index 95% rename from src/transformer.service.ts rename to libs/express-sharp/src/transformer.service.ts index 14842a0a..d16b01c4 100644 --- a/src/transformer.service.ts +++ b/libs/express-sharp/src/transformer.service.ts @@ -1,11 +1,10 @@ +import { ResizeDto } from '@edged/common' +import { format, getLogger, ImageAdapter, Result } from '@edged/core' import Keyv from 'keyv' import sharp from 'sharp' import { singleton } from 'tsyringe' import { CachedImage } from './cached-image' -import { format, ImageAdapter, Result } from './interfaces' -import { getLogger } from './logger' import { ObjectHash } from './object-hash.service' -import { ResizeDto } from './resize.dto' const DEFAULT_CROP_MAX_SIZE = 2000 diff --git a/libs/express-sharp/tsconfig.build.json b/libs/express-sharp/tsconfig.build.json new file mode 100644 index 00000000..7090ba38 --- /dev/null +++ b/libs/express-sharp/tsconfig.build.json @@ -0,0 +1,24 @@ +{ + "extends": "./tsconfig.json", + "exclude": ["node_modules", "dist"], + "references": [ + { + "path": "../adapters/fs-adapter" + }, + { + "path": "../adapters/http-adapter" + }, + { + "path": "../client" + }, + { + "path": "../common" + }, + { + "path": "../config" + }, + { + "path": "../core" + } + ] +} diff --git a/libs/express-sharp/tsconfig.json b/libs/express-sharp/tsconfig.json new file mode 100644 index 00000000..22f9146d --- /dev/null +++ b/libs/express-sharp/tsconfig.json @@ -0,0 +1,29 @@ +{ + "extends": "@edged/tsconfig", + "compilerOptions": { + "outDir": "./dist", + "rootDir": "src" + }, + "include": ["src/**/*"], + "references": [ + { + "path": "../adapters/fs-adapter" + }, + { + "path": "../adapters/http-adapter" + }, + { + "path": "../client" + }, + { + "path": "../common" + }, + { + "path": "../config" + }, + { + "path": "../core" + } + ], + "exclude": ["node_modules", "dist"] +} diff --git a/libs/testing/.releaserc.json b/libs/testing/.releaserc.json new file mode 100644 index 00000000..c3b2de35 --- /dev/null +++ b/libs/testing/.releaserc.json @@ -0,0 +1 @@ +{"tagFormat":"@edged/testing@v${version}"} diff --git a/libs/testing/package.json b/libs/testing/package.json new file mode 100644 index 00000000..e7c3cecd --- /dev/null +++ b/libs/testing/package.json @@ -0,0 +1,49 @@ +{ + "name": "@edged/testing", + "version": "1.0.0", + "private": true, + "description": "", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "dependencies": { + "cors": "^2.8.5", + "debug": "^4.3.2", + "http-status": "^1.5.0", + "keyv": "^4.0.3", + "tslib": "^2.3.1" + }, + "devDependencies": { + "@edged/tsconfig": "workspace:^1.0.0", + "axios": "^0.21.4", + "jest-config": "^27.1.1" + }, + "scripts": { + "build": "tsc --build tsconfig.build.json", + "clean": "rimraf dist *.tsbuildinfo", + "lint": "eslint --cache .", + "test": "jest", + "ci:test": "jest --coverage" + }, + "engines": { + "node": ">= 12.0.0" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/pmb0/express-sharp.git" + }, + "keywords": [ + "express", + "sharp", + "image", + "scale" + ], + "author": "Philipp Busse", + "license": "MIT", + "bugs": { + "url": "https://github.com/pmb0/express-sharp/issues" + }, + "homepage": "https://github.com/pmb0/express-sharp#readme", + "peerDependencies": { + "axios": "^0.21.2" + } +} diff --git a/libs/testing/src/axios.ts b/libs/testing/src/axios.ts new file mode 100644 index 00000000..e4a9bb38 --- /dev/null +++ b/libs/testing/src/axios.ts @@ -0,0 +1,72 @@ +import _axios, { + AxiosError, + AxiosRequestConfig, + AxiosResponse, + AxiosStatic, +} from 'axios' +import httpStatus from 'http-status' + +let axiosConfig: AxiosRequestConfig = {} + +export function setAxiosConfig(config: AxiosRequestConfig): void { + axiosConfig = config +} + +export const axios = _axios as jest.Mocked + +export function createAxiosResponse( + data: T, + status = httpStatus.OK, + config = axiosConfig, +): AxiosResponse { + const statusText = httpStatus[status] as string + + return { + config, + data, + headers: {}, + status, + statusText, + } +} + +export function mockNextResponse( + data: unknown, + status = httpStatus.OK, + config = axiosConfig, +): void { + axios.get.mockResolvedValueOnce(createAxiosResponse(data, status, config)) +} + +export function createAxiosError( + name: string, + message: string, + data: T, + status = httpStatus.OK, + config = axiosConfig, +): AxiosError { + const response: Omit = { + config, + isAxiosError: true, + message, + name, + response: createAxiosResponse(data, status, config), + } + + return { + ...response, + toJSON: () => response, + } +} + +export function mockNextResponseAsError( + name: string, + message: string, + data: unknown, + status = httpStatus.OK, + config = axiosConfig, +): void { + axios.get.mockImplementation(() => { + throw createAxiosError(name, message, data, status, config) + }) +} diff --git a/libs/testing/src/index.ts b/libs/testing/src/index.ts new file mode 100644 index 00000000..ae582654 --- /dev/null +++ b/libs/testing/src/index.ts @@ -0,0 +1 @@ +export * from './axios' diff --git a/libs/testing/tsconfig.build.json b/libs/testing/tsconfig.build.json new file mode 100644 index 00000000..2f44ee20 --- /dev/null +++ b/libs/testing/tsconfig.build.json @@ -0,0 +1,5 @@ +{ + "extends": "./tsconfig.json", + "exclude": ["node_modules", "dist"], + "references": [] +} diff --git a/libs/testing/tsconfig.json b/libs/testing/tsconfig.json new file mode 100644 index 00000000..a01b1fd0 --- /dev/null +++ b/libs/testing/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "@edged/tsconfig", + "compilerOptions": { + "outDir": "./dist", + "rootDir": "src" + }, + "include": ["src/**/*", "__tests__/**/*", "example/**/*", "__mocks__/**/*"], + "references": [], + "exclude": ["node_modules", "dist"] +} diff --git a/package.json b/package.json index d331da3f..f7cf637e 100644 --- a/package.json +++ b/package.json @@ -1,100 +1,48 @@ { - "name": "express-sharp", - "version": "4.2.39", - "description": "Real-time image processing for your express application", - "main": "dist/index.js", - "types": "dist/index.d.ts", - "dependencies": { - "class-validator": "^0.13.1", - "cors": "^2.8.5", - "debug": "^4.3.2", - "dotenv": "^10.0.0", - "etag": "^1.8.1", - "reflect-metadata": "^0.1.13", - "sharp": "^0.29.0", - "tsyringe": "^4.6.0" - }, + "name": "@edged/repo", + "private": "true", "devDependencies": { - "@commitlint/cli": "^13.1.0", "@commitlint/config-conventional": "^13.1.0", - "@heise/eslint-config": "^19.0.4", - "@keyv/redis": "^2.1.2", + "@edged/jest-config": "workspace:^1.0.0", + "@edged/tsconfig": "workspace:^1.0.0", + "@heise/eslint-config": "^19.0.6", + "@jest/types": "^27.1.1", + "@pnpm/meta-updater": "^0.0.6", "@semantic-release/changelog": "^5.0.1", "@semantic-release/commit-analyzer": "^8.0.1", "@semantic-release/git": "^9.0.1", "@semantic-release/npm": "^7.1.3", "@semantic-release/release-notes-generator": "^9.0.3", - "@types/cache-manager": "^3.4.2", - "@types/cors": "^2.8.12", - "@types/debug": "^4.1.7", - "@types/etag": "^1.8.1", - "@types/express": "^4.17.13", - "@types/got": "^9.6.12", "@types/jest": "^27.0.1", - "@types/keyv": "^3.1.2", - "@types/node": "^14.17.14", - "@types/sharp": "^0.28.6", - "@types/supertest": "^2.0.11", - "aws-sdk": "^2.983.0", - "eslint-plugin-no-only-tests": "^2.6.0", + "@types/node": "^14.17.15", + "commitlint": "^13.1.0", "eslint-plugin-sort-keys-fix": "^1.1.2", - "express": "^4.17.1", - "got": "^11.8.2", "husky": "^7.0.2", - "jest": "^27.1.0", - "keyv": "^4.0.3", + "jest": "^27.1.1", + "jest-config": "^27.1.1", "lint-staged": "^11.1.2", + "multi-semantic-release": "^2.8.5", "nodemon": "^2.0.12", - "prettier": "^2.3.2", - "pug": "^3.0.2", "rimraf": "^3.0.2", "semantic-release": "^17.4.7", - "supertest": "^6.1.6", "ts-jest": "^27.0.5", "ts-node": "^10.2.1", - "typescript": "^4.4.2" - }, - "peerDependencies": { - "aws-sdk": "^2.713.0", - "express": "^4.0.0", - "got": "^11.5.0" - }, - "peerDependenciesMeta": { - "aws-sdk": { - "optional": true - }, - "got": { - "optional": true - } + "typescript": "^4.4.3" }, "scripts": { - "build:test": "tsc --noEmit", - "build": "tsc --build tsconfig.build.json", - "prebuild": "yarn clean", - "clean": "rimraf dist", - "start:example": "DEBUG=express-sharp* nodemon --exec 'node -r ts-node/register' -w . --inspect example/app.ts", + "update-manifests": "pnpm run meta-updater && pnpm install", + "meta-updater": "pnpm --filter=@edged/updater build && pnpm --config.use-node-version=16.4.0 exec meta-updater", + "build": "pnpm run -r --sort build", + "clean": "pnpm run -r clean", + "rebuild": "pnpm run clean && pnpm run build", "lint": "eslint --cache .", "test": "jest", "ci:test": "jest --coverage", - "prepare": "husky install" + "preinstall": "npx only-allow pnpm", + "prepare": "husky install", + "release": "multi-semantic-release --ignore-packages=tools/**,services/**" }, - "engines": { - "node": ">= 12.0.0" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/pmb0/express-sharp.git" - }, - "keywords": [ - "express", - "sharp", - "image", - "scale" - ], "author": "Philipp Busse", "license": "MIT", - "bugs": { - "url": "https://github.com/pmb0/express-sharp/issues" - }, "homepage": "https://github.com/pmb0/express-sharp#readme" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ca5a0345..37ac6bd3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,102 +1,297 @@ lockfileVersion: 5.3 -specifiers: - '@commitlint/cli': ^13.1.0 - '@commitlint/config-conventional': ^13.1.0 - '@heise/eslint-config': ^19.0.4 - '@keyv/redis': ^2.1.2 - '@semantic-release/changelog': ^5.0.1 - '@semantic-release/commit-analyzer': ^8.0.1 - '@semantic-release/git': ^9.0.1 - '@semantic-release/npm': ^7.1.3 - '@semantic-release/release-notes-generator': ^9.0.3 - '@types/cache-manager': ^3.4.2 - '@types/cors': ^2.8.12 - '@types/debug': ^4.1.7 - '@types/etag': ^1.8.1 - '@types/express': ^4.17.13 - '@types/got': ^9.6.12 - '@types/jest': ^27.0.1 - '@types/keyv': ^3.1.2 - '@types/node': ^14.17.14 - '@types/sharp': ^0.28.6 - '@types/supertest': ^2.0.11 - aws-sdk: ^2.983.0 - class-validator: ^0.13.1 - cors: ^2.8.5 - debug: ^4.3.2 - dotenv: ^10.0.0 - eslint-plugin-no-only-tests: ^2.6.0 - eslint-plugin-sort-keys-fix: ^1.1.2 - etag: ^1.8.1 - express: ^4.17.1 - got: ^11.8.2 - husky: ^7.0.2 - jest: ^27.1.0 - keyv: ^4.0.3 - lint-staged: ^11.1.2 - nodemon: ^2.0.12 - prettier: ^2.3.2 - pug: ^3.0.2 - reflect-metadata: ^0.1.13 - rimraf: ^3.0.2 - semantic-release: ^17.4.7 - sharp: ^0.29.0 - supertest: ^6.1.6 - ts-jest: ^27.0.5 - ts-node: ^10.2.1 - tsyringe: ^4.6.0 - typescript: ^4.4.2 - -dependencies: - class-validator: 0.13.1 - cors: 2.8.5 - debug: 4.3.2 - dotenv: 10.0.0 - etag: 1.8.1 - reflect-metadata: 0.1.13 - sharp: 0.29.0 - tsyringe: 4.6.0 - -devDependencies: - '@commitlint/cli': 13.1.0 - '@commitlint/config-conventional': 13.1.0 - '@heise/eslint-config': 19.0.4_typescript@4.4.2 - '@keyv/redis': 2.1.2 - '@semantic-release/changelog': 5.0.1_semantic-release@17.4.7 - '@semantic-release/commit-analyzer': 8.0.1_semantic-release@17.4.7 - '@semantic-release/git': 9.0.1_semantic-release@17.4.7 - '@semantic-release/npm': 7.1.3_semantic-release@17.4.7 - '@semantic-release/release-notes-generator': 9.0.3_semantic-release@17.4.7 - '@types/cache-manager': 3.4.2 - '@types/cors': 2.8.12 - '@types/debug': 4.1.7 - '@types/etag': 1.8.1 - '@types/express': 4.17.13 - '@types/got': 9.6.12 - '@types/jest': 27.0.1 - '@types/keyv': 3.1.2 - '@types/node': 14.17.14 - '@types/sharp': 0.28.6 - '@types/supertest': 2.0.11 - aws-sdk: 2.983.0 - eslint-plugin-no-only-tests: 2.6.0 - eslint-plugin-sort-keys-fix: 1.1.2 - express: 4.17.1 - got: 11.8.2 - husky: 7.0.2 - jest: 27.1.0_ts-node@10.2.1 - keyv: 4.0.3 - lint-staged: 11.1.2 - nodemon: 2.0.12 - prettier: 2.3.2 - pug: 3.0.2 - rimraf: 3.0.2 - semantic-release: 17.4.7 - supertest: 6.1.6 - ts-jest: 27.0.5_d6279bcaf6e2c6aa91a58343d133ee67 - ts-node: 10.2.1_d7d681058e4c969a99d022d4f7844478 - typescript: 4.4.2 +importers: + + .: + specifiers: + '@commitlint/config-conventional': ^13.1.0 + '@edged/jest-config': workspace:^1.0.0 + '@edged/tsconfig': workspace:^1.0.0 + '@heise/eslint-config': ^19.0.6 + '@jest/types': ^27.1.1 + '@pnpm/meta-updater': ^0.0.6 + '@semantic-release/changelog': ^5.0.1 + '@semantic-release/commit-analyzer': ^8.0.1 + '@semantic-release/git': ^9.0.1 + '@semantic-release/npm': ^7.1.3 + '@semantic-release/release-notes-generator': ^9.0.3 + '@types/jest': ^27.0.1 + '@types/node': ^14.17.15 + commitlint: ^13.1.0 + eslint-plugin-sort-keys-fix: ^1.1.2 + husky: ^7.0.2 + jest: ^27.1.1 + jest-config: ^27.1.1 + lint-staged: ^11.1.2 + multi-semantic-release: ^2.8.5 + nodemon: ^2.0.12 + rimraf: ^3.0.2 + semantic-release: ^17.4.7 + ts-jest: ^27.0.5 + ts-node: ^10.2.1 + typescript: ^4.4.3 + devDependencies: + '@commitlint/config-conventional': 13.1.0 + '@edged/jest-config': link:tools/jest-config + '@edged/tsconfig': link:tools/tsconfig + '@heise/eslint-config': 19.0.6_typescript@4.4.3 + '@jest/types': 27.1.1 + '@pnpm/meta-updater': 0.0.6 + '@semantic-release/changelog': 5.0.1_semantic-release@17.4.7 + '@semantic-release/commit-analyzer': 8.0.1_semantic-release@17.4.7 + '@semantic-release/git': 9.0.1_semantic-release@17.4.7 + '@semantic-release/npm': 7.1.3_semantic-release@17.4.7 + '@semantic-release/release-notes-generator': 9.0.3_semantic-release@17.4.7 + '@types/jest': 27.0.1 + '@types/node': 14.17.15 + commitlint: 13.1.0 + eslint-plugin-sort-keys-fix: 1.1.2 + husky: 7.0.2 + jest: 27.1.1_ts-node@10.2.1 + jest-config: 27.1.1_ts-node@10.2.1 + lint-staged: 11.1.2 + multi-semantic-release: 2.8.5 + nodemon: 2.0.12 + rimraf: 3.0.2 + semantic-release: 17.4.7 + ts-jest: 27.0.5_04e1385bcb7e61957a9335c26551e89f + ts-node: 10.2.1_91d7040b2316c81455e367292ad70221 + typescript: 4.4.3 + + .meta-updater: + specifiers: + '@pnpm/find-workspace-packages': ^3.1.12 + '@pnpm/lockfile-file': ^4.1.1 + '@pnpm/logger': ^4.0.0 + '@pnpm/types': ^7.4.0 + '@types/normalize-path': ^3.0.0 + is-subdir: ^1.2.0 + normalize-path: ^3.0.0 + dependencies: + '@pnpm/find-workspace-packages': 3.1.12_@pnpm+logger@4.0.0 + '@pnpm/lockfile-file': 4.1.1_@pnpm+logger@4.0.0 + '@pnpm/logger': 4.0.0 + '@pnpm/types': 7.4.0 + '@types/normalize-path': 3.0.0 + is-subdir: 1.2.0 + normalize-path: 3.0.0 + + libs/adapters/fs-adapter: + specifiers: + '@edged/core': workspace:^1.0.0 + '@edged/tsconfig': workspace:^1.0.0 + tslib: ^2.3.1 + dependencies: + '@edged/core': link:../../core + tslib: 2.3.1 + devDependencies: + '@edged/tsconfig': link:../../../tools/tsconfig + + libs/adapters/http-adapter: + specifiers: + '@edged/core': workspace:^1.0.0 + '@edged/testing': workspace:^1.0.0 + '@edged/tsconfig': workspace:^1.0.0 + axios: ^0.21.4 + http-status: ^1.5.0 + tslib: ^2.3.1 + dependencies: + '@edged/core': link:../../core + axios: 0.21.4 + http-status: 1.5.0 + tslib: 2.3.1 + devDependencies: + '@edged/testing': link:../../testing + '@edged/tsconfig': link:../../../tools/tsconfig + + libs/adapters/s3-adapter: + specifiers: + '@edged/core': workspace:^1.0.0 + '@edged/tsconfig': workspace:^1.0.0 + aws-sdk: ^2.987.0 + tslib: ^2.3.1 + dependencies: + '@edged/core': link:../../core + aws-sdk: 2.987.0 + tslib: 2.3.1 + devDependencies: + '@edged/tsconfig': link:../../../tools/tsconfig + + libs/client: + specifiers: + '@edged/common': workspace:^1.0.0 + '@edged/config': workspace:^1.0.0 + '@edged/tsconfig': workspace:^1.0.0 + tsyringe: ^4.6.0 + dependencies: + '@edged/common': link:../common + '@edged/config': link:../config + tsyringe: 4.6.0 + devDependencies: + '@edged/tsconfig': link:../../tools/tsconfig + + libs/common: + specifiers: + '@edged/config': workspace:^1.0.0 + '@edged/core': workspace:^1.0.0 + '@edged/tsconfig': workspace:^1.0.0 + class-validator: ^0.13.1 + reflect-metadata: ^0.1.13 + sharp: ^0.29.1 + tsyringe: ^4.6.0 + dependencies: + '@edged/config': link:../config + '@edged/core': link:../core + class-validator: 0.13.1 + reflect-metadata: 0.1.13 + sharp: 0.29.1 + tsyringe: 4.6.0 + devDependencies: + '@edged/tsconfig': link:../../tools/tsconfig + + libs/config: + specifiers: + '@edged/core': workspace:^1.0.0 + '@edged/tsconfig': workspace:^1.0.0 + dotenv: ^10.0.0 + tsyringe: ^4.6.0 + dependencies: + '@edged/core': link:../core + dotenv: 10.0.0 + tsyringe: 4.6.0 + devDependencies: + '@edged/tsconfig': link:../../tools/tsconfig + + libs/core: + specifiers: + '@edged/tsconfig': workspace:^1.0.0 + cors: ^2.8.5 + debug: ^4.3.2 + keyv: ^4.0.3 + tslib: ^2.3.1 + dependencies: + cors: 2.8.5 + debug: 4.3.2 + keyv: 4.0.3 + tslib: 2.3.1 + devDependencies: + '@edged/tsconfig': link:../../tools/tsconfig + + libs/express-sharp: + specifiers: + '@edged/client': workspace:^1.0.0 + '@edged/common': workspace:^1.0.0 + '@edged/config': workspace:^1.0.0 + '@edged/core': workspace:^1.0.0 + '@edged/fs-adapter': workspace:^1.0.0 + '@edged/http-adapter': workspace:^1.0.0 + '@edged/tsconfig': workspace:^1.0.0 + '@keyv/redis': ^2.1.2 + '@types/cache-manager': ^3.4.2 + '@types/cors': ^2.8.12 + '@types/debug': ^4.1.7 + '@types/etag': ^1.8.1 + '@types/express': ^4.17.13 + '@types/keyv': ^3.1.3 + '@types/node': ^14.17.15 + '@types/sharp': ^0.28.6 + '@types/supertest': ^2.0.11 + class-validator: ^0.13.1 + cors: ^2.8.5 + debug: ^4.3.2 + etag: ^1.8.1 + express: ^4.17.1 + keyv: ^4.0.3 + reflect-metadata: ^0.1.13 + sharp: ^0.29.1 + supertest: ^6.1.6 + tslib: ^2.3.1 + tsyringe: ^4.6.0 + dependencies: + '@edged/client': link:../client + '@edged/common': link:../common + '@edged/config': link:../config + '@edged/core': link:../core + '@edged/fs-adapter': link:../adapters/fs-adapter + class-validator: 0.13.1 + cors: 2.8.5 + debug: 4.3.2 + etag: 1.8.1 + reflect-metadata: 0.1.13 + sharp: 0.29.1 + tslib: 2.3.1 + tsyringe: 4.6.0 + devDependencies: + '@edged/http-adapter': link:../adapters/http-adapter + '@edged/tsconfig': link:../../tools/tsconfig + '@keyv/redis': 2.1.2 + '@types/cache-manager': 3.4.2 + '@types/cors': 2.8.12 + '@types/debug': 4.1.7 + '@types/etag': 1.8.1 + '@types/express': 4.17.13 + '@types/keyv': 3.1.3 + '@types/node': 14.17.15 + '@types/sharp': 0.28.6 + '@types/supertest': 2.0.11 + express: 4.17.1 + keyv: 4.0.3 + supertest: 6.1.6 + + libs/testing: + specifiers: + '@edged/tsconfig': workspace:^1.0.0 + axios: ^0.21.4 + cors: ^2.8.5 + debug: ^4.3.2 + http-status: ^1.5.0 + jest-config: ^27.1.1 + keyv: ^4.0.3 + tslib: ^2.3.1 + dependencies: + cors: 2.8.5 + debug: 4.3.2 + http-status: 1.5.0 + keyv: 4.0.3 + tslib: 2.3.1 + devDependencies: + '@edged/tsconfig': link:../../tools/tsconfig + axios: 0.21.4_debug@4.3.2 + jest-config: 27.1.1_ts-node@10.2.1 + + services/example: + specifiers: + '@edged/http-adapter': workspace:^1.0.0 + '@edged/s3-adapter': workspace:^1.0.0 + '@edged/tsconfig': workspace:^1.0.0 + express: ^4.17.1 + express-sharp: workspace:* + keyv: ^4.0.3 + pkg: ^5.3.2 + pug: ^3.0.2 + tslib: ^2.3.1 + dependencies: + '@edged/http-adapter': link:../../libs/adapters/http-adapter + '@edged/s3-adapter': link:../../libs/adapters/s3-adapter + express: 4.17.1 + express-sharp: link:../../libs/express-sharp + keyv: 4.0.3 + pkg: 5.3.2 + pug: 3.0.2 + tslib: 2.3.1 + devDependencies: + '@edged/tsconfig': link:../../tools/tsconfig + + tools/jest-config: + specifiers: + '@jest/types': ^27.1.1 + jest-config: ^27.1.1 + devDependencies: + '@jest/types': 27.1.1 + jest-config: 27.1.1_ts-node@10.2.1 + + tools/tsconfig: + specifiers: {} packages: @@ -111,7 +306,6 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.14.5 - dev: true /@babel/compat-data/7.15.0: resolution: {integrity: sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==} @@ -127,10 +321,10 @@ packages: '@babel/helper-compilation-targets': 7.15.4_@babel+core@7.15.5 '@babel/helper-module-transforms': 7.15.4 '@babel/helpers': 7.15.4 - '@babel/parser': 7.15.5 + '@babel/parser': 7.15.6 '@babel/template': 7.15.4 '@babel/traverse': 7.15.4 - '@babel/types': 7.15.4 + '@babel/types': 7.15.6 convert-source-map: 1.8.0 debug: 4.3.2 gensync: 1.0.0-beta.2 @@ -159,7 +353,7 @@ packages: resolution: {integrity: sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.15.4 + '@babel/types': 7.15.6 jsesc: 2.5.2 source-map: 0.5.7 dev: true @@ -183,35 +377,35 @@ packages: dependencies: '@babel/helper-get-function-arity': 7.15.4 '@babel/template': 7.15.4 - '@babel/types': 7.15.4 + '@babel/types': 7.15.6 dev: true /@babel/helper-get-function-arity/7.15.4: resolution: {integrity: sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.15.4 + '@babel/types': 7.15.6 dev: true /@babel/helper-hoist-variables/7.15.4: resolution: {integrity: sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.15.4 + '@babel/types': 7.15.6 dev: true /@babel/helper-member-expression-to-functions/7.15.4: resolution: {integrity: sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.15.4 + '@babel/types': 7.15.6 dev: true /@babel/helper-module-imports/7.15.4: resolution: {integrity: sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.15.4 + '@babel/types': 7.15.6 dev: true /@babel/helper-module-transforms/7.15.4: @@ -225,7 +419,7 @@ packages: '@babel/helper-validator-identifier': 7.14.9 '@babel/template': 7.15.4 '@babel/traverse': 7.15.4 - '@babel/types': 7.15.4 + '@babel/types': 7.15.6 transitivePeerDependencies: - supports-color dev: true @@ -234,7 +428,7 @@ packages: resolution: {integrity: sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.15.4 + '@babel/types': 7.15.6 dev: true /@babel/helper-plugin-utils/7.14.5: @@ -249,7 +443,7 @@ packages: '@babel/helper-member-expression-to-functions': 7.15.4 '@babel/helper-optimise-call-expression': 7.15.4 '@babel/traverse': 7.15.4 - '@babel/types': 7.15.4 + '@babel/types': 7.15.6 transitivePeerDependencies: - supports-color dev: true @@ -258,20 +452,19 @@ packages: resolution: {integrity: sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.15.4 + '@babel/types': 7.15.6 dev: true /@babel/helper-split-export-declaration/7.15.4: resolution: {integrity: sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.15.4 + '@babel/types': 7.15.6 dev: true /@babel/helper-validator-identifier/7.14.9: resolution: {integrity: sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==} engines: {node: '>=6.9.0'} - dev: true /@babel/helper-validator-option/7.14.5: resolution: {integrity: sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==} @@ -284,7 +477,7 @@ packages: dependencies: '@babel/template': 7.15.4 '@babel/traverse': 7.15.4 - '@babel/types': 7.15.4 + '@babel/types': 7.15.6 transitivePeerDependencies: - supports-color dev: true @@ -296,13 +489,17 @@ packages: '@babel/helper-validator-identifier': 7.14.9 chalk: 2.4.2 js-tokens: 4.0.0 - dev: true - /@babel/parser/7.15.5: - resolution: {integrity: sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg==} + /@babel/parser/7.13.13: + resolution: {integrity: sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==} + engines: {node: '>=6.0.0'} + hasBin: true + dev: false + + /@babel/parser/7.15.6: + resolution: {integrity: sha512-S/TSCcsRuCkmpUuoWijua0Snt+f3ewU/8spLo+4AXJCZfT0bVCzLD5MuOKdrx0mlAptbKzn5AdgEIIKXxXkz9Q==} engines: {node: '>=6.0.0'} hasBin: true - dev: true /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.15.5: resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} @@ -423,13 +620,20 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true + /@babel/runtime/7.15.4: + resolution: {integrity: sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.13.9 + dev: true + /@babel/template/7.15.4: resolution: {integrity: sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.14.5 - '@babel/parser': 7.15.5 - '@babel/types': 7.15.4 + '@babel/parser': 7.15.6 + '@babel/types': 7.15.6 dev: true /@babel/traverse/7.15.4: @@ -441,21 +645,28 @@ packages: '@babel/helper-function-name': 7.15.4 '@babel/helper-hoist-variables': 7.15.4 '@babel/helper-split-export-declaration': 7.15.4 - '@babel/parser': 7.15.5 - '@babel/types': 7.15.4 + '@babel/parser': 7.15.6 + '@babel/types': 7.15.6 debug: 4.3.2 globals: 11.12.0 transitivePeerDependencies: - supports-color dev: true - /@babel/types/7.15.4: - resolution: {integrity: sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==} + /@babel/types/7.13.12: + resolution: {integrity: sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==} + dependencies: + '@babel/helper-validator-identifier': 7.14.9 + lodash: 4.17.21 + to-fast-properties: 2.0.0 + dev: false + + /@babel/types/7.15.6: + resolution: {integrity: sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-validator-identifier': 7.14.9 to-fast-properties: 2.0.0 - dev: true /@bcoe/v8-coverage/0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} @@ -481,7 +692,7 @@ packages: resolution: {integrity: sha512-zukJXqdr6jtMiVRy3tTHmwgKcUMGfqKDEskRigc5W3k2aYF4gBAtCEjMAJGZgSQE4DMcHeok0pEV2ANmTpb0cw==} engines: {node: '>=v12'} dependencies: - conventional-changelog-conventionalcommits: 4.6.0 + conventional-changelog-conventionalcommits: 4.6.1 dev: true /@commitlint/ensure/13.1.0: @@ -546,8 +757,8 @@ packages: engines: {node: '>=v12'} dependencies: '@commitlint/types': 13.1.0 - conventional-changelog-angular: 5.0.12 - conventional-commits-parser: 3.2.1 + conventional-changelog-angular: 5.0.13 + conventional-commits-parser: 3.2.2 dev: true /@commitlint/read/13.1.0: @@ -629,23 +840,23 @@ packages: - supports-color dev: true - /@heise/eslint-config/19.0.4_typescript@4.4.2: - resolution: {integrity: sha512-VDzAPrFEgTqq+zhQG9ACDcZCl26jNM/fj3Vk5UsPu1wfJdPjLHTKsT4Bf/vlq6Uid22VXqo0zRdTaqIsVOQMQQ==} + /@heise/eslint-config/19.0.6_typescript@4.4.3: + resolution: {integrity: sha512-s/cq7XoI4Z6g5W1E/BoHMYyyLaceHXGiIClLVX97pZlQSBYJ8Vhe3ZlCzyTuqIAtm0NQKw8XmigwmRHmSf4Q8w==} dependencies: - '@typescript-eslint/eslint-plugin': 4.30.0_8a8a2d3eaa9257455a03c16dce5f55b3 - '@typescript-eslint/parser': 4.30.0_eslint@7.32.0+typescript@4.4.2 + '@typescript-eslint/eslint-plugin': 4.31.0_d9c1bc16c4e2aea4e8e177a5961dd3bf + '@typescript-eslint/parser': 4.31.0_eslint@7.32.0+typescript@4.4.3 eslint: 7.32.0 eslint-config-prettier: 8.3.0_eslint@7.32.0 - eslint-plugin-jest: 24.4.0_111638ce2dee59955041613292a82f90 + eslint-plugin-jest: 24.4.0_bee27a84bf519dcd2ba1095ccc4bd980 eslint-plugin-node: 11.1.0_eslint@7.32.0 - eslint-plugin-prettier: 4.0.0_5a48a349ffec60f5257b5f148f5199c3 + eslint-plugin-prettier: 4.0.0_5559632aa3c77deec3ae5c2ea6ed0f36 eslint-plugin-promise: 5.1.0_eslint@7.32.0 eslint-plugin-react: 7.25.1_eslint@7.32.0 eslint-plugin-security: 1.4.0 eslint-plugin-sonarjs: 0.10.0_eslint@7.32.0 eslint-plugin-toplevel: 1.0.1_eslint@7.32.0 eslint-plugin-unicorn: 35.0.0_eslint@7.32.0 - prettier: 2.3.2 + prettier: 2.4.0 transitivePeerDependencies: - supports-color - typescript @@ -682,20 +893,20 @@ packages: engines: {node: '>=8'} dev: true - /@jest/console/27.1.0: - resolution: {integrity: sha512-+Vl+xmLwAXLNlqT61gmHEixeRbS4L8MUzAjtpBCOPWH+izNI/dR16IeXjkXJdRtIVWVSf9DO1gdp67B1XorZhQ==} + /@jest/console/27.1.1: + resolution: {integrity: sha512-VpQJRsWSeAem0zpBjeRtDbcD6DlbNoK11dNYt+PSQ+DDORh9q2/xyEpErfwgnLjWX0EKkSZmTGx/iH9Inzs6vQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/types': 27.1.0 - '@types/node': 14.17.14 + '@jest/types': 27.1.1 + '@types/node': 16.9.1 chalk: 4.1.2 - jest-message-util: 27.1.0 - jest-util: 27.1.0 + jest-message-util: 27.1.1 + jest-util: 27.1.1 slash: 3.0.0 dev: true - /@jest/core/27.1.0_ts-node@10.2.1: - resolution: {integrity: sha512-3l9qmoknrlCFKfGdrmiQiPne+pUR4ALhKwFTYyOeKw6egfDwJkO21RJ1xf41rN8ZNFLg5W+w6+P4fUqq4EMRWA==} + /@jest/core/27.1.1_ts-node@10.2.1: + resolution: {integrity: sha512-oCkKeTgI0emznKcLoq5OCD0PhxCijA4l7ejDnWW3d5bgSi+zfVaLybVqa+EQOxpNejQWtTna7tmsAXjMN9N43Q==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -703,30 +914,30 @@ packages: node-notifier: optional: true dependencies: - '@jest/console': 27.1.0 - '@jest/reporters': 27.1.0 - '@jest/test-result': 27.1.0 - '@jest/transform': 27.1.0 - '@jest/types': 27.1.0 - '@types/node': 14.17.14 + '@jest/console': 27.1.1 + '@jest/reporters': 27.1.1 + '@jest/test-result': 27.1.1 + '@jest/transform': 27.1.1 + '@jest/types': 27.1.1 + '@types/node': 14.17.15 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.8.1 exit: 0.1.2 graceful-fs: 4.2.8 - jest-changed-files: 27.1.0 - jest-config: 27.1.0_ts-node@10.2.1 - jest-haste-map: 27.1.0 - jest-message-util: 27.1.0 + jest-changed-files: 27.1.1 + jest-config: 27.1.1_ts-node@10.2.1 + jest-haste-map: 27.1.1 + jest-message-util: 27.1.1 jest-regex-util: 27.0.6 - jest-resolve: 27.1.0 - jest-resolve-dependencies: 27.1.0 - jest-runner: 27.1.0 - jest-runtime: 27.1.0 - jest-snapshot: 27.1.0 - jest-util: 27.1.0 - jest-validate: 27.1.0 - jest-watcher: 27.1.0 + jest-resolve: 27.1.1 + jest-resolve-dependencies: 27.1.1 + jest-runner: 27.1.1 + jest-runtime: 27.1.1 + jest-snapshot: 27.1.1 + jest-util: 27.1.1 + jest-validate: 27.1.1 + jest-watcher: 27.1.1 micromatch: 4.0.4 p-each-series: 2.2.0 rimraf: 3.0.2 @@ -740,39 +951,39 @@ packages: - utf-8-validate dev: true - /@jest/environment/27.1.0: - resolution: {integrity: sha512-wRp50aAMY2w1U2jP1G32d6FUVBNYqmk8WaGkiIEisU48qyDV0WPtw3IBLnl7orBeggveommAkuijY+RzVnNDOQ==} + /@jest/environment/27.1.1: + resolution: {integrity: sha512-+y882/ZdxhyqF5RzxIrNIANjHj991WH7jifdcplzMDosDUOyCACFYUyVTBGbSTocbU+s1cesroRzkwi8hZ9SHg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/fake-timers': 27.1.0 - '@jest/types': 27.1.0 - '@types/node': 14.17.14 - jest-mock: 27.1.0 + '@jest/fake-timers': 27.1.1 + '@jest/types': 27.1.1 + '@types/node': 16.9.1 + jest-mock: 27.1.1 dev: true - /@jest/fake-timers/27.1.0: - resolution: {integrity: sha512-22Zyn8il8DzpS+30jJNVbTlm7vAtnfy1aYvNeOEHloMlGy1PCYLHa4PWlSws0hvNsMM5bON6GISjkLoQUV3oMA==} + /@jest/fake-timers/27.1.1: + resolution: {integrity: sha512-u8TJ5VlsVYTsGFatoyIae2l25pku4Bu15QCPTx2Gs5z+R//Ee3tHN85462Vc9yGVcdDvgADbqNkhOLxbEwPjMQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/types': 27.1.0 + '@jest/types': 27.1.1 '@sinonjs/fake-timers': 7.1.2 - '@types/node': 14.17.14 - jest-message-util: 27.1.0 - jest-mock: 27.1.0 - jest-util: 27.1.0 + '@types/node': 16.9.1 + jest-message-util: 27.1.1 + jest-mock: 27.1.1 + jest-util: 27.1.1 dev: true - /@jest/globals/27.1.0: - resolution: {integrity: sha512-73vLV4aNHAlAgjk0/QcSIzzCZSqVIPbmFROJJv9D3QUR7BI4f517gVdJpSrCHxuRH3VZFhe0yGG/tmttlMll9g==} + /@jest/globals/27.1.1: + resolution: {integrity: sha512-Q3JcTPmY+DAEHnr4MpnBV3mwy50EGrTC6oSDTNnW7FNGGacTJAfpWNk02D7xv422T1OzK2A2BKx+26xJOvHkyw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/environment': 27.1.0 - '@jest/types': 27.1.0 - expect: 27.1.0 + '@jest/environment': 27.1.1 + '@jest/types': 27.1.1 + expect: 27.1.1 dev: true - /@jest/reporters/27.1.0: - resolution: {integrity: sha512-5T/zlPkN2HnK3Sboeg64L5eC8iiaZueLpttdktWTJsvALEtP2YMkC5BQxwjRWQACG9SwDmz+XjjkoxXUDMDgdw==} + /@jest/reporters/27.1.1: + resolution: {integrity: sha512-cEERs62n1P4Pqox9HWyNOEkP57G95aK2mBjB6D8Ruz1Yc98fKH53b58rlVEnsY5nLmkLNZk65fxNi9C0Yds/8w==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -781,10 +992,10 @@ packages: optional: true dependencies: '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 27.1.0 - '@jest/test-result': 27.1.0 - '@jest/transform': 27.1.0 - '@jest/types': 27.1.0 + '@jest/console': 27.1.1 + '@jest/test-result': 27.1.1 + '@jest/transform': 27.1.1 + '@jest/types': 27.1.1 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -795,10 +1006,10 @@ packages: istanbul-lib-report: 3.0.0 istanbul-lib-source-maps: 4.0.0 istanbul-reports: 3.0.2 - jest-haste-map: 27.1.0 - jest-resolve: 27.1.0 - jest-util: 27.1.0 - jest-worker: 27.1.0 + jest-haste-map: 27.1.1 + jest-resolve: 27.1.1 + jest-util: 27.1.1 + jest-worker: 27.1.1 slash: 3.0.0 source-map: 0.6.1 string-length: 4.0.2 @@ -817,42 +1028,42 @@ packages: source-map: 0.6.1 dev: true - /@jest/test-result/27.1.0: - resolution: {integrity: sha512-Aoz00gpDL528ODLghat3QSy6UBTD5EmmpjrhZZMK/v1Q2/rRRqTGnFxHuEkrD4z/Py96ZdOHxIWkkCKRpmnE1A==} + /@jest/test-result/27.1.1: + resolution: {integrity: sha512-8vy75A0Jtfz9DqXFUkjC5Co/wRla+D7qRFdShUY8SbPqBS3GBx3tpba7sGKFos8mQrdbe39n+c1zgVKtarfy6A==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/console': 27.1.0 - '@jest/types': 27.1.0 + '@jest/console': 27.1.1 + '@jest/types': 27.1.1 '@types/istanbul-lib-coverage': 2.0.3 collect-v8-coverage: 1.0.1 dev: true - /@jest/test-sequencer/27.1.0: - resolution: {integrity: sha512-lnCWawDr6Z1DAAK9l25o3AjmKGgcutq1iIbp+hC10s/HxnB8ZkUsYq1FzjOoxxZ5hW+1+AthBtvS4x9yno3V1A==} + /@jest/test-sequencer/27.1.1: + resolution: {integrity: sha512-l8zD3EdeixvwmLNlJoMX3hhj8iIze95okj4sqmBzOq/zW8gZLElUveH4bpKEMuR+Nweazjlwc7L6g4C26M/y6Q==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/test-result': 27.1.0 + '@jest/test-result': 27.1.1 graceful-fs: 4.2.8 - jest-haste-map: 27.1.0 - jest-runtime: 27.1.0 + jest-haste-map: 27.1.1 + jest-runtime: 27.1.1 transitivePeerDependencies: - supports-color dev: true - /@jest/transform/27.1.0: - resolution: {integrity: sha512-ZRGCA2ZEVJ00ubrhkTG87kyLbN6n55g1Ilq0X9nJb5bX3MhMp3O6M7KG+LvYu+nZRqG5cXsQnJEdZbdpTAV8pQ==} + /@jest/transform/27.1.1: + resolution: {integrity: sha512-qM19Eu75U6Jc5zosXXVnq900Nl9JDpoGaZ4Mg6wZs7oqbu3heYSMOZS19DlwjlhWdfNRjF4UeAgkrCJCK3fEXg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@babel/core': 7.15.5 - '@jest/types': 27.1.0 + '@jest/types': 27.1.1 babel-plugin-istanbul: 6.0.0 chalk: 4.1.2 convert-source-map: 1.8.0 fast-json-stable-stringify: 2.1.0 graceful-fs: 4.2.8 - jest-haste-map: 27.1.0 + jest-haste-map: 27.1.1 jest-regex-util: 27.0.6 - jest-util: 27.1.0 + jest-util: 27.1.1 micromatch: 4.0.4 pirates: 4.0.1 slash: 3.0.0 @@ -862,13 +1073,13 @@ packages: - supports-color dev: true - /@jest/types/27.1.0: - resolution: {integrity: sha512-pRP5cLIzN7I7Vp6mHKRSaZD7YpBTK7hawx5si8trMKqk4+WOdK8NEKOTO2G8PKWD1HbKMVckVB6/XHh/olhf2g==} + /@jest/types/27.1.1: + resolution: {integrity: sha512-yqJPDDseb0mXgKqmNqypCsb85C22K1aY5+LUxh7syIM9n/b0AsaltxNy+o6tt29VcfGDpYEve175bm3uOhcehA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@types/istanbul-lib-coverage': 2.0.3 '@types/istanbul-reports': 3.0.1 - '@types/node': 14.17.14 + '@types/node': 16.9.1 '@types/yargs': 16.0.4 chalk: 4.1.2 dev: true @@ -881,26 +1092,42 @@ packages: - supports-color dev: true + /@manypkg/find-root/1.1.0: + resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} + dependencies: + '@babel/runtime': 7.15.4 + '@types/node': 12.20.24 + find-up: 4.1.0 + fs-extra: 8.1.0 + dev: true + + /@manypkg/get-packages/1.1.1: + resolution: {integrity: sha512-J6VClfQSVgR6958eIDTGjfdCrELy1eT+SHeoSMomnvRQVktZMnEA5edIr5ovRFNw5y+Bk/jyoevPzGYod96mhw==} + dependencies: + '@babel/runtime': 7.15.4 + '@manypkg/find-root': 1.1.0 + fs-extra: 8.1.0 + globby: 11.0.2 + read-yaml-file: 1.1.0 + dev: true + /@nodelib/fs.scandir/2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 - dev: true /@nodelib/fs.stat/2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} - dev: true /@nodelib/fs.walk/1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.12.0 - dev: true + fastq: 1.13.0 /@octokit/auth-token/2.4.5: resolution: {integrity: sha512-BpGYsPgJt05M7/L/5FoE1PiAbdxXFZkX/3kDYcsvd1v6UhlnE5e96dTDr0ezX/EFwciQxf3cNV0loipsURU+WA==} @@ -936,8 +1163,8 @@ packages: universal-user-agent: 6.0.0 dev: true - /@octokit/openapi-types/10.1.0: - resolution: {integrity: sha512-Nq5TMBwijRXco+Bm/Rq1n5maxxXsHLwd/Cm3lyNeOxbjyzAOSD0qmr4TwKCD4TN4rHZ7lq/tARuqSv/WJHF7IA==} + /@octokit/openapi-types/10.1.1: + resolution: {integrity: sha512-ygp/6r25Ezb1CJuVMnFfOsScEtPF0zosdTJDZ7mZ+I8IULl7DP1BS5ZvPRwglcarGPXOvS5sHdR0bjnVDDfQdQ==} dev: true /@octokit/plugin-paginate-rest/2.16.0_@octokit+core@3.5.1: @@ -957,8 +1184,8 @@ packages: '@octokit/core': 3.5.1 dev: true - /@octokit/plugin-rest-endpoint-methods/5.10.0_@octokit+core@3.5.1: - resolution: {integrity: sha512-HiUZliq5wNg15cevJlTo9zDnPXAD0BMRhLxbRNPnq9J3HELKesDTOiou56ax2jC/rECUkK/uJTugrizYKSo/jg==} + /@octokit/plugin-rest-endpoint-methods/5.10.1_@octokit+core@3.5.1: + resolution: {integrity: sha512-Rf1iMl40I0dIxjh1g32qZ6Ym/uT8QWZMm2vYGG5Vi8SX1MwZvbuxEGXYgmzTUWSD3PYWSLilE2+4L8kmdLGTMg==} peerDependencies: '@octokit/core': '>=3' dependencies: @@ -982,7 +1209,7 @@ packages: '@octokit/request-error': 2.1.0 '@octokit/types': 6.27.0 is-plain-object: 5.0.0 - node-fetch: 2.6.1 + node-fetch: 2.6.2 universal-user-agent: 6.0.0 dev: true @@ -992,15 +1219,242 @@ packages: '@octokit/core': 3.5.1 '@octokit/plugin-paginate-rest': 2.16.0_@octokit+core@3.5.1 '@octokit/plugin-request-log': 1.0.4_@octokit+core@3.5.1 - '@octokit/plugin-rest-endpoint-methods': 5.10.0_@octokit+core@3.5.1 + '@octokit/plugin-rest-endpoint-methods': 5.10.1_@octokit+core@3.5.1 dev: true /@octokit/types/6.27.0: resolution: {integrity: sha512-ha27f8DToxXBPEJdzHCCuqpw7AgKfjhWGdNf3yIlBAhAsaexBXTfWw36zNSsncALXGvJq4EjLy1p3Wz45Aqb4A==} dependencies: - '@octokit/openapi-types': 10.1.0 + '@octokit/openapi-types': 10.1.1 + dev: true + + /@pnpm/cli-meta/2.0.0: + resolution: {integrity: sha512-quVITr3ypKbmU0aEO7BJZJ6zPZNTTVofUE/Mdpr5B/ZG3QYPl66wsIRPY9stq3LoA5BqzYwWNaP55XLAuHJw1w==} + engines: {node: '>=12.17'} + dependencies: + load-json-file: 6.2.0 + + /@pnpm/cli-utils/0.6.20_@pnpm+logger@4.0.0: + resolution: {integrity: sha512-uSeh57cajDeVwljwuvSjUWMeReuA85bIsha5QNXSqwIR3lxtTPrqXqj5U7kfJP8us6LxAjjGlJRDUXV4yimaCg==} + engines: {node: '>=12.17'} + peerDependencies: + '@pnpm/logger': ^4.0.0 + dependencies: + '@pnpm/cli-meta': 2.0.0 + '@pnpm/config': 12.4.9 + '@pnpm/default-reporter': 8.2.0_@pnpm+logger@4.0.0 + '@pnpm/error': 2.0.0 + '@pnpm/logger': 4.0.0 + '@pnpm/manifest-utils': 2.0.4_@pnpm+logger@4.0.0 + '@pnpm/package-is-installable': 5.0.4_@pnpm+logger@4.0.0 + '@pnpm/read-project-manifest': 2.0.5 + chalk: 4.1.2 + load-json-file: 6.2.0 + + /@pnpm/config/12.4.9: + resolution: {integrity: sha512-QsAOX33MyzYtvMvK5NHF30u1l2UUzlLfDemXCQT3rntgxOiIeW2KpVdIpGC6KfMVrsFXDe4CJt5w501UAiASIg==} + engines: {node: '>=12.17'} + dependencies: + '@pnpm/constants': 5.0.0 + '@pnpm/error': 2.0.0 + '@pnpm/global-bin-dir': 3.0.0 + '@pnpm/types': 7.4.0 + '@zkochan/npm-conf': 2.0.2 + camelcase: 6.2.0 + can-write-to-dir: 1.1.1 + is-subdir: 1.2.0 + ramda: 0.27.1 + realpath-missing: 1.1.0 + which: 2.0.2 + + /@pnpm/constants/5.0.0: + resolution: {integrity: sha512-VhUGKR5jvAtoBHgHAB3Kfc9g42ocVUws9iOafGAQ+xjR8uLokUCReXDpLXRRtrqw8N8yyh3gLNpCJs/AYadA1g==} + engines: {node: '>=12.17'} + + /@pnpm/core-loggers/6.0.4_@pnpm+logger@4.0.0: + resolution: {integrity: sha512-k4NmXt/r6O3gRuPFcyOWTWOMWGtilLHM7IoAq75HqW35Aie+hF4OJmyyzRyoVmKMTBzC4y+bQgLQp9jCIwktHg==} + engines: {node: '>=12.17'} + peerDependencies: + '@pnpm/logger': ^4.0.0 + dependencies: + '@pnpm/logger': 4.0.0 + '@pnpm/types': 7.4.0 + + /@pnpm/default-reporter/8.2.0_@pnpm+logger@4.0.0: + resolution: {integrity: sha512-kPU1SX0P1e4zMgls8dUHJVBlYNCyRPfyQ8kIZ9oEyHsMAABSxFZy1m7CtMky0WsDNQLtEaa49uQygpDIs3D9yg==} + engines: {node: '>=12.17'} + dependencies: + '@pnpm/config': 12.4.9 + '@pnpm/core-loggers': 6.0.4_@pnpm+logger@4.0.0 + '@pnpm/error': 2.0.0 + '@pnpm/types': 7.4.0 + ansi-diff: 1.1.1 + boxen: 5.0.1 + chalk: 4.1.2 + normalize-path: 3.0.0 + pretty-bytes: 5.6.0 + pretty-ms: 7.0.1 + ramda: 0.27.1 + right-pad: 1.0.1 + rxjs: 7.3.0 + semver: 7.3.5 + stacktracey: 1.2.127 + string-length: 4.0.2 + strip-ansi: 6.0.0 + transitivePeerDependencies: + - '@pnpm/logger' + + /@pnpm/error/2.0.0: + resolution: {integrity: sha512-mgj4h0LWGpDPZwsEH75VFQhr2Njut3PcaCQatERIoO3zmKGqCsLfla9cWYH9+zn0fcwnKhnJ+FBzoiY2LhnCtw==} + engines: {node: '>=12.17'} + + /@pnpm/find-workspace-dir/3.0.1: + resolution: {integrity: sha512-a0b9ASKKUI+/H0VgnA7v98LBpRoePuNyiq++vCSiFcMRRpi+w/cABsCokA+udfOmpjaSscpQILYlS4KkkUsOew==} + engines: {node: '>=12.17'} + dependencies: + '@pnpm/error': 2.0.0 + find-up: 5.0.0 dev: true + /@pnpm/find-workspace-packages/3.1.12_@pnpm+logger@4.0.0: + resolution: {integrity: sha512-qzbmRLITpWRbHlChP01kzLRz7/gH67weM7xR7VnjI9NCzbeBshSVYAjORjatoMbU8F0el58ukuu/Vu2O2EQ8Kw==} + engines: {node: '>=12.17'} + dependencies: + '@pnpm/cli-utils': 0.6.20_@pnpm+logger@4.0.0 + '@pnpm/constants': 5.0.0 + '@pnpm/types': 7.4.0 + find-packages: 8.0.5 + read-yaml-file: 2.1.0 + transitivePeerDependencies: + - '@pnpm/logger' + + /@pnpm/global-bin-dir/3.0.0: + resolution: {integrity: sha512-48Hw1JGftIO84o41Pm1+1kIulnFL0ca5VGPIQ+A1q1l3IVlxp2LnCX3424p+XIGG54US4pEQ7kMQaXhZBEBqbQ==} + engines: {node: '>=12.17'} + dependencies: + '@pnpm/error': 2.0.0 + can-write-to-dir: 1.1.1 + path-name: 1.0.0 + + /@pnpm/graceful-fs/1.0.0: + resolution: {integrity: sha512-bb+NcVgVBjm81skP73c0i4o2NUxiBt0d30KLXHJ05EejQ/qbxQMsi/gZxsi8MKbzCky2DzykQYkzm2tl3XajAQ==} + engines: {node: '>=12.17'} + dependencies: + graceful-fs: 4.2.8 + + /@pnpm/lockfile-file/4.1.1_@pnpm+logger@4.0.0: + resolution: {integrity: sha512-5vsuxMHsiBeTNQT8WbaNdKvgB9k/JD6qnnBvdN7h893eVZ1zETMyy94PzKgFZ07elHZarLB0m83ADPM7eEXlUg==} + engines: {node: '>=12.17'} + peerDependencies: + '@pnpm/logger': ^4.0.0 + dependencies: + '@pnpm/constants': 5.0.0 + '@pnpm/error': 2.0.0 + '@pnpm/lockfile-types': 3.0.0 + '@pnpm/logger': 4.0.0 + '@pnpm/merge-lockfile-changes': 2.0.1 + '@pnpm/types': 7.4.0 + '@zkochan/rimraf': 2.1.1 + comver-to-semver: 1.0.0 + js-yaml: /@zkochan/js-yaml/0.0.5 + normalize-path: 3.0.0 + ramda: 0.27.1 + semver: 7.3.5 + sort-keys: 4.2.0 + strip-bom: 4.0.0 + write-file-atomic: 3.0.3 + dev: false + + /@pnpm/lockfile-types/3.0.0: + resolution: {integrity: sha512-8rIpyw3Wfp0zCAbvm5xmp+HDWlKkmGj6/BmxnqEO9pO8EtMOko86pH6nGY/FLj8B/4lHJAOxbHBTBoinI5PW9g==} + engines: {node: '>=12.17'} + dev: false + + /@pnpm/logger/4.0.0: + resolution: {integrity: sha512-SIShw+k556e7S7tLZFVSIHjCdiVog1qWzcKW2RbLEHPItdisAFVNIe34kYd9fMSswTlSRLS/qRjw3ZblzWmJ9Q==} + engines: {node: '>=12.17'} + dependencies: + bole: 4.0.0 + ndjson: 2.0.0 + + /@pnpm/manifest-utils/2.0.4_@pnpm+logger@4.0.0: + resolution: {integrity: sha512-nhK+JF2vuTMTb8uX5v/cnEnjmh9r3SNOzceq9sDNa3t21v7sJLBtXn2XFIC2chYWksbyF1xmThtQ1ik/R/KTzw==} + engines: {node: '>=12.17'} + dependencies: + '@pnpm/core-loggers': 6.0.4_@pnpm+logger@4.0.0 + '@pnpm/error': 2.0.0 + '@pnpm/types': 7.4.0 + transitivePeerDependencies: + - '@pnpm/logger' + + /@pnpm/merge-lockfile-changes/2.0.1: + resolution: {integrity: sha512-oy/WkLCkbGnK5qkytAdi0asnNKFX+RdKz2TsiTfRx2gSyeeaAYVbW938rZ2IzPB+Tc0JQeVASHHiDlV251PMPA==} + engines: {node: '>=12.17'} + dependencies: + '@pnpm/lockfile-types': 3.0.0 + comver-to-semver: 1.0.0 + ramda: 0.27.1 + semver: 7.3.5 + dev: false + + /@pnpm/meta-updater/0.0.6: + resolution: {integrity: sha512-b5jlKMHow2tKouspQujk01EMXYeyddLbuTZHao5riVq6gNJ/flXCsEd88m53JbUaiYXsnzrZ7EJQwpTZSrjuvQ==} + engines: {node: '>=10.12'} + hasBin: true + dependencies: + '@pnpm/find-workspace-dir': 3.0.1 + '@pnpm/find-workspace-packages': 3.1.12_@pnpm+logger@4.0.0 + '@pnpm/logger': 4.0.0 + '@pnpm/types': 7.4.0 + load-json-file: 6.2.0 + meow: 10.1.1 + print-diff: 1.0.0 + ramda: 0.27.1 + write-json-file: 4.3.0 + dev: true + + /@pnpm/package-is-installable/5.0.4_@pnpm+logger@4.0.0: + resolution: {integrity: sha512-5GuFGBmYwlMImuoHfN2zOZhbnhDPFGnrlervLry8QnytbYYEM3Tysn9jBax/rWT7zwD7Ew7Wy5frgIB6U8K8oQ==} + engines: {node: '>=12.17'} + peerDependencies: + '@pnpm/logger': ^4.0.0 + dependencies: + '@pnpm/core-loggers': 6.0.4_@pnpm+logger@4.0.0 + '@pnpm/error': 2.0.0 + '@pnpm/logger': 4.0.0 + '@pnpm/types': 7.4.0 + semver: 7.3.5 + + /@pnpm/read-project-manifest/2.0.5: + resolution: {integrity: sha512-IxbqVf4EjocPVaZaCSmxRTsrXIWRgWgOutxkGE8RbZvEdeh0UrqwGJ9chMBxnJrVC+siEXyqTYMEatdiwvFFag==} + engines: {node: '>=12.17'} + dependencies: + '@pnpm/error': 2.0.0 + '@pnpm/graceful-fs': 1.0.0 + '@pnpm/types': 7.4.0 + '@pnpm/write-project-manifest': 2.0.4 + detect-indent: 6.1.0 + fast-deep-equal: 3.1.3 + is-windows: 1.0.2 + json5: 2.2.0 + parse-json: 5.2.0 + read-yaml-file: 2.1.0 + sort-keys: 4.2.0 + strip-bom: 4.0.0 + + /@pnpm/types/7.4.0: + resolution: {integrity: sha512-fZRYcBw7+d5wSWh0tD7ZSY9C5IRTD78xNEvoGVZOn/D5ziuJ+tGrArGf8vMXPCPxZ7Mp8rV8rLhX5xbXE+86Hw==} + engines: {node: '>=12.17'} + + /@pnpm/write-project-manifest/2.0.4: + resolution: {integrity: sha512-0bIN475Xa5JJuENnM0UU/+KjGbFR6JWBGjecSpkur1vxEoYtMrsH3xl9rkUIyq3oGE0Wqu242D9y8eBJu+LnTA==} + engines: {node: '>=12.17'} + dependencies: + '@pnpm/types': 7.4.0 + json5: 2.2.0 + write-file-atomic: 3.0.3 + write-yaml-file: 4.2.0 + /@semantic-release/changelog/5.0.1_semantic-release@17.4.7: resolution: {integrity: sha512-unvqHo5jk4dvAf2nZ3aw4imrlwQ2I50eVVvq9D47Qc3R+keNqepx1vDYwkjF8guFXnOYaYcR28yrZWno1hFbiw==} engines: {node: '>=10.18'} @@ -1020,9 +1474,9 @@ packages: peerDependencies: semantic-release: '>=16.0.0 <18.0.0' dependencies: - conventional-changelog-angular: 5.0.12 + conventional-changelog-angular: 5.0.13 conventional-commits-filter: 2.0.7 - conventional-commits-parser: 3.2.1 + conventional-commits-parser: 3.2.2 debug: 4.3.2 import-from: 3.0.0 lodash: 4.17.21 @@ -1095,7 +1549,7 @@ packages: lodash: 4.17.21 nerf-dart: 1.0.0 normalize-url: 6.1.0 - npm: 7.22.0 + npm: 7.23.0 rc: 1.2.8 read-pkg: 5.2.0 registry-auth-token: 4.2.1 @@ -1110,10 +1564,10 @@ packages: peerDependencies: semantic-release: '>=15.8.0 <18.0.0' dependencies: - conventional-changelog-angular: 5.0.12 + conventional-changelog-angular: 5.0.13 conventional-changelog-writer: 4.1.0 conventional-commits-filter: 2.0.7 - conventional-commits-parser: 3.2.1 + conventional-commits-parser: 3.2.2 debug: 4.3.2 get-stream: 6.0.1 import-from: 3.0.0 @@ -1130,11 +1584,6 @@ packages: engines: {node: '>=6'} dev: true - /@sindresorhus/is/4.0.1: - resolution: {integrity: sha512-Qm9hBEBu18wt1PO2flE7LPb30BHMQt1eQgbV76YntdNk73XZGpn3izvGTYxbGgzXKgbCjiia0uxTd3aTNQrY/g==} - engines: {node: '>=10'} - dev: true - /@sinonjs/commons/1.8.3: resolution: {integrity: sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==} dependencies: @@ -1154,13 +1603,6 @@ packages: defer-to-connect: 1.1.3 dev: true - /@szmarczak/http-timer/4.0.6: - resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} - engines: {node: '>=10'} - dependencies: - defer-to-connect: 2.0.1 - dev: true - /@tootallnate/once/1.1.2: resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} engines: {node: '>= 6'} @@ -1182,11 +1624,11 @@ packages: resolution: {integrity: sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==} dev: true - /@types/babel__core/7.1.15: - resolution: {integrity: sha512-bxlMKPDbY8x5h6HBwVzEOk2C8fb6SLfYQ5Jw3uBYuYF1lfWk/kbLd81la82vrIkBb0l+JdmrZaDikPrNxpS/Ew==} + /@types/babel__core/7.1.16: + resolution: {integrity: sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ==} dependencies: - '@babel/parser': 7.15.5 - '@babel/types': 7.15.4 + '@babel/parser': 7.15.6 + '@babel/types': 7.15.6 '@types/babel__generator': 7.6.3 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.14.2 @@ -1195,46 +1637,37 @@ packages: /@types/babel__generator/7.6.3: resolution: {integrity: sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==} dependencies: - '@babel/types': 7.15.4 + '@babel/types': 7.15.6 dev: true /@types/babel__template/7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: - '@babel/parser': 7.15.5 - '@babel/types': 7.15.4 + '@babel/parser': 7.15.6 + '@babel/types': 7.15.6 dev: true /@types/babel__traverse/7.14.2: resolution: {integrity: sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==} dependencies: - '@babel/types': 7.15.4 + '@babel/types': 7.15.6 dev: true /@types/body-parser/1.19.1: resolution: {integrity: sha512-a6bTJ21vFOGIkwM0kzh9Yr89ziVxq4vYH2fQ6N8AeipEzai/cFK6aGMArIkUeIdRIgpwQa+2bXiLuUJCpSf2Cg==} dependencies: '@types/connect': 3.4.35 - '@types/node': 14.17.14 + '@types/node': 14.17.15 dev: true /@types/cache-manager/3.4.2: resolution: {integrity: sha512-1IwA74t5ID4KWo0Kndal16MhiPSZgMe1fGc+MLT6j5r+Ab7jku36PFTl4PP6MiWw0BJscM9QpZEo00qixNQoRg==} dev: true - /@types/cacheable-request/6.0.2: - resolution: {integrity: sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==} - dependencies: - '@types/http-cache-semantics': 4.0.1 - '@types/keyv': 3.1.2 - '@types/node': 14.17.14 - '@types/responselike': 1.0.0 - dev: true - /@types/connect/3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 14.17.14 + '@types/node': 14.17.15 dev: true /@types/cookiejar/2.1.2: @@ -1254,13 +1687,13 @@ packages: /@types/etag/1.8.1: resolution: {integrity: sha512-bsKkeSqN7HYyYntFRAmzcwx/dKW4Wa+KVMTInANlI72PWLQmOpZu96j0OqHZGArW4VQwCmJPteQlXaUDeOB0WQ==} dependencies: - '@types/node': 14.17.14 + '@types/node': 14.17.15 dev: true /@types/express-serve-static-core/4.17.24: resolution: {integrity: sha512-3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA==} dependencies: - '@types/node': 14.17.14 + '@types/node': 14.17.15 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 dev: true @@ -1274,22 +1707,10 @@ packages: '@types/serve-static': 1.13.10 dev: true - /@types/got/9.6.12: - resolution: {integrity: sha512-X4pj/HGHbXVLqTpKjA2ahI4rV/nNBc9mGO2I/0CgAra+F2dKgMXnENv2SRpemScBzBAI4vMelIVYViQxlSE6xA==} - dependencies: - '@types/node': 14.17.14 - '@types/tough-cookie': 4.0.1 - form-data: 2.5.1 - dev: true - /@types/graceful-fs/4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: - '@types/node': 14.17.14 - dev: true - - /@types/http-cache-semantics/4.0.1: - resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==} + '@types/node': 16.9.1 dev: true /@types/istanbul-lib-coverage/2.0.3: @@ -1311,18 +1732,18 @@ packages: /@types/jest/27.0.1: resolution: {integrity: sha512-HTLpVXHrY69556ozYkcq47TtQJXpcWAWfkoqz+ZGz2JnmZhzlRjprCIyFnetSy8gpDWwTTGBcRVv1J1I1vBrHw==} dependencies: - jest-diff: 27.1.0 - pretty-format: 27.1.0 + jest-diff: 27.1.1 + pretty-format: 27.1.1 dev: true /@types/json-schema/7.0.9: resolution: {integrity: sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==} dev: true - /@types/keyv/3.1.2: - resolution: {integrity: sha512-/FvAK2p4jQOaJ6CGDHJTqZcUtbZe820qIeTg7o0Shg7drB4JHeL+V/dhSaly7NXx6u8eSee+r7coT+yuJEvDLg==} + /@types/keyv/3.1.3: + resolution: {integrity: sha512-FXCJgyyN3ivVgRoml4h94G/p3kY+u/B86La+QptcqJaWtBWtmc6TtkNfS40n9bIvyLteHh7zXOtgbobORKPbDg==} dependencies: - '@types/node': 14.17.14 + '@types/node': 14.17.15 dev: true /@types/mime/1.3.2: @@ -1337,14 +1758,26 @@ packages: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} dev: true - /@types/node/14.17.14: - resolution: {integrity: sha512-rsAj2u8Xkqfc332iXV12SqIsjVi07H479bOP4q94NAcjzmAvapumEhuVIt53koEf7JFrpjgNKjBga5Pnn/GL8A==} + /@types/node/12.20.24: + resolution: {integrity: sha512-yxDeaQIAJlMav7fH5AQqPH1u8YIuhYJXYBzxaQ4PifsU0GDO38MSdmEDeRlIxrKbC6NbEaaEHDanWb+y30U8SQ==} + dev: true + + /@types/node/14.17.15: + resolution: {integrity: sha512-D1sdW0EcSCmNdLKBGMYb38YsHUS6JcM7yQ6sLQ9KuZ35ck7LYCKE7kYFHOO59ayFOY3zobWVZxf4KXhYHcHYFA==} + dev: true + + /@types/node/16.9.1: + resolution: {integrity: sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==} dev: true /@types/normalize-package-data/2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true + /@types/normalize-path/3.0.0: + resolution: {integrity: sha512-Nd8y/5t/7CRakPYiyPzr/IAfYusy1FkcZYFEAcoMZkwpJv2n4Wm+olW+e7xBdHEXhOnWdG9ddbar0gqZWS4x5Q==} + dev: false + /@types/parse-json/4.0.0: resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} dev: true @@ -1361,12 +1794,6 @@ packages: resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} dev: true - /@types/responselike/1.0.0: - resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} - dependencies: - '@types/node': 14.17.14 - dev: true - /@types/retry/0.12.1: resolution: {integrity: sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==} dev: true @@ -1375,13 +1802,13 @@ packages: resolution: {integrity: sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==} dependencies: '@types/mime': 1.3.2 - '@types/node': 14.17.14 + '@types/node': 14.17.15 dev: true /@types/sharp/0.28.6: resolution: {integrity: sha512-AjKjo5vk5mkcTrWL0U1zFUdCp/uqLebvbe7ezAJx0tgp6ST9JmfsYK1q1lpjfPM5S1YQ1wr5uboPSu2S8UO9yw==} dependencies: - '@types/node': 14.17.14 + '@types/node': 14.17.15 dev: true /@types/stack-utils/2.0.1: @@ -1392,7 +1819,7 @@ packages: resolution: {integrity: sha512-1GQvD6sySQPD6p9EopDFI3f5OogdICl1sU/2ij3Esobz/RtL9fWZZDPmsuv7eiy5ya+XNiPAxUcI3HIUTJa+3A==} dependencies: '@types/cookiejar': 2.1.2 - '@types/node': 14.17.14 + '@types/node': 14.17.15 dev: true /@types/supertest/2.0.11: @@ -1401,10 +1828,6 @@ packages: '@types/superagent': 4.1.12 dev: true - /@types/tough-cookie/4.0.1: - resolution: {integrity: sha512-Y0K95ThC3esLEYD6ZuqNek29lNX2EM1qxV8y2FTLUB0ff5wWrk7az+mLrnNFUnaXcgKye22+sFBRXOgpPILZNg==} - dev: true - /@types/validator/13.6.3: resolution: {integrity: sha512-fWG42pMJOL4jKsDDZZREnXLjc3UE0R8LOJfARWYg6U966rxDT7TYejYzLnUF5cvSObGg34nd0+H2wHHU5Omdfw==} dev: false @@ -1419,8 +1842,8 @@ packages: '@types/yargs-parser': 20.2.1 dev: true - /@typescript-eslint/eslint-plugin/4.30.0_8a8a2d3eaa9257455a03c16dce5f55b3: - resolution: {integrity: sha512-NgAnqk55RQ/SD+tZFD9aPwNSeHmDHHe5rtUyhIq0ZeCWZEvo4DK9rYz7v9HDuQZFvn320Ot+AikaCKMFKLlD0g==} + /@typescript-eslint/eslint-plugin/4.31.0_d9c1bc16c4e2aea4e8e177a5961dd3bf: + resolution: {integrity: sha512-iPKZTZNavAlOhfF4gymiSuUkgLne/nh5Oz2/mdiUmuZVD42m9PapnCnzjxuDsnpnbH3wT5s2D8bw6S39TC6GNw==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: '@typescript-eslint/parser': ^4.0.0 @@ -1430,30 +1853,30 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/experimental-utils': 4.30.0_eslint@7.32.0+typescript@4.4.2 - '@typescript-eslint/parser': 4.30.0_eslint@7.32.0+typescript@4.4.2 - '@typescript-eslint/scope-manager': 4.30.0 + '@typescript-eslint/experimental-utils': 4.31.0_eslint@7.32.0+typescript@4.4.3 + '@typescript-eslint/parser': 4.31.0_eslint@7.32.0+typescript@4.4.3 + '@typescript-eslint/scope-manager': 4.31.0 debug: 4.3.2 eslint: 7.32.0 functional-red-black-tree: 1.0.1 regexpp: 3.2.0 semver: 7.3.5 - tsutils: 3.21.0_typescript@4.4.2 - typescript: 4.4.2 + tsutils: 3.21.0_typescript@4.4.3 + typescript: 4.4.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils/4.30.0_eslint@7.32.0+typescript@4.4.2: - resolution: {integrity: sha512-K8RNIX9GnBsv5v4TjtwkKtqMSzYpjqAQg/oSphtxf3xxdt6T0owqnpojztjjTcatSteH3hLj3t/kklKx87NPqw==} + /@typescript-eslint/experimental-utils/4.31.0_eslint@7.32.0+typescript@4.4.3: + resolution: {integrity: sha512-Hld+EQiKLMppgKKkdUsLeVIeEOrwKc2G983NmznY/r5/ZtZCDvIOXnXtwqJIgYz/ymsy7n7RGvMyrzf1WaSQrw==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: eslint: '*' dependencies: '@types/json-schema': 7.0.9 - '@typescript-eslint/scope-manager': 4.30.0 - '@typescript-eslint/types': 4.30.0 - '@typescript-eslint/typescript-estree': 4.30.0_typescript@4.4.2 + '@typescript-eslint/scope-manager': 4.31.0 + '@typescript-eslint/types': 4.31.0 + '@typescript-eslint/typescript-estree': 4.31.0_typescript@4.4.3 eslint: 7.32.0 eslint-scope: 5.1.1 eslint-utils: 3.0.0_eslint@7.32.0 @@ -1462,8 +1885,8 @@ packages: - typescript dev: true - /@typescript-eslint/parser/4.30.0_eslint@7.32.0+typescript@4.4.2: - resolution: {integrity: sha512-HJ0XuluSZSxeboLU7Q2VQ6eLlCwXPBOGnA7CqgBnz2Db3JRQYyBDJgQnop6TZ+rsbSx5gEdWhw4rE4mDa1FnZg==} + /@typescript-eslint/parser/4.31.0_eslint@7.32.0+typescript@4.4.3: + resolution: {integrity: sha512-oWbzvPh5amMuTmKaf1wp0ySxPt2ZXHnFQBN2Szu1O//7LmOvgaKTCIDNLK2NvzpmVd5A2M/1j/rujBqO37hj3w==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 @@ -1472,31 +1895,31 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 4.30.0 - '@typescript-eslint/types': 4.30.0 - '@typescript-eslint/typescript-estree': 4.30.0_typescript@4.4.2 + '@typescript-eslint/scope-manager': 4.31.0 + '@typescript-eslint/types': 4.31.0 + '@typescript-eslint/typescript-estree': 4.31.0_typescript@4.4.3 debug: 4.3.2 eslint: 7.32.0 - typescript: 4.4.2 + typescript: 4.4.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager/4.30.0: - resolution: {integrity: sha512-VJ/jAXovxNh7rIXCQbYhkyV2Y3Ac/0cVHP/FruTJSAUUm4Oacmn/nkN5zfWmWFEanN4ggP0vJSHOeajtHq3f8A==} + /@typescript-eslint/scope-manager/4.31.0: + resolution: {integrity: sha512-LJ+xtl34W76JMRLjbaQorhR0hfRAlp3Lscdiz9NeI/8i+q0hdBZ7BsiYieLoYWqy+AnRigaD3hUwPFugSzdocg==} engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} dependencies: - '@typescript-eslint/types': 4.30.0 - '@typescript-eslint/visitor-keys': 4.30.0 + '@typescript-eslint/types': 4.31.0 + '@typescript-eslint/visitor-keys': 4.31.0 dev: true - /@typescript-eslint/types/4.30.0: - resolution: {integrity: sha512-YKldqbNU9K4WpTNwBqtAerQKLLW/X2A/j4yw92e3ZJYLx+BpKLeheyzoPfzIXHfM8BXfoleTdiYwpsvVPvHrDw==} + /@typescript-eslint/types/4.31.0: + resolution: {integrity: sha512-9XR5q9mk7DCXgXLS7REIVs+BaAswfdHhx91XqlJklmqWpTALGjygWVIb/UnLh4NWhfwhR5wNe1yTyCInxVhLqQ==} engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} dev: true - /@typescript-eslint/typescript-estree/4.30.0_typescript@4.4.2: - resolution: {integrity: sha512-6WN7UFYvykr/U0Qgy4kz48iGPWILvYL34xXJxvDQeiRE018B7POspNRVtAZscWntEPZpFCx4hcz/XBT+erenfg==} + /@typescript-eslint/typescript-estree/4.31.0_typescript@4.4.3: + resolution: {integrity: sha512-QHl2014t3ptg+xpmOSSPn5hm4mY8D4s97ftzyk9BZ8RxYQ3j73XcwuijnJ9cMa6DO4aLXeo8XS3z1omT9LA/Eg==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: typescript: '*' @@ -1504,26 +1927,44 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 4.30.0 - '@typescript-eslint/visitor-keys': 4.30.0 + '@typescript-eslint/types': 4.31.0 + '@typescript-eslint/visitor-keys': 4.31.0 debug: 4.3.2 globby: 11.0.4 is-glob: 4.0.1 semver: 7.3.5 - tsutils: 3.21.0_typescript@4.4.2 - typescript: 4.4.2 + tsutils: 3.21.0_typescript@4.4.3 + typescript: 4.4.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/visitor-keys/4.30.0: - resolution: {integrity: sha512-pNaaxDt/Ol/+JZwzP7MqWc8PJQTUhZwoee/PVlQ+iYoYhagccvoHnC9e4l+C/krQYYkENxznhVSDwClIbZVxRw==} + /@typescript-eslint/visitor-keys/4.31.0: + resolution: {integrity: sha512-HUcRp2a9I+P21+O21yu3ezv3GEPGjyGiXoEUQwZXjR8UxRApGeLyWH4ZIIUSalE28aG4YsV6GjtaAVB3QKOu0w==} engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} dependencies: - '@typescript-eslint/types': 4.30.0 + '@typescript-eslint/types': 4.31.0 eslint-visitor-keys: 2.1.0 dev: true + /@zkochan/js-yaml/0.0.5: + resolution: {integrity: sha512-/uaB1kf+t+UATNUSyzHSzy4JqKOh2Y77gdCnhQEKTX/vrpQp8qjvohvC6eG9X4spQf0a8TKL0qF5LiFNj+GrJw==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: false + + /@zkochan/npm-conf/2.0.2: + resolution: {integrity: sha512-nF6cxXu/3x0gbIGZdiajpL6diySPoU5T5Mh0TXSjHp2shZoqtZgRj3zdIc/pkd6kKAWaktFvOFFo5kTqwne/tg==} + engines: {node: '>=10'} + dependencies: + config-chain: 1.1.13 + + /@zkochan/rimraf/2.1.1: + resolution: {integrity: sha512-TgiZpFi4XSvS8wY2/JzoJQYqgpOeBfVMPLC93cRXjbqYSXr1PGyQagS1Wyztuq1uMA1Cqd+EYLa5HESrJwH0Kw==} + engines: {node: '>=12.10'} + dev: false + /JSONStream/1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true @@ -1546,7 +1987,6 @@ packages: dependencies: mime-types: 2.1.32 negotiator: 0.6.2 - dev: true /acorn-globals/6.0.0: resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} @@ -1568,8 +2008,8 @@ packages: engines: {node: '>=0.4.0'} dev: true - /acorn-walk/8.1.1: - resolution: {integrity: sha512-FbJdceMlPHEAWJOILDk1fXD8lnTlEIWFkqtfk+MvmL5q/qlHfN7GEHcsFZWt/Tea9jRNPWUZG4G976nqAAmU9w==} + /acorn-walk/8.2.0: + resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} dev: true @@ -1577,10 +2017,9 @@ packages: resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} engines: {node: '>=0.4.0'} hasBin: true - dev: true - /acorn/8.4.1: - resolution: {integrity: sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA==} + /acorn/8.5.0: + resolution: {integrity: sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==} engines: {node: '>=0.4.0'} hasBin: true dev: true @@ -1592,7 +2031,6 @@ packages: debug: 4.3.2 transitivePeerDependencies: - supports-color - dev: true /aggregate-error/3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} @@ -1624,13 +2062,17 @@ packages: resolution: {integrity: sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==} dependencies: string-width: 3.1.0 - dev: true /ansi-colors/4.1.1: resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} engines: {node: '>=6'} dev: true + /ansi-diff/1.1.1: + resolution: {integrity: sha512-XnTdFDQzbEewrDx8epWXdw7oqHMvv315vEtfqDiEhhWghIf4++h26c3/FMz7iTLhNrnj56DNIXpbxHZq+3s6qw==} + dependencies: + ansi-split: 1.0.1 + /ansi-escapes/4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} @@ -1643,29 +2085,34 @@ packages: engines: {node: '>=0.10.0'} dev: false + /ansi-regex/3.0.0: + resolution: {integrity: sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=} + engines: {node: '>=4'} + /ansi-regex/4.1.0: resolution: {integrity: sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==} engines: {node: '>=6'} - dev: true /ansi-regex/5.0.0: resolution: {integrity: sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==} engines: {node: '>=8'} - dev: true + + /ansi-split/1.0.1: + resolution: {integrity: sha512-RRxQym4DFtDNmHIkW6aeFVvrXURb11lGAEPXNiryjCe8bK8RsANjzJ0M2aGOkvBYwP4Bl/xZ8ijtr6D3j1x/eg==} + dependencies: + ansi-regex: 3.0.0 /ansi-styles/3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} dependencies: color-convert: 1.9.3 - dev: true /ansi-styles/4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} dependencies: color-convert: 2.0.1 - dev: true /ansi-styles/5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} @@ -1705,13 +2152,15 @@ packages: sprintf-js: 1.0.3 dev: true + /argparse/2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + /argv-formatter/1.0.0: resolution: {integrity: sha1-oMoMvCmltz6Dbuvhy/bF4OTrgvk=} dev: true /array-flatten/1.1.1: resolution: {integrity: sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=} - dev: true /array-ify/1.0.0: resolution: {integrity: sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=} @@ -1723,7 +2172,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.3 - es-abstract: 1.18.5 + es-abstract: 1.18.6 get-intrinsic: 1.1.1 is-string: 1.0.7 dev: true @@ -1731,7 +2180,6 @@ packages: /array-union/2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - dev: true /array.prototype.flatmap/1.2.4: resolution: {integrity: sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q==} @@ -1739,7 +2187,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.3 - es-abstract: 1.18.5 + es-abstract: 1.18.6 function-bind: 1.1.1 dev: true @@ -1748,13 +2196,18 @@ packages: engines: {node: '>=0.10.0'} dev: true + /as-table/1.0.55: + resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==} + dependencies: + printable-characters: 1.0.42 + /asap/2.0.6: resolution: {integrity: sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=} - dev: true + dev: false /assert-never/1.2.1: resolution: {integrity: sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==} - dev: true + dev: false /astral-regex/2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} @@ -1768,10 +2221,9 @@ packages: /at-least-node/1.0.0: resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} engines: {node: '>= 4.0.0'} - dev: true - /aws-sdk/2.983.0: - resolution: {integrity: sha512-i4QMJt5hEYzhoDzmbo0v+aAuHQPXM6ah15GBKObbxwYxmzK9wjMG+FH3DiWZZHdFsf3C+p1zDg4rIr63jmOeBw==} + /aws-sdk/2.987.0: + resolution: {integrity: sha512-XgMrHWHE3aKg11D4QSlpyLvsGw6mHHiUQuowbswd11k89Q6wEfA+jMbYMC7/jsx3LrH9EKti70qhfZyw/wQIfg==} engines: {node: '>= 0.8.0'} requiresBuild: true dependencies: @@ -1784,18 +2236,34 @@ packages: url: 0.10.3 uuid: 3.3.2 xml2js: 0.4.19 + dev: false + + /axios/0.21.4: + resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} + dependencies: + follow-redirects: 1.14.3 + transitivePeerDependencies: + - debug + dev: false + + /axios/0.21.4_debug@4.3.2: + resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} + dependencies: + follow-redirects: 1.14.3_debug@4.3.2 + transitivePeerDependencies: + - debug dev: true - /babel-jest/27.1.0_@babel+core@7.15.5: - resolution: {integrity: sha512-6NrdqzaYemALGCuR97QkC/FkFIEBWP5pw5TMJoUHZTVXyOgocujp6A0JE2V6gE0HtqAAv6VKU/nI+OCR1Z4gHA==} + /babel-jest/27.1.1_@babel+core@7.15.5: + resolution: {integrity: sha512-JA+dzJl4n2RBvWQEnph6HJaTHrsIPiXGQYatt/D8nR4UpX9UG4GaDzykVVPQBbrdTebZREkRb6SOxyIXJRab6Q==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: '@babel/core': 7.15.5 - '@jest/transform': 27.1.0 - '@jest/types': 27.1.0 - '@types/babel__core': 7.1.15 + '@jest/transform': 27.1.1 + '@jest/types': 27.1.1 + '@types/babel__core': 7.1.16 babel-plugin-istanbul: 6.0.0 babel-preset-jest: 27.0.6_@babel+core@7.15.5 chalk: 4.1.2 @@ -1823,8 +2291,8 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@babel/template': 7.15.4 - '@babel/types': 7.15.4 - '@types/babel__core': 7.1.15 + '@babel/types': 7.15.6 + '@types/babel__core': 7.1.16 '@types/babel__traverse': 7.14.2 dev: true @@ -1863,8 +2331,8 @@ packages: resolution: {integrity: sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==} engines: {node: '>= 10.0.0'} dependencies: - '@babel/types': 7.15.4 - dev: true + '@babel/types': 7.15.6 + dev: false /balanced-match/1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -1872,11 +2340,18 @@ packages: /base64-js/1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + dev: false /before-after-hook/2.2.2: resolution: {integrity: sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==} dev: true + /better-path-resolve/1.0.0: + resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} + engines: {node: '>=4'} + dependencies: + is-windows: 1.0.2 + /binary-extensions/2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} @@ -1890,6 +2365,11 @@ packages: readable-stream: 3.6.0 dev: false + /blork/9.3.0: + resolution: {integrity: sha512-9naBrHS2bwCQeGqGR9ptcoll6utsox9jtk1E0SwOAFa4RCV/IQHoBJARdi8AhHQTPPoWkjixMrzHvQKAV5Fx2A==} + engines: {node: '>=10.0.0'} + dev: true + /body-parser/1.19.0: resolution: {integrity: sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==} engines: {node: '>= 0.8'} @@ -1904,7 +2384,12 @@ packages: qs: 6.7.0 raw-body: 2.4.0 type-is: 1.6.18 - dev: true + + /bole/4.0.0: + resolution: {integrity: sha512-Bk/2qoyOSlwU1dnDFk/oPM2FCNKAlYlBHfpAgwGX+K9HUtxSvmIAQCmMWMOvE6BlHHRCwsH1MxJe/r1ieodxqQ==} + dependencies: + fast-safe-stringify: 2.1.1 + individual: 3.0.0 /bottleneck/2.19.5: resolution: {integrity: sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==} @@ -1924,6 +2409,19 @@ packages: widest-line: 3.1.0 dev: true + /boxen/5.0.1: + resolution: {integrity: sha512-49VBlw+PrWEF51aCmy7QIteYPIFZxSpvqBdP/2itCPPlJ49kj9zg/XPRFrdkne2W+CfwXUls8exMvu1RysZpKA==} + engines: {node: '>=10'} + dependencies: + ansi-align: 3.0.0 + camelcase: 6.2.0 + chalk: 4.1.2 + cli-boxes: 2.2.1 + string-width: 4.2.2 + type-fest: 0.20.2 + widest-line: 3.1.0 + wrap-ansi: 7.0.0 + /brace-expansion/1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -1936,7 +2434,6 @@ packages: engines: {node: '>=8'} dependencies: fill-range: 7.0.1 - dev: true /browser-process-hrtime/1.0.0: resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} @@ -1947,9 +2444,9 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001254 - colorette: 1.3.0 - electron-to-chromium: 1.3.830 + caniuse-lite: 1.0.30001256 + colorette: 1.4.0 + electron-to-chromium: 1.3.836 escalade: 3.1.1 node-releases: 1.1.75 dev: true @@ -1977,7 +2474,7 @@ packages: base64-js: 1.5.1 ieee754: 1.1.13 isarray: 1.0.0 - dev: true + dev: false /buffer/5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} @@ -1994,12 +2491,6 @@ packages: /bytes/3.1.0: resolution: {integrity: sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==} engines: {node: '>= 0.8'} - dev: true - - /cacheable-lookup/5.0.4: - resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} - engines: {node: '>=10.6.0'} - dev: true /cacheable-request/6.1.0: resolution: {integrity: sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==} @@ -2014,25 +2505,11 @@ packages: responselike: 1.0.2 dev: true - /cacheable-request/7.0.2: - resolution: {integrity: sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==} - engines: {node: '>=8'} - dependencies: - clone-response: 1.0.2 - get-stream: 5.2.0 - http-cache-semantics: 4.1.0 - keyv: 4.0.3 - lowercase-keys: 2.0.0 - normalize-url: 6.1.0 - responselike: 2.0.0 - dev: true - /call-bind/1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 get-intrinsic: 1.1.1 - dev: true /callsites/3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} @@ -2048,6 +2525,16 @@ packages: quick-lru: 4.0.1 dev: true + /camelcase-keys/7.0.0: + resolution: {integrity: sha512-qlQlECgDl5Ev+gkvONaiD4X4TF2gyZKuLBvzx0zLo2UwAxmz3hJP/841aaMHTeH1T7v5HRwoRq91daulXoYWvg==} + engines: {node: '>=12'} + dependencies: + camelcase: 6.2.0 + map-obj: 4.2.1 + quick-lru: 5.1.1 + type-fest: 1.4.0 + dev: true + /camelcase/5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} @@ -2056,10 +2543,15 @@ packages: /camelcase/6.2.0: resolution: {integrity: sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==} engines: {node: '>=10'} - dev: true - /caniuse-lite/1.0.30001254: - resolution: {integrity: sha512-GxeHOvR0LFMYPmFGA+NiTOt9uwYDxB3h154tW2yBYwfz2EMX3i1IBgr6gmJGfU0K8KQsqPa5XqLD8zVdP5lUzA==} + /can-write-to-dir/1.1.1: + resolution: {integrity: sha512-eOgiEWqjppB+3DN/5E82EQ8dTINus8d9GXMCbEsUnp2hcUIcXmBvzWmD3tXMk3CuBK0v+ddK9qw0EAF+JVRMjQ==} + engines: {node: '>=10.13'} + dependencies: + path-temp: 2.0.0 + + /caniuse-lite/1.0.30001256: + resolution: {integrity: sha512-QirrvMLmB4txNnxiaG/xbm6FSzv9LqOZ3Jp9VtCYb3oPIfCHpr/oGn38pFq0udwlkctvXQgPthaXqJ76DaYGnA==} dev: true /cardinal/2.1.1: @@ -2077,7 +2569,6 @@ packages: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 - dev: true /chalk/3.0.0: resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} @@ -2093,18 +2584,16 @@ packages: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - dev: true /char-regex/1.0.2: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} - dev: true /character-parser/2.2.0: resolution: {integrity: sha1-x84o821LzZdE5f/CxfzeHHMmH8A=} dependencies: is-regex: 1.1.4 - dev: true + dev: false /chokidar/3.5.2: resolution: {integrity: sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==} @@ -2141,7 +2630,7 @@ packages: resolution: {integrity: sha512-zWIeYFhUitvAHBwNhDdCRK09hWx+P0HUwFE8US8/CxFpMVzkUK8RJl7yOIE+BVu2lxyPNgeOaFv78tLE47jBIg==} dependencies: '@types/validator': 13.6.3 - libphonenumber-js: 1.9.26 + libphonenumber-js: 1.9.32 validator: 13.6.0 dev: false @@ -2160,7 +2649,6 @@ packages: /cli-boxes/2.2.1: resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} engines: {node: '>=6'} - dev: true /cli-cursor/3.1.0: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} @@ -2190,7 +2678,6 @@ packages: string-width: 4.2.2 strip-ansi: 6.0.0 wrap-ansi: 7.0.0 - dev: true /clone-response/1.0.2: resolution: {integrity: sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=} @@ -2221,7 +2708,6 @@ packages: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 - dev: true /color-convert/2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} @@ -2231,7 +2717,6 @@ packages: /color-name/1.1.3: resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=} - dev: true /color-name/1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} @@ -2250,8 +2735,8 @@ packages: color-string: 1.6.0 dev: false - /colorette/1.3.0: - resolution: {integrity: sha512-ecORCqbSFP7Wm8Y6lyqMJjexBQqXSF7SSeaTyGGphogUjBlFP9m9o08wy86HL2uB7fMTxtOUzLMk7ogKcxMg1w==} + /colorette/1.4.0: + resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} dev: true /colors/1.0.3: @@ -2271,6 +2756,15 @@ packages: engines: {node: '>= 10'} dev: true + /commitlint/13.1.0: + resolution: {integrity: sha512-bDqtADmdT79zO/qYmROk+kMkUxF30vP0vBrdm4ceuMLoJSi8JBZZiS+uEFb71yJmZsiDML/258Othrc1g773sA==} + engines: {node: '>=v12'} + hasBin: true + dependencies: + '@commitlint/cli': 13.1.0 + '@commitlint/types': 13.1.0 + dev: true + /compare-func/2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} dependencies: @@ -2282,10 +2776,21 @@ packages: resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} dev: true + /comver-to-semver/1.0.0: + resolution: {integrity: sha512-gcGtbRxjwROQOdXLUWH1fQAXqThUVRZ219aAwgtX3KfYw429/Zv6EIJRf5TBSzWdAGwePmqH7w70WTaX4MDqag==} + engines: {node: '>=12.17'} + dev: false + /concat-map/0.0.1: resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} dev: true + /config-chain/1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + dependencies: + ini: 1.3.8 + proto-list: 1.2.4 + /configstore/5.0.1: resolution: {integrity: sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==} engines: {node: '>=8'} @@ -2305,32 +2810,30 @@ packages: /constantinople/4.0.1: resolution: {integrity: sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==} dependencies: - '@babel/parser': 7.15.5 - '@babel/types': 7.15.4 - dev: true + '@babel/parser': 7.15.6 + '@babel/types': 7.15.6 + dev: false /content-disposition/0.5.3: resolution: {integrity: sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==} engines: {node: '>= 0.6'} dependencies: safe-buffer: 5.1.2 - dev: true /content-type/1.0.4: resolution: {integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==} engines: {node: '>= 0.6'} - dev: true - /conventional-changelog-angular/5.0.12: - resolution: {integrity: sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw==} + /conventional-changelog-angular/5.0.13: + resolution: {integrity: sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==} engines: {node: '>=10'} dependencies: compare-func: 2.0.0 q: 1.5.1 dev: true - /conventional-changelog-conventionalcommits/4.6.0: - resolution: {integrity: sha512-sj9tj3z5cnHaSJCYObA9nISf7eq/YjscLPoq6nmew4SiOjxqL2KRpK20fjnjVbpNDjJ2HR3MoVcWKXwbVvzS0A==} + /conventional-changelog-conventionalcommits/4.6.1: + resolution: {integrity: sha512-lzWJpPZhbM1R0PIzkwzGBCnAkH5RKJzJfFQZcl/D+2lsJxAwGnDKBqn/F4C1RD31GJNn8NuKWQzAZDAVXPp2Mw==} engines: {node: '>=10'} dependencies: compare-func: 2.0.0 @@ -2363,8 +2866,8 @@ packages: modify-values: 1.0.1 dev: true - /conventional-commits-parser/3.2.1: - resolution: {integrity: sha512-OG9kQtmMZBJD/32NEw5IhN5+HnBqVjy03eC+I71I0oQRFA5rOgA4OtPOYG7mz1GkCfCNxn3gKIX8EiHJYuf1cA==} + /conventional-commits-parser/3.2.2: + resolution: {integrity: sha512-Jr9KAKgqAkwXMRHjxDwO/zOCDKod1XdAESHAGuJX38iZ7ZzVti/tvVoysO0suMsdAObp9NQ2rHSsSbnAqZ5f5g==} engines: {node: '>=10'} hasBin: true dependencies: @@ -2374,7 +2877,6 @@ packages: meow: 8.1.2 split2: 3.2.2 through2: 4.0.2 - trim-off-newlines: 1.0.1 dev: true /convert-source-map/1.8.0: @@ -2385,12 +2887,10 @@ packages: /cookie-signature/1.0.6: resolution: {integrity: sha1-4wOogrNCzD7oylE6eZmXNNqzriw=} - dev: true /cookie/0.4.0: resolution: {integrity: sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==} engines: {node: '>= 0.6'} - dev: true /cookiejar/2.1.2: resolution: {integrity: sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==} @@ -2434,7 +2934,6 @@ packages: /crypto-random-string/2.0.0: resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} engines: {node: '>=8'} - dev: true /cssom/0.3.8: resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} @@ -2456,6 +2955,9 @@ packages: engines: {node: '>=8'} dev: true + /data-uri-to-buffer/2.0.2: + resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==} + /data-urls/2.0.0: resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} engines: {node: '>=10'} @@ -2473,7 +2975,6 @@ packages: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} dependencies: ms: 2.0.0 - dev: true /debug/3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} @@ -2505,6 +3006,11 @@ packages: engines: {node: '>=0.10.0'} dev: true + /decamelize/5.0.0: + resolution: {integrity: sha512-U75DcT5hrio3KNtvdULAWnLiAPbFUC4191ldxMmj4FA/mRuBnmDwU0boNfPyFRhnan+Jm+haLeSn3P0afcBn4w==} + engines: {node: '>=10'} + dev: true + /decimal.js/10.3.1: resolution: {integrity: sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==} dev: true @@ -2523,13 +3029,6 @@ packages: mimic-response: 2.1.0 dev: false - /decompress-response/6.0.0: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} - engines: {node: '>=10'} - dependencies: - mimic-response: 3.1.0 - dev: true - /dedent/0.7.0: resolution: {integrity: sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=} dev: true @@ -2540,7 +3039,6 @@ packages: /deep-is/0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - dev: true /deepmerge/4.2.2: resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} @@ -2551,11 +3049,6 @@ packages: resolution: {integrity: sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==} dev: true - /defer-to-connect/2.0.1: - resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} - engines: {node: '>=10'} - dev: true - /define-properties/1.1.3: resolution: {integrity: sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==} engines: {node: '>= 0.4'} @@ -2594,7 +3087,6 @@ packages: /depd/1.1.2: resolution: {integrity: sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=} engines: {node: '>= 0.6'} - dev: true /deprecation/2.3.1: resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} @@ -2602,7 +3094,10 @@ packages: /destroy/1.0.4: resolution: {integrity: sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=} - dev: true + + /detect-indent/6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} /detect-libc/1.0.3: resolution: {integrity: sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=} @@ -2630,7 +3125,6 @@ packages: engines: {node: '>=8'} dependencies: path-type: 4.0.0 - dev: true /doctrine/2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} @@ -2648,7 +3142,7 @@ packages: /doctypes/1.1.0: resolution: {integrity: sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=} - dev: true + dev: false /domexception/2.0.1: resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==} @@ -2681,10 +3175,9 @@ packages: /ee-first/1.1.1: resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} - dev: true - /electron-to-chromium/1.3.830: - resolution: {integrity: sha512-gBN7wNAxV5vl1430dG+XRcQhD4pIeYeak6p6rjdCtlz5wWNwDad8jwvphe5oi1chL5MV6RNRikfffBBiFuj+rQ==} + /electron-to-chromium/1.3.836: + resolution: {integrity: sha512-Ney3pHOJBWkG/AqYjrW0hr2AUCsao+2uvq9HUlRP8OlpSdk/zOHOUJP7eu0icDvePC9DlgffuelP4TnOJmMRUg==} dev: true /emittery/0.8.1: @@ -2694,16 +3187,13 @@ packages: /emoji-regex/7.0.3: resolution: {integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==} - dev: true /emoji-regex/8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: true /encodeurl/1.0.2: resolution: {integrity: sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=} engines: {node: '>= 0.8'} - dev: true /end-of-stream/1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} @@ -2729,16 +3219,16 @@ packages: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 - dev: true - /es-abstract/1.18.5: - resolution: {integrity: sha512-DDggyJLoS91CkJjgauM5c0yZMjiD1uK3KcaCeAmffGwZ+ODWzOkPN4QwRbsK5DOFf06fywmyLci3ZD8jLGhVYA==} + /es-abstract/1.18.6: + resolution: {integrity: sha512-kAeIT4cku5eNLNuUKhlmtuk1/TRZvQoYccn6TO0cSVdf1kzB0T7+dYuVK9MWM7l+/53W2Q8M7N2c6MQvhXFcUQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 es-to-primitive: 1.2.1 function-bind: 1.1.1 get-intrinsic: 1.1.1 + get-symbol-description: 1.0.0 has: 1.0.3 has-symbols: 1.0.2 internal-slot: 1.0.3 @@ -2766,7 +3256,6 @@ packages: /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} - dev: true /escape-goat/2.1.1: resolution: {integrity: sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==} @@ -2775,12 +3264,10 @@ packages: /escape-html/1.0.3: resolution: {integrity: sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=} - dev: true /escape-string-regexp/1.0.5: resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} engines: {node: '>=0.8.0'} - dev: true /escape-string-regexp/2.0.0: resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} @@ -2803,7 +3290,6 @@ packages: optionator: 0.8.3 optionalDependencies: source-map: 0.6.1 - dev: true /eslint-config-prettier/8.3.0_eslint@7.32.0: resolution: {integrity: sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==} @@ -2825,7 +3311,7 @@ packages: regexpp: 3.2.0 dev: true - /eslint-plugin-jest/24.4.0_111638ce2dee59955041613292a82f90: + /eslint-plugin-jest/24.4.0_bee27a84bf519dcd2ba1095ccc4bd980: resolution: {integrity: sha512-8qnt/hgtZ94E9dA6viqfViKBfkJwFHXgJmTWlMGDgunw1XJEGqm3eiPjDsTanM3/u/3Az82nyQM9GX7PM/QGmg==} engines: {node: '>=10'} peerDependencies: @@ -2835,19 +3321,14 @@ packages: '@typescript-eslint/eslint-plugin': optional: true dependencies: - '@typescript-eslint/eslint-plugin': 4.30.0_8a8a2d3eaa9257455a03c16dce5f55b3 - '@typescript-eslint/experimental-utils': 4.30.0_eslint@7.32.0+typescript@4.4.2 + '@typescript-eslint/eslint-plugin': 4.31.0_d9c1bc16c4e2aea4e8e177a5961dd3bf + '@typescript-eslint/experimental-utils': 4.31.0_eslint@7.32.0+typescript@4.4.3 eslint: 7.32.0 transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-plugin-no-only-tests/2.6.0: - resolution: {integrity: sha512-T9SmE/g6UV1uZo1oHAqOvL86XWl7Pl2EpRpnLI8g/bkJu+h7XBCB+1LnubRZ2CUQXj805vh4/CYZdnqtVaEo2Q==} - engines: {node: '>=4.0.0'} - dev: true - /eslint-plugin-node/11.1.0_eslint@7.32.0: resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} engines: {node: '>=8.10.0'} @@ -2863,7 +3344,7 @@ packages: semver: 6.3.0 dev: true - /eslint-plugin-prettier/4.0.0_5a48a349ffec60f5257b5f148f5199c3: + /eslint-plugin-prettier/4.0.0_5559632aa3c77deec3ae5c2ea6ed0f36: resolution: {integrity: sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==} engines: {node: '>=6.0.0'} peerDependencies: @@ -2876,7 +3357,7 @@ packages: dependencies: eslint: 7.32.0 eslint-config-prettier: 8.3.0_eslint@7.32.0 - prettier: 2.3.2 + prettier: 2.4.0 prettier-linter-helpers: 1.0.0 dev: true @@ -3088,7 +3569,6 @@ packages: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true - dev: true /esquery/1.4.0: resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} @@ -3112,12 +3592,10 @@ packages: /estraverse/5.2.0: resolution: {integrity: sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==} engines: {node: '>=4.0'} - dev: true /esutils/2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - dev: true /etag/1.8.1: resolution: {integrity: sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=} @@ -3126,7 +3604,7 @@ packages: /events/1.1.1: resolution: {integrity: sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=} engines: {node: '>=0.4.x'} - dev: true + dev: false /execa/4.1.0: resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} @@ -3168,15 +3646,15 @@ packages: engines: {node: '>=6'} dev: false - /expect/27.1.0: - resolution: {integrity: sha512-9kJngV5hOJgkFil4F/uXm3hVBubUK2nERVfvqNNwxxuW8ZOUwSTTSysgfzckYtv/LBzj/LJXbiAF7okHCXgdug==} + /expect/27.1.1: + resolution: {integrity: sha512-JQAzp0CJoFFHF1RnOtrMUNMdsfx/Tl0+FhRzVl8q0fa23N+JyWdPXwb3T5rkHCvyo9uttnK7lVdKCBl1b/9EDw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/types': 27.1.0 + '@jest/types': 27.1.1 ansi-styles: 5.2.0 jest-get-type: 27.0.6 - jest-matcher-utils: 27.1.0 - jest-message-util: 27.1.0 + jest-matcher-utils: 27.1.1 + jest-message-util: 27.1.1 jest-regex-util: 27.0.6 dev: true @@ -3214,11 +3692,9 @@ packages: type-is: 1.6.18 utils-merge: 1.0.1 vary: 1.1.2 - dev: true /fast-deep-equal/3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: true /fast-diff/1.2.0: resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} @@ -3233,7 +3709,6 @@ packages: glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.4 - dev: true /fast-json-stable-stringify/2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} @@ -3241,17 +3716,14 @@ packages: /fast-levenshtein/2.0.6: resolution: {integrity: sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=} - dev: true - /fast-safe-stringify/2.0.8: - resolution: {integrity: sha512-lXatBjf3WPjmWD6DpIZxkeSsCOwqI0maYMpgDlx8g4U2qi4lbjA9oH/HD2a87G+KfsUmo5WbJFmqBZlPxtptag==} - dev: true + /fast-safe-stringify/2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} - /fastq/1.12.0: - resolution: {integrity: sha512-VNX0QkHK3RsXVKr9KrlUv/FoTa0NdbYoHHl7uXHv2rzyHSlxjdNAKug2twd9luJxpcyNeAgf5iPPMutJO67Dfg==} + /fastq/1.13.0: + resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} dependencies: reusify: 1.0.4 - dev: true /fb-watchman/2.0.1: resolution: {integrity: sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==} @@ -3285,7 +3757,6 @@ packages: engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 - dev: true /finalhandler/1.1.2: resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} @@ -3298,7 +3769,15 @@ packages: parseurl: 1.3.3 statuses: 1.5.0 unpipe: 1.0.0 - dev: true + + /find-packages/8.0.5: + resolution: {integrity: sha512-uOWyMebURrYdumRBylY1fLNUZG8Wjzuyv+UkD0MX1H+aQNcDhtINSw5oM5HKCBpBGHQO3PlhyVxmfKrPM840sw==} + engines: {node: '>=12.17'} + dependencies: + '@pnpm/read-project-manifest': 2.0.5 + '@pnpm/types': 7.4.0 + fast-glob: 3.2.7 + p-filter: 2.1.0 /find-up/2.1.0: resolution: {integrity: sha1-RdG35QbHF93UgndaK3eSCjwMV6c=} @@ -3327,7 +3806,7 @@ packages: resolution: {integrity: sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ==} engines: {node: '>=10'} dependencies: - semver-regex: 3.1.2 + semver-regex: 3.1.3 dev: true /flat-cache/3.0.4: @@ -3342,13 +3821,26 @@ packages: resolution: {integrity: sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==} dev: true - /form-data/2.5.1: - resolution: {integrity: sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==} - engines: {node: '>= 0.12'} + /follow-redirects/1.14.3: + resolution: {integrity: sha512-3MkHxknWMUtb23apkgz/83fDoe+y+qr0TdgacGIA7bew+QLBo3vdgEN2xEsuXNivpFy4CyDhBBZnNZOtalmenw==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dev: false + + /follow-redirects/1.14.3_debug@4.3.2: + resolution: {integrity: sha512-3MkHxknWMUtb23apkgz/83fDoe+y+qr0TdgacGIA7bew+QLBo3vdgEN2xEsuXNivpFy4CyDhBBZnNZOtalmenw==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.32 + debug: 4.3.2 dev: true /form-data/3.0.1: @@ -3367,19 +3859,16 @@ packages: /forwarded/0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} - dev: true /fresh/0.5.2: resolution: {integrity: sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=} engines: {node: '>= 0.6'} - dev: true /from2/2.3.0: resolution: {integrity: sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=} dependencies: inherits: 2.0.4 readable-stream: 2.3.7 - dev: true /fs-constants/1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} @@ -3394,6 +3883,15 @@ packages: universalify: 2.0.0 dev: true + /fs-extra/8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + dependencies: + graceful-fs: 4.2.8 + jsonfile: 4.0.0 + universalify: 0.1.2 + dev: true + /fs-extra/9.1.0: resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} engines: {node: '>=10'} @@ -3402,7 +3900,6 @@ packages: graceful-fs: 4.2.8 jsonfile: 6.1.0 universalify: 2.0.0 - dev: true /fs.realpath/1.0.0: resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} @@ -3418,7 +3915,6 @@ packages: /function-bind/1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - dev: true /functional-red-black-tree/1.0.1: resolution: {integrity: sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=} @@ -3445,7 +3941,6 @@ packages: /get-caller-file/2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - dev: true /get-intrinsic/1.1.1: resolution: {integrity: sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==} @@ -3453,7 +3948,6 @@ packages: function-bind: 1.1.1 has: 1.0.3 has-symbols: 1.0.2 - dev: true /get-own-enumerable-property-symbols/3.0.2: resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} @@ -3464,6 +3958,12 @@ packages: engines: {node: '>=8.0.0'} dev: true + /get-source/1.0.42: + resolution: {integrity: sha512-uM5xCIG5w2meVbiZaID4ajH6J8OfApqhlKXtZwsS/IIM9PLb0b2kc5sRdy78yEDfxsIYEWNk0OVxai6OpDCExA==} + dependencies: + data-uri-to-buffer: 2.0.2 + source-map: 0.6.1 + /get-stream/4.1.0: resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} engines: {node: '>=6'} @@ -3483,6 +3983,14 @@ packages: engines: {node: '>=10'} dev: true + /get-symbol-description/1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.1 + dev: true + /git-log-parser/1.2.0: resolution: {integrity: sha1-LmpMGxP8AAKCB7p5WnrDFme5/Uo=} dependencies: @@ -3515,7 +4023,6 @@ packages: engines: {node: '>= 6'} dependencies: is-glob: 4.0.1 - dev: true /glob/7.1.7: resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} @@ -3554,8 +4061,8 @@ packages: type-fest: 0.20.2 dev: true - /globby/11.0.4: - resolution: {integrity: sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==} + /globby/11.0.2: + resolution: {integrity: sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==} engines: {node: '>=10'} dependencies: array-union: 2.1.0 @@ -3566,22 +4073,16 @@ packages: slash: 3.0.0 dev: true - /got/11.8.2: - resolution: {integrity: sha512-D0QywKgIe30ODs+fm8wMZiAcZjypcCodPNuMz5H9Mny7RJ+IjJ10BdmGW7OM7fHXP+O7r6ZwapQ/YQmMSvB0UQ==} - engines: {node: '>=10.19.0'} + /globby/11.0.4: + resolution: {integrity: sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==} + engines: {node: '>=10'} dependencies: - '@sindresorhus/is': 4.0.1 - '@szmarczak/http-timer': 4.0.6 - '@types/cacheable-request': 6.0.2 - '@types/responselike': 1.0.0 - cacheable-lookup: 5.0.4 - cacheable-request: 7.0.2 - decompress-response: 6.0.0 - http2-wrapper: 1.0.3 - lowercase-keys: 2.0.0 - p-cancelable: 2.1.1 - responselike: 2.0.0 - dev: true + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.2.7 + ignore: 5.1.8 + merge2: 1.4.1 + slash: 3.0.0 /got/9.6.0: resolution: {integrity: sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==} @@ -3602,7 +4103,6 @@ packages: /graceful-fs/4.2.8: resolution: {integrity: sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==} - dev: true /handlebars/4.7.7: resolution: {integrity: sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==} @@ -3614,7 +4114,7 @@ packages: source-map: 0.6.1 wordwrap: 1.0.0 optionalDependencies: - uglify-js: 3.14.1 + uglify-js: 3.14.2 dev: true /hard-rejection/2.1.0: @@ -3629,24 +4129,20 @@ packages: /has-flag/3.0.0: resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=} engines: {node: '>=4'} - dev: true /has-flag/4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - dev: true /has-symbols/1.0.2: resolution: {integrity: sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==} engines: {node: '>= 0.4'} - dev: true /has-tostringtag/1.0.0: resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.2 - dev: true /has-unicode/2.0.1: resolution: {integrity: sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=} @@ -3662,7 +4158,6 @@ packages: engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 - dev: true /hook-std/2.0.0: resolution: {integrity: sha512-zZ6T5WcuBMIUVh49iPQS9t977t7C0l7OtHrpeMb5uk48JdflRX0NSFvCekfYNmGQETnLq9W/isMyHl69kxGi8g==} @@ -3704,7 +4199,6 @@ packages: setprototypeof: 1.1.1 statuses: 1.5.0 toidentifier: 1.0.0 - dev: true /http-errors/1.7.3: resolution: {integrity: sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==} @@ -3715,7 +4209,6 @@ packages: setprototypeof: 1.1.1 statuses: 1.5.0 toidentifier: 1.0.0 - dev: true /http-proxy-agent/4.0.1: resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} @@ -3728,13 +4221,10 @@ packages: - supports-color dev: true - /http2-wrapper/1.0.3: - resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} - engines: {node: '>=10.19.0'} - dependencies: - quick-lru: 5.1.1 - resolve-alpn: 1.2.1 - dev: true + /http-status/1.5.0: + resolution: {integrity: sha512-wcGvY31MpFNHIkUcXHHnvrE4IKYlpvitJw5P/1u892gMBAM46muQ+RH7UN1d+Ntnfx5apnOnVY6vcLmrWHOLwg==} + engines: {node: '>= 0.4.0'} + dev: false /https-proxy-agent/5.0.0: resolution: {integrity: sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==} @@ -3744,7 +4234,6 @@ packages: debug: 4.3.2 transitivePeerDependencies: - supports-color - dev: true /human-signals/1.1.1: resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} @@ -3767,11 +4256,10 @@ packages: engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 - dev: true /ieee754/1.1.13: resolution: {integrity: sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==} - dev: true + dev: false /ieee754/1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -3789,7 +4277,6 @@ packages: /ignore/5.1.8: resolution: {integrity: sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==} engines: {node: '>= 4'} - dev: true /import-fresh/3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} @@ -3823,13 +4310,20 @@ packages: /imurmurhash/0.1.4: resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=} engines: {node: '>=0.8.19'} - dev: true /indent-string/4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} dev: true + /indent-string/5.0.0: + resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} + engines: {node: '>=12'} + dev: true + + /individual/3.0.0: + resolution: {integrity: sha1-58pPhfiVewGHNPKFdQ3CLsL5hi0=} + /inflight/1.0.6: resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} dependencies: @@ -3839,7 +4333,6 @@ packages: /inherits/2.0.3: resolution: {integrity: sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=} - dev: true /inherits/2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -3866,7 +4359,6 @@ packages: dependencies: from2: 2.3.0 p-is-promise: 3.0.0 - dev: true /ioredis/4.17.3: resolution: {integrity: sha512-iRvq4BOYzNFkDnSyhx7cmJNOi1x/HWYe+A4VXHBu4qpwJaGT1Mp+D2bVGJntH9K/Z/GeOM/Nprb8gB3bmitz1Q==} @@ -3888,11 +4380,9 @@ packages: /ipaddr.js/1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} - dev: true /is-arrayish/0.2.1: resolution: {integrity: sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=} - dev: true /is-arrayish/0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} @@ -3949,7 +4439,6 @@ packages: resolution: {integrity: sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==} dependencies: has: 1.0.3 - dev: true /is-date-object/1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} @@ -3963,12 +4452,11 @@ packages: dependencies: acorn: 7.4.1 object-assign: 4.1.1 - dev: true + dev: false /is-extglob/2.1.1: resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=} engines: {node: '>=0.10.0'} - dev: true /is-fullwidth-code-point/1.0.0: resolution: {integrity: sha1-754xOG8DGn8NZDr4L95QxFfvAMs=} @@ -3980,12 +4468,10 @@ packages: /is-fullwidth-code-point/2.0.0: resolution: {integrity: sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=} engines: {node: '>=4'} - dev: true /is-fullwidth-code-point/3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - dev: true /is-generator-fn/2.1.0: resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} @@ -3997,7 +4483,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 - dev: true /is-installed-globally/0.3.2: resolution: {integrity: sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==} @@ -4027,7 +4512,6 @@ packages: /is-number/7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - dev: true /is-obj/1.0.1: resolution: {integrity: sha1-PkcprB9f3gJc19g6iW2rn09n2w8=} @@ -4054,6 +4538,10 @@ packages: engines: {node: '>=0.10.0'} dev: true + /is-plain-obj/2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + /is-plain-object/5.0.0: resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} engines: {node: '>=0.10.0'} @@ -4065,7 +4553,7 @@ packages: /is-promise/2.2.2: resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} - dev: true + dev: false /is-regex/1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} @@ -4073,7 +4561,6 @@ packages: dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 - dev: true /is-regexp/1.0.0: resolution: {integrity: sha1-/S2INUXEa6xaYz57mgnof6LLUGk=} @@ -4092,6 +4579,12 @@ packages: has-tostringtag: 1.0.0 dev: true + /is-subdir/1.2.0: + resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} + engines: {node: '>=4'} + dependencies: + better-path-resolve: 1.0.0 + /is-symbol/1.0.4: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} @@ -4108,13 +4601,16 @@ packages: /is-typedarray/1.0.0: resolution: {integrity: sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=} - dev: true /is-unicode-supported/0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} dev: true + /is-windows/1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + /is-yarn-global/0.3.0: resolution: {integrity: sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==} dev: true @@ -4124,7 +4620,6 @@ packages: /isexe/2.0.0: resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} - dev: true /issue-parser/6.0.0: resolution: {integrity: sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA==} @@ -4187,35 +4682,35 @@ packages: engines: {node: '>= 0.6.0'} dev: true - /jest-changed-files/27.1.0: - resolution: {integrity: sha512-eRcb13TfQw0xiV2E98EmiEgs9a5uaBIqJChyl0G7jR9fCIvGjXovnDS6Zbku3joij4tXYcSK4SE1AXqOlUxjWg==} + /jest-changed-files/27.1.1: + resolution: {integrity: sha512-5TV9+fYlC2A6hu3qtoyGHprBwCAn0AuGA77bZdUgYvVlRMjHXo063VcWTEAyx6XAZ85DYHqp0+aHKbPlfRDRvA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/types': 27.1.0 + '@jest/types': 27.1.1 execa: 5.1.1 throat: 6.0.1 dev: true - /jest-circus/27.1.0: - resolution: {integrity: sha512-6FWtHs3nZyZlMBhRf1wvAC5CirnflbGJAY1xssSAnERLiiXQRH+wY2ptBVtXjX4gz4AA2EwRV57b038LmifRbA==} + /jest-circus/27.1.1: + resolution: {integrity: sha512-Xed1ApiMFu/yzqGMBToHr8sp2gkX/ARZf4nXoGrHJrXrTUdVIWiVYheayfcOaPdQvQEE/uyBLgW7I7YBLIrAXQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/environment': 27.1.0 - '@jest/test-result': 27.1.0 - '@jest/types': 27.1.0 - '@types/node': 14.17.14 + '@jest/environment': 27.1.1 + '@jest/test-result': 27.1.1 + '@jest/types': 27.1.1 + '@types/node': 16.9.1 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 - expect: 27.1.0 + expect: 27.1.1 is-generator-fn: 2.1.0 - jest-each: 27.1.0 - jest-matcher-utils: 27.1.0 - jest-message-util: 27.1.0 - jest-runtime: 27.1.0 - jest-snapshot: 27.1.0 - jest-util: 27.1.0 - pretty-format: 27.1.0 + jest-each: 27.1.1 + jest-matcher-utils: 27.1.1 + jest-message-util: 27.1.1 + jest-runtime: 27.1.1 + jest-snapshot: 27.1.1 + jest-util: 27.1.1 + pretty-format: 27.1.1 slash: 3.0.0 stack-utils: 2.0.3 throat: 6.0.1 @@ -4223,8 +4718,8 @@ packages: - supports-color dev: true - /jest-cli/27.1.0_ts-node@10.2.1: - resolution: {integrity: sha512-h6zPUOUu+6oLDrXz0yOWY2YXvBLk8gQinx4HbZ7SF4V3HzasQf+ncoIbKENUMwXyf54/6dBkYXvXJos+gOHYZw==} + /jest-cli/27.1.1_ts-node@10.2.1: + resolution: {integrity: sha512-LCjfEYp9D3bcOeVUUpEol9Y1ijZYMWVqflSmtw/wX+6Fb7zP4IlO14/6s9v1pxsoM4Pn46+M2zABgKuQjyDpTw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} hasBin: true peerDependencies: @@ -4233,16 +4728,16 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 27.1.0_ts-node@10.2.1 - '@jest/test-result': 27.1.0 - '@jest/types': 27.1.0 + '@jest/core': 27.1.1_ts-node@10.2.1 + '@jest/test-result': 27.1.1 + '@jest/types': 27.1.1 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.8 import-local: 3.0.2 - jest-config: 27.1.0_ts-node@10.2.1 - jest-util: 27.1.0 - jest-validate: 27.1.0 + jest-config: 27.1.1_ts-node@10.2.1 + jest-util: 27.1.1 + jest-validate: 27.1.1 prompts: 2.4.1 yargs: 16.2.0 transitivePeerDependencies: @@ -4253,8 +4748,8 @@ packages: - utf-8-validate dev: true - /jest-config/27.1.0_ts-node@10.2.1: - resolution: {integrity: sha512-GMo7f76vMYUA3b3xOdlcKeKQhKcBIgurjERO2hojo0eLkKPGcw7fyIoanH+m6KOP2bLad+fGnF8aWOJYxzNPeg==} + /jest-config/27.1.1_ts-node@10.2.1: + resolution: {integrity: sha512-2iSd5zoJV4MsWPcLCGwUVUY/j6pZXm4Qd3rnbCtrd9EHNTg458iHw8PZztPQXfxKBKJxLfBk7tbZqYF8MGtxJA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} peerDependencies: ts-node: '>=9.0.0' @@ -4263,27 +4758,27 @@ packages: optional: true dependencies: '@babel/core': 7.15.5 - '@jest/test-sequencer': 27.1.0 - '@jest/types': 27.1.0 - babel-jest: 27.1.0_@babel+core@7.15.5 + '@jest/test-sequencer': 27.1.1 + '@jest/types': 27.1.1 + babel-jest: 27.1.1_@babel+core@7.15.5 chalk: 4.1.2 deepmerge: 4.2.2 glob: 7.1.7 graceful-fs: 4.2.8 is-ci: 3.0.0 - jest-circus: 27.1.0 - jest-environment-jsdom: 27.1.0 - jest-environment-node: 27.1.0 + jest-circus: 27.1.1 + jest-environment-jsdom: 27.1.1 + jest-environment-node: 27.1.1 jest-get-type: 27.0.6 - jest-jasmine2: 27.1.0 + jest-jasmine2: 27.1.1 jest-regex-util: 27.0.6 - jest-resolve: 27.1.0 - jest-runner: 27.1.0 - jest-util: 27.1.0 - jest-validate: 27.1.0 + jest-resolve: 27.1.1 + jest-runner: 27.1.1 + jest-util: 27.1.1 + jest-validate: 27.1.1 micromatch: 4.0.4 - pretty-format: 27.1.0 - ts-node: 10.2.1_d7d681058e4c969a99d022d4f7844478 + pretty-format: 27.1.1 + ts-node: 10.2.1_91d7040b2316c81455e367292ad70221 transitivePeerDependencies: - bufferutil - canvas @@ -4291,14 +4786,14 @@ packages: - utf-8-validate dev: true - /jest-diff/27.1.0: - resolution: {integrity: sha512-rjfopEYl58g/SZTsQFmspBODvMSytL16I+cirnScWTLkQVXYVZfxm78DFfdIIXc05RCYuGjxJqrdyG4PIFzcJg==} + /jest-diff/27.1.1: + resolution: {integrity: sha512-m/6n5158rqEriTazqHtBpOa2B/gGgXJijX6nsEgZfbJ/3pxQcdpVXBe+FP39b1dxWHyLVVmuVXddmAwtqFO4Lg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: chalk: 4.1.2 diff-sequences: 27.0.6 jest-get-type: 27.0.6 - pretty-format: 27.1.0 + pretty-format: 27.1.1 dev: true /jest-docblock/27.0.6: @@ -4308,27 +4803,27 @@ packages: detect-newline: 3.1.0 dev: true - /jest-each/27.1.0: - resolution: {integrity: sha512-K/cNvQlmDqQMRHF8CaQ0XPzCfjP5HMJc2bIJglrIqI9fjwpNqITle63IWE+wq4p+3v+iBgh7Wq0IdGpLx5xjDg==} + /jest-each/27.1.1: + resolution: {integrity: sha512-r6hOsTLavUBb1xN0uDa89jdDeBmJ+K49fWpbyxeGRA2pLY46PlC4z551/cWNQzrj+IUa5/gSRsCIV/01HdNPug==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/types': 27.1.0 + '@jest/types': 27.1.1 chalk: 4.1.2 jest-get-type: 27.0.6 - jest-util: 27.1.0 - pretty-format: 27.1.0 + jest-util: 27.1.1 + pretty-format: 27.1.1 dev: true - /jest-environment-jsdom/27.1.0: - resolution: {integrity: sha512-JbwOcOxh/HOtsj56ljeXQCUJr3ivnaIlM45F5NBezFLVYdT91N5UofB1ux2B1CATsQiudcHdgTaeuqGXJqjJYQ==} + /jest-environment-jsdom/27.1.1: + resolution: {integrity: sha512-6vOnoZ6IaExuw7FvnuJhA1qFYv1DDSnN0sQowzolNwxQp7bG1YhLxj2YU1sVXAYA3IR3MbH2mbnJUsLUWfyfzw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/environment': 27.1.0 - '@jest/fake-timers': 27.1.0 - '@jest/types': 27.1.0 - '@types/node': 14.17.14 - jest-mock: 27.1.0 - jest-util: 27.1.0 + '@jest/environment': 27.1.1 + '@jest/fake-timers': 27.1.1 + '@jest/types': 27.1.1 + '@types/node': 16.9.1 + jest-mock: 27.1.1 + jest-util: 27.1.1 jsdom: 16.7.0 transitivePeerDependencies: - bufferutil @@ -4337,16 +4832,16 @@ packages: - utf-8-validate dev: true - /jest-environment-node/27.1.0: - resolution: {integrity: sha512-JIyJ8H3wVyM4YCXp7njbjs0dIT87yhGlrXCXhDKNIg1OjurXr6X38yocnnbXvvNyqVTqSI4M9l+YfPKueqL1lw==} + /jest-environment-node/27.1.1: + resolution: {integrity: sha512-OEGeZh0PwzngNIYWYgWrvTcLygopV8OJbC9HNb0j70VBKgEIsdZkYhwcFnaURX83OHACMqf1pa9Tv5Pw5jemrg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/environment': 27.1.0 - '@jest/fake-timers': 27.1.0 - '@jest/types': 27.1.0 - '@types/node': 14.17.14 - jest-mock: 27.1.0 - jest-util: 27.1.0 + '@jest/environment': 27.1.1 + '@jest/fake-timers': 27.1.1 + '@jest/types': 27.1.1 + '@types/node': 16.9.1 + jest-mock: 27.1.1 + jest-util: 27.1.1 dev: true /jest-get-type/27.0.6: @@ -4354,94 +4849,94 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dev: true - /jest-haste-map/27.1.0: - resolution: {integrity: sha512-7mz6LopSe+eA6cTFMf10OfLLqRoIPvmMyz5/OnSXnHO7hB0aDP1iIeLWCXzAcYU5eIJVpHr12Bk9yyq2fTW9vg==} + /jest-haste-map/27.1.1: + resolution: {integrity: sha512-NGLYVAdh5C8Ezg5QBFzrNeYsfxptDBPlhvZNaicLiZX77F/rS27a9M6u9ripWAaaD54xnWdZNZpEkdjD5Eo5aQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/types': 27.1.0 + '@jest/types': 27.1.1 '@types/graceful-fs': 4.1.5 - '@types/node': 14.17.14 + '@types/node': 16.9.1 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.8 jest-regex-util: 27.0.6 jest-serializer: 27.0.6 - jest-util: 27.1.0 - jest-worker: 27.1.0 + jest-util: 27.1.1 + jest-worker: 27.1.1 micromatch: 4.0.4 walker: 1.0.7 optionalDependencies: fsevents: 2.3.2 dev: true - /jest-jasmine2/27.1.0: - resolution: {integrity: sha512-Z/NIt0wBDg3przOW2FCWtYjMn3Ip68t0SL60agD/e67jlhTyV3PIF8IzT9ecwqFbeuUSO2OT8WeJgHcalDGFzQ==} + /jest-jasmine2/27.1.1: + resolution: {integrity: sha512-0LAzUmcmvQwjIdJt0cXUVX4G5qjVXE8ELt6nbMNDzv2yAs2hYCCUtQq+Eje70GwAysWCGcS64QeYj5VPHYVxPg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@babel/traverse': 7.15.4 - '@jest/environment': 27.1.0 + '@jest/environment': 27.1.1 '@jest/source-map': 27.0.6 - '@jest/test-result': 27.1.0 - '@jest/types': 27.1.0 - '@types/node': 14.17.14 + '@jest/test-result': 27.1.1 + '@jest/types': 27.1.1 + '@types/node': 16.9.1 chalk: 4.1.2 co: 4.6.0 - expect: 27.1.0 + expect: 27.1.1 is-generator-fn: 2.1.0 - jest-each: 27.1.0 - jest-matcher-utils: 27.1.0 - jest-message-util: 27.1.0 - jest-runtime: 27.1.0 - jest-snapshot: 27.1.0 - jest-util: 27.1.0 - pretty-format: 27.1.0 + jest-each: 27.1.1 + jest-matcher-utils: 27.1.1 + jest-message-util: 27.1.1 + jest-runtime: 27.1.1 + jest-snapshot: 27.1.1 + jest-util: 27.1.1 + pretty-format: 27.1.1 throat: 6.0.1 transitivePeerDependencies: - supports-color dev: true - /jest-leak-detector/27.1.0: - resolution: {integrity: sha512-oHvSkz1E80VyeTKBvZNnw576qU+cVqRXUD3/wKXh1zpaki47Qty2xeHg2HKie9Hqcd2l4XwircgNOWb/NiGqdA==} + /jest-leak-detector/27.1.1: + resolution: {integrity: sha512-gwSgzmqShoeEsEVpgObymQPrM9P6557jt1EsFW5aCeJ46Cme0EdjYU7xr6llQZ5GpWDl56eOstUaPXiZOfiTKw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: jest-get-type: 27.0.6 - pretty-format: 27.1.0 + pretty-format: 27.1.1 dev: true - /jest-matcher-utils/27.1.0: - resolution: {integrity: sha512-VmAudus2P6Yt/JVBRdTPFhUzlIN8DYJd+et5Rd9QDsO/Z82Z4iwGjo43U8Z+PTiz8CBvKvlb6Fh3oKy39hykkQ==} + /jest-matcher-utils/27.1.1: + resolution: {integrity: sha512-Q1a10w9Y4sh0wegkdP6reQOa/Dtz7nAvDqBgrat1ItZAUvk4jzXAqyhXPu/ZuEtDaXaNKpdRPRQA8bvkOh2Eaw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: chalk: 4.1.2 - jest-diff: 27.1.0 + jest-diff: 27.1.1 jest-get-type: 27.0.6 - pretty-format: 27.1.0 + pretty-format: 27.1.1 dev: true - /jest-message-util/27.1.0: - resolution: {integrity: sha512-Eck8NFnJ5Sg36R9XguD65cf2D5+McC+NF5GIdEninoabcuoOfWrID5qJhufq5FB0DRKoiyxB61hS7MKoMD0trQ==} + /jest-message-util/27.1.1: + resolution: {integrity: sha512-b697BOJV93+AVGvzLRtVZ0cTVRbd59OaWnbB2D75GRaIMc4I+Z9W0wHxbfjW01JWO+TqqW4yevT0aN7Fd0XWng==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@babel/code-frame': 7.14.5 - '@jest/types': 27.1.0 + '@jest/types': 27.1.1 '@types/stack-utils': 2.0.1 chalk: 4.1.2 graceful-fs: 4.2.8 micromatch: 4.0.4 - pretty-format: 27.1.0 + pretty-format: 27.1.1 slash: 3.0.0 stack-utils: 2.0.3 dev: true - /jest-mock/27.1.0: - resolution: {integrity: sha512-iT3/Yhu7DwAg/0HvvLCqLvrTKTRMyJlrrfJYWzuLSf9RCAxBoIXN3HoymZxMnYsC3eD8ewGbUa9jUknwBenx2w==} + /jest-mock/27.1.1: + resolution: {integrity: sha512-SClsFKuYBf+6SSi8jtAYOuPw8DDMsTElUWEae3zq7vDhH01ayVSIHUSIa8UgbDOUalCFp6gNsaikN0rbxN4dbw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/types': 27.1.0 - '@types/node': 14.17.14 + '@jest/types': 27.1.1 + '@types/node': 16.9.1 dev: true - /jest-pnp-resolver/1.2.2_jest-resolve@27.1.0: + /jest-pnp-resolver/1.2.2_jest-resolve@27.1.1: resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==} engines: {node: '>=6'} peerDependencies: @@ -4450,7 +4945,7 @@ packages: jest-resolve: optional: true dependencies: - jest-resolve: 27.1.0 + jest-resolve: 27.1.1 dev: true /jest-regex-util/27.0.6: @@ -4458,58 +4953,58 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dev: true - /jest-resolve-dependencies/27.1.0: - resolution: {integrity: sha512-Kq5XuDAELuBnrERrjFYEzu/A+i2W7l9HnPWqZEeKGEQ7m1R+6ndMbdXCVCx29Se1qwLZLgvoXwinB3SPIaitMQ==} + /jest-resolve-dependencies/27.1.1: + resolution: {integrity: sha512-sYZR+uBjFDCo4VhYeazZf/T+ryYItvdLKu9vHatqkUqHGjDMrdEPOykiqC2iEpaCFTS+3iL/21CYiJuKdRbniw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/types': 27.1.0 + '@jest/types': 27.1.1 jest-regex-util: 27.0.6 - jest-snapshot: 27.1.0 + jest-snapshot: 27.1.1 transitivePeerDependencies: - supports-color dev: true - /jest-resolve/27.1.0: - resolution: {integrity: sha512-TXvzrLyPg0vLOwcWX38ZGYeEztSEmW+cQQKqc4HKDUwun31wsBXwotRlUz4/AYU/Fq4GhbMd/ileIWZEtcdmIA==} + /jest-resolve/27.1.1: + resolution: {integrity: sha512-M41YFmWhvDVstwe7XuV21zynOiBLJB5Sk0GrIsYYgTkjfEWNLVXDjAyq1W7PHseaYNOxIc0nOGq/r5iwcZNC1A==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/types': 27.1.0 + '@jest/types': 27.1.1 chalk: 4.1.2 escalade: 3.1.1 graceful-fs: 4.2.8 - jest-haste-map: 27.1.0 - jest-pnp-resolver: 1.2.2_jest-resolve@27.1.0 - jest-util: 27.1.0 - jest-validate: 27.1.0 + jest-haste-map: 27.1.1 + jest-pnp-resolver: 1.2.2_jest-resolve@27.1.1 + jest-util: 27.1.1 + jest-validate: 27.1.1 resolve: 1.20.0 slash: 3.0.0 dev: true - /jest-runner/27.1.0: - resolution: {integrity: sha512-ZWPKr9M5w5gDplz1KsJ6iRmQaDT/yyAFLf18fKbb/+BLWsR1sCNC2wMT0H7pP3gDcBz0qZ6aJraSYUNAGSJGaw==} + /jest-runner/27.1.1: + resolution: {integrity: sha512-lP3MBNQhg75/sQtVkC8dsAQZumvy3lHK/YIwYPfEyqGIX1qEcnYIRxP89q0ZgC5ngvi1vN2P5UFHszQxguWdng==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/console': 27.1.0 - '@jest/environment': 27.1.0 - '@jest/test-result': 27.1.0 - '@jest/transform': 27.1.0 - '@jest/types': 27.1.0 - '@types/node': 14.17.14 + '@jest/console': 27.1.1 + '@jest/environment': 27.1.1 + '@jest/test-result': 27.1.1 + '@jest/transform': 27.1.1 + '@jest/types': 27.1.1 + '@types/node': 16.9.1 chalk: 4.1.2 emittery: 0.8.1 exit: 0.1.2 graceful-fs: 4.2.8 jest-docblock: 27.0.6 - jest-environment-jsdom: 27.1.0 - jest-environment-node: 27.1.0 - jest-haste-map: 27.1.0 - jest-leak-detector: 27.1.0 - jest-message-util: 27.1.0 - jest-resolve: 27.1.0 - jest-runtime: 27.1.0 - jest-util: 27.1.0 - jest-worker: 27.1.0 - source-map-support: 0.5.19 + jest-environment-jsdom: 27.1.1 + jest-environment-node: 27.1.1 + jest-haste-map: 27.1.1 + jest-leak-detector: 27.1.1 + jest-message-util: 27.1.1 + jest-resolve: 27.1.1 + jest-runtime: 27.1.1 + jest-util: 27.1.1 + jest-worker: 27.1.1 + source-map-support: 0.5.20 throat: 6.0.1 transitivePeerDependencies: - bufferutil @@ -4518,18 +5013,18 @@ packages: - utf-8-validate dev: true - /jest-runtime/27.1.0: - resolution: {integrity: sha512-okiR2cpGjY0RkWmUGGado6ETpFOi9oG3yV0CioYdoktkVxy5Hv0WRLWnJFuArSYS8cHMCNcceUUMGiIfgxCO9A==} + /jest-runtime/27.1.1: + resolution: {integrity: sha512-FEwy+tSzmsvuKaQpyYsUyk31KG5vMmA2r2BSTHgv0yNfcooQdm2Ke91LM9Ud8D3xz8CLDHJWAI24haMFTwrsPg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/console': 27.1.0 - '@jest/environment': 27.1.0 - '@jest/fake-timers': 27.1.0 - '@jest/globals': 27.1.0 + '@jest/console': 27.1.1 + '@jest/environment': 27.1.1 + '@jest/fake-timers': 27.1.1 + '@jest/globals': 27.1.1 '@jest/source-map': 27.0.6 - '@jest/test-result': 27.1.0 - '@jest/transform': 27.1.0 - '@jest/types': 27.1.0 + '@jest/test-result': 27.1.1 + '@jest/transform': 27.1.1 + '@jest/types': 27.1.1 '@types/yargs': 16.0.4 chalk: 4.1.2 cjs-module-lexer: 1.2.2 @@ -4538,14 +5033,14 @@ packages: exit: 0.1.2 glob: 7.1.7 graceful-fs: 4.2.8 - jest-haste-map: 27.1.0 - jest-message-util: 27.1.0 - jest-mock: 27.1.0 + jest-haste-map: 27.1.1 + jest-message-util: 27.1.1 + jest-mock: 27.1.1 jest-regex-util: 27.0.6 - jest-resolve: 27.1.0 - jest-snapshot: 27.1.0 - jest-util: 27.1.0 - jest-validate: 27.1.0 + jest-resolve: 27.1.1 + jest-snapshot: 27.1.1 + jest-util: 27.1.1 + jest-validate: 27.1.1 slash: 3.0.0 strip-bom: 4.0.0 yargs: 16.2.0 @@ -4557,90 +5052,90 @@ packages: resolution: {integrity: sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@types/node': 14.17.14 + '@types/node': 16.9.1 graceful-fs: 4.2.8 dev: true - /jest-snapshot/27.1.0: - resolution: {integrity: sha512-eaeUBoEjuuRwmiRI51oTldUsKOohB1F6fPqWKKILuDi/CStxzp2IWekVUXbuHHoz5ik33ioJhshiHpgPFbYgcA==} + /jest-snapshot/27.1.1: + resolution: {integrity: sha512-Wi3QGiuRFo3lU+EbQmZnBOks0CJyAMPHvYoG7iJk00Do10jeOyuOEO0Jfoaoun8+8TDv+Nzl7Aswir/IK9+1jg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@babel/core': 7.15.5 '@babel/generator': 7.15.4 - '@babel/parser': 7.15.5 + '@babel/parser': 7.15.6 '@babel/plugin-syntax-typescript': 7.14.5_@babel+core@7.15.5 '@babel/traverse': 7.15.4 - '@babel/types': 7.15.4 - '@jest/transform': 27.1.0 - '@jest/types': 27.1.0 + '@babel/types': 7.15.6 + '@jest/transform': 27.1.1 + '@jest/types': 27.1.1 '@types/babel__traverse': 7.14.2 '@types/prettier': 2.3.2 babel-preset-current-node-syntax: 1.0.1_@babel+core@7.15.5 chalk: 4.1.2 - expect: 27.1.0 + expect: 27.1.1 graceful-fs: 4.2.8 - jest-diff: 27.1.0 + jest-diff: 27.1.1 jest-get-type: 27.0.6 - jest-haste-map: 27.1.0 - jest-matcher-utils: 27.1.0 - jest-message-util: 27.1.0 - jest-resolve: 27.1.0 - jest-util: 27.1.0 + jest-haste-map: 27.1.1 + jest-matcher-utils: 27.1.1 + jest-message-util: 27.1.1 + jest-resolve: 27.1.1 + jest-util: 27.1.1 natural-compare: 1.4.0 - pretty-format: 27.1.0 + pretty-format: 27.1.1 semver: 7.3.5 transitivePeerDependencies: - supports-color dev: true - /jest-util/27.1.0: - resolution: {integrity: sha512-edSLD2OneYDKC6gZM1yc+wY/877s/fuJNoM1k3sOEpzFyeptSmke3SLnk1dDHk9CgTA+58mnfx3ew3J11Kes/w==} + /jest-util/27.1.1: + resolution: {integrity: sha512-zf9nEbrASWn2mC/L91nNb0K+GkhFvi4MP6XJG2HqnHzHvLYcs7ou/In68xYU1i1dSkJlrWcYfWXQE8nVR+nbOA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/types': 27.1.0 - '@types/node': 14.17.14 + '@jest/types': 27.1.1 + '@types/node': 16.9.1 chalk: 4.1.2 graceful-fs: 4.2.8 is-ci: 3.0.0 picomatch: 2.3.0 dev: true - /jest-validate/27.1.0: - resolution: {integrity: sha512-QiJ+4XuSuMsfPi9zvdO//IrSRSlG6ybJhOpuqYSsuuaABaNT84h0IoD6vvQhThBOKT+DIKvl5sTM0l6is9+SRA==} + /jest-validate/27.1.1: + resolution: {integrity: sha512-N5Er5FKav/8m2dJwn7BGnZwnoD1BSc8jx5T+diG2OvyeugvZDhPeAt5DrNaGkkaKCrSUvuE7A5E4uHyT7Vj0Mw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/types': 27.1.0 + '@jest/types': 27.1.1 camelcase: 6.2.0 chalk: 4.1.2 jest-get-type: 27.0.6 leven: 3.1.0 - pretty-format: 27.1.0 + pretty-format: 27.1.1 dev: true - /jest-watcher/27.1.0: - resolution: {integrity: sha512-ivaWTrA46aHWdgPDgPypSHiNQjyKnLBpUIHeBaGg11U+pDzZpkffGlcB1l1a014phmG0mHgkOHtOgiqJQM6yKQ==} + /jest-watcher/27.1.1: + resolution: {integrity: sha512-XQzyHbxziDe+lZM6Dzs40fEt4q9akOGwitJnxQasJ9WG0bv3JGiRlsBgjw13znGapeMtFaEsyhL0Cl04IbaoWQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/test-result': 27.1.0 - '@jest/types': 27.1.0 - '@types/node': 14.17.14 + '@jest/test-result': 27.1.1 + '@jest/types': 27.1.1 + '@types/node': 14.17.15 ansi-escapes: 4.3.2 chalk: 4.1.2 - jest-util: 27.1.0 + jest-util: 27.1.1 string-length: 4.0.2 dev: true - /jest-worker/27.1.0: - resolution: {integrity: sha512-mO4PHb2QWLn9yRXGp7rkvXLAYuxwhq1ZYUo0LoDhg8wqvv4QizP1ZWEJOeolgbEgAWZLIEU0wsku8J+lGWfBhg==} + /jest-worker/27.1.1: + resolution: {integrity: sha512-XJKCL7tu+362IUYTWvw8+3S75U7qMiYiRU6u5yqscB48bTvzwN6i8L/7wVTXiFLwkRsxARNM7TISnTvcgv9hxA==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 14.17.14 + '@types/node': 16.9.1 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest/27.1.0_ts-node@10.2.1: - resolution: {integrity: sha512-pSQDVwRSwb109Ss13lcMtdfS9r8/w2Zz8+mTUA9VORD66GflCdl8nUFCqM96geOD2EBwWCNURrNAfQsLIDNBdg==} + /jest/27.1.1_ts-node@10.2.1: + resolution: {integrity: sha512-LFTEZOhoZNR/2DQM3OCaK5xC6c55c1OWhYh0njRsoHX0qd6x4nkcgenkSH0JKjsAGMTmmJAoL7/oqYHMfwhruA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} hasBin: true peerDependencies: @@ -4649,9 +5144,9 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 27.1.0_ts-node@10.2.1 + '@jest/core': 27.1.1_ts-node@10.2.1 import-local: 3.0.2 - jest-cli: 27.1.0_ts-node@10.2.1 + jest-cli: 27.1.1_ts-node@10.2.1 transitivePeerDependencies: - bufferutil - canvas @@ -4663,15 +5158,14 @@ packages: /jmespath/0.15.0: resolution: {integrity: sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc=} engines: {node: '>= 0.6.0'} - dev: true + dev: false /js-stringify/1.0.2: resolution: {integrity: sha1-Fzb939lyTyijaCrcYjCufk6Weds=} - dev: true + dev: false /js-tokens/4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - dev: true /js-yaml/3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} @@ -4681,6 +5175,12 @@ packages: esprima: 4.0.1 dev: true + /js-yaml/4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + /jsdom/16.7.0: resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} engines: {node: '>=10'} @@ -4691,7 +5191,7 @@ packages: optional: true dependencies: abab: 2.0.5 - acorn: 8.4.1 + acorn: 8.5.0 acorn-globals: 6.0.0 cssom: 0.4.4 cssstyle: 2.3.0 @@ -4715,7 +5215,7 @@ packages: whatwg-encoding: 1.0.5 whatwg-mimetype: 2.3.0 whatwg-url: 8.7.0 - ws: 7.5.4 + ws: 7.5.5 xml-name-validator: 3.0.0 transitivePeerDependencies: - bufferutil @@ -4735,7 +5235,6 @@ packages: /json-buffer/3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - dev: true /json-parse-better-errors/1.0.2: resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} @@ -4743,7 +5242,6 @@ packages: /json-parse-even-better-errors/2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - dev: true /json-schema-traverse/0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -4759,7 +5257,6 @@ packages: /json-stringify-safe/5.0.1: resolution: {integrity: sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=} - dev: true /json5/2.2.0: resolution: {integrity: sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==} @@ -4767,6 +5264,11 @@ packages: hasBin: true dependencies: minimist: 1.2.5 + + /jsonfile/4.0.0: + resolution: {integrity: sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=} + optionalDependencies: + graceful-fs: 4.2.8 dev: true /jsonfile/6.1.0: @@ -4775,7 +5277,6 @@ packages: universalify: 2.0.0 optionalDependencies: graceful-fs: 4.2.8 - dev: true /jsonparse/1.3.1: resolution: {integrity: sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=} @@ -4787,7 +5288,7 @@ packages: dependencies: is-promise: 2.2.2 promise: 7.3.1 - dev: true + dev: false /jsx-ast-utils/3.2.0: resolution: {integrity: sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q==} @@ -4807,7 +5308,6 @@ packages: resolution: {integrity: sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA==} dependencies: json-buffer: 3.0.1 - dev: true /kind-of/6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} @@ -4837,7 +5337,6 @@ packages: dependencies: prelude-ls: 1.1.2 type-check: 0.3.2 - dev: true /levn/0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} @@ -4847,13 +5346,12 @@ packages: type-check: 0.4.0 dev: true - /libphonenumber-js/1.9.26: - resolution: {integrity: sha512-j0brmDsZLSKJCrcli1HjzHYP29VOf5P/Yz+xxe7WmKTe+0XVnKa0J+UEAaT96D21w1mfLPhlm0ZXBQ13EVF+XQ==} + /libphonenumber-js/1.9.32: + resolution: {integrity: sha512-sXuNLzTU/lNUZ78eWUi5JvqaHAhwBMuMT17613EjLZl/ejIoDe0EV225Xhw4vuZ6FcqkiwsF8qHcOyyn1dBEWQ==} dev: false /lines-and-columns/1.1.6: resolution: {integrity: sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=} - dev: true /lint-staged/11.1.2: resolution: {integrity: sha512-6lYpNoA9wGqkL6Hew/4n1H6lRqF3qCsujVT0Oq5Z4hiSAM7S6NksPJ3gnr7A7R52xCtiZMcEUNNQ6d6X5Bvh9w==} @@ -4884,7 +5382,7 @@ packages: enquirer: '>= 2.3.0 < 3' dependencies: cli-truncate: 2.1.0 - colorette: 1.3.0 + colorette: 1.4.0 enquirer: 2.3.6 log-update: 4.0.0 p-map: 4.0.0 @@ -4903,6 +5401,15 @@ packages: strip-bom: 3.0.0 dev: true + /load-json-file/6.2.0: + resolution: {integrity: sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==} + engines: {node: '>=8'} + dependencies: + graceful-fs: 4.2.8 + parse-json: 5.2.0 + strip-bom: 4.0.0 + type-fest: 0.6.0 + /locate-path/2.0.0: resolution: {integrity: sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=} engines: {node: '>=4'} @@ -4971,7 +5478,6 @@ packages: /lodash/4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - dev: true /log-symbols/4.1.0: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} @@ -5028,7 +5534,7 @@ packages: /makeerror/1.0.11: resolution: {integrity: sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=} dependencies: - tmpl: 1.0.4 + tmpl: 1.0.5 dev: true /map-obj/1.0.1: @@ -5064,6 +5570,23 @@ packages: /media-typer/0.3.0: resolution: {integrity: sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=} engines: {node: '>= 0.6'} + + /meow/10.1.1: + resolution: {integrity: sha512-uzOAEBTGujHAD6bVzIQQk5kDTgatxmpVmr1pj9QhwsHLEG2AiB+9F08/wmjrZIk4h5pWxERd7+jqGZywYx3ZFw==} + engines: {node: '>=12.17'} + dependencies: + '@types/minimist': 1.2.2 + camelcase-keys: 7.0.0 + decamelize: 5.0.0 + decamelize-keys: 1.1.0 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 3.0.3 + read-pkg-up: 8.0.0 + redent: 4.0.0 + trim-newlines: 4.0.2 + type-fest: 1.4.0 + yargs-parser: 20.2.9 dev: true /meow/8.1.2: @@ -5085,7 +5608,6 @@ packages: /merge-descriptors/1.0.1: resolution: {integrity: sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=} - dev: true /merge-stream/2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -5094,12 +5616,10 @@ packages: /merge2/1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - dev: true /methods/1.1.2: resolution: {integrity: sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=} engines: {node: '>= 0.6'} - dev: true /micromatch/4.0.4: resolution: {integrity: sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==} @@ -5107,25 +5627,21 @@ packages: dependencies: braces: 3.0.2 picomatch: 2.3.0 - dev: true /mime-db/1.49.0: resolution: {integrity: sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==} engines: {node: '>= 0.6'} - dev: true /mime-types/2.1.32: resolution: {integrity: sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==} engines: {node: '>= 0.6'} dependencies: mime-db: 1.49.0 - dev: true /mime/1.6.0: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} engines: {node: '>=4'} hasBin: true - dev: true /mime/2.5.2: resolution: {integrity: sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==} @@ -5148,11 +5664,6 @@ packages: engines: {node: '>=8'} dev: false - /mimic-response/3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} - engines: {node: '>=10'} - dev: true - /min-indent/1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} @@ -5187,11 +5698,9 @@ packages: /ms/2.0.0: resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=} - dev: true /ms/2.1.1: resolution: {integrity: sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==} - dev: true /ms/2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} @@ -5200,10 +5709,43 @@ packages: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: true + /multi-semantic-release/2.8.5: + resolution: {integrity: sha512-EYjehCXMQXYn0yum+ONWoyzIdku/2DrAvrqInRVUU0puJxG/nX+VQeW/z7Nyrt725pKP2+LovaBfDBbPcJIDCA==} + engines: {node: '>=10.18', yarn: '>=1.0.0'} + hasBin: true + dependencies: + '@manypkg/get-packages': 1.1.1 + blork: 9.3.0 + cosmiconfig: 7.0.1 + debug: 4.3.2 + detect-indent: 6.1.0 + detect-newline: 3.1.0 + execa: 4.1.0 + get-stream: 6.0.1 + git-log-parser: 1.2.0 + globby: 11.0.2 + lodash: 4.17.21 + meow: 8.1.2 + promise-events: 0.2.4 + semantic-release: 17.4.7 + semver: 7.3.5 + signale: 1.4.0 + stream-buffers: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + /multimap/1.1.0: resolution: {integrity: sha512-0ZIR9PasPxGXmRsEF8jsDzndzHDj7tIav+JUmvIFB/WHswliFnquxECT/De7GR4yg99ky/NlRKJT82G1y271bw==} dev: true + /multistream/4.1.0: + resolution: {integrity: sha512-J1XDiAmmNpRCBfIWJv+n0ymC4ABcf/Pl+5YvC5B/D2f/2+8PtHvCNxMPKiQcZyi922Hq69J2YOpb1pTywfifyw==} + dependencies: + once: 1.4.0 + readable-stream: 3.6.0 + dev: false + /napi-build-utils/1.0.2: resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} dev: false @@ -5212,10 +5754,20 @@ packages: resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=} dev: true + /ndjson/2.0.0: + resolution: {integrity: sha512-nGl7LRGrzugTtaFcJMhLbpzJM6XdivmbkdlaGcrk/LXg2KL/YBC6z1g70xh0/al+oFuVFP8N8kiWRucmeEH/qQ==} + engines: {node: '>=10'} + hasBin: true + dependencies: + json-stringify-safe: 5.0.1 + minimist: 1.2.5 + readable-stream: 3.6.0 + split2: 3.2.2 + through2: 4.0.2 + /negotiator/0.6.2: resolution: {integrity: sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==} engines: {node: '>= 0.6'} - dev: true /neo-async/2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} @@ -5241,10 +5793,9 @@ packages: lodash: 4.17.21 dev: true - /node-fetch/2.6.1: - resolution: {integrity: sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==} + /node-fetch/2.6.2: + resolution: {integrity: sha512-aLoxToI6RfZ+0NOjmWAgn9+LEd30YCkJKFSyWacNZdEKTit/ZMcKjGkTRo8uWEsnIb/hfKecNPEbln02PdWbcA==} engines: {node: 4.x || >=6.0.0} - dev: true /node-int64/0.4.0: resolution: {integrity: sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=} @@ -5277,6 +5828,10 @@ packages: update-notifier: 4.1.3 dev: true + /noop-logger/0.1.1: + resolution: {integrity: sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=} + dev: false + /nopt/1.0.10: resolution: {integrity: sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=} hasBin: true @@ -5306,7 +5861,6 @@ packages: /normalize-path/3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - dev: true /normalize-url/4.5.1: resolution: {integrity: sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==} @@ -5325,8 +5879,8 @@ packages: path-key: 3.1.1 dev: true - /npm/7.22.0: - resolution: {integrity: sha512-HJnjTCrGGnacPMCSnrxuHGf2H4VdrY7hwTAK1RwByg0K96KIuTR4QNioFW+bnc/pW0uwpk9lLsDf4BeEQhTv2Q==} + /npm/7.23.0: + resolution: {integrity: sha512-m7WFTwGfiBX+jL4ObX7rIDkug/hG/Jn8vZUjKw4WS8CqMjVydHiWTARLDIll7LtHu5i7ZHBnqXZbL2S73U5p6A==} engines: {node: '>=10'} hasBin: true dev: true @@ -5375,6 +5929,7 @@ packages: - node-gyp - nopt - npm-audit-report + - npm-install-checks - npm-package-arg - npm-pick-manifest - npm-profile @@ -5447,7 +6002,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.3 - es-abstract: 1.18.5 + es-abstract: 1.18.6 dev: true /object.fromentries/2.0.4: @@ -5456,7 +6011,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.3 - es-abstract: 1.18.5 + es-abstract: 1.18.6 has: 1.0.3 dev: true @@ -5466,7 +6021,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.3 - es-abstract: 1.18.5 + es-abstract: 1.18.6 dev: true /on-finished/2.3.0: @@ -5474,7 +6029,6 @@ packages: engines: {node: '>= 0.8'} dependencies: ee-first: 1.1.1 - dev: true /once/1.4.0: resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} @@ -5498,7 +6052,6 @@ packages: prelude-ls: 1.1.2 type-check: 0.3.2 word-wrap: 1.2.3 - dev: true /optionator/0.9.1: resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} @@ -5517,11 +6070,6 @@ packages: engines: {node: '>=6'} dev: true - /p-cancelable/2.1.1: - resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} - engines: {node: '>=8'} - dev: true - /p-each-series/2.2.0: resolution: {integrity: sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==} engines: {node: '>=8'} @@ -5532,12 +6080,10 @@ packages: engines: {node: '>=8'} dependencies: p-map: 2.1.0 - dev: true /p-is-promise/3.0.0: resolution: {integrity: sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==} engines: {node: '>=8'} - dev: true /p-limit/1.3.0: resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} @@ -5584,7 +6130,6 @@ packages: /p-map/2.1.0: resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} engines: {node: '>=6'} - dev: true /p-map/4.0.0: resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} @@ -5649,7 +6194,10 @@ packages: error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.1.6 - dev: true + + /parse-ms/2.1.0: + resolution: {integrity: sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==} + engines: {node: '>=6'} /parse5/6.0.1: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} @@ -5658,7 +6206,6 @@ packages: /parseurl/1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} - dev: true /path-exists/3.0.0: resolution: {integrity: sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=} @@ -5680,29 +6227,39 @@ packages: engines: {node: '>=8'} dev: true + /path-name/1.0.0: + resolution: {integrity: sha1-jKBjpj3nmC36lXYO2v/RAhRJTyQ=} + /path-parse/1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - dev: true + + /path-temp/2.0.0: + resolution: {integrity: sha512-92olbatybjsHTGB2CUnAM7s0mU/27gcMfLNA7t09UftndUdxywlQKur3fzXEPpfLrgZD3I2Bt8+UmiL7YDEgXQ==} + engines: {node: '>=8.15'} + dependencies: + unique-string: 2.0.0 /path-to-regexp/0.1.7: resolution: {integrity: sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=} - dev: true /path-type/4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - dev: true /picomatch/2.3.0: resolution: {integrity: sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==} engines: {node: '>=8.6'} - dev: true /pify/3.0.0: resolution: {integrity: sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=} engines: {node: '>=4'} dev: true + /pify/4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + dev: true + /pirates/4.0.1: resolution: {integrity: sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==} engines: {node: '>= 6'} @@ -5725,6 +6282,49 @@ packages: find-up: 4.1.0 dev: true + /pkg-fetch/3.2.3: + resolution: {integrity: sha512-bv9vYANgAZ2Lvxn5Dsq7E0rLqzcqYkV4gnwe2f7oHV9N4SVMfDOIjjFCRuuTltop5EmsOcu7XkQpB5A/pIgC1g==} + hasBin: true + dependencies: + chalk: 4.1.2 + fs-extra: 9.1.0 + https-proxy-agent: 5.0.0 + node-fetch: 2.6.2 + progress: 2.0.3 + semver: 7.3.5 + yargs: 16.2.0 + transitivePeerDependencies: + - supports-color + dev: false + + /pkg/5.3.2: + resolution: {integrity: sha512-78X8Tt71TI11XjkZm/r9shTdFRooFiiRcT8nfYeeOou5VKCkCysQauwAAkJKb5yjfrUhk3CBNL4zv22/iLpdnw==} + hasBin: true + peerDependencies: + node-notifier: '>=9.0.1' + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@babel/parser': 7.13.13 + '@babel/types': 7.13.12 + chalk: 4.1.2 + escodegen: 2.0.0 + fs-extra: 9.1.0 + globby: 11.0.4 + into-stream: 6.0.0 + minimist: 1.2.5 + multistream: 4.1.0 + pkg-fetch: 3.2.3 + prebuild-install: 6.0.1 + progress: 2.0.3 + resolve: 1.20.0 + stream-meter: 1.0.4 + tslib: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + /please-upgrade-node/3.2.0: resolution: {integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==} dependencies: @@ -5736,6 +6336,28 @@ packages: engines: {node: '>=4'} dev: true + /prebuild-install/6.0.1: + resolution: {integrity: sha512-7GOJrLuow8yeiyv75rmvZyeMGzl8mdEX5gY69d6a6bHWmiPevwqFw+tQavhK0EYMaSg3/KD24cWqeQv1EWsqDQ==} + engines: {node: '>=6'} + hasBin: true + dependencies: + detect-libc: 1.0.3 + expand-template: 2.0.3 + github-from-package: 0.0.0 + minimist: 1.2.5 + mkdirp-classic: 0.5.3 + napi-build-utils: 1.0.2 + node-abi: 2.30.1 + noop-logger: 0.1.1 + npmlog: 4.1.2 + pump: 3.0.0 + rc: 1.2.8 + simple-get: 3.1.0 + tar-fs: 2.1.1 + tunnel-agent: 0.6.0 + which-pm-runs: 1.0.0 + dev: false + /prebuild-install/6.1.4: resolution: {integrity: sha512-Z4vpywnK1lBg+zdPCVCsKq0xO66eEV9rWo2zrROGGiRS4JtueBOdlB1FnY8lcy7JsUud/Q3ijUxyWN26Ika0vQ==} engines: {node: '>=6'} @@ -5759,7 +6381,6 @@ packages: /prelude-ls/1.1.2: resolution: {integrity: sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=} engines: {node: '>= 0.8.0'} - dev: true /prelude-ls/1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} @@ -5778,35 +6399,59 @@ packages: fast-diff: 1.2.0 dev: true - /prettier/2.3.2: - resolution: {integrity: sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ==} + /prettier/2.4.0: + resolution: {integrity: sha512-DsEPLY1dE5HF3BxCRBmD4uYZ+5DCbvatnolqTqcxEgKVZnL2kUfyu7b8pPQ5+hTBkdhU9SLUmK0/pHb07RE4WQ==} engines: {node: '>=10.13.0'} hasBin: true dev: true - /pretty-format/27.1.0: - resolution: {integrity: sha512-4aGaud3w3rxAO6OXmK3fwBFQ0bctIOG3/if+jYEFGNGIs0EvuidQm3bZ9mlP2/t9epLNC/12czabfy7TZNSwVA==} + /pretty-bytes/5.6.0: + resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} + engines: {node: '>=6'} + + /pretty-format/27.1.1: + resolution: {integrity: sha512-zdBi/xlstKJL42UH7goQti5Hip/B415w1Mfj+WWWYMBylAYtKESnXGUtVVcMVid9ReVjypCotUV6CEevYPHv2g==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/types': 27.1.0 + '@jest/types': 27.1.1 ansi-regex: 5.0.0 ansi-styles: 5.2.0 react-is: 17.0.2 dev: true + /pretty-ms/7.0.1: + resolution: {integrity: sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==} + engines: {node: '>=10'} + dependencies: + parse-ms: 2.1.0 + + /print-diff/1.0.0: + resolution: {integrity: sha512-tvYT1pVzXxTOMLDRyu6ncaF2LL69d0EAchmGGGJoLc/2GOcnRKcO4PV89l7/s3Er1CpXTgFv7jB4XDgd+yxBjA==} + engines: {node: '>=8.3'} + dependencies: + diff: 4.0.2 + dev: true + + /printable-characters/1.0.42: + resolution: {integrity: sha1-Pxjpd6m9jrN/zE/1ZZ176Qhos9g=} + /process-nextick-args/2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} /progress/2.0.3: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} + + /promise-events/0.2.4: + resolution: {integrity: sha512-GCM6DmJcSCC8XboZIzYJAlADwkIS1P54XFUJQYhB7dpE7rtXPzPrT13dsV4Qm0FMCKptwMTyF8ZCir803RfKzA==} + engines: {node: '>=8.0.0'} dev: true /promise/7.3.1: resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} dependencies: asap: 2.0.6 - dev: true + dev: false /prompts/2.4.1: resolution: {integrity: sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==} @@ -5824,13 +6469,15 @@ packages: react-is: 16.13.1 dev: true + /proto-list/1.2.4: + resolution: {integrity: sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=} + /proxy-addr/2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} dependencies: forwarded: 0.2.0 ipaddr.js: 1.9.1 - dev: true /psl/1.8.0: resolution: {integrity: sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==} @@ -5846,7 +6493,7 @@ packages: constantinople: 4.0.1 js-stringify: 1.0.2 pug-runtime: 3.0.1 - dev: true + dev: false /pug-code-gen/3.0.2: resolution: {integrity: sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==} @@ -5859,11 +6506,11 @@ packages: pug-runtime: 3.0.1 void-elements: 3.1.0 with: 7.0.2 - dev: true + dev: false /pug-error/2.0.0: resolution: {integrity: sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==} - dev: true + dev: false /pug-filters/4.0.0: resolution: {integrity: sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==} @@ -5873,7 +6520,7 @@ packages: pug-error: 2.0.0 pug-walk: 2.0.0 resolve: 1.20.0 - dev: true + dev: false /pug-lexer/5.0.1: resolution: {integrity: sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==} @@ -5881,42 +6528,42 @@ packages: character-parser: 2.2.0 is-expression: 4.0.0 pug-error: 2.0.0 - dev: true + dev: false /pug-linker/4.0.0: resolution: {integrity: sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==} dependencies: pug-error: 2.0.0 pug-walk: 2.0.0 - dev: true + dev: false /pug-load/3.0.0: resolution: {integrity: sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==} dependencies: object-assign: 4.1.1 pug-walk: 2.0.0 - dev: true + dev: false /pug-parser/6.0.0: resolution: {integrity: sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==} dependencies: pug-error: 2.0.0 token-stream: 1.0.0 - dev: true + dev: false /pug-runtime/3.0.1: resolution: {integrity: sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==} - dev: true + dev: false /pug-strip-comments/2.0.0: resolution: {integrity: sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==} dependencies: pug-error: 2.0.0 - dev: true + dev: false /pug-walk/2.0.0: resolution: {integrity: sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==} - dev: true + dev: false /pug/3.0.2: resolution: {integrity: sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==} @@ -5929,7 +6576,7 @@ packages: pug-parser: 6.0.0 pug-runtime: 3.0.1 pug-strip-comments: 2.0.0 - dev: true + dev: false /pump/3.0.0: resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} @@ -5939,7 +6586,7 @@ packages: /punycode/1.3.2: resolution: {integrity: sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=} - dev: true + dev: false /punycode/2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} @@ -5968,17 +6615,15 @@ packages: /qs/6.7.0: resolution: {integrity: sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==} engines: {node: '>=0.6'} - dev: true /querystring/0.2.0: resolution: {integrity: sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=} engines: {node: '>=0.4.x'} deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. - dev: true + dev: false /queue-microtask/1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: true /quick-lru/4.0.1: resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} @@ -5990,10 +6635,12 @@ packages: engines: {node: '>=10'} dev: true + /ramda/0.27.1: + resolution: {integrity: sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw==} + /range-parser/1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} - dev: true /raw-body/2.4.0: resolution: {integrity: sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==} @@ -6003,7 +6650,6 @@ packages: http-errors: 1.7.2 iconv-lite: 0.4.24 unpipe: 1.0.0 - dev: true /rc/1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} @@ -6031,6 +6677,15 @@ packages: type-fest: 0.8.1 dev: true + /read-pkg-up/8.0.0: + resolution: {integrity: sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==} + engines: {node: '>=12'} + dependencies: + find-up: 5.0.0 + read-pkg: 6.0.0 + type-fest: 1.4.0 + dev: true + /read-pkg/5.2.0: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} @@ -6041,6 +6696,33 @@ packages: type-fest: 0.6.0 dev: true + /read-pkg/6.0.0: + resolution: {integrity: sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==} + engines: {node: '>=12'} + dependencies: + '@types/normalize-package-data': 2.4.1 + normalize-package-data: 3.0.3 + parse-json: 5.2.0 + type-fest: 1.4.0 + dev: true + + /read-yaml-file/1.1.0: + resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} + engines: {node: '>=6'} + dependencies: + graceful-fs: 4.2.8 + js-yaml: 3.14.1 + pify: 4.0.1 + strip-bom: 3.0.0 + dev: true + + /read-yaml-file/2.1.0: + resolution: {integrity: sha512-UkRNRIwnhG+y7hpqnycCL/xbTk7+ia9VuVTC0S+zVbwd65DI9eUpRMfsWIGrCWxTU/mi+JW8cHQCrv+zfCbEPQ==} + engines: {node: '>=10.13'} + dependencies: + js-yaml: 4.1.0 + strip-bom: 4.0.0 + /readable-stream/2.3.7: resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} dependencies: @@ -6067,6 +6749,10 @@ packages: picomatch: 2.3.0 dev: true + /realpath-missing/1.1.0: + resolution: {integrity: sha512-wnWtnywepjg/eHIgWR97R7UuM5i+qHLA195qdN9UPKvcMqfn60+67S8sPPW3vDlSEfYHoFkKU8IvpCNty3zQvQ==} + engines: {node: '>=10'} + /redent/3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} @@ -6075,6 +6761,14 @@ packages: strip-indent: 3.0.0 dev: true + /redent/4.0.0: + resolution: {integrity: sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==} + engines: {node: '>=12'} + dependencies: + indent-string: 5.0.0 + strip-indent: 4.0.0 + dev: true + /redeyed/2.1.1: resolution: {integrity: sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs=} dependencies: @@ -6101,6 +6795,10 @@ packages: resolution: {integrity: sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==} dev: false + /regenerator-runtime/0.13.9: + resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==} + dev: true + /regexp-tree/0.1.23: resolution: {integrity: sha512-+7HWfb4Bvu8Rs2eQTUIpX9I/PlQkYOuTNbRpKLJlQpSgwSkzFYh+pUj0gtvglnOZLKB6YgnIgRuJ2/IlpL48qw==} hasBin: true @@ -6136,7 +6834,6 @@ packages: /require-directory/2.1.1: resolution: {integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I=} engines: {node: '>=0.10.0'} - dev: true /require-from-string/2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} @@ -6148,10 +6845,6 @@ packages: engines: {node: '>=0.10.5'} dev: true - /resolve-alpn/1.2.1: - resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} - dev: true - /resolve-cwd/3.0.0: resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} engines: {node: '>=8'} @@ -6181,7 +6874,6 @@ packages: dependencies: is-core-module: 2.6.0 path-parse: 1.0.7 - dev: true /resolve/2.0.0-next.3: resolution: {integrity: sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==} @@ -6196,12 +6888,6 @@ packages: lowercase-keys: 1.0.1 dev: true - /responselike/2.0.0: - resolution: {integrity: sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==} - dependencies: - lowercase-keys: 2.0.0 - dev: true - /restore-cursor/3.1.0: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} @@ -6223,7 +6909,10 @@ packages: /reusify/1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: true + + /right-pad/1.0.1: + resolution: {integrity: sha1-jKCMLLtbVedNr6lr9/0aJ9VoyNA=} + engines: {node: '>= 0.10'} /rimraf/3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} @@ -6236,7 +6925,6 @@ packages: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 - dev: true /rxjs/6.6.7: resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} @@ -6245,6 +6933,11 @@ packages: tslib: 1.14.1 dev: true + /rxjs/7.3.0: + resolution: {integrity: sha512-p2yuGIg9S1epc3vrjKf6iVb3RCaAYjYskkO+jHIaV0IjOPlJop4UnodOoFb2xeNwlguqLYvGw1b1McillYb5Gw==} + dependencies: + tslib: 2.1.0 + /safe-buffer/5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -6265,11 +6958,10 @@ packages: /safer-buffer/2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: true /sax/1.2.1: resolution: {integrity: sha1-e45lYZCyKOgaZq6nSEgNgozS03o=} - dev: true + dev: false /saxes/5.0.1: resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} @@ -6326,8 +7018,8 @@ packages: semver: 6.3.0 dev: true - /semver-regex/3.1.2: - resolution: {integrity: sha512-bXWyL6EAKOJa81XG1OZ/Yyuq+oT0b2YLlxx7c+mrdYPaPbnj6WgVULXhinMIeZGufuUBu/eVRqXEhiv4imfwxA==} + /semver-regex/3.1.3: + resolution: {integrity: sha512-Aqi54Mk9uYTjVexLnR67rTyBusmwd04cLkHy9hNvk3+G3nT2Oyg7E0l4XVbOaNwIvQ3hHeYxGcyEy+mKreyBFQ==} engines: {node: '>=8'} dev: true @@ -6364,7 +7056,6 @@ packages: on-finished: 2.3.0 range-parser: 1.2.1 statuses: 1.5.0 - dev: true /serve-static/1.14.1: resolution: {integrity: sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==} @@ -6374,7 +7065,6 @@ packages: escape-html: 1.0.3 parseurl: 1.3.3 send: 0.17.1 - dev: true /set-blocking/2.0.0: resolution: {integrity: sha1-BF+XgtARrppoA93TgrJDkrPYkPc=} @@ -6382,10 +7072,9 @@ packages: /setprototypeof/1.1.1: resolution: {integrity: sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==} - dev: true - /sharp/0.29.0: - resolution: {integrity: sha512-mdN1Up0eN+SwyForPls59dWO0nx64J1XRQYy5ZiKSADAccGYCB10UAGJHSVG9VObzJdhHqrVJzQcq6gx8USyoA==} + /sharp/0.29.1: + resolution: {integrity: sha512-DpgdAny9TuS+oWCQ7MRS8XyY9x6q1+yW3a5wNx0J3HrGuB/Jot/8WcT+lElHY9iJu2pwtegSGxqMaqFiMhs4rQ==} engines: {node: '>=12.13.0'} requiresBuild: true dependencies: @@ -6456,7 +7145,6 @@ packages: /slash/3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - dev: true /slice-ansi/3.0.0: resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} @@ -6476,8 +7164,14 @@ packages: is-fullwidth-code-point: 3.0.0 dev: true - /source-map-support/0.5.19: - resolution: {integrity: sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==} + /sort-keys/4.2.0: + resolution: {integrity: sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==} + engines: {node: '>=8'} + dependencies: + is-plain-obj: 2.1.0 + + /source-map-support/0.5.20: + resolution: {integrity: sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 @@ -6491,7 +7185,6 @@ packages: /source-map/0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - dev: true /source-map/0.7.3: resolution: {integrity: sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==} @@ -6540,7 +7233,6 @@ packages: resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} dependencies: readable-stream: 3.6.0 - dev: true /sprintf-js/1.0.3: resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=} @@ -6553,6 +7245,12 @@ packages: escape-string-regexp: 2.0.0 dev: true + /stacktracey/1.2.127: + resolution: {integrity: sha512-tj3BObW/adLIAQGGQ0flRTADrCv6KQ4VgncUO8NrQ7pk/H6pGMtXxQLjZYw66eqPDTC1DHtnBwGSmG+Wx/D/kg==} + dependencies: + as-table: 1.0.55 + get-source: 1.0.42 + /standard-as-callback/2.1.0: resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} dev: true @@ -6560,6 +7258,10 @@ packages: /statuses/1.5.0: resolution: {integrity: sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=} engines: {node: '>= 0.6'} + + /stream-buffers/3.0.2: + resolution: {integrity: sha512-DQi1h8VEBA/lURbSwFtEHnSTb9s2/pwLEaFuNhXwy1Dx3Sa0lOuYT2yNUr4/j2fs8oCAMANtrZ5OrPZtyVs3MQ==} + engines: {node: '>= 0.10.0'} dev: true /stream-combiner2/1.1.1: @@ -6569,6 +7271,12 @@ packages: readable-stream: 2.3.7 dev: true + /stream-meter/1.0.4: + resolution: {integrity: sha1-Uq+Vql6nYKJJFxZwTb/5D3Ov3R0=} + dependencies: + readable-stream: 2.3.7 + dev: false + /string-argv/0.3.1: resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} engines: {node: '>=0.6.19'} @@ -6580,7 +7288,6 @@ packages: dependencies: char-regex: 1.0.2 strip-ansi: 6.0.0 - dev: true /string-width/1.0.2: resolution: {integrity: sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=} @@ -6598,7 +7305,6 @@ packages: emoji-regex: 7.0.3 is-fullwidth-code-point: 2.0.0 strip-ansi: 5.2.0 - dev: true /string-width/4.2.2: resolution: {integrity: sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==} @@ -6607,14 +7313,13 @@ packages: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.0 - dev: true /string.prototype.matchall/4.0.5: resolution: {integrity: sha512-Z5ZaXO0svs0M2xd/6By3qpeKpLKd9mO4v4q3oMEQrk8Ck4xOD5d5XeBOOjGrmVZZ/AHB1S0CgG4N5r1G9N3E2Q==} dependencies: call-bind: 1.0.2 define-properties: 1.1.3 - es-abstract: 1.18.5 + es-abstract: 1.18.6 get-intrinsic: 1.1.1 has-symbols: 1.0.2 internal-slot: 1.0.3 @@ -6667,14 +7372,12 @@ packages: engines: {node: '>=6'} dependencies: ansi-regex: 4.1.0 - dev: true /strip-ansi/6.0.0: resolution: {integrity: sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==} engines: {node: '>=8'} dependencies: ansi-regex: 5.0.0 - dev: true /strip-bom/3.0.0: resolution: {integrity: sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=} @@ -6684,7 +7387,6 @@ packages: /strip-bom/4.0.0: resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} engines: {node: '>=8'} - dev: true /strip-final-newline/2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} @@ -6698,6 +7400,13 @@ packages: min-indent: 1.0.1 dev: true + /strip-indent/4.0.0: + resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} + engines: {node: '>=12'} + dependencies: + min-indent: 1.0.1 + dev: true + /strip-json-comments/2.0.1: resolution: {integrity: sha1-PFMZQukIwml8DsNEhYwobHygpgo=} engines: {node: '>=0.10.0'} @@ -6714,7 +7423,7 @@ packages: component-emitter: 1.3.0 cookiejar: 2.1.2 debug: 4.3.2 - fast-safe-stringify: 2.0.8 + fast-safe-stringify: 2.1.1 form-data: 3.0.1 formidable: 1.2.2 methods: 1.1.2 @@ -6741,14 +7450,12 @@ packages: engines: {node: '>=4'} dependencies: has-flag: 3.0.0 - dev: true /supports-color/7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} dependencies: has-flag: 4.0.0 - dev: true /supports-color/8.1.1: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} @@ -6867,16 +7574,14 @@ packages: resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} dependencies: readable-stream: 3.6.0 - dev: true - /tmpl/1.0.4: - resolution: {integrity: sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=} + /tmpl/1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} dev: true /to-fast-properties/2.0.0: resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=} engines: {node: '>=4'} - dev: true /to-readable-stream/1.0.0: resolution: {integrity: sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==} @@ -6888,16 +7593,14 @@ packages: engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 - dev: true /toidentifier/1.0.0: resolution: {integrity: sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==} engines: {node: '>=0.6'} - dev: true /token-stream/1.0.0: resolution: {integrity: sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ=} - dev: true + dev: false /touch/3.1.0: resolution: {integrity: sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==} @@ -6931,12 +7634,12 @@ packages: engines: {node: '>=8'} dev: true - /trim-off-newlines/1.0.1: - resolution: {integrity: sha1-n5up2e+odkw4dpi8v+sshI8RrbM=} - engines: {node: '>=0.10.0'} + /trim-newlines/4.0.2: + resolution: {integrity: sha512-GJtWyq9InR/2HRiLZgpIKv+ufIKrVrvjQWEj7PxAXNc5dwbNJkqhAUoAGgzRmULAnoOM5EIpveYd3J2VeSAIew==} + engines: {node: '>=12'} dev: true - /ts-jest/27.0.5_d6279bcaf6e2c6aa91a58343d133ee67: + /ts-jest/27.0.5_04e1385bcb7e61957a9335c26551e89f: resolution: {integrity: sha512-lIJApzfTaSSbtlksfFNHkWOzLJuuSm4faFAfo5kvzOiRAuoN4/eKxVJ2zEAho8aecE04qX6K1pAzfH5QHL1/8w==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} hasBin: true @@ -6957,17 +7660,17 @@ packages: '@types/jest': 27.0.1 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 27.1.0_ts-node@10.2.1 - jest-util: 27.1.0 + jest: 27.1.1_ts-node@10.2.1 + jest-util: 27.1.1 json5: 2.2.0 lodash: 4.17.21 make-error: 1.3.6 semver: 7.3.5 - typescript: 4.4.2 + typescript: 4.4.3 yargs-parser: 20.2.9 dev: true - /ts-node/10.2.1_d7d681058e4c969a99d022d4f7844478: + /ts-node/10.2.1_91d7040b2316c81455e367292ad70221: resolution: {integrity: sha512-hCnyOyuGmD5wHleOQX6NIjJtYVIO8bPP8F2acWkB4W06wdlkgyvJtubO/I9NkI88hCFECbsEgoLc0VNkYmcSfw==} engines: {node: '>=12.0.0'} hasBin: true @@ -6987,28 +7690,35 @@ packages: '@tsconfig/node12': 1.0.9 '@tsconfig/node14': 1.0.1 '@tsconfig/node16': 1.0.2 - '@types/node': 14.17.14 - acorn: 8.4.1 - acorn-walk: 8.1.1 + '@types/node': 14.17.15 + acorn: 8.5.0 + acorn-walk: 8.2.0 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 4.4.2 + typescript: 4.4.3 yn: 3.1.1 dev: true /tslib/1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - /tsutils/3.21.0_typescript@4.4.2: + /tslib/2.1.0: + resolution: {integrity: sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==} + + /tslib/2.3.1: + resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==} + dev: false + + /tsutils/3.21.0_typescript@4.4.3: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 4.4.2 + typescript: 4.4.3 dev: true /tsyringe/4.6.0: @@ -7029,7 +7739,6 @@ packages: engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.1.2 - dev: true /type-check/0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} @@ -7056,7 +7765,6 @@ packages: /type-fest/0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} - dev: true /type-fest/0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} @@ -7066,35 +7774,37 @@ packages: /type-fest/0.6.0: resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} engines: {node: '>=8'} - dev: true /type-fest/0.8.1: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} dev: true + /type-fest/1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + dev: true + /type-is/1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} dependencies: media-typer: 0.3.0 mime-types: 2.1.32 - dev: true /typedarray-to-buffer/3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} dependencies: is-typedarray: 1.0.0 - dev: true - /typescript/4.4.2: - resolution: {integrity: sha512-gzP+t5W4hdy4c+68bfcv0t400HVJMMd2+H9B7gae1nQlBzCqvrXX+6GL/b3GAgyTH966pzrZ70/fRjwAtZksSQ==} + /typescript/4.4.3: + resolution: {integrity: sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==} engines: {node: '>=4.2.0'} hasBin: true dev: true - /uglify-js/3.14.1: - resolution: {integrity: sha512-JhS3hmcVaXlp/xSo3PKY5R0JqKs5M3IV+exdLHW99qKvKivPO4Z8qbej6mte17SOPqAOVMjt/XGgWacnFSzM3g==} + /uglify-js/3.14.2: + resolution: {integrity: sha512-rtPMlmcO4agTUfz10CbgJ1k6UAoXM2gWb3GoMPPZB/+/Ackf8lNWk11K4rYi2D0apgoFRLtQOZhb+/iGNJq26A==} engines: {node: '>=0.8.0'} hasBin: true requiresBuild: true @@ -7121,7 +7831,6 @@ packages: engines: {node: '>=8'} dependencies: crypto-random-string: 2.0.0 - dev: true /universal-user-agent/6.0.0: resolution: {integrity: sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==} @@ -7135,12 +7844,10 @@ packages: /universalify/2.0.0: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} - dev: true /unpipe/1.0.0: resolution: {integrity: sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=} engines: {node: '>= 0.8'} - dev: true /update-notifier/4.1.3: resolution: {integrity: sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==} @@ -7183,7 +7890,7 @@ packages: dependencies: punycode: 1.3.2 querystring: 0.2.0 - dev: true + dev: false /util-deprecate/1.0.2: resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=} @@ -7191,13 +7898,12 @@ packages: /utils-merge/1.0.1: resolution: {integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=} engines: {node: '>= 0.4.0'} - dev: true /uuid/3.3.2: resolution: {integrity: sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==} deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. hasBin: true - dev: true + dev: false /v8-compile-cache/2.3.0: resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} @@ -7231,7 +7937,7 @@ packages: /void-elements/3.1.0: resolution: {integrity: sha1-YU9/v42AHwu18GYfWy9XhXUOTwk=} engines: {node: '>=0.10.0'} - dev: true + dev: false /w3c-hr-time/1.0.2: resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} @@ -7291,13 +7997,16 @@ packages: is-symbol: 1.0.4 dev: true + /which-pm-runs/1.0.0: + resolution: {integrity: sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=} + dev: false + /which/2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} hasBin: true dependencies: isexe: 2.0.0 - dev: true /wide-align/1.1.3: resolution: {integrity: sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==} @@ -7310,22 +8019,20 @@ packages: engines: {node: '>=8'} dependencies: string-width: 4.2.2 - dev: true /with/7.0.2: resolution: {integrity: sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==} engines: {node: '>= 10.0.0'} dependencies: - '@babel/parser': 7.15.5 - '@babel/types': 7.15.4 + '@babel/parser': 7.15.6 + '@babel/types': 7.15.6 assert-never: 1.2.1 babel-walk: 3.0.0-canary-5 - dev: true + dev: false /word-wrap/1.2.3: resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} engines: {node: '>=0.10.0'} - dev: true /wordwrap/1.0.0: resolution: {integrity: sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=} @@ -7347,7 +8054,6 @@ packages: ansi-styles: 4.3.0 string-width: 4.2.2 strip-ansi: 6.0.0 - dev: true /wrappy/1.0.2: resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} @@ -7359,10 +8065,28 @@ packages: is-typedarray: 1.0.0 signal-exit: 3.0.3 typedarray-to-buffer: 3.1.5 + + /write-json-file/4.3.0: + resolution: {integrity: sha512-PxiShnxf0IlnQuMYOPPhPkhExoCQuTUNPOa/2JWCYTmBquU9njyyDuwRKN26IZBlp4yn1nt+Agh2HOOBl+55HQ==} + engines: {node: '>=8.3'} + dependencies: + detect-indent: 6.1.0 + graceful-fs: 4.2.8 + is-plain-obj: 2.1.0 + make-dir: 3.1.0 + sort-keys: 4.2.0 + write-file-atomic: 3.0.3 dev: true - /ws/7.5.4: - resolution: {integrity: sha512-zP9z6GXm6zC27YtspwH99T3qTG7bBFv2VIkeHstMLrLlDJuzA7tQ5ls3OJ1hOGGCzTQPniNJoHXIAOS0Jljohg==} + /write-yaml-file/4.2.0: + resolution: {integrity: sha512-LwyucHy0uhWqbrOkh9cBluZBeNVxzHjDaE9mwepZG3n3ZlbM4v3ndrFw51zW/NXYFFqP+QWZ72ihtLWTh05e4Q==} + engines: {node: '>=10.13'} + dependencies: + js-yaml: 4.1.0 + write-file-atomic: 3.0.3 + + /ws/7.5.5: + resolution: {integrity: sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==} engines: {node: '>=8.3.0'} peerDependencies: bufferutil: ^4.0.1 @@ -7388,12 +8112,12 @@ packages: dependencies: sax: 1.2.1 xmlbuilder: 9.0.7 - dev: true + dev: false /xmlbuilder/9.0.7: resolution: {integrity: sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=} engines: {node: '>=4.0'} - dev: true + dev: false /xmlchars/2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} @@ -7407,7 +8131,6 @@ packages: /y18n/5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - dev: true /yallist/4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} @@ -7420,7 +8143,6 @@ packages: /yargs-parser/20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} - dev: true /yargs/16.2.0: resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} @@ -7433,7 +8155,6 @@ packages: string-width: 4.2.2 y18n: 5.0.8 yargs-parser: 20.2.9 - dev: true /yargs/17.1.1: resolution: {integrity: sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 00000000..e82a1c72 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,5 @@ +packages: + - .meta-updater + - "libs/**" + - "services/**" + - "tools/**" diff --git a/services/example/.releaserc.json b/services/example/.releaserc.json new file mode 100644 index 00000000..2065485a --- /dev/null +++ b/services/example/.releaserc.json @@ -0,0 +1 @@ +{"tagFormat":"@edged/example@v${version}"} diff --git a/services/example/Dockerfile b/services/example/Dockerfile new file mode 100644 index 00000000..ca5bc37b --- /dev/null +++ b/services/example/Dockerfile @@ -0,0 +1,7 @@ +FROM alpine +RUN apk add musl +ENV PORT=8080 +WORKDIR /app +USER nobody +COPY main . +CMD [./main] diff --git a/example/images/1.jpeg b/services/example/images/1.jpeg similarity index 100% rename from example/images/1.jpeg rename to services/example/images/1.jpeg diff --git a/services/example/package.json b/services/example/package.json new file mode 100644 index 00000000..2106a3aa --- /dev/null +++ b/services/example/package.json @@ -0,0 +1,27 @@ +{ + "name": "@edged/example", + "version": "1.0.0", + "description": "", + "main": "dist/index.js", + "scripts": { + "build": "tsc --build tsconfig.build.json", + "build:docker": "pnpm run build && pkg -t alpine-x64 --compress GZip dist/main.js && docker build -t test .", + "clean": "rimraf dist *.tsbuildinfo", + "start:dev": "DEBUG=express-sharp* nodemon --exec 'node -r ts-node/register' -w . --inspect src/main.ts" + }, + "author": "Philipp Busse", + "license": "MIT", + "dependencies": { + "@edged/http-adapter": "workspace:^1.0.0", + "@edged/s3-adapter": "workspace:^1.0.0", + "express": "^4.17.1", + "express-sharp": "workspace:*", + "keyv": "^4.0.3", + "pkg": "^5.3.2", + "pug": "^3.0.2", + "tslib": "^2.3.1" + }, + "devDependencies": { + "@edged/tsconfig": "workspace:^1.0.0" + } +} diff --git a/example/public/example.mjs b/services/example/public/example.mjs similarity index 100% rename from example/public/example.mjs rename to services/example/public/example.mjs diff --git a/example/public/image.mjs b/services/example/public/image.mjs similarity index 100% rename from example/public/image.mjs rename to services/example/public/image.mjs diff --git a/example/public/main.css b/services/example/public/main.css similarity index 100% rename from example/public/main.css rename to services/example/public/main.css diff --git a/example/public/utils.mjs b/services/example/public/utils.mjs similarity index 100% rename from example/public/utils.mjs rename to services/example/public/utils.mjs diff --git a/example/app.ts b/services/example/src/main.ts similarity index 70% rename from example/app.ts rename to services/example/src/main.ts index 3361ddae..a9eda5d8 100644 --- a/example/app.ts +++ b/services/example/src/main.ts @@ -1,9 +1,11 @@ /* eslint-disable toplevel/no-toplevel-side-effect */ +import { HttpAdapter } from '@edged/http-adapter' +import { S3Adapter } from '@edged/s3-adapter' import express from 'express' +import { expressSharp, FsAdapter } from 'express-sharp' import Keyv from 'keyv' import { AddressInfo } from 'net' import { join } from 'path' -import { expressSharp, FsAdapter, HttpAdapter, S3Adapter } from '../src' // Cache in-memory const cache = new Keyv({ namespace: 'express-sharp' }) @@ -14,15 +16,15 @@ const cache = new Keyv({ namespace: 'express-sharp' }) const app = express() const PORT = 3000 -app.use(express.static(join(__dirname, 'public'))) -app.use(express.static(join(__dirname, 'images'))) +app.use(express.static(join(__dirname, '../public'))) +app.use(express.static(join(__dirname, '../images'))) app.use( '/local-http', expressSharp({ cache, imageAdapter: new HttpAdapter({ - prefixUrl: 'http://localhost:3000/', + baseURL: 'http://localhost:3000/', }), }), ) @@ -44,18 +46,18 @@ app.use( '/lorempixel', expressSharp({ cache, - imageAdapter: new HttpAdapter({ prefixUrl: 'http://lorempixel.com' }), + imageAdapter: new HttpAdapter({ baseURL: 'http://lorempixel.com' }), }), ) app.use( '/fs', expressSharp({ cache, - imageAdapter: new FsAdapter(join(__dirname, 'images')), + imageAdapter: new FsAdapter(join(__dirname, '../images')), }), ) -app.set('views', join(__dirname, 'views')) +app.set('views', join(__dirname, '../views')) app.set('view engine', 'pug') app.get('/', (req, res) => { diff --git a/services/example/tsconfig.build.json b/services/example/tsconfig.build.json new file mode 100644 index 00000000..5737383f --- /dev/null +++ b/services/example/tsconfig.build.json @@ -0,0 +1,15 @@ +{ + "extends": "./tsconfig.json", + "exclude": ["node_modules", "dist"], + "references": [ + { + "path": "../../libs/adapters/http-adapter" + }, + { + "path": "../../libs/adapters/s3-adapter" + }, + { + "path": "../../libs/express-sharp" + } + ] +} diff --git a/services/example/tsconfig.json b/services/example/tsconfig.json new file mode 100644 index 00000000..4c94df56 --- /dev/null +++ b/services/example/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "@edged/tsconfig", + "compilerOptions": { + "outDir": "./dist", + "rootDir": "src" + }, + "include": ["src/**/*", "__tests__/**/*", "example/**/*", "__mocks__/**/*"], + "references": [ + { + "path": "../../libs/adapters/http-adapter" + }, + { + "path": "../../libs/adapters/s3-adapter" + }, + { + "path": "../../libs/express-sharp" + } + ], + "exclude": ["node_modules", "dist"] +} diff --git a/example/views/index.pug b/services/example/views/index.pug similarity index 100% rename from example/views/index.pug rename to services/example/views/index.pug diff --git a/example/views/layout.pug b/services/example/views/layout.pug similarity index 100% rename from example/views/layout.pug rename to services/example/views/layout.pug diff --git a/src/adapter/http.adapter.test.ts b/src/adapter/http.adapter.test.ts deleted file mode 100644 index 8e6f5a66..00000000 --- a/src/adapter/http.adapter.test.ts +++ /dev/null @@ -1,65 +0,0 @@ -import got from 'got' -import { HttpAdapter } from './http.adapter' - -jest.mock('got') - -describe('HttpAdapter', () => { - let adapter: HttpAdapter - beforeEach(() => { - adapter = new HttpAdapter({ prefixUrl: 'http://example.com/foo' }) - }) - - test('constructor()', () => { - expect(got.extend).toHaveBeenCalledWith({ - prefixUrl: 'http://example.com/foo', - }) - }) - - describe('fetch()', () => { - it('returns the image', async () => { - const image = await adapter.fetch('/foo/bar') - expect(image?.toString()).toBe('test') - - // @ts-ignore - expect(adapter.client.get).toHaveBeenCalledWith('/foo/bar', { - responseType: 'buffer', - }) - }) - - it('returns undefined on 404', async () => { - const error = new Error('ohoh') as any - error.response = { statusCode: 404 } - - // @ts-ignore - adapter.client.get.mockImplementation(() => { - throw error - }) - - expect(await adapter.fetch('/foo/bar')).toBeUndefined() - }) - - it('re-throws other HTTP errors', async () => { - // @ts-ignore - adapter.client.get.mockImplementation(() => { - const error = new Error('ohoh') as any - error.response = { statusCode: 500 } - throw error - }) - - await expect(() => adapter.fetch('/foo/bar')).rejects.toThrow( - expect.objectContaining({ - response: { statusCode: 500 }, - }), - ) - }) - - it('re-throws other errors', async () => { - // @ts-ignore - adapter.client.get.mockImplementation(() => { - throw new Error('ohoh') - }) - - await expect(() => adapter.fetch('/foo/bar')).rejects.toThrow('ohoh') - }) - }) -}) diff --git a/src/adapter/http.adapter.ts b/src/adapter/http.adapter.ts deleted file mode 100644 index 5c370ff8..00000000 --- a/src/adapter/http.adapter.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { ImageAdapter } from '../interfaces' -import got, { Got, ExtendOptions, RequestError } from 'got' -import { getLogger } from '../logger' - -export class HttpAdapter implements ImageAdapter { - private client: Got - private log = getLogger('adapter:http') - - constructor(gotOptions: ExtendOptions) { - this.client = got.extend({ - ...gotOptions, - }) - this.log(`Using prefixUrl: ${this.getPrefixUrl()}`) - } - - private getPrefixUrl() { - return this.client.defaults.options.prefixUrl - } - - async fetch(url: string): Promise { - this.log(`Fetching: ${this.getPrefixUrl()}${url}`) - try { - const response = await this.client.get(url, { - responseType: 'buffer', - }) - return response.body - } catch (error) { - // eslint-disable-next-line no-magic-numbers - if ((error as RequestError).response?.statusCode === 404) { - return undefined - } - - throw error - } - } -} diff --git a/src/adapter/index.ts b/src/adapter/index.ts deleted file mode 100644 index e2ab8f6f..00000000 --- a/src/adapter/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './http.adapter' -export * from './fs.adapter' -export * from './s3.adapter' diff --git a/tools/jest-config/.releaserc.json b/tools/jest-config/.releaserc.json new file mode 100644 index 00000000..4ea836e6 --- /dev/null +++ b/tools/jest-config/.releaserc.json @@ -0,0 +1 @@ +{"tagFormat":"@edged/jest-config@v${version}"} diff --git a/tools/jest-config/jest.config.ts b/tools/jest-config/jest.config.ts new file mode 100644 index 00000000..0bca1249 --- /dev/null +++ b/tools/jest-config/jest.config.ts @@ -0,0 +1,23 @@ +/* eslint-disable node/no-unpublished-import */ +import { Config } from '@jest/types' +import { defaults } from 'jest-config' + +const config: Config.InitialOptions = { + coveragePathIgnorePatterns: [ + ...defaults.coveragePathIgnorePatterns, + 'libs/testing', + '.dto.ts$', + '/dist/', + ], + coverageReporters: ['text', 'lcov'], + modulePathIgnorePatterns: ['/dist/'], + preset: 'ts-jest', + // roots: [ + // '', + // '/libs/adapters/http-adapter', + // '/libs/express-sharp/', + // ], + testPathIgnorePatterns: [...defaults.coveragePathIgnorePatterns, '/dist/'], +} + +export default config diff --git a/tools/jest-config/package.json b/tools/jest-config/package.json new file mode 100644 index 00000000..0491d5d4 --- /dev/null +++ b/tools/jest-config/package.json @@ -0,0 +1,12 @@ +{ + "name": "@edged/jest-config", + "version": "1.0.0", + "description": "", + "main": "jest.config.ts", + "private": true, + "author": "Philipp Busse", + "devDependencies": { + "@jest/types": "^27.1.1", + "jest-config": "^27.1.1" + } +} diff --git a/tools/tsconfig/.releaserc.json b/tools/tsconfig/.releaserc.json new file mode 100644 index 00000000..80001245 --- /dev/null +++ b/tools/tsconfig/.releaserc.json @@ -0,0 +1 @@ +{"tagFormat":"@edged/tsconfig@v${version}"} diff --git a/tools/tsconfig/package.json b/tools/tsconfig/package.json new file mode 100644 index 00000000..fb8766cd --- /dev/null +++ b/tools/tsconfig/package.json @@ -0,0 +1,8 @@ +{ + "name": "@edged/tsconfig", + "version": "1.0.0", + "description": "", + "main": "tsconfig.json", + "private": true, + "author": "Philipp Busse" +} diff --git a/tools/tsconfig/tsconfig.json b/tools/tsconfig/tsconfig.json new file mode 100644 index 00000000..aaca5c61 --- /dev/null +++ b/tools/tsconfig/tsconfig.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + "allowSyntheticDefaultImports": true, + "composite": true, + "declaration": true, + "declarationMap": true, + "emitDecoratorMetadata": true, + "esModuleInterop": true, + "experimentalDecorators": true, + "forceConsistentCasingInFileNames": true, + "importHelpers": true, + "incremental": true, + "jsx": "react-jsx", + "module": "commonjs", + "moduleResolution": "node", + "noEmitHelpers": true, + "noUncheckedIndexedAccess": true, + "preserveSymlinks": true, + "skipDefaultLibCheck": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true, + "strictNullChecks": true, + "strictPropertyInitialization": true, + "target": "es2019" + }, + "exclude": ["node_modules"] +} diff --git a/tsconfig.build.json b/tsconfig.build.json deleted file mode 100644 index 284bd23f..00000000 --- a/tsconfig.build.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "./tsconfig.json", - "exclude": [ - "node_modules", - "**/*.test.ts", - "**/vendors/**", - "**/__mocks__/**", - "**/test/**", - "**/__tests__/**", - "example/**" - ] -} diff --git a/tsconfig.json b/tsconfig.json index 4770b9f4..0168373f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,23 +1,17 @@ { - "compilerOptions": { - "rootDir": "src", - "declaration": true, - "emitDecoratorMetadata": true, - "esModuleInterop": true, - "experimentalDecorators": true, - "forceConsistentCasingInFileNames": true, - "incremental": true, - "module": "CommonJS", - "moduleResolution": "Node", - "noImplicitAny": true, - "noUnusedLocals": true, - "outDir": "./dist", - "sourceMap": true, - "strict": true, - "strictNullChecks": true, - "strictFunctionTypes": true, - "strictPropertyInitialization": true, - "target": "ES2019" - }, - "include": ["src/**/*", "__tests__/**/*", "example/**/*", "__mocks__/**/*"] + "extends": "@edged/tsconfig", + "include": [ + ".meta-updater/src/**/*.ts", + ".meta-updater/*.mjs", + "**/jest.config.ts", + "*.ts", + "**/src/**/*", + "**/test/**/*", + "**/__mocks__/**/*", + "**/__tests__/**/*", + "libs/express-sharp/setup-jest.ts" + ], + "parserOptions": { + "extraFileExtensions": [".mjs"] + } }