From c73b46c957375a694759a5e44cccd91d385772b0 Mon Sep 17 00:00:00 2001 From: Juan Picado Date: Fri, 23 Oct 2020 22:05:46 +0200 Subject: [PATCH] refactor: relocate verdaccio-memory plugin (#1974) --- packages/plugins/memory/.babelrc | 3 + packages/plugins/memory/jest.config.js | 5 + packages/plugins/memory/package.json | 44 + packages/plugins/memory/src/index.ts | 5 + packages/plugins/memory/src/local-memory.ts | 124 +++ packages/plugins/memory/src/memory-handler.ts | 190 ++++ packages/plugins/memory/src/utils.ts | 9 + .../plugins/memory/test/local-memory.spec.ts | 75 ++ packages/plugins/memory/test/memory.spec.ts | 380 ++++++++ .../plugins/memory/test/partials/config.ts | 50 + packages/plugins/memory/test/partials/pkg.ts | 65 ++ packages/plugins/memory/tsconfig.build.json | 9 + packages/plugins/memory/tsconfig.json | 20 + pnpm-lock.yaml | 853 +++++++++++++++++- pnpm-workspace.yaml | 1 + 15 files changed, 1813 insertions(+), 20 deletions(-) create mode 100644 packages/plugins/memory/.babelrc create mode 100644 packages/plugins/memory/jest.config.js create mode 100644 packages/plugins/memory/package.json create mode 100644 packages/plugins/memory/src/index.ts create mode 100644 packages/plugins/memory/src/local-memory.ts create mode 100644 packages/plugins/memory/src/memory-handler.ts create mode 100644 packages/plugins/memory/src/utils.ts create mode 100644 packages/plugins/memory/test/local-memory.spec.ts create mode 100644 packages/plugins/memory/test/memory.spec.ts create mode 100644 packages/plugins/memory/test/partials/config.ts create mode 100644 packages/plugins/memory/test/partials/pkg.ts create mode 100644 packages/plugins/memory/tsconfig.build.json create mode 100644 packages/plugins/memory/tsconfig.json diff --git a/packages/plugins/memory/.babelrc b/packages/plugins/memory/.babelrc new file mode 100644 index 000000000..851856e59 --- /dev/null +++ b/packages/plugins/memory/.babelrc @@ -0,0 +1,3 @@ +{ + "extends": "../../../.babelrc" +} diff --git a/packages/plugins/memory/jest.config.js b/packages/plugins/memory/jest.config.js new file mode 100644 index 000000000..a162244c9 --- /dev/null +++ b/packages/plugins/memory/jest.config.js @@ -0,0 +1,5 @@ +const config = require('../../../jest/config'); + +module.exports = Object.assign({}, config, { + collectCoverage: true, +}); diff --git a/packages/plugins/memory/package.json b/packages/plugins/memory/package.json new file mode 100644 index 000000000..254a133df --- /dev/null +++ b/packages/plugins/memory/package.json @@ -0,0 +1,44 @@ +{ + "name": "verdaccio-memory", + "version": "10.0.0-beta", + "description": "Storage implementation in memory", + "keywords": [ + "verdaccio", + "plugin", + "storage", + "memory" + ], + "author": "Juan Picado ", + "license": "MIT", + "homepage": "https://verdaccio.org", + "repository": { + "type": "git", + "url": "https://github.com/verdaccio/verdaccio", + "directory": "packages/plugins/memory" + }, + "bugs": { + "url": "https://github.com/verdaccio/verdaccio/issues" + }, + "main": "build/index.js", + "types": "build/index.d.ts", + "dependencies": { + "@verdaccio/commons-api": "workspace:*", + "@verdaccio/streams": "workspace:*", + "memory-fs": "^0.5.0" + }, + "devDependencies": { + "@verdaccio/types": "workspace:*" + }, + "scripts": { + "clean": "rimraf ./build", + "type-check": "tsc --noEmit -p tsconfig.build.json", + "build:types": "tsc --emitDeclarationOnly -p tsconfig.build.json", + "build:js": "babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "build": "pnpm run build:js && pnpm run build:types", + "test": "cross-env NODE_ENV=test BABEL_ENV=test jest" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } +} diff --git a/packages/plugins/memory/src/index.ts b/packages/plugins/memory/src/index.ts new file mode 100644 index 000000000..ec9b2da60 --- /dev/null +++ b/packages/plugins/memory/src/index.ts @@ -0,0 +1,5 @@ +import LocalMemory from './local-memory'; + +export { LocalMemory }; + +export default LocalMemory; diff --git a/packages/plugins/memory/src/local-memory.ts b/packages/plugins/memory/src/local-memory.ts new file mode 100644 index 000000000..79c96b1f5 --- /dev/null +++ b/packages/plugins/memory/src/local-memory.ts @@ -0,0 +1,124 @@ +import { getServiceUnavailable } from '@verdaccio/commons-api'; +import { + Logger, + Callback, + Config, + IPluginStorage, + Token, + TokenFilter, + PluginOptions, +} from '@verdaccio/types'; + +import MemoryHandler, { DataHandler } from './memory-handler'; + +export type ConfigMemory = Config & { limit?: number }; +export interface MemoryLocalStorage { + secret: string; + list: string[]; + files: DataHandler; +} + +const DEFAULT_LIMIT = 1000; +class LocalMemory implements IPluginStorage { + private path: string; + private limit: number; + public logger: Logger; + private data: MemoryLocalStorage; + public config: ConfigMemory; + + public constructor(config: ConfigMemory, options: PluginOptions) { + this.config = config; + this.limit = config.limit || DEFAULT_LIMIT; + this.logger = options.logger; + this.data = this._createEmtpyDatabase(); + this.path = '/'; + } + + public getSecret(): Promise { + return Promise.resolve(this.data.secret); + } + + public setSecret(secret: string): Promise { + return new Promise((resolve): void => { + this.data.secret = secret; + resolve(null); + }); + } + + public add(name: string, cb: Callback): void { + const { list } = this.data; + + if (list.length < this.limit) { + if (list.indexOf(name) === -1) { + list.push(name); + } + cb(null); + } else { + this.logger.info( + { limit: this.limit }, + 'Storage memory has reached limit of @{limit} packages' + ); + cb(new Error('Storage memory has reached limit of limit packages')); + } + } + + // eslint-disable-next-line @typescript-eslint/no-unused-vars + public search(onPackage: Callback, onEnd: Callback, validateName: Function): void { + this.logger.warn('[verdaccio/memory]: search method not implemented, PR is welcome'); + onEnd(); + } + + public remove(name: string, cb: Callback): void { + const { list } = this.data; + const item = list.indexOf(name); + + if (item !== -1) { + list.splice(item, 1); + } + + cb(null); + } + + public get(cb: Callback): void { + cb(null, this.data.list); + } + + public getPackageStorage(packageInfo: string): MemoryHandler { + return new MemoryHandler(packageInfo, this.data.files, this.logger); + } + + private _createEmtpyDatabase(): MemoryLocalStorage { + const list: string[] = []; + const files = {}; + const emptyDatabase = { + list, + files, + secret: '', + }; + + return emptyDatabase; + } + + public saveToken(token: Token): Promise { + this.logger.warn('[verdaccio/memory][saveToken] save token has not been implemented yet'); + + return Promise.reject(getServiceUnavailable('method not implemented')); + } + + public deleteToken(user: string, tokenKey: string): Promise { + this.logger.warn( + { tokenKey, user }, + '[verdaccio/memory][deleteToken] delete token has not been implemented yet @{user}' + ); + + return Promise.reject(getServiceUnavailable('method not implemented')); + } + + public readTokens(filter: TokenFilter): Promise { + this.logger.warn('[verdaccio/memory][readTokens] read tokens has not been implemented yet '); + + return Promise.reject(getServiceUnavailable('method not implemented')); + } +} + +export default LocalMemory; diff --git a/packages/plugins/memory/src/memory-handler.ts b/packages/plugins/memory/src/memory-handler.ts new file mode 100644 index 000000000..4e860a9ca --- /dev/null +++ b/packages/plugins/memory/src/memory-handler.ts @@ -0,0 +1,190 @@ +import { + VerdaccioError, + getBadRequest, + getInternalError, + getConflict, + getNotFound, +} from '@verdaccio/commons-api'; +import MemoryFileSystem from 'memory-fs'; +import { UploadTarball, ReadTarball } from '@verdaccio/streams'; +import { + Callback, + Logger, + IPackageStorageManager, + IUploadTarball, + IReadTarball, + CallbackAction, + StorageUpdateCallback, + StorageWriteCallback, + PackageTransformer, + Package, + ReadPackageCallback, +} from '@verdaccio/types'; + +import { parsePackage, stringifyPackage } from './utils'; + +const fs = new MemoryFileSystem(); + +export type DataHandler = { + [key: string]: string; +}; + +class MemoryHandler implements IPackageStorageManager { + private data: DataHandler; + private name: string; + private path: string; + public logger: Logger; + + public constructor(packageName: string, data: DataHandler, logger: Logger) { + // this is not need it + this.data = data; + this.name = packageName; + this.logger = logger; + this.path = '/'; + } + + public updatePackage( + pkgFileName: string, + updateHandler: StorageUpdateCallback, + onWrite: StorageWriteCallback, + transformPackage: PackageTransformer, + onEnd: CallbackAction + ): void { + const json: string = this._getStorage(pkgFileName); + let pkg: Package; + + try { + pkg = parsePackage(json) as Package; + } catch (err) { + return onEnd(err); + } + + updateHandler(pkg, (err: VerdaccioError) => { + if (err) { + return onEnd(err); + } + try { + onWrite(pkgFileName, transformPackage(pkg), onEnd); + } catch (err) { + return onEnd(getInternalError('error on parse the metadata')); + } + }); + } + + public deletePackage(pkgName: string, callback: Callback): void { + delete this.data[pkgName]; + return callback(null); + } + + public removePackage(callback: CallbackAction): void { + return callback(null); + } + + public createPackage(name: string, value: Package, cb: CallbackAction): void { + this.savePackage(name, value, cb); + } + + public savePackage(name: string, value: Package, cb: CallbackAction): void { + try { + const json: string = stringifyPackage(value); + + this.data[name] = json; + return cb(null); + } catch (err) { + return cb(getInternalError(err.message)); + } + } + + public readPackage(name: string, cb: ReadPackageCallback): void { + const json = this._getStorage(name); + const isJson = typeof json === 'undefined'; + + try { + return cb(isJson ? getNotFound() : null, parsePackage(json)); + } catch (err) { + return cb(getNotFound()); + } + } + + public writeTarball(name: string): IUploadTarball { + const uploadStream: IUploadTarball = new UploadTarball({}); + const temporalName = `/${name}`; + + process.nextTick(function () { + fs.stat(temporalName, function (fileError, stats) { + if (!fileError && stats) { + return uploadStream.emit('error', getConflict()); + } + + try { + const file = fs.createWriteStream(temporalName); + + uploadStream.pipe(file); + + uploadStream.done = function (): void { + const onEnd = function (): void { + uploadStream.emit('success'); + }; + + uploadStream.on('end', onEnd); + }; + + uploadStream.abort = function (): void { + uploadStream.emit('error', getBadRequest('transmision aborted')); + file.end(); + }; + + uploadStream.emit('open'); + return; + } catch (err) { + uploadStream.emit('error', err); + return; + } + }); + }); + + return uploadStream; + } + + public readTarball(name: string): IReadTarball { + const pathName = `/${name}`; + + const readTarballStream: IReadTarball = new ReadTarball({}); + + process.nextTick(function () { + fs.stat(pathName, function (fileError, stats) { + if (fileError && !stats) { + return readTarballStream.emit('error', getNotFound()); + } + + try { + const readStream = fs.createReadStream(pathName); + + const contentLength: number = (fs.data[name] && fs.data[name].length) || 0; + readTarballStream.emit('content-length', contentLength); + readTarballStream.emit('open'); + readStream.pipe(readTarballStream); + readStream.on('error', (error: VerdaccioError) => { + readTarballStream.emit('error', error); + }); + + readTarballStream.abort = function (): void { + readStream.destroy(getBadRequest('read has been aborted')); + }; + return; + } catch (err) { + readTarballStream.emit('error', err); + return; + } + }); + }); + + return readTarballStream; + } + + private _getStorage(name = ''): string { + return this.data[name]; + } +} + +export default MemoryHandler; diff --git a/packages/plugins/memory/src/utils.ts b/packages/plugins/memory/src/utils.ts new file mode 100644 index 000000000..03b75939d --- /dev/null +++ b/packages/plugins/memory/src/utils.ts @@ -0,0 +1,9 @@ +import { Package } from '@verdaccio/types'; + +export function stringifyPackage(pkg: Package) { + return JSON.stringify(pkg, null, '\t'); +} + +export function parsePackage(pkg: string) { + return JSON.parse(pkg); +} diff --git a/packages/plugins/memory/test/local-memory.spec.ts b/packages/plugins/memory/test/local-memory.spec.ts new file mode 100644 index 000000000..d0b9b4367 --- /dev/null +++ b/packages/plugins/memory/test/local-memory.spec.ts @@ -0,0 +1,75 @@ +import { Logger, IPluginStorage } from '@verdaccio/types'; +import { VerdaccioError } from '@verdaccio/commons-api'; + +import { ConfigMemory } from '../src/local-memory'; +import { DataHandler } from '../src/memory-handler'; +import LocalMemory from '../src/index'; + +import config from './partials/config'; + +const logger: Logger = { + error: (e) => console.warn(e), + info: (e) => console.warn(e), + debug: (e) => console.warn(e), + child: (e) => console.warn(e), + warn: (e) => console.warn(e), + http: (e) => console.warn(e), + trace: (e) => console.warn(e), +}; + +const defaultConfig = { logger, config: null }; + +describe('memory unit test .', () => { + describe('LocalMemory', () => { + test('should create an LocalMemory instance', () => { + const localMemory: IPluginStorage = new LocalMemory(config, defaultConfig); + + expect(localMemory).toBeDefined(); + }); + + test('should create add a package', (done) => { + const localMemory: IPluginStorage = new LocalMemory(config, defaultConfig); + localMemory.add('test', (err: VerdaccioError) => { + expect(err).toBeNull(); + localMemory.get((err: VerdaccioError, data: DataHandler) => { + expect(err).toBeNull(); + expect(data).toHaveLength(1); + done(); + }); + }); + }); + + test('should reach max limit', (done) => { + config.limit = 2; + const localMemory: IPluginStorage = new LocalMemory(config, defaultConfig); + + localMemory.add('test1', (err) => { + expect(err).toBeNull(); + localMemory.add('test2', (err) => { + expect(err).toBeNull(); + localMemory.add('test3', (err) => { + expect(err).not.toBeNull(); + expect(err.message).toMatch(/Storage memory has reached limit of limit packages/); + done(); + }); + }); + }); + }); + + test('should remove a package', (done) => { + const pkgName = 'test'; + const localMemory: IPluginStorage = new LocalMemory(config, defaultConfig); + localMemory.add(pkgName, (err) => { + expect(err).toBeNull(); + localMemory.remove(pkgName, (err) => { + expect(err).toBeNull(); + localMemory.get((err, data) => { + expect(err).toBeNull(); + expect(data).toHaveLength(0); + done(); + }); + }); + }); + }); + }); +}); diff --git a/packages/plugins/memory/test/memory.spec.ts b/packages/plugins/memory/test/memory.spec.ts new file mode 100644 index 000000000..8179768d4 --- /dev/null +++ b/packages/plugins/memory/test/memory.spec.ts @@ -0,0 +1,380 @@ +import { Logger, IPluginStorage, IPackageStorage, ILocalPackageManager } from '@verdaccio/types'; +import { getInternalError } from '@verdaccio/commons-api'; + +import { ConfigMemory } from '../src/local-memory'; +import MemoryHandler from '../src/memory-handler'; +import LocalMemory from '../src/index'; + +import config from './partials/config'; +import pkgExample from './partials/pkg'; + +const logger: Logger = { + error: (e) => console.warn(e), + info: (e) => console.warn(e), + debug: (e) => console.warn(e), + child: (e) => console.warn(e), + warn: (e) => console.warn(e), + http: (e) => console.warn(e), + trace: (e) => console.warn(e), +}; + +const defaultConfig = { logger, config: null }; + +const mockStringify = jest.fn((value) => { + return jest.requireActual('../src/utils.ts').stringifyPackage(value); +}); + +const mockParsePackage = jest.fn((value) => { + return jest.requireActual('../src/utils.ts').parsePackage(value); +}); + +jest.mock('../src/utils.ts', () => ({ + stringifyPackage: (value) => mockStringify(value), + parsePackage: (value) => mockParsePackage(value), +})); + +describe('memory unit test .', () => { + describe('MemoryHandler', () => { + test('should create an MemoryHandler instance', () => { + const memoryHandler = new MemoryHandler( + 'test', + { + ['foo']: 'bar', + }, + logger + ); + + expect(memoryHandler).toBeDefined(); + }); + + test('should save a package', (done) => { + const localMemory: IPluginStorage = new LocalMemory(config, defaultConfig); + const pkgName = 'test'; + + const handler = localMemory.getPackageStorage(pkgName); + expect(handler).toBeDefined(); + + if (handler) { + handler.savePackage(pkgName, pkgExample, (err) => { + expect(err).toBeNull(); + handler.readPackage(pkgName, (err, data) => { + expect(err).toBeNull(); + expect(data).toEqual(pkgExample); + done(); + }); + }); + } + }); + + test('should fails on save a package', (done) => { + mockStringify.mockImplementationOnce(() => { + throw new Error('error on parse'); + }); + + const localMemory: IPluginStorage = new LocalMemory(config, defaultConfig); + const pkgName = 'test'; + + const handler: IPackageStorage = localMemory.getPackageStorage( + pkgName + ) as ILocalPackageManager; + + handler.savePackage(pkgName, pkgExample, (err) => { + expect(err).toEqual(getInternalError('error on parse')); + done(); + }); + }); + + test('should fails on read a package', (done) => { + const localMemory: IPluginStorage = new LocalMemory(config, defaultConfig); + const pkgName = 'test'; + + const handler = localMemory.getPackageStorage(pkgName); + expect(handler).toBeDefined(); + + if (handler) { + handler.readPackage(pkgName, (err) => { + expect(err).not.toBeNull(); + expect(err.code).toBe(404); + done(); + }); + } + }); + + test('should update a package', (done) => { + const localMemory: IPluginStorage = new LocalMemory(config, defaultConfig); + const pkgName = 'test'; + + const handler = localMemory.getPackageStorage(pkgName); + expect(handler).toBeDefined(); + const onEnd = jest.fn(); + + if (handler) { + handler.savePackage(pkgName, pkgExample, (err) => { + expect(err).toBeNull(); + + handler.updatePackage( + pkgName, + (json, callback) => { + expect(json).toBeDefined(); + expect(json.name).toBe(pkgExample.name); + expect(callback).toBeDefined(); + callback(null); + }, + (name, data, onEnd) => { + expect(name).toBe(pkgName); + expect(data.name).toBe(pkgExample.name); + onEnd(); + expect(onEnd).toHaveBeenCalled(); + done(); + }, + (data) => { + expect(data).toBeDefined(); + return data; + }, + onEnd + ); + }); + } + }); + + test('should parse fails on update a package', (done) => { + mockParsePackage.mockImplementationOnce(() => { + throw new Error('error on parse'); + }); + const localMemory: IPluginStorage = new LocalMemory(config, defaultConfig); + + const pkgName = 'test'; + + const handler = localMemory.getPackageStorage(pkgName); + expect(handler).toBeDefined(); + const onEnd = jest.fn((err) => { + expect(err).not.toBeNull(); + expect(err).toEqual(getInternalError('error on parse')); + done(); + }); + + if (handler) { + handler.savePackage(pkgName, pkgExample, (err) => { + expect(err).toBeNull(); + handler.updatePackage( + pkgName, + () => {}, + () => {}, + // @ts-ignore + () => {}, + onEnd + ); + }); + } + }); + + test('should fail updateHandler update a package', (done) => { + const localMemory: IPluginStorage = new LocalMemory(config, defaultConfig); + const pkgName = 'test'; + + const handler = localMemory.getPackageStorage(pkgName); + expect(handler).toBeDefined(); + const onEnd = jest.fn((err) => { + expect(err).not.toBeNull(); + expect(err).toEqual(getInternalError('some error')); + done(); + }); + + if (handler) { + handler.savePackage(pkgName, pkgExample, (err) => { + expect(err).toBeNull(); + + handler.updatePackage( + pkgName, + (json, callback) => { + expect(json).toBeDefined(); + expect(json.name).toBe(pkgExample.name); + expect(callback).toBeDefined(); + callback(getInternalError('some error')); + }, + () => {}, + // @ts-ignore + () => {}, + onEnd + ); + }); + } + }); + + test('should onWrite update a package', (done) => { + const localMemory: IPluginStorage = new LocalMemory(config, defaultConfig); + const pkgName = 'test'; + + const handler = localMemory.getPackageStorage(pkgName); + expect(handler).toBeDefined(); + const onEnd = jest.fn((err) => { + expect(err).not.toBeNull(); + expect(err).toEqual(getInternalError('error on parse the metadata')); + done(); + }); + + if (handler) { + handler.savePackage(pkgName, pkgExample, (err) => { + expect(err).toBeNull(); + + handler.updatePackage( + pkgName, + (json, callback) => { + expect(json).toBeDefined(); + expect(json.name).toBe(pkgExample.name); + expect(callback).toBeDefined(); + callback(null); + }, + (name, data, onEnd) => { + expect(name).toBe(pkgName); + expect(data.name).toBe(pkgExample.name); + onEnd(); + expect(onEnd).toHaveBeenCalled(); + done(); + }, + () => { + throw new Error('dadsads'); + }, + onEnd + ); + }); + } + }); + + describe('writing/reading files', () => { + test('should write a tarball', (done) => { + const localMemory: IPluginStorage = new LocalMemory(config, defaultConfig); + const pkgName = 'test'; + const dataTarball = '12345'; + + const handler = localMemory.getPackageStorage(pkgName); + + if (handler) { + const stream = handler.writeTarball(pkgName); + stream.on('data', (data) => { + expect(data.toString()).toBe(dataTarball); + }); + stream.on('open', () => { + stream.done(); + stream.end(); + }); + stream.on('success', () => { + done(); + }); + + stream.write(dataTarball); + } + }); + + test('should read a tarball', (done) => { + const localMemory: IPluginStorage = new LocalMemory(config, defaultConfig); + const pkgName = 'test.tar.gz'; + const dataTarball = '12345'; + + const handler = localMemory.getPackageStorage(pkgName); + + if (handler) { + const stream = handler.writeTarball(pkgName); + stream.on('open', () => { + stream.done(); + stream.end(); + }); + stream.on('success', () => { + const readStream = handler.readTarball(pkgName); + readStream.on('data', (data) => { + expect(data.toString()).toBe(dataTarball); + done(); + }); + }); + stream.write(dataTarball); + } + }); + + test('should abort read a tarball', (done) => { + const localMemory: IPluginStorage = new LocalMemory(config, defaultConfig); + const pkgName = 'test2.tar.gz'; + const dataTarball = '12345'; + + const handler = localMemory.getPackageStorage(pkgName); + + if (handler) { + const stream = handler.writeTarball(pkgName); + stream.on('open', () => { + stream.done(); + stream.end(); + }); + stream.on('success', () => { + const readStream = handler.readTarball(pkgName); + readStream.on('data', () => { + readStream.abort(); + }); + readStream.on('error', (err) => { + expect(err).not.toBeNull(); + expect(err.message).toMatch(/read has been aborted/); + done(); + }); + }); + stream.write(dataTarball); + } + }); + + test('should fails read a tarball not found', (done) => { + const localMemory: IPluginStorage = new LocalMemory(config, defaultConfig); + const pkgName = 'test2.tar.gz'; + const handler = localMemory.getPackageStorage(pkgName); + + if (handler) { + const readStream = handler.readTarball('not-found'); + readStream.on('error', (err) => { + expect(err).not.toBeNull(); + expect(err.message).toMatch(/no such package/); + done(); + }); + } + }); + + test('should abort while write a tarball', (done) => { + const localMemory: IPluginStorage = new LocalMemory(config, defaultConfig); + const pkgName = 'test-abort.tar.gz'; + const dataTarball = '12345'; + + const handler = localMemory.getPackageStorage(pkgName); + + if (handler) { + const stream = handler.writeTarball(pkgName); + stream.on('error', (err) => { + expect(err).not.toBeNull(); + expect(err.message).toMatch(/transmision aborted/); + done(); + }); + stream.on('open', () => { + stream.abort(); + }); + + stream.write(dataTarball); + } + }); + + test('should delete a package', (done) => { + const localMemory: IPluginStorage = new LocalMemory(config, defaultConfig); + const pkgName = 'test2'; + + const handler: IPackageStorage = localMemory.getPackageStorage(pkgName); + expect(handler).toBeDefined(); + if (handler) { + handler.createPackage(pkgName, pkgExample, (err) => { + expect(err).toBeNull(); + handler.deletePackage(pkgName, (err) => { + expect(err).toBeNull(); + handler.readPackage(pkgName, (err) => { + expect(err).not.toBeNull(); + expect(err.message).toMatch(/no such package/); + done(); + }); + }); + }); + } + }); + }); + }); +}); diff --git a/packages/plugins/memory/test/partials/config.ts b/packages/plugins/memory/test/partials/config.ts new file mode 100644 index 000000000..12a7b3dd1 --- /dev/null +++ b/packages/plugins/memory/test/partials/config.ts @@ -0,0 +1,50 @@ +import { Config } from '@verdaccio/types'; + +const config: Config = { + user_agent: 'string', + server_id: 1234, + secret: '12345', + self_path: './nowhere', + uplinks: { + npmjs: { + url: 'https://registry.npmjs.org/', + }, + }, + security: { + web: { + sign: {}, + verify: {}, + }, + api: { + legacy: true, + }, + }, + packages: { + test: { + storage: '', + publish: [''], + proxy: [''], + access: [''], + }, + }, + web: { + enable: true, + title: 'string', + logo: 'string', + }, + logs: [], + auth: {}, + notifications: { + method: '', + packagePattern: /a/, + packagePatternFlags: '', + headers: {}, + endpoint: '', + content: '', + }, + checkSecretKey: () => '1234', + getMatchedPackagesSpec: jest.fn(), + hasProxyTo: () => false, +}; + +export default config; diff --git a/packages/plugins/memory/test/partials/pkg.ts b/packages/plugins/memory/test/partials/pkg.ts new file mode 100644 index 000000000..6698f0588 --- /dev/null +++ b/packages/plugins/memory/test/partials/pkg.ts @@ -0,0 +1,65 @@ +import { Package } from '@verdaccio/types'; + +const pkg: Package = { + name: '@scope/test_npm', + versions: { + '1.0.1': { + name: '@scope/test_npm', + version: '1.0.1', + description: '', + main: 'index.js', + readme: 'test readme', + scripts: { + test: "echo 'Error: no test specified' && exit 1", + }, + author: { + name: 'Juan Picado', + email: 'me@jotadeveloper.com', + url: 'http://jotadeveloper.com/', + }, + license: 'ISC', + dependencies: { + 'create-react-app': '^1.4.1', + 'fast-static-site': '^1.0.2', + watchdom: '^1.0.2', + }, + _id: '@scope/test_npm@1.0.1', + _npmUser: { + name: 'jpicado', + email: 'dsa@dasd.com', + }, + maintainers: [ + { + name: 'jpicado', + email: 'dsa@dasd.com', + }, + ], + dist: { + integrity: + 'sha512-0ThGF2zZiOGmLoHl/n5cMwAS6swbAz7rdzDjgkyDh+C2rADzNfPIfo7KBTRHbY6uJ9akBCvWDFBuR0fgaxYnjQ==', + shasum: '1df0c3dfd289b2ac6ef00b0129cab9737eeaa62d', + tarball: 'http://localhost:4873/@scope/test_npm/-/@scope/test_npm-1.0.1.tgz', + }, + }, + }, + 'dist-tags': { + latest: '1.0.1', + }, + time: { + modified: '2018-02-20T17:50:47.944Z', + created: '2018-02-20T17:50:47.944Z', + '1.0.1': '2018-02-20T17:50:47.944Z', + }, + _distfiles: {}, + _attachments: { + 'test_npm-1.0.1.tgz': { + shasum: '1df0c3dfd289b2ac6ef00b0129cab9737eeaa62d', + version: '1.0.1', + }, + }, + _uplinks: {}, + _rev: '5-ea87644a96a129cf', + readme: 'ERROR: No README data found!', +}; + +export default pkg; diff --git a/packages/plugins/memory/tsconfig.build.json b/packages/plugins/memory/tsconfig.build.json new file mode 100644 index 000000000..6d445a271 --- /dev/null +++ b/packages/plugins/memory/tsconfig.build.json @@ -0,0 +1,9 @@ +{ + "extends": "../../../tsconfig.base", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./build" + }, + "include": ["src/**/*.ts"], + "exclude": ["src/**/*.test.ts"] +} diff --git a/packages/plugins/memory/tsconfig.json b/packages/plugins/memory/tsconfig.json new file mode 100644 index 000000000..2430f9bba --- /dev/null +++ b/packages/plugins/memory/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "../../../tsconfig.reference.json", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./build" + }, + "include": ["src/**/*", "types/*.d.ts"], + "exclude": ["src/**/*.test.ts"], + "references": [ + { + "path": "../../core/commons-api" + }, + { + "path": "../../core/streams" + }, + { + "path": "../../core/types" + } + ] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 62f598bff..6eb50e9de 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -519,6 +519,18 @@ importers: core-js: ^3.6.5 lodash: ^4.17.20 selfsigned: 1.10.7 + packages/plugins/memory: + dependencies: + '@verdaccio/commons-api': 'link:../../core/commons-api' + '@verdaccio/streams': 'link:../../core/streams' + memory-fs: 0.5.0 + devDependencies: + '@verdaccio/types': 'link:../../core/types' + specifiers: + '@verdaccio/commons-api': 'workspace:*' + '@verdaccio/streams': 'workspace:*' + '@verdaccio/types': 'workspace:*' + memory-fs: ^0.5.0 packages/proxy: dependencies: '@verdaccio/dev-commons': 'link:../commons' @@ -961,6 +973,19 @@ packages: '@babel/core': ^7.0.0 resolution: integrity: sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ== + /@babel/helper-compilation-targets/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/compat-data': 7.11.0 + '@babel/core': 7.11.4 + browserslist: 4.14.4 + invariant: 2.2.4 + levenary: 1.1.1 + semver: 5.7.1 + dev: false + peerDependencies: + '@babel/core': ^7.0.0 + resolution: + integrity: sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ== /@babel/helper-compilation-targets/7.10.4_@babel+core@7.11.6: dependencies: '@babel/compat-data': 7.11.0 @@ -987,6 +1012,20 @@ packages: '@babel/core': ^7.0.0 resolution: integrity: sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A== + /@babel/helper-create-class-features-plugin/7.10.5_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-function-name': 7.10.4 + '@babel/helper-member-expression-to-functions': 7.11.0 + '@babel/helper-optimise-call-expression': 7.10.4 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/helper-replace-supers': 7.10.4 + '@babel/helper-split-export-declaration': 7.11.0 + dev: false + peerDependencies: + '@babel/core': ^7.0.0 + resolution: + integrity: sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A== /@babel/helper-create-class-features-plugin/7.10.5_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -1011,6 +1050,17 @@ packages: '@babel/core': ^7.0.0 resolution: integrity: sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g== + /@babel/helper-create-regexp-features-plugin/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-annotate-as-pure': 7.10.4 + '@babel/helper-regex': 7.10.5 + regexpu-core: 4.7.1 + dev: false + peerDependencies: + '@babel/core': ^7.0.0 + resolution: + integrity: sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g== /@babel/helper-create-regexp-features-plugin/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -1181,6 +1231,17 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg== + /@babel/plugin-proposal-async-generator-functions/7.10.5_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/helper-remap-async-to-generator': 7.11.4 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.11.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg== /@babel/plugin-proposal-async-generator-functions/7.10.5_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -1201,6 +1262,16 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg== + /@babel/plugin-proposal-class-properties/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-create-class-features-plugin': 7.10.5_@babel+core@7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg== /@babel/plugin-proposal-class-properties/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -1231,6 +1302,16 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ== + /@babel/plugin-proposal-dynamic-import/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.11.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ== /@babel/plugin-proposal-dynamic-import/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -1250,6 +1331,16 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-aNdf0LY6/3WXkhh0Fdb6Zk9j1NMD8ovj3F6r0+3j837Pn1S1PdNtcwJ5EG9WkVPNHPxyJDaxMaAOVq4eki0qbg== + /@babel/plugin-proposal-export-namespace-from/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.11.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-aNdf0LY6/3WXkhh0Fdb6Zk9j1NMD8ovj3F6r0+3j837Pn1S1PdNtcwJ5EG9WkVPNHPxyJDaxMaAOVq4eki0qbg== /@babel/plugin-proposal-export-namespace-from/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -1280,6 +1371,16 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw== + /@babel/plugin-proposal-json-strings/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.11.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw== /@babel/plugin-proposal-json-strings/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -1299,6 +1400,16 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-/f8p4z+Auz0Uaf+i8Ekf1iM7wUNLcViFUGiPxKeXvxTSl63B875YPiVdUDdem7hREcI0E0kSpEhS8tF5RphK7Q== + /@babel/plugin-proposal-logical-assignment-operators/7.11.0_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.11.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-/f8p4z+Auz0Uaf+i8Ekf1iM7wUNLcViFUGiPxKeXvxTSl63B875YPiVdUDdem7hREcI0E0kSpEhS8tF5RphK7Q== /@babel/plugin-proposal-logical-assignment-operators/7.11.0_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -1318,6 +1429,16 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw== + /@babel/plugin-proposal-nullish-coalescing-operator/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.11.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw== /@babel/plugin-proposal-nullish-coalescing-operator/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -1337,6 +1458,16 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA== + /@babel/plugin-proposal-numeric-separator/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.11.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA== /@babel/plugin-proposal-numeric-separator/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -1351,8 +1482,8 @@ packages: dependencies: '@babel/core': 7.10.5 '@babel/helper-plugin-utils': 7.10.4 - '@babel/plugin-syntax-object-rest-spread': 7.8.3 - '@babel/plugin-transform-parameters': 7.10.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.10.5 + '@babel/plugin-transform-parameters': 7.10.5_@babel+core@7.10.5 dev: false peerDependencies: '@babel/core': ^7.0.0-0 @@ -1368,6 +1499,17 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA== + /@babel/plugin-proposal-object-rest-spread/7.11.0_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.11.4 + '@babel/plugin-transform-parameters': 7.10.5_@babel+core@7.11.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA== /@babel/plugin-proposal-object-rest-spread/7.11.0_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -1388,6 +1530,16 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g== + /@babel/plugin-proposal-optional-catch-binding/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.11.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g== /@babel/plugin-proposal-optional-catch-binding/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -1408,6 +1560,17 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA== + /@babel/plugin-proposal-optional-chaining/7.11.0_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/helper-skip-transparent-expression-wrappers': 7.11.0 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.11.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA== /@babel/plugin-proposal-optional-chaining/7.11.0_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -1428,6 +1591,16 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw== + /@babel/plugin-proposal-private-methods/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-create-class-features-plugin': 7.10.5_@babel+core@7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw== /@babel/plugin-proposal-private-methods/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -1459,6 +1632,18 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA== + /@babel/plugin-proposal-unicode-property-regex/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-create-regexp-features-plugin': 7.10.4_@babel+core@7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + engines: + node: '>=4' + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA== /@babel/plugin-proposal-unicode-property-regex/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -1488,6 +1673,15 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -1532,6 +1726,15 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA== + /@babel/plugin-syntax-class-properties/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA== /@babel/plugin-syntax-class-properties/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -1558,6 +1761,15 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -1575,6 +1787,15 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -1628,6 +1849,15 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -1645,6 +1875,24 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g== + /@babel/plugin-syntax-jsx/7.10.4_@babel+core@7.10.5: + dependencies: + '@babel/core': 7.10.5 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g== + /@babel/plugin-syntax-jsx/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g== /@babel/plugin-syntax-jsx/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -1671,6 +1919,15 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -1697,6 +1954,15 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -1723,6 +1989,15 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -1744,7 +2019,15 @@ packages: dependencies: '@babel/core': 7.10.5 '@babel/helper-plugin-utils': 7.10.4 - dev: true + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false peerDependencies: '@babel/core': ^7.0.0-0 resolution: @@ -1775,6 +2058,15 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -1801,6 +2093,15 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -1827,6 +2128,15 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ== + /@babel/plugin-syntax-top-level-await/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ== /@babel/plugin-syntax-top-level-await/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -1862,6 +2172,15 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA== + /@babel/plugin-transform-arrow-functions/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA== /@babel/plugin-transform-arrow-functions/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -1881,6 +2200,17 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ== + /@babel/plugin-transform-async-to-generator/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-module-imports': 7.10.4 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/helper-remap-async-to-generator': 7.11.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ== /@babel/plugin-transform-async-to-generator/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -1900,6 +2230,15 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA== + /@babel/plugin-transform-block-scoped-functions/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA== /@babel/plugin-transform-block-scoped-functions/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -1917,6 +2256,15 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew== + /@babel/plugin-transform-block-scoping/7.11.1_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew== /@babel/plugin-transform-block-scoping/7.11.1_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -1941,6 +2289,22 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA== + /@babel/plugin-transform-classes/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-annotate-as-pure': 7.10.4 + '@babel/helper-define-map': 7.10.5 + '@babel/helper-function-name': 7.10.4 + '@babel/helper-optimise-call-expression': 7.10.4 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/helper-replace-supers': 7.10.4 + '@babel/helper-split-export-declaration': 7.11.0 + globals: 11.12.0 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA== /@babel/plugin-transform-classes/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -1965,6 +2329,15 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw== + /@babel/plugin-transform-computed-properties/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw== /@babel/plugin-transform-computed-properties/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -1982,6 +2355,15 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA== + /@babel/plugin-transform-destructuring/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA== /@babel/plugin-transform-destructuring/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -2000,6 +2382,16 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA== + /@babel/plugin-transform-dotall-regex/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-create-regexp-features-plugin': 7.10.4_@babel+core@7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA== /@babel/plugin-transform-dotall-regex/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -2018,6 +2410,15 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA== + /@babel/plugin-transform-duplicate-keys/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA== /@babel/plugin-transform-duplicate-keys/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -2036,6 +2437,16 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw== + /@babel/plugin-transform-exponentiation-operator/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.10.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw== /@babel/plugin-transform-exponentiation-operator/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -2054,6 +2465,15 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ== + /@babel/plugin-transform-for-of/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ== /@babel/plugin-transform-for-of/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -2072,6 +2492,16 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg== + /@babel/plugin-transform-function-name/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-function-name': 7.10.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg== /@babel/plugin-transform-function-name/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -2090,6 +2520,15 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ== + /@babel/plugin-transform-literals/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ== /@babel/plugin-transform-literals/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -2107,6 +2546,15 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw== + /@babel/plugin-transform-member-expression-literals/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw== /@babel/plugin-transform-member-expression-literals/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -2126,6 +2574,17 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw== + /@babel/plugin-transform-modules-amd/7.10.5_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-module-transforms': 7.11.0 + '@babel/helper-plugin-utils': 7.10.4 + babel-plugin-dynamic-import-node: 2.3.3 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw== /@babel/plugin-transform-modules-amd/7.10.5_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -2148,6 +2607,18 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w== + /@babel/plugin-transform-modules-commonjs/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-module-transforms': 7.11.0 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/helper-simple-access': 7.10.4 + babel-plugin-dynamic-import-node: 2.3.3 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w== /@babel/plugin-transform-modules-commonjs/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -2171,6 +2642,18 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw== + /@babel/plugin-transform-modules-systemjs/7.10.5_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-hoist-variables': 7.10.4 + '@babel/helper-module-transforms': 7.11.0 + '@babel/helper-plugin-utils': 7.10.4 + babel-plugin-dynamic-import-node: 2.3.3 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw== /@babel/plugin-transform-modules-systemjs/7.10.5_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -2192,6 +2675,16 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA== + /@babel/plugin-transform-modules-umd/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-module-transforms': 7.11.0 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA== /@babel/plugin-transform-modules-umd/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -2210,6 +2703,15 @@ packages: '@babel/core': ^7.0.0 resolution: integrity: sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA== + /@babel/plugin-transform-named-capturing-groups-regex/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-create-regexp-features-plugin': 7.10.4_@babel+core@7.11.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0 + resolution: + integrity: sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA== /@babel/plugin-transform-named-capturing-groups-regex/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -2227,6 +2729,15 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw== + /@babel/plugin-transform-new-target/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw== /@babel/plugin-transform-new-target/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -2245,6 +2756,16 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ== + /@babel/plugin-transform-object-super/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/helper-replace-supers': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ== /@babel/plugin-transform-object-super/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -2264,6 +2785,26 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw== + /@babel/plugin-transform-parameters/7.10.5_@babel+core@7.10.5: + dependencies: + '@babel/core': 7.10.5 + '@babel/helper-get-function-arity': 7.10.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw== + /@babel/plugin-transform-parameters/7.10.5_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-get-function-arity': 7.10.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw== /@babel/plugin-transform-parameters/7.10.5_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -2282,6 +2823,15 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g== + /@babel/plugin-transform-property-literals/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g== /@babel/plugin-transform-property-literals/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -2299,6 +2849,15 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-Zd4X54Mu9SBfPGnEcaGcOrVAYOtjT2on8QZkLKEq1S/tHexG39d9XXGZv19VfRrDjPJzFmPfTAqOQS1pfFOujw== + /@babel/plugin-transform-react-display-name/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-Zd4X54Mu9SBfPGnEcaGcOrVAYOtjT2on8QZkLKEq1S/tHexG39d9XXGZv19VfRrDjPJzFmPfTAqOQS1pfFOujw== /@babel/plugin-transform-react-display-name/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -2318,6 +2877,17 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-RM3ZAd1sU1iQ7rI2dhrZRZGv0aqzNQMbkIUCS1txYpi9wHQ2ZHNjo5TwX+UD6pvFW4AbWqLVYvKy5qJSAyRGjQ== + /@babel/plugin-transform-react-jsx-development/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-builder-react-jsx-experimental': 7.10.5 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/plugin-syntax-jsx': 7.10.4_@babel+core@7.11.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-RM3ZAd1sU1iQ7rI2dhrZRZGv0aqzNQMbkIUCS1txYpi9wHQ2ZHNjo5TwX+UD6pvFW4AbWqLVYvKy5qJSAyRGjQ== /@babel/plugin-transform-react-jsx-development/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -2338,6 +2908,16 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-yOvxY2pDiVJi0axdTWHSMi5T0DILN+H+SaeJeACHKjQLezEzhLx9nEF9xgpBLPtkZsks9cnb5P9iBEi21En3gg== + /@babel/plugin-transform-react-jsx-self/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/plugin-syntax-jsx': 7.10.4_@babel+core@7.11.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-yOvxY2pDiVJi0axdTWHSMi5T0DILN+H+SaeJeACHKjQLezEzhLx9nEF9xgpBLPtkZsks9cnb5P9iBEi21En3gg== /@babel/plugin-transform-react-jsx-self/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -2357,6 +2937,16 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-wTeqHVkN1lfPLubRiZH3o73f4rfon42HpgxUSs86Nc+8QIcm/B9s8NNVXu/gwGcOyd7yDib9ikxoDLxJP0UiDA== + /@babel/plugin-transform-react-jsx-source/7.10.5_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/plugin-syntax-jsx': 7.10.4_@babel+core@7.11.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-wTeqHVkN1lfPLubRiZH3o73f4rfon42HpgxUSs86Nc+8QIcm/B9s8NNVXu/gwGcOyd7yDib9ikxoDLxJP0UiDA== /@babel/plugin-transform-react-jsx-source/7.10.5_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -2378,6 +2968,18 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-L+MfRhWjX0eI7Js093MM6MacKU4M6dnCRa/QPDwYMxjljzSCzzlzKzj9Pk4P3OtrPcxr2N3znR419nr3Xw+65A== + /@babel/plugin-transform-react-jsx/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-builder-react-jsx': 7.10.4 + '@babel/helper-builder-react-jsx-experimental': 7.10.5 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/plugin-syntax-jsx': 7.10.4_@babel+core@7.11.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-L+MfRhWjX0eI7Js093MM6MacKU4M6dnCRa/QPDwYMxjljzSCzzlzKzj9Pk4P3OtrPcxr2N3znR419nr3Xw+65A== /@babel/plugin-transform-react-jsx/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -2399,6 +3001,16 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-+njZkqcOuS8RaPakrnR9KvxjoG1ASJWpoIv/doyWngId88JoFlPlISenGXjrVacZUIALGUr6eodRs1vmPnF23A== + /@babel/plugin-transform-react-pure-annotations/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-annotate-as-pure': 7.10.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-+njZkqcOuS8RaPakrnR9KvxjoG1ASJWpoIv/doyWngId88JoFlPlISenGXjrVacZUIALGUr6eodRs1vmPnF23A== /@babel/plugin-transform-react-pure-annotations/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -2417,6 +3029,15 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw== + /@babel/plugin-transform-regenerator/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + regenerator-transform: 0.14.5 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw== /@babel/plugin-transform-regenerator/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -2434,6 +3055,15 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ== + /@babel/plugin-transform-reserved-words/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ== /@babel/plugin-transform-reserved-words/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -2454,6 +3084,18 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-LFEsP+t3wkYBlis8w6/kmnd6Kb1dxTd+wGJ8MlxTGzQo//ehtqlVL4S9DNUa53+dtPSQobN2CXx4d81FqC58cw== + /@babel/plugin-transform-runtime/7.11.0_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-module-imports': 7.10.4 + '@babel/helper-plugin-utils': 7.10.4 + resolve: 1.17.0 + semver: 5.7.1 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-LFEsP+t3wkYBlis8w6/kmnd6Kb1dxTd+wGJ8MlxTGzQo//ehtqlVL4S9DNUa53+dtPSQobN2CXx4d81FqC58cw== /@babel/plugin-transform-runtime/7.11.5_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -2474,6 +3116,15 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q== + /@babel/plugin-transform-shorthand-properties/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q== /@babel/plugin-transform-shorthand-properties/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -2492,6 +3143,16 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw== + /@babel/plugin-transform-spread/7.11.0_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/helper-skip-transparent-expression-wrappers': 7.11.0 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw== /@babel/plugin-transform-spread/7.11.0_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -2511,6 +3172,16 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ== + /@babel/plugin-transform-sticky-regex/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/helper-regex': 7.10.5 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ== /@babel/plugin-transform-sticky-regex/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -2530,6 +3201,16 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw== + /@babel/plugin-transform-template-literals/7.10.5_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-annotate-as-pure': 7.10.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw== /@babel/plugin-transform-template-literals/7.10.5_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -2548,6 +3229,15 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA== + /@babel/plugin-transform-typeof-symbol/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA== /@babel/plugin-transform-typeof-symbol/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -2560,7 +3250,7 @@ packages: /@babel/plugin-transform-typescript/7.11.0_@babel+core@7.11.4: dependencies: '@babel/core': 7.11.4 - '@babel/helper-create-class-features-plugin': 7.10.5 + '@babel/helper-create-class-features-plugin': 7.10.5_@babel+core@7.11.4 '@babel/helper-plugin-utils': 7.10.4 '@babel/plugin-syntax-typescript': 7.10.4_@babel+core@7.11.4 dev: false @@ -2587,6 +3277,15 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg== + /@babel/plugin-transform-unicode-escapes/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg== /@babel/plugin-transform-unicode-escapes/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -2605,6 +3304,16 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A== + /@babel/plugin-transform-unicode-regex/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-create-regexp-features-plugin': 7.10.4_@babel+core@7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A== /@babel/plugin-transform-unicode-regex/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -2697,6 +3406,82 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-2u1/k7rG/gTh02dylX2kL3S0IJNF+J6bfDSp4DI2Ma8QN6Y9x9pmAax59fsCk6QUQG0yqH47yJWA+u1I1LccAg== + /@babel/preset-env/7.11.0_@babel+core@7.11.4: + dependencies: + '@babel/compat-data': 7.11.0 + '@babel/core': 7.11.4 + '@babel/helper-compilation-targets': 7.10.4_@babel+core@7.11.4 + '@babel/helper-module-imports': 7.10.4 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/plugin-proposal-async-generator-functions': 7.10.5_@babel+core@7.11.4 + '@babel/plugin-proposal-class-properties': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-proposal-dynamic-import': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-proposal-export-namespace-from': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-proposal-json-strings': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-proposal-logical-assignment-operators': 7.11.0_@babel+core@7.11.4 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-proposal-numeric-separator': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-proposal-object-rest-spread': 7.11.0_@babel+core@7.11.4 + '@babel/plugin-proposal-optional-catch-binding': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-proposal-optional-chaining': 7.11.0_@babel+core@7.11.4 + '@babel/plugin-proposal-private-methods': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-proposal-unicode-property-regex': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.11.4 + '@babel/plugin-syntax-class-properties': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.11.4 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.11.4 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.11.4 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.11.4 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.11.4 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.11.4 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.11.4 + '@babel/plugin-syntax-top-level-await': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-transform-arrow-functions': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-transform-async-to-generator': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-transform-block-scoped-functions': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-transform-block-scoping': 7.11.1_@babel+core@7.11.4 + '@babel/plugin-transform-classes': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-transform-computed-properties': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-transform-destructuring': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-transform-dotall-regex': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-transform-duplicate-keys': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-transform-exponentiation-operator': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-transform-for-of': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-transform-function-name': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-transform-literals': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-transform-member-expression-literals': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-transform-modules-amd': 7.10.5_@babel+core@7.11.4 + '@babel/plugin-transform-modules-commonjs': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-transform-modules-systemjs': 7.10.5_@babel+core@7.11.4 + '@babel/plugin-transform-modules-umd': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-transform-named-capturing-groups-regex': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-transform-new-target': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-transform-object-super': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-transform-parameters': 7.10.5_@babel+core@7.11.4 + '@babel/plugin-transform-property-literals': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-transform-regenerator': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-transform-reserved-words': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-transform-shorthand-properties': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-transform-spread': 7.11.0_@babel+core@7.11.4 + '@babel/plugin-transform-sticky-regex': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-transform-template-literals': 7.10.5_@babel+core@7.11.4 + '@babel/plugin-transform-typeof-symbol': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-transform-unicode-escapes': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-transform-unicode-regex': 7.10.4_@babel+core@7.11.4 + '@babel/preset-modules': 0.1.3_@babel+core@7.11.4 + '@babel/types': 7.11.0 + browserslist: 4.14.0 + core-js-compat: 3.6.5 + invariant: 2.2.4 + levenary: 1.1.1 + semver: 5.7.1 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-2u1/k7rG/gTh02dylX2kL3S0IJNF+J6bfDSp4DI2Ma8QN6Y9x9pmAax59fsCk6QUQG0yqH47yJWA+u1I1LccAg== /@babel/preset-env/7.11.5_@babel+core@7.11.6: dependencies: '@babel/compat-data': 7.11.0 @@ -2785,6 +3570,19 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg== + /@babel/preset-modules/0.1.3_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/plugin-proposal-unicode-property-regex': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-transform-dotall-regex': 7.10.4_@babel+core@7.11.4 + '@babel/types': 7.11.0 + esutils: 2.0.3 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg== /@babel/preset-modules/0.1.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -2812,6 +3610,21 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-BrHp4TgOIy4M19JAfO1LhycVXOPWdDbTRep7eVyatf174Hff+6Uk53sDyajqZPu8W1qXRBiYOfIamek6jA7YVw== + /@babel/preset-react/7.10.4_@babel+core@7.11.4: + dependencies: + '@babel/core': 7.11.4 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/plugin-transform-react-display-name': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-transform-react-jsx': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-transform-react-jsx-development': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-transform-react-jsx-self': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-transform-react-jsx-source': 7.10.5_@babel+core@7.11.4 + '@babel/plugin-transform-react-pure-annotations': 7.10.4_@babel+core@7.11.4 + dev: false + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-BrHp4TgOIy4M19JAfO1LhycVXOPWdDbTRep7eVyatf174Hff+6Uk53sDyajqZPu8W1qXRBiYOfIamek6jA7YVw== /@babel/preset-react/7.10.4_@babel+core@7.11.6: dependencies: '@babel/core': 7.11.6 @@ -4211,8 +5024,8 @@ packages: /@mdx-js/mdx/2.0.0-next.7: dependencies: '@babel/core': 7.10.5 - '@babel/plugin-syntax-jsx': 7.10.4 - '@babel/plugin-syntax-object-rest-spread': 7.8.3 + '@babel/plugin-syntax-jsx': 7.10.4_@babel+core@7.10.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.10.5 '@mdx-js/util': 2.0.0-next.7 babel-plugin-apply-mdx-type-prop: 2.0.0-next.7_@babel+core@7.10.5 babel-plugin-extract-export-names: 2.0.0-next.7 @@ -6484,14 +7297,14 @@ packages: /babel-preset-gatsby/0.5.7_@babel+core@7.11.4+core-js@3.6.5: dependencies: '@babel/core': 7.11.4 - '@babel/plugin-proposal-class-properties': 7.10.4 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.10.4 - '@babel/plugin-proposal-optional-chaining': 7.11.0 - '@babel/plugin-syntax-dynamic-import': 7.8.3 - '@babel/plugin-transform-runtime': 7.11.0 - '@babel/plugin-transform-spread': 7.11.0 - '@babel/preset-env': 7.11.0 - '@babel/preset-react': 7.10.4 + '@babel/plugin-proposal-class-properties': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-proposal-optional-chaining': 7.11.0_@babel+core@7.11.4 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.11.4 + '@babel/plugin-transform-runtime': 7.11.0_@babel+core@7.11.4 + '@babel/plugin-transform-spread': 7.11.0_@babel+core@7.11.4 + '@babel/preset-env': 7.11.0_@babel+core@7.11.4 + '@babel/preset-react': 7.10.4_@babel+core@7.11.4 '@babel/runtime': 7.11.2 babel-plugin-dynamic-import-node: 2.3.3 babel-plugin-macros: 2.8.0 @@ -11270,9 +12083,9 @@ packages: /gatsby-plugin-typescript/2.4.18_gatsby@2.24.51: dependencies: '@babel/core': 7.11.4 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.10.4 - '@babel/plugin-proposal-numeric-separator': 7.10.4 - '@babel/plugin-proposal-optional-chaining': 7.11.0 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-proposal-numeric-separator': 7.10.4_@babel+core@7.11.4 + '@babel/plugin-proposal-optional-chaining': 7.11.0_@babel+core@7.11.4 '@babel/preset-typescript': 7.10.4_@babel+core@7.11.4 '@babel/runtime': 7.11.2 babel-plugin-remove-graphql-queries: 2.9.17_gatsby@2.24.51 @@ -11303,8 +12116,8 @@ packages: '@babel/core': 7.11.4 '@babel/generator': 7.11.4 '@babel/helper-plugin-utils': 7.10.4 - '@babel/plugin-proposal-optional-chaining': 7.11.0 - '@babel/plugin-transform-react-jsx': 7.10.4 + '@babel/plugin-proposal-optional-chaining': 7.11.0_@babel+core@7.11.4 + '@babel/plugin-transform-react-jsx': 7.10.4_@babel+core@7.11.4 '@babel/standalone': 7.11.4 '@babel/template': 7.10.4 '@babel/types': 7.11.0 @@ -18890,7 +19703,7 @@ packages: '@babel/core': 7.10.5 '@babel/helper-plugin-utils': 7.10.4 '@babel/plugin-proposal-object-rest-spread': 7.10.4_@babel+core@7.10.5 - '@babel/plugin-syntax-jsx': 7.10.4 + '@babel/plugin-syntax-jsx': 7.10.4_@babel+core@7.10.5 '@mdx-js/util': 2.0.0-next.7 dev: false resolution: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 2f13dade8..2d3c2d299 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,5 +1,6 @@ packages: - packages/* - packages/core/* + - packages/plugins/* - website - '!**/test/**'