diff --git a/jest.config.js b/jest.config.js index f07f6c6ff..76ac2532b 100755 --- a/jest.config.js +++ b/jest.config.js @@ -27,6 +27,7 @@ module.exports = { "collectCoverageFrom": [ "packages/**/src/**/*", "!packages/teleport-test/**/*", - "!packages/teleport-types/**/*" + "!packages/teleport-types/**/*", + "!packages/teleport-cli/**/*" ] } diff --git a/package.json b/package.json index 7a5d55bbe..b25aa5e6e 100755 --- a/package.json +++ b/package.json @@ -47,6 +47,10 @@ "@types/node": "^16", "@types/prettier": "^2.1.6", "@types/rimraf": "^2.0.3", + "@types/diff": "^5.0.0", + "@types/fs-extra": "^9.0.11", + "@types/minimist": "^1.2.1", + "@types/node-fetch": "^2.5.10", "all-contributors-cli": "^6.13.0", "chalk": "^2.4.2", "chokidar": "^3.0.2", diff --git a/packages/teleport-cli/Readme.md b/packages/teleport-cli/Readme.md new file mode 100644 index 000000000..52ef549ae --- /dev/null +++ b/packages/teleport-cli/Readme.md @@ -0,0 +1,63 @@ +## @teleporthq/teleport-cli + +### Clone a Project + +```shell +teleport clone --link --path + +teleport clone -l https://repl.teleporthq.io/project/2c5878e9-1bbc-4f7c-a27a-b8822dd39571 + +teleport clone --link https://teleport-gui-git-development-teleport-team.vercel.app/projects/new-project-zan7 +``` + +### Clone a Component + +```shell +teleport clone --link --path + +teleport clone --link https://repl.teleporthq.io/\?uidlLink\=35c82f1c-d272-4f8b-8a3f-5fa44702a1e6\&flavor\=React\&style\=CSS-Modules + +teleport clone --link https://teleport-gui-git-development-teleport-team.vercel.app/projects/new-project-zan7/editor/5c3c97d9-98e9-4649-b654-b9103a99c200 --path /components +``` + +### Format +After cloning and resolving merge conflicts. If we want to format, please run + +```shell +teleport format --path + +teleport format -p /components + +teleport format +``` + +### Sync + +Using `teleport.config.json` and sync's the project and component's used. + +```shell +teleport sync +``` + +We can use `--force` to `overwrite` local files with remote changes. + +```shell +teleport sync --force +``` + +### Init + +Creates a `teleport.config.json` in a existing project + +```shell +teleport init +``` + +### Dev Workflow + +- Install `dependencies` using `yarn` in the root folder. Under `teleport-code-generator`. +- Run `yarn build` to build the project. +- Run `yarn link` to create a `sym-link`. +- Now go to the required folder and run `yarn link "@teleporthq/teleport-cli"`where we want to use the command line. +- To run the `cli` in watch mode, please run `yarn dev`. This will re-complie the `.ts` files every-time we make changes. + diff --git a/packages/teleport-cli/package.json b/packages/teleport-cli/package.json new file mode 100644 index 000000000..efb004816 --- /dev/null +++ b/packages/teleport-cli/package.json @@ -0,0 +1,44 @@ +{ + "name": "@teleporthq/teleport-cli", + "version": "0.21.2", + "description": "A command line utility to sync work from studio and other sources to local.", + "author": "teleportHQ", + "license": "MIT", + "homepage": "https://teleporthq.io/", + "types": "dist/src/index.d.ts", + "sideEffects": false, + "main": "dist/cjs/src/index.js", + "bin": { + "teleport": "dist/cjs/src/index.js" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/teleporthq/teleport-code-generators.git" + }, + "bugs": { + "url": "https://github.com/teleporthq/teleport-code-generators/issues" + }, + "publishConfig": { + "access": "public" + }, + "scripts": { + "clean": "rimraf dist", + "build": "tsc -p tsconfig.json && tsc -p tsconfig.json --module commonjs --outDir dist/cjs" + }, + "dependencies": { + "@teleporthq/teleport-code-generator": "^0.21.2", + "@teleporthq/teleport-mapper": "https://gitlab.com/teleporthq/playground/teleport-mapper.git#2d2e2424dbd70a1d226fc3fcd6de76505589ffc7", + "@teleporthq/teleport-postprocessor-prettier-html": "^0.21.0", + "@teleporthq/teleport-postprocessor-prettier-jsx": "^0.21.0", + "@teleporthq/teleport-postprocessor-prettier-ts": "^0.21.0", + "@teleporthq/teleport-postprocessor-vue-file": "^0.21.0", + "@teleporthq/teleport-types": "^0.21.0", + "chalk": "^4.1.1", + "commander": "^7.2.0", + "diff": "^5.0.0", + "fs-extra": "^9.1.0", + "minimist": "^1.2.5", + "node-fetch": "^2.6.1", + "ora": "^5.4.0" + } +} diff --git a/packages/teleport-cli/src/commands/clone.ts b/packages/teleport-cli/src/commands/clone.ts new file mode 100644 index 000000000..ac05410c8 --- /dev/null +++ b/packages/teleport-cli/src/commands/clone.ts @@ -0,0 +1,133 @@ +import { ProjectType, VComponentUIDL, VProjectUIDL } from '@teleporthq/teleport-types' +import { generateComponentFromUIDL, generateProjectFromUIDL } from '../services/code' +import { fetchSnapshot, fetchUIDLFromREPL } from '../services/network' +import { injectFilesToPath } from '../services/file' +import { HOST_NAME_MAP } from '../constants' +import { getComponentType, updateConfigFile } from '../utils' +import { MapSnapshotToUIDL } from '@teleporthq/teleport-mapper' +import ora from 'ora' + +export default async function (options: { url: string; targetPath: string; force?: boolean }) { + const { url, targetPath, force = false } = options + let name = 'teleport-project' + const spinner = ora() + spinner.start() + + const { host, pathname } = new URL(url) + + if (Object.keys(HOST_NAME_MAP).includes(host)) { + const opts = pathname.split('/') + spinner.text = `Fetching from studio ${opts[2]} \n` + + const result = await fetchSnapshot(opts[2], host) + const { + name: nameFromSnapshot, + snapshot: { data }, + } = result + + if (opts.length === 5) { + try { + spinner.text = `Fetching from studio ${opts[2]} \n` + + const mapper = new MapSnapshotToUIDL(data) + const uidl = mapper.pageToUIDL(opts[4]) + if (!uidl) { + throw new Error('Failed in Generating UIDL') + } + nameFromSnapshot ? (uidl.name = nameFromSnapshot) : (uidl.name = name) + + const { files } = await generateComponentFromUIDL(uidl, getComponentType()) + injectFilesToPath({ rootFolder: process.cwd(), targetPath, files, force }) + updateConfigFile((content) => { + content.components[url] = { path: targetPath } + }) + + spinner.text = `Component ${files[0].name}.${files[0].fileType} generated` + spinner.succeed() + } catch (e) { + spinner.text = 'Failed in generating component' + spinner.fail() + /* tslint:disable-next-line:no-console */ + console.trace(e) + } + return + } + + try { + const customModeFiles = data.projectFiles.local.main.byId + data.title = nameFromSnapshot + const mapper = new MapSnapshotToUIDL(data) + const uidl = mapper.toProjectUIDL() + if (!uidl) { + throw new Error('Failed in Generating UIDL') + } + name = nameFromSnapshot ? (uidl.name = nameFromSnapshot) : (uidl.name = name) + + const fileName = await generateProjectFromUIDL({ + uidl, + projectType: ProjectType.REACT, + targetPath, + url, + force, + customModeFiles, + }) + + spinner.text = `Project Generated Successfully ${fileName}` + spinner.succeed() + } catch (e) { + spinner.text = `Project Generation Failed` + spinner.fail() + /* tslint:disable-next-line:no-console */ + console.trace(e) + } + } + + if (host === 'repl.teleporthq.io') { + if (url.includes('project')) { + try { + spinner.text = `Fetching project from repl \n` + + const uidl = (await fetchUIDLFromREPL(url)) as VProjectUIDL + const fileName = await generateProjectFromUIDL({ + uidl, + projectType: ProjectType.REACT, + targetPath, + url, + force, + }) + + spinner.text = `Project Generated Successfully ${fileName}` + spinner.succeed() + } catch (e) { + spinner.text = `Project Generation Failed` + spinner.fail() + console.warn(e) + } + } else { + try { + spinner.text = `Fetching component from repl \n` + + const uidl = (await fetchUIDLFromREPL(url)) as VComponentUIDL + const { files } = await generateComponentFromUIDL(uidl, getComponentType()) + + injectFilesToPath({ + rootFolder: process.cwd(), + targetPath, + files, + force, + }) + updateConfigFile((content) => { + content.components[url] = { path: targetPath } + }) + + spinner.text = `Component ${files[0].name}.${files[0].fileType} generated` + spinner.succeed() + } catch (e) { + spinner.text = `Component Generation Failed` + spinner.fail() + console.warn(e) + } + } + } + spinner.stop() +} diff --git a/packages/teleport-cli/src/commands/format.ts b/packages/teleport-cli/src/commands/format.ts new file mode 100644 index 000000000..d4a838860 --- /dev/null +++ b/packages/teleport-cli/src/commands/format.ts @@ -0,0 +1,65 @@ +import ora from 'ora' +import path from 'path' +import { readdirSync, writeFileSync, readFileSync, lstatSync } from 'fs-extra' +import { FileType, PostProcessor } from '@teleporthq/teleport-types' +import processorVUE from '@teleporthq/teleport-postprocessor-vue-file' +import processorTS from '@teleporthq/teleport-postprocessor-prettier-ts' +import processorJSX from '@teleporthq/teleport-postprocessor-prettier-jsx' +import processorHTML from '@teleporthq/teleport-postprocessor-prettier-html' +import { IGNORE_EXTENSIONS, IGNORE_FOLDERS } from '../constants' + +const processors: Record = { + [FileType.JS]: processorJSX, + [FileType.HTML]: processorHTML, + [FileType.VUE]: processorVUE, + [FileType.TS]: processorTS, +} + +/* We can extend the prettier config, ignore folders, ignore extensions */ +const format = async ({ targetPath }: { targetPath: string }) => { + formatFilesFromFolder(targetPath) +} + +const formatFilesFromFolder = (folderPath: string) => { + try { + const files: string[] = readdirSync(path.join(process.cwd(), folderPath)) + if (files.length === 0) { + return + } + + files.forEach((fileName) => { + if ( + IGNORE_FOLDERS.includes(fileName) || + IGNORE_EXTENSIONS.some((ext) => fileName.endsWith(ext)) || + fileName.startsWith('.') + ) { + return + } + + const fileStatus = ora(fileName) + try { + const filePath = path.join(process.cwd(), folderPath, fileName) + const isDirectory = lstatSync(filePath).isDirectory() + if (!isDirectory) { + const file = readFileSync(filePath) + const fileExtension = path.extname(filePath)?.substring(1) + const processor = processors[fileExtension] + if (processor) { + const formattedCode = processor({ [fileExtension]: file.toString('utf-8') }) + writeFileSync(filePath, formattedCode[fileExtension]) + fileStatus.succeed() + } + return + } + formatFilesFromFolder(path.join(folderPath, fileName)) + } catch (e) { + fileStatus.text = `Failed in formatting file ${fileName}` + fileStatus.fail() + } + }) + } catch (e) { + console.warn(e) + } +} + +export default format diff --git a/packages/teleport-cli/src/commands/init.ts b/packages/teleport-cli/src/commands/init.ts new file mode 100644 index 000000000..31ccbc3d4 --- /dev/null +++ b/packages/teleport-cli/src/commands/init.ts @@ -0,0 +1,17 @@ +import chalk from 'chalk' +import { writeFileSync } from 'fs-extra' +import path from 'path' +import { CONFIG_FILE, LOCK_FILE_TEMPLATE } from '../constants' +import { findFileByName } from '../services/file' + +export default function () { + const isFileExists = findFileByName(CONFIG_FILE) + if (!isFileExists) { + writeFileSync( + path.join(process.cwd(), CONFIG_FILE), + JSON.stringify(LOCK_FILE_TEMPLATE, null, 2) + ) + return + } + console.warn(chalk.yellow(`${CONFIG_FILE} already exists`)) +} diff --git a/packages/teleport-cli/src/commands/sync.ts b/packages/teleport-cli/src/commands/sync.ts new file mode 100644 index 000000000..a8a055826 --- /dev/null +++ b/packages/teleport-cli/src/commands/sync.ts @@ -0,0 +1,23 @@ +import chalk from 'chalk' +import { DefaultConfigTemplate, CONFIG_FILE } from '../constants' +import { findFileByName } from '../services/file' +import clone from './clone' + +/* By default sync only components specified ? */ +export default async function sync({ force }: { force: boolean }) { + const config = findFileByName(CONFIG_FILE) + if (!config) { + console.warn(chalk.yellow(`${CONFIG_FILE} is missing from project.`)) + } + + const { components = {}, project } = JSON.parse(config) as DefaultConfigTemplate + + if (project?.url) { + clone({ url: project.url, targetPath: '../', force }) + } + + Object.keys(components).forEach((comp) => { + const { path: targetPath } = components[comp] + clone({ url: comp, targetPath, force }) + }) +} diff --git a/packages/teleport-cli/src/commands/watch.ts b/packages/teleport-cli/src/commands/watch.ts new file mode 100644 index 000000000..0f5d30f66 --- /dev/null +++ b/packages/teleport-cli/src/commands/watch.ts @@ -0,0 +1,21 @@ +import ora from 'ora' +import { findFileByName } from '../services/file' +import { CONFIG_FILE } from '../constants' +import { extractCompIdsFromURls } from '../utils' + +/* Watch takes a set of components defined and tried to observe for changes. +And loads then on request */ + +export default async function () { + const content = JSON.parse(findFileByName(CONFIG_FILE)) + const { components = [] } = content || {} + if (components.length === 0) { + return + } + const compIds = extractCompIdsFromURls(components) + const spinner = ora(`Watching components \n ${JSON.stringify(compIds)}`) + spinner.start() + setTimeout(() => { + spinner.stop() + }, 1000) +} diff --git a/packages/teleport-cli/src/constants.ts b/packages/teleport-cli/src/constants.ts new file mode 100644 index 000000000..2b5f4c95c --- /dev/null +++ b/packages/teleport-cli/src/constants.ts @@ -0,0 +1,39 @@ +import { PrettierFormatOptions, ComponentType } from '@teleporthq/teleport-types' + +export const CONFIG_FILE_NAME = `teleport.config` +export const CONFIG_FILE = `${CONFIG_FILE_NAME}.json` + +export const LOCK_FILE_TEMPLATE: DefaultConfigTemplate = { + project: {}, + components: {}, +} + +export const BASE_URL = 'https://us-central1-croapp-dev.cloudfunctions.net/repl-api/' + +export const HOST_NAME_MAP: Record = { + 'play.teleporthq.io': 'https://playground-api-production-v5.services.teleporthq.io/project', + 'editorcc.teleporthq.io': 'https://playground-api-editor-zx5f37orwa-ew.a.run.app/project', +} + +export const UUDID_REGEX = + /[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}/gm +export const IGNORE_FOLDERS = ['node_modules', 'dist', 'bin', 'build'] +export const IGNORE_EXTENSIONS = ['.json', '.test.js', '.test.ts', '.map', '.d.ts', '.md'] +export interface DefaultConfigTemplate { + project?: { + url?: string + projectType?: string + path?: string + } + components: Record + format?: { + config?: PrettierFormatOptions + ignoreFiles?: string[] + ignoreFolders?: string[] + } + sync?: { + ignoreFiles?: string[] + ignoreFolders?: string[] + } + componentType?: ComponentType.REACT | ComponentType.VUE | ComponentType.ANGULAR +} diff --git a/packages/teleport-cli/src/index.ts b/packages/teleport-cli/src/index.ts new file mode 100644 index 000000000..213eeb494 --- /dev/null +++ b/packages/teleport-cli/src/index.ts @@ -0,0 +1,63 @@ +#! /usr/bin/env node + +import program from 'commander' +import chalk from 'chalk' +import minimist from 'minimist' +import clone from './commands/clone' +import watch from './commands/watch' +import format from './commands/format' +import sync from './commands/sync' +import init from './commands/init' +import packageJSON from '../package.json' +import { CONFIG_FILE } from './constants' + +program.version(`v${packageJSON.version}`) + +program.command('init').description(`Creates a ${CONFIG_FILE}`).action(init) + +program + .command('sync') + .description(`Sync's all the components defined in ${CONFIG_FILE}`) + .option('-f --force') + .action(() => { + const flags = minimist(process.argv.slice(2)) + sync({ force: Boolean(flags?.f || flags?.force) }) + }) + +program + .command('format') + .description( + 'Formats any file when a path is provided. Uses format options already set by @teleporthq' + ) + .option('-p --path ') + .action(() => { + const flags = minimist(process.argv.slice(2)) + const targetPath = (flags?.p || flags?.path) ?? '/' + format({ targetPath }) + }) + +program + .command('watch') + .description('Watch for a set of components in Studio and generate them in local') + .option('-p --path ') + .action(watch) + +program + .command('clone') + .description('Pull a component from REPL / Studio') + .option('-l --link') + .option('-p --path ') + .action(() => { + const flags = minimist(process.argv.slice(2)) + if (Object.keys(flags).length === 0) { + console.warn(chalk.yellow(`Link missing, please check --link`)) + } + if (flags?.l || flags?.link) { + clone({ + url: flags?.l || flags?.link, + targetPath: flags?.p || flags?.path || '/', + }) + } + }) + +program.parse(process.argv) diff --git a/packages/teleport-cli/src/services/code.ts b/packages/teleport-cli/src/services/code.ts new file mode 100644 index 000000000..4d5b8a164 --- /dev/null +++ b/packages/teleport-cli/src/services/code.ts @@ -0,0 +1,141 @@ +import path, { join } from 'path' +import { ensureDirSync } from 'fs-extra' +import { + CompiledComponent, + ComponentType, + ComponentUIDL, + ProjectType, + ProjectUIDL, + VComponentUIDL, + VProjectUIDL, + GeneratedFolder, + GeneratedFile, + ProjectPlugin, +} from '@teleporthq/teleport-types' +import { generateComponent, packProject } from '@teleporthq/teleport-code-generator' +import { injectFilesFromSubFolder, injectFilesToPath } from './file' +import { CONFIG_FILE, LOCK_FILE_TEMPLATE, DefaultConfigTemplate } from '../constants' +import { pluginCustomMode } from './custom-mode-project-plugin' +import { pack } from './helper' + +export interface TeleportCLIPluginParams { + folder: GeneratedFolder +} + +export interface TeleportCLIPlugin { + runBefore: () => Promise<{ projectPlugins: ProjectPlugin[] }> + runAfter: (params: TeleportCLIPluginParams) => Promise +} + +export interface TeleportCLIConfig { + plugins: TeleportCLIPlugin[] +} + +export const generateComponentFromUIDL = async ( + uidl: VComponentUIDL, + componentType: ComponentType = ComponentType.REACT +): Promise => { + const result = await generateComponent(uidl as ComponentUIDL, { + componentType, + }) + return result +} + +export const generateProjectFromUIDL = async (params: { + uidl: VProjectUIDL + projectType: ProjectType + targetPath: string + url: string + force?: boolean + customModeFiles?: Record +}): Promise => { + const { uidl, projectType, targetPath, url, customModeFiles = {} } = params + ensureDirSync(path.join(process.cwd(), targetPath)) + + const plugins: ProjectPlugin[] = [] + let customConfig: TeleportCLIConfig + try { + customConfig = (await import(`${join(process.cwd(), 'teleport.config')}`)) as TeleportCLIConfig + for (const plugin of customConfig.plugins) { + const { projectPlugins = [] } = await plugin.runBefore() + plugins.push(...projectPlugins) + } + } catch (e) { + /* Config doesn't exist */ + } + + if (Object.keys(customModeFiles).length > 0) { + plugins.push(pluginCustomMode) + } + + const { success, payload } = (await packProject(uidl as ProjectUIDL, { + projectType, + publishOptions: { + outputPath: targetPath, + }, + plugins, + })) as unknown as { success: boolean; payload: GeneratedFolder } + + if (success) { + const { name } = payload + injectGeneratedFolderInto({ folder: payload, url, targetPath }, customConfig) + + if (customModeFiles) { + injectGeneratedFolderInto({ folder: pack(customModeFiles), url, targetPath }) + } + + return name + } +} + +export const injectGeneratedFolderInto = async ( + params: { + folder: GeneratedFolder + targetPath: string + force?: boolean + url: string + }, + customConfig?: TeleportCLIConfig +) => { + const { force = false, url, targetPath } = params + let { folder } = params + + if (customConfig) { + try { + for (const plugin of customConfig.plugins) { + const result = await plugin.runAfter({ folder }) + folder = result.folder + } + } catch (e) { + /* tslint:disable-next-line:no-console */ + console.error(e) + } + } + + folder.files.push({ + name: CONFIG_FILE, + content: JSON.stringify( + { + ...LOCK_FILE_TEMPLATE, + project: { url, projectType: ProjectType.REACT }, + } as DefaultConfigTemplate, + null, + 2 + ), + }) + + injectFilesFromSubFolder({ + folder: folder.subFolders, + targetPath: path.join(targetPath, ''), + force, + }) + + folder.files.forEach((file: GeneratedFile) => { + injectFilesToPath({ + rootFolder: process.cwd(), + targetPath: path.join(targetPath, ''), + files: [file], + force, + }) + }) +} diff --git a/packages/teleport-cli/src/services/custom-mode-project-plugin.ts b/packages/teleport-cli/src/services/custom-mode-project-plugin.ts new file mode 100644 index 000000000..55e226563 --- /dev/null +++ b/packages/teleport-cli/src/services/custom-mode-project-plugin.ts @@ -0,0 +1,31 @@ +import { + ProjectPlugin, + ProjectPluginStructure, + ReactStyleVariation, +} from '@teleporthq/teleport-types' + +class PluginCustomModeProjects implements ProjectPlugin { + async runBefore(structure: ProjectPluginStructure) { + const { strategy } = structure + const teleportPath = ['src', 'teleporthq'] + + strategy.style = ReactStyleVariation.CSSModules + strategy.pages.path = [...teleportPath, 'pages'] + strategy.components.path = [...teleportPath, 'components'] + strategy.projectStyleSheet.path = teleportPath + + return structure + } + + async runAfter(structure: ProjectPluginStructure) { + const { files } = structure + files.delete('entry') + files.delete('router') + files.delete('projectStyleSheet') + + return structure + } +} + +const pluginCustomMode = new PluginCustomModeProjects() +export { pluginCustomMode } diff --git a/packages/teleport-cli/src/services/file.ts b/packages/teleport-cli/src/services/file.ts new file mode 100644 index 000000000..bd9513d0e --- /dev/null +++ b/packages/teleport-cli/src/services/file.ts @@ -0,0 +1,88 @@ +import path from 'path' +import chalk from 'chalk' +import { ensureDirSync, writeFileSync, readFileSync } from 'fs-extra' +import { GeneratedFile, GeneratedFolder } from '@teleporthq/teleport-types' +import { getPatchesBetweenFiles, mergeFiles } from './merge' +import { IGNORE_EXTENSIONS } from '../constants' + +export const injectFilesFromSubFolder = (params: { + folder: GeneratedFolder[] + targetPath: string + force: boolean +}) => { + const { folder, targetPath, force = false } = params + folder.map((items) => { + const { files, subFolders, name } = items + + ensureDirSync(path.join(process.cwd(), targetPath, name)) + injectFilesToPath({ + rootFolder: process.cwd(), + targetPath: path.join(targetPath, name), + force, + files, + }) + injectFilesFromSubFolder({ + folder: subFolders, + targetPath: path.join(targetPath, name), + force, + }) + }) +} + +export const injectFilesToPath = (params: { + rootFolder: string + targetPath: string + files: GeneratedFile[] + force: boolean +}): void => { + try { + const { files, force = false, targetPath, rootFolder } = params + ensureDirSync(path.join(rootFolder, targetPath)) + + files.map((file) => { + const fileName = `${file.name}.${file.fileType}` + const filePath = path.join(rootFolder, targetPath, fileName) + + if (force) { + writeFileSync(filePath, file.content, 'utf-8') + return + } + + /* If the file is not found in local, create it irrespective of + file extension. */ + const localFile = findFileByName(path.join(targetPath, fileName)) + if (!localFile) { + writeFileSync(filePath, file.content, 'utf-8') + return + } + + /* We re trying to merge .json type of files. Which are almost the same + everytime we generate something from the UIDL. So, un-necessarly trying + to merge these files creates un-expected conflicts */ + if (IGNORE_EXTENSIONS.includes(`.${file.fileType}`)) { + return + } + + const patches = getPatchesBetweenFiles(localFile, file.content) + + const fileContent = mergeFiles(patches) + writeFileSync(filePath, fileContent, 'utf-8') + }) + } catch (e) { + console.warn(chalk.red(`Failed in writing file to destination`)) + } +} + +export const findFileByName = (fileName: string) => { + try { + const file = readFileSync(path.join(process.cwd(), fileName)) + if (!file) { + return null + } + return file.toString() + } catch (e) { + if (e.code === 'ENONET') { + return null + } + } +} diff --git a/packages/teleport-cli/src/services/helper.ts b/packages/teleport-cli/src/services/helper.ts new file mode 100644 index 000000000..930f4d30f --- /dev/null +++ b/packages/teleport-cli/src/services/helper.ts @@ -0,0 +1,54 @@ +import { GeneratedFolder } from '@teleporthq/teleport-types' +import { parse } from 'path' + +export const pack = (files: Record) => { + if (!Object.keys(files).length) { + return null + } + + const project = Object.keys({ ...files }).reduce( + (acc: GeneratedFolder, current) => { + const folderPath = current.split('/').filter((e) => e) + folderPath.shift() + let subFolder = acc + folderPath.forEach((folderName, index) => { + const parsedFolderName = parse(folderName) + + if (parsedFolderName.ext) { + const nameWithoutExt = parsedFolderName.name + + if (index === folderPath.length - 1) { + const currentFile = files?.[current] + const fileType = parsedFolderName.ext.substring(1) + subFolder.files.push({ + content: currentFile?.code, + fileType, + name: nameWithoutExt, + }) + return + } + } + + const existingSubFolder = subFolder.subFolders.find((el) => el.name === folderName) + if (!existingSubFolder) { + const newSubFolder = { + name: folderName, + files: [], + subFolders: [], + } as GeneratedFolder + subFolder.subFolders.push(newSubFolder) + subFolder.subFolders.sort((a, b) => a.name.localeCompare(b.name)) + + subFolder = newSubFolder + } else { + subFolder = existingSubFolder + } + }) + + return acc + }, + { name: 'teleport-project-react', subFolders: [], files: [] } as GeneratedFolder + ) + + return project as GeneratedFolder +} diff --git a/packages/teleport-cli/src/services/merge.ts b/packages/teleport-cli/src/services/merge.ts new file mode 100644 index 000000000..97673da0b --- /dev/null +++ b/packages/teleport-cli/src/services/merge.ts @@ -0,0 +1,31 @@ +import { Change, diffLines } from 'diff' + +export const getPatchesBetweenFiles = (local: string, remote: string) => diffLines(local, remote) + +/* TODO +- Improvements for empty patches, like just adding empty lines as a `added` patch. +- Add pointers for code-generated in local, so it's easy to identify and remove them. +- If there are no merge-conflicts, we can run the formatter directly. For better output. */ + +export const mergeFiles = (patches: Change[]) => + patches + .reduce((acc: string[], patch) => { + if (patch.added) { + acc.push('<<<<<< Changes from Studio') + acc.push(patch.value.replace('\n', ' ')) + acc.push('=======') + return acc + } + + if (patch.removed) { + acc.push(patch.value.replace('\n', '')) + return acc + } + + acc.push(patch.value) + return acc + }, []) + .reduce((acc: string, line: string) => { + acc = acc.concat(line, '\n') + return acc + }, '') diff --git a/packages/teleport-cli/src/services/network.ts b/packages/teleport-cli/src/services/network.ts new file mode 100644 index 000000000..a2aecca24 --- /dev/null +++ b/packages/teleport-cli/src/services/network.ts @@ -0,0 +1,24 @@ +import fetch from 'node-fetch' +import { BASE_URL, UUDID_REGEX, HOST_NAME_MAP } from '../constants' + +export const fetchUIDLFromREPL = async (url: string): Promise> => { + const id = url.match(UUDID_REGEX)[0] + const result = await fetch(`${BASE_URL}fetch-uidl/${id}`) + if (result.status !== 200) { + throw new Error(`Failed in fetch UIDL - ${JSON.stringify(result, null, 2)}`) + } + const jsonData = await result.json() + return JSON.parse(jsonData.uidl) +} + +export const fetchSnapshot = async (slug: string, host: string) => { + try { + const url = `${HOST_NAME_MAP[host]}/${slug}/snapshot` + const result = await fetch(url) + const jsonData = await result.json() + return jsonData + } catch (e) { + /* tslint:disable-next-line:no-console */ + console.error(e) + } +} diff --git a/packages/teleport-cli/src/utils.ts b/packages/teleport-cli/src/utils.ts new file mode 100644 index 000000000..cad47aa61 --- /dev/null +++ b/packages/teleport-cli/src/utils.ts @@ -0,0 +1,86 @@ +import path from 'path' +import chalk from 'chalk' +import { writeFileSync } from 'fs-extra' +import { ComponentType } from '@teleporthq/teleport-types' +import { DefaultConfigTemplate, UUDID_REGEX, CONFIG_FILE } from './constants' +import { findFileByName } from './services/file' + +export const updateConfigFile = ( + fn: (content: DefaultConfigTemplate) => void, + customPath?: string +) => { + const content = getConfigFile() + fn(content) + writeFileSync( + customPath || path.join(process.cwd(), CONFIG_FILE), + JSON.stringify(content, null, 2) + ) +} + +const getConfigFile = () => { + const fileContent = findFileByName(CONFIG_FILE) + if (!fileContent) { + return + } + return JSON.parse(fileContent) as DefaultConfigTemplate +} + +export const getComponentType = (): ComponentType => { + const config = getConfigFile() + const packageJSON = getPackageJSON() + + return ( + config?.componentType || + findFlavourByDependencies( + Object.keys( + { + ...((packageJSON?.dependencies as unknown as Record) || {}), + ...((packageJSON?.devDependencies as unknown as Record) || {}), + } || {} + ) + ) + ) +} + +export const getPackageJSON = (): Record< + string, + Record | string | number +> | null => { + const json = findFileByName(`package.json`) + if (!json) { + console.warn(chalk.yellow(`Please run the command inside a project that contains package.json`)) + return null + } + return JSON.parse(json) as Record> +} + +export const extractCompIdsFromURls = (components: string[]) => + components.reduce((acc: Record, comp: string) => { + const slug = comp.split('/')[4] || null + const compId = comp.match(UUDID_REGEX)[0] + if (slug && compId) { + acc[compId] = slug + } + return acc + }, {}) + +export const findFlavourByDependencies = (deps: string[]): ComponentType => { + switch (true) { + case deps.includes('react'): + return ComponentType.REACT + case deps.includes('@angular/core'): + return ComponentType.ANGULAR + case deps.includes('@stencil/core'): + return ComponentType.STENCIL + case deps.includes('vue'): + return ComponentType.VUE + case deps.includes('preact'): + return ComponentType.PREACT + case deps.includes('nuxt'): + return ComponentType.VUE + default: { + console.warn(chalk.yellow(`Failed in detecting project type, fallback to React`)) + return ComponentType.REACT + } + } +} diff --git a/packages/teleport-cli/tsconfig.json b/packages/teleport-cli/tsconfig.json new file mode 100644 index 000000000..89ea1a3c2 --- /dev/null +++ b/packages/teleport-cli/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "dist/esm" + }, + "include": [ + "./src" + ] +} \ No newline at end of file diff --git a/packages/teleport-publisher-disk/src/utils.ts b/packages/teleport-publisher-disk/src/utils.ts index 325e169d8..943111838 100644 --- a/packages/teleport-publisher-disk/src/utils.ts +++ b/packages/teleport-publisher-disk/src/utils.ts @@ -1,8 +1,8 @@ -import { existsSync, mkdir, writeFile, WriteFileOptions } from 'fs' +import { existsSync, mkdir, writeFile } from 'fs' import PathResolver from 'path-browserify' import fetch from 'cross-fetch' -const { join } = PathResolver import { GeneratedFolder, GeneratedFile } from '@teleporthq/teleport-types' +const { join } = PathResolver export const writeFolder = async ( folder: GeneratedFolder, @@ -65,10 +65,10 @@ const createDirectory = (pathToDir: string): Promise => { const writeContentToFile = ( filePath: string, fileContent: string | Buffer, - encoding: WriteFileOptions = 'utf8' + encoding: BufferEncoding = 'utf8' ): Promise => { return new Promise((resolve, reject) => { - writeFile(filePath, fileContent, encoding, (err) => { + writeFile(filePath, fileContent, { encoding }, (err) => { err ? reject(err) : resolve() }) }) diff --git a/yarn.lock b/yarn.lock index a3305b015..2c80989d0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16,47 +16,47 @@ dependencies: "@babel/highlight" "^7.16.7" -"@babel/compat-data@^7.16.4": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.0.tgz#86850b8597ea6962089770952075dcaabb8dba34" - integrity sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng== +"@babel/compat-data@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.7.tgz#078d8b833fbbcc95286613be8c716cef2b519fa2" + integrity sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ== "@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.5": - version "7.17.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.5.tgz#6cd2e836058c28f06a4ca8ee7ed955bbf37c8225" - integrity sha512-/BBMw4EvjmyquN5O+t5eh0+YqB3XXJkYD2cjKpYtWOfFy4lQ4UozNSmxAcWT8r2XtZs0ewG+zrfsqeR15i1ajA== + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.9.tgz#6bae81a06d95f4d0dec5bb9d74bbc1f58babdcfe" + integrity sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.3" - "@babel/helper-compilation-targets" "^7.16.7" - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helpers" "^7.17.2" - "@babel/parser" "^7.17.3" + "@babel/generator" "^7.17.9" + "@babel/helper-compilation-targets" "^7.17.7" + "@babel/helper-module-transforms" "^7.17.7" + "@babel/helpers" "^7.17.9" + "@babel/parser" "^7.17.9" "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.3" + "@babel/traverse" "^7.17.9" "@babel/types" "^7.17.0" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" - json5 "^2.1.2" + json5 "^2.2.1" semver "^6.3.0" -"@babel/generator@^7.17.3", "@babel/generator@^7.5.5": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.3.tgz#a2c30b0c4f89858cb87050c3ffdfd36bdf443200" - integrity sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg== +"@babel/generator@^7.17.9", "@babel/generator@^7.5.5": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.9.tgz#f4af9fd38fa8de143c29fce3f71852406fc1e2fc" + integrity sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ== dependencies: "@babel/types" "^7.17.0" jsesc "^2.5.1" source-map "^0.5.0" -"@babel/helper-compilation-targets@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz#06e66c5f299601e6c7da350049315e83209d551b" - integrity sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA== +"@babel/helper-compilation-targets@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz#a3c2924f5e5f0379b356d4cfb313d1414dc30e46" + integrity sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w== dependencies: - "@babel/compat-data" "^7.16.4" + "@babel/compat-data" "^7.17.7" "@babel/helper-validator-option" "^7.16.7" browserslist "^4.17.5" semver "^6.3.0" @@ -68,21 +68,13 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-function-name@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" - integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA== +"@babel/helper-function-name@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12" + integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg== dependencies: - "@babel/helper-get-function-arity" "^7.16.7" "@babel/template" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/helper-get-function-arity@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" - integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw== - dependencies: - "@babel/types" "^7.16.7" + "@babel/types" "^7.17.0" "@babel/helper-hoist-variables@^7.16.7": version "7.16.7" @@ -98,14 +90,14 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-module-transforms@^7.16.7": - version "7.17.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.6.tgz#3c3b03cc6617e33d68ef5a27a67419ac5199ccd0" - integrity sha512-2ULmRdqoOMpdvkbT8jONrZML/XALfzxlb052bldftkicAUy8AxSCkD5trDPQcwHNmolcl7wP6ehNqMlyUw6AaA== +"@babel/helper-module-transforms@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz#3943c7f777139e7954a5355c815263741a9c1cbd" + integrity sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw== dependencies: "@babel/helper-environment-visitor" "^7.16.7" "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-simple-access" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" "@babel/helper-split-export-declaration" "^7.16.7" "@babel/helper-validator-identifier" "^7.16.7" "@babel/template" "^7.16.7" @@ -117,12 +109,12 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== -"@babel/helper-simple-access@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz#d656654b9ea08dbb9659b69d61063ccd343ff0f7" - integrity sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g== +"@babel/helper-simple-access@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz#aaa473de92b7987c6dfa7ce9a7d9674724823367" + integrity sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA== dependencies: - "@babel/types" "^7.16.7" + "@babel/types" "^7.17.0" "@babel/helper-split-export-declaration@^7.16.7": version "7.16.7" @@ -141,28 +133,28 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== -"@babel/helpers@^7.17.2": - version "7.17.2" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.2.tgz#23f0a0746c8e287773ccd27c14be428891f63417" - integrity sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ== +"@babel/helpers@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.9.tgz#b2af120821bfbe44f9907b1826e168e819375a1a" + integrity sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q== dependencies: "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.0" + "@babel/traverse" "^7.17.9" "@babel/types" "^7.17.0" "@babel/highlight@^7.16.7": - version "7.16.10" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" - integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw== + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.9.tgz#61b2ee7f32ea0454612def4fccdae0de232b73e3" + integrity sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg== dependencies: "@babel/helper-validator-identifier" "^7.16.7" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.3": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.3.tgz#b07702b982990bf6fdc1da5049a23fece4c5c3d0" - integrity sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.9.tgz#9c94189a6062f0291418ca021077983058e171ef" + integrity sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg== "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -249,9 +241,9 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/runtime@^7.14.6", "@babel/runtime@^7.3.1", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3": - version "7.17.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.2.tgz#66f68591605e59da47523c631416b18508779941" - integrity sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw== + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72" + integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg== dependencies: regenerator-runtime "^0.13.4" @@ -264,18 +256,18 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.17.0", "@babel/traverse@^7.17.3": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57" - integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw== +"@babel/traverse@^7.1.0", "@babel/traverse@^7.17.3", "@babel/traverse@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.9.tgz#1f9b207435d9ae4a8ed6998b2b82300d83c37a0d" + integrity sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw== dependencies: "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.3" + "@babel/generator" "^7.17.9" "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" + "@babel/helper-function-name" "^7.17.9" "@babel/helper-hoist-variables" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.17.3" + "@babel/parser" "^7.17.9" "@babel/types" "^7.17.0" debug "^4.1.0" globals "^11.1.0" @@ -315,9 +307,9 @@ integrity sha512-oSls82fmUTLM6cl5V3epdVo4gHhbmBFvCvQGHBRdQ50H/690Uq1Dyd7hXMuKITCIdcnr9umyDkr8r5C6HZDF3g== "@commitlint/load@>6.1.1": - version "16.2.1" - resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-16.2.1.tgz#301bda1bff66b3e40a85819f854eda72538d8e24" - integrity sha512-oSpz0jTyVI/A1AIImxJINTLDOMB8YF7lWGm+Jg5wVWM0r7ucpuhyViVvpSRTgvL0z09oIxlctyFGWUQQpI42uw== + version "16.2.3" + resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-16.2.3.tgz#7b2e85af25a6f736f080ba08e7165738cedf8c8f" + integrity sha512-Hb4OUlMnBUK6UxJEZ/VJ5k0LocIS7PtEMbRXEAA7eSpOgORIFexC4K/RaRpVd5UTtu3M0ST3ddPPijF9rdW6nw== dependencies: "@commitlint/config-validator" "^16.2.1" "@commitlint/execute-rule" "^16.2.1" @@ -363,9 +355,9 @@ "@cspotcode/source-map-consumer" "0.8.0" "@discoveryjs/json-ext@^0.5.0": - version "0.5.6" - resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz#d5e0706cf8c6acd8c6032f8d54070af261bbbb2f" - integrity sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA== + version "0.5.7" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" + integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== "@gar/promisify@^1.0.1", "@gar/promisify@^1.1.3": version "1.1.3" @@ -1603,13 +1595,13 @@ "@octokit/types" "^6.0.3" "@octokit/core@^3.3.2", "@octokit/core@^3.4.0", "@octokit/core@^3.5.1": - version "3.5.1" - resolved "https://registry.yarnpkg.com/@octokit/core/-/core-3.5.1.tgz#8601ceeb1ec0e1b1b8217b960a413ed8e947809b" - integrity sha512-omncwpLVxMP+GLpLPgeGJBF6IWJFjXDS5flY5VbppePYX9XehevbDykRH9PdCdvqt9TS5AOTiDide7h0qrkHjw== + version "3.6.0" + resolved "https://registry.yarnpkg.com/@octokit/core/-/core-3.6.0.tgz#3376cb9f3008d9b3d110370d90e0a1fcd5fe6085" + integrity sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q== dependencies: "@octokit/auth-token" "^2.4.4" "@octokit/graphql" "^4.5.8" - "@octokit/request" "^5.6.0" + "@octokit/request" "^5.6.3" "@octokit/request-error" "^2.0.5" "@octokit/types" "^6.0.3" before-after-hook "^2.2.0" @@ -1754,9 +1746,9 @@ bottleneck "^2.15.3" "@octokit/plugin-throttling@^3.5.1": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@octokit/plugin-throttling/-/plugin-throttling-3.5.2.tgz#8b1797a5f14edbca0b8af619394056ed0ed5c9b5" - integrity sha512-Eu7kfJxU8vmHqWGNszWpg+GVp2tnAfax3XQV5CkYPEE69C+KvInJXW9WajgSeW+cxYe0UVdouzCtcreGNuJo7A== + version "3.6.2" + resolved "https://registry.yarnpkg.com/@octokit/plugin-throttling/-/plugin-throttling-3.6.2.tgz#abfc045309b8e46f6d6b6c01047eb41c4031f2f8" + integrity sha512-0az5fxgVlhFfFtiKLKVXTpmCG2tK3BG0fYI8SO4pmGlN1kyJktJVQA+6KKaFxtxMIWsuHmSEAkR6zSgtk86g2A== dependencies: "@octokit/types" "^6.0.1" bottleneck "^2.15.3" @@ -1832,19 +1824,19 @@ resolved "https://registry.yarnpkg.com/@octokit/webhooks-methods/-/webhooks-methods-2.0.0.tgz#1108b9ea661ca6c81e4a8bfa63a09eb27d5bc2db" integrity sha512-35cfQ4YWlnZnmZKmIxlGPUPLtbkF8lr/A/1Sk1eC0ddLMwQN06dOuLc+dI3YLQS+T+MoNt3DIQ0NynwgKPilig== -"@octokit/webhooks-types@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@octokit/webhooks-types/-/webhooks-types-5.2.0.tgz#9d1d451f37460107409c81cab04dd473108abb02" - integrity sha512-OZhKy1w8/GF4GWtdiJc+o8sloWAHRueGB78FWFLZnueK7EHV9MzDVr4weJZMflJwMK4uuYLzcnJVnAoy3yB35g== +"@octokit/webhooks-types@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@octokit/webhooks-types/-/webhooks-types-5.5.1.tgz#3ab94e890bee827302c6312e80497426d6627cbf" + integrity sha512-FaBbqZS2e4fCdQvUqeBKpJJOVsRxGcrf0NA91WBXz9GP5/4xgQgdjpbzAcDOSfESBYDYD78HeI5VeihfCW28Ew== "@octokit/webhooks@^9.0.1": - version "9.22.0" - resolved "https://registry.yarnpkg.com/@octokit/webhooks/-/webhooks-9.22.0.tgz#07a36a10358d39c1870758fae2b1ad3c24ca578d" - integrity sha512-wUd7nGfDRHG6xkz311djmq6lIB2tQ+r94SNkyv9o0bQhOsrkwH8fQCM7uVsbpkGUU2lqCYsVoa8z/UC9HJgRaw== + version "9.23.0" + resolved "https://registry.yarnpkg.com/@octokit/webhooks/-/webhooks-9.23.0.tgz#16fc24284afdf3e119d32928dd3f8b338890e56c" + integrity sha512-4+imw+CajrKpafaE9oLCtXyU3ZAcCLwuoeZ3XmFruQZCEcBBJYE/juSFvU3x1HkFFeKwsUyr+nRikRwiK/VSmA== dependencies: "@octokit/request-error" "^2.0.2" "@octokit/webhooks-methods" "^2.0.0" - "@octokit/webhooks-types" "5.2.0" + "@octokit/webhooks-types" "5.5.1" aggregate-error "^3.1.0" "@parcel/watcher@2.0.4": @@ -1887,6 +1879,17 @@ unist-util-is "^2.1.3" xtend "^4.0.1" +"@teleporthq/teleport-mapper@https://gitlab.com/teleporthq/playground/teleport-mapper.git#2d2e2424dbd70a1d226fc3fcd6de76505589ffc7": + version "0.0.1" + resolved "https://gitlab.com/teleporthq/playground/teleport-mapper.git#2d2e2424dbd70a1d226fc3fcd6de76505589ffc7" + dependencies: + "@teleporthq/teleport-types" "^0.19.8" + +"@teleporthq/teleport-types@^0.19.8": + version "0.19.22" + resolved "https://registry.yarnpkg.com/@teleporthq/teleport-types/-/teleport-types-0.19.22.tgz#4b183c300c7b6d5c9029b26674097fd1142edd74" + integrity sha512-ivCS0CJK6Y/NsW/nOSv7L/wnbItqUfQLtfJIQNr6U273SsXfMBMkNWCLVyqAQ+ZQ2hqPkYe1a91toiyGonBD6g== + "@tootallnate/once@1": version "1.1.2" resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" @@ -1935,9 +1938,9 @@ integrity sha512-pkPtJUUY+Vwv6B1inAz55rQvivClHJxc9aVEPPmaq2cbyeMLCiDpbKpcKyX4LAwpNGi+SHBv0tHv6+0gXv0P2A== "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": - version "7.1.18" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.18.tgz#1a29abcc411a9c05e2094c98f9a1b7da6cdf49f8" - integrity sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ== + version "7.1.19" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460" + integrity sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" @@ -1961,9 +1964,9 @@ "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.14.2.tgz#ffcd470bbb3f8bf30481678fb5502278ca833a43" - integrity sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA== + version "7.17.0" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.17.0.tgz#7a9b80f712fe2052bc20da153ff1e552404d8e4b" + integrity sha512-r8aveDbd+rzGP+ykSdF3oPuTVRWRfbBiHl0rVDM2yNEmSMXfkObQLV46b4RnCv3Lra51OlfnZhkkFaDl2MIRaA== dependencies: "@babel/types" "^7.3.0" @@ -1972,6 +1975,11 @@ resolved "https://registry.yarnpkg.com/@types/btoa-lite/-/btoa-lite-1.0.0.tgz#e190a5a548e0b348adb0df9ac7fa5f1151c7cca4" integrity sha512-wJsiX1tosQ+J5+bY5LrSahHxr2wT+uME5UDwdN1kg4frt40euqA+wzECkmq4t5QbveHiJepfdThgQrPw6KiSlg== +"@types/diff@^5.0.0": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@types/diff/-/diff-5.0.2.tgz#dd565e0086ccf8bc6522c6ebafd8a3125c91c12b" + integrity sha512-uw8eYMIReOwstQ0QKF0sICefSy8cNO/v7gOTiIy9SbwuHyEecJUm7qlgueOO5S1udZ5I/irVydHVwMchgzbKTg== + "@types/eslint-scope@^3.7.3": version "3.7.3" resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.3.tgz#125b88504b61e3c8bc6f870882003253005c3224" @@ -1993,6 +2001,13 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== +"@types/fs-extra@^9.0.11": + version "9.0.13" + resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45" + integrity sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA== + dependencies: + "@types/node" "*" + "@types/glob@*", "@types/glob@^7.1.1": version "7.2.0" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" @@ -2049,9 +2064,9 @@ pretty-format "^25.2.1" "@types/json-schema@*", "@types/json-schema@^7.0.8": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" - integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== "@types/json5@^0.0.29": version "0.0.29" @@ -2075,12 +2090,12 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== -"@types/minimist@^1.2.0": +"@types/minimist@^1.2.0", "@types/minimist@^1.2.1": version "1.2.2" resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== -"@types/node-fetch@^2.6.1": +"@types/node-fetch@^2.5.10", "@types/node-fetch@^2.6.1": version "2.6.1" resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.1.tgz#8f127c50481db65886800ef496f20bbf15518975" integrity sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA== @@ -2109,9 +2124,9 @@ integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== "@types/prettier@^2.0.0", "@types/prettier@^2.1.6": - version "2.4.4" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.4.4.tgz#5d9b63132df54d8909fce1c3f8ca260fdd693e17" - integrity sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA== + version "2.6.0" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.6.0.tgz#efcbd41937f9ae7434c714ab698604822d890759" + integrity sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw== "@types/retry@*": version "0.12.1" @@ -2448,14 +2463,14 @@ ansi-regex@^2.0.0: integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" + integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" + integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== ansi-regex@^5.0.0, ansi-regex@^5.0.1: version "5.0.1" @@ -2988,12 +3003,12 @@ browserify-zlib@^0.2.0: pako "~1.0.5" browserslist@^4.14.5, browserslist@^4.17.5: - version "4.19.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.3.tgz#29b7caad327ecf2859485f696f9604214bedd383" - integrity sha512-XK3X4xtKJ+Txj8G5c30B4gsm71s69lqXlkYui4s6EkKxuv49qjYlY6oVd+IFJ73d4YymtM3+djvvt/R/iJwwDg== + version "4.20.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.2.tgz#567b41508757ecd904dab4d1c646c612cd3d4f88" + integrity sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA== dependencies: - caniuse-lite "^1.0.30001312" - electron-to-chromium "^1.4.71" + caniuse-lite "^1.0.30001317" + electron-to-chromium "^1.4.84" escalade "^3.1.1" node-releases "^2.0.2" picocolors "^1.0.0" @@ -3222,10 +3237,10 @@ camelcase@^6.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001312: - version "1.0.30001312" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz#e11eba4b87e24d22697dae05455d5aea28550d5f" - integrity sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ== +caniuse-lite@^1.0.30001317: + version "1.0.30001332" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz#39476d3aa8d83ea76359c70302eafdd4a1d727dd" + integrity sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw== capture-exit@^2.0.0: version "2.0.0" @@ -3370,9 +3385,9 @@ class-utils@^0.3.5: static-extend "^0.1.1" clean-css@^5.2.2: - version "5.2.4" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.2.4.tgz#982b058f8581adb2ae062520808fb2429bd487a4" - integrity sha512-nKseG8wCzEuji/4yrgM/5cthL9oTDc5UOQyFMvW/Q53oP6gLH690o1NbuTh6Y18nujr7BxlsFuS7gXLnLzKJGg== + version "5.3.0" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.0.tgz#ad3d8238d5f3549e83d5f87205189494bc7cbb59" + integrity sha512-YYuuxv4H/iNb1Z/5IbMRoxgrzjWGhOEFfd+groZ5dMCVkpENiMZmwspdrzBo9286JjM1gZJPAyL7ZIdzuvu2AQ== dependencies: source-map "~0.6.0" @@ -3417,6 +3432,11 @@ cli-spinners@^2.5.0: resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.7.0.tgz#f815fd30b5f9eaac02db604c7a231ed7cb2f797a" integrity sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw== +cli-spinners@^2.5.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" + integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== + cli-width@^2.0.0: version "2.2.1" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" @@ -3570,7 +3590,7 @@ commander@^2.12.1, commander@^2.18.0, commander@^2.20.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^7.0.0: +commander@^7.0.0, commander@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== @@ -3828,12 +3848,12 @@ core-util-is@~1.0.0: integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== cosmiconfig-typescript-loader@^1.0.0: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-1.0.6.tgz#6d879cece8063b15ec8a3258f55a8e94893c7cca" - integrity sha512-2nEotziYJWtNtoTjKbchj9QrdTT6DBxCvqjNKoDKARw+e2yZmTQCa07uRrykLIZuvSgp69YXLH89UHc0WhdMfQ== + version "1.0.9" + resolved "https://registry.yarnpkg.com/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-1.0.9.tgz#69c523f7e8c3d9f27f563d02bbeadaf2f27212d3" + integrity sha512-tRuMRhxN4m1Y8hP9SNYfz7jRwt8lZdWxdjg/ohg5esKmsndJIn4yT96oJVcf5x0eA11taXl+sIp+ielu529k6g== dependencies: cosmiconfig "^7" - ts-node "^10.6.0" + ts-node "^10.7.0" cosmiconfig@^5.2.1: version "5.2.1" @@ -3944,13 +3964,13 @@ crypto-browserify@^3.12.0: randomfill "^1.0.3" css-select@^4.1.3: - version "4.2.1" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.2.1.tgz#9e665d6ae4c7f9d65dbe69d0316e3221fb274cdd" - integrity sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ== + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== dependencies: boolbase "^1.0.0" - css-what "^5.1.0" - domhandler "^4.3.0" + css-what "^6.0.1" + domhandler "^4.3.1" domutils "^2.8.0" nth-check "^2.0.1" @@ -3962,10 +3982,10 @@ css-vendor@^2.0.8: "@babel/runtime" "^7.8.3" is-in-browser "^1.0.2" -css-what@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" - integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw== +css-what@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== cssom@^0.4.4: version "0.4.4" @@ -3985,9 +4005,9 @@ cssstyle@^2.3.0: cssom "~0.3.6" csstype@^3.0.2: - version "3.0.10" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.10.tgz#2ad3a7bed70f35b965707c092e5f30b327c290e5" - integrity sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA== + version "3.0.11" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.11.tgz#d66700c5eacfac1940deb4e3ee5642792d85cd33" + integrity sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw== cz-conventional-changelog@3.2.0: version "3.2.0" @@ -4044,9 +4064,9 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3: ms "2.0.0" debug@4, debug@^4.1.0, debug@^4.1.1: - version "4.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" - integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" @@ -4245,9 +4265,9 @@ detect-node@^2.0.4: integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== dezalgo@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" - integrity sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY= + version "1.0.4" + resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.4.tgz#751235260469084c132157dfa857f386d4c33d81" + integrity sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig== dependencies: asap "^2.0.0" wrappy "1" @@ -4272,6 +4292,11 @@ diff@^4.0.1: resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== +diff@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" + integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== + diffie-hellman@^5.0.0: version "5.0.3" resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" @@ -4316,9 +4341,9 @@ dom-converter@^0.2.0: utila "~0.4" dom-serializer@^1.0.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" - integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== + version "1.4.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== dependencies: domelementtype "^2.0.1" domhandler "^4.2.0" @@ -4330,9 +4355,9 @@ domain-browser@^4.19.0: integrity sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw== domelementtype@^2.0.1, domelementtype@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" - integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== domexception@^2.0.1: version "2.0.1" @@ -4341,10 +4366,10 @@ domexception@^2.0.1: dependencies: webidl-conversions "^5.0.0" -domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.0.tgz#16c658c626cf966967e306f966b431f77d4a5626" - integrity sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g== +domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== dependencies: domelementtype "^2.2.0" @@ -4406,10 +4431,10 @@ ejs@^2.6.1: resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== -electron-to-chromium@^1.4.71: - version "1.4.75" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.75.tgz#d1ad9bb46f2f1bf432118c2be21d27ffeae82fdd" - integrity sha512-LxgUNeu3BVU7sXaKjUDD9xivocQLxFtq6wgERrutdY/yIOps3ODOZExK1jg8DTEg4U8TUCb5MLGeWFOYuxjF3Q== +electron-to-chromium@^1.4.84: + version "1.4.107" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.107.tgz#564257014ab14033b4403a309c813123c58a3fb9" + integrity sha512-Huen6taaVrUrSy8o7mGStByba8PfOWWluHNxSHGBrCgEdFVLtvdQDBr9LBCF9Uci8SYxh28QNNMO0oC17wbGAg== elliptic@^6.5.3: version "6.5.4" @@ -4458,10 +4483,10 @@ end-of-stream@^1.1.0, end-of-stream@^1.4.1: dependencies: once "^1.4.0" -enhanced-resolve@^5.8.3: - version "5.9.2" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz#0224dcd6a43389ebfb2d55efee517e5466772dd9" - integrity sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA== +enhanced-resolve@^5.9.2: + version "5.9.3" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz#44a342c012cbc473254af5cc6ae20ebd0aae5d88" + integrity sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -4518,15 +4543,15 @@ es-abstract@^1.18.5: get-intrinsic "^1.1.1" get-symbol-description "^1.0.0" has "^1.0.3" - has-symbols "^1.0.2" + has-symbols "^1.0.3" internal-slot "^1.0.3" is-callable "^1.2.4" - is-negative-zero "^2.0.1" + is-negative-zero "^2.0.2" is-regex "^1.1.4" - is-shared-array-buffer "^1.0.1" + is-shared-array-buffer "^1.0.2" is-string "^1.0.7" - is-weakref "^1.0.1" - object-inspect "^1.11.0" + is-weakref "^1.0.2" + object-inspect "^1.12.0" object-keys "^1.1.1" object.assign "^4.1.2" string.prototype.trimend "^1.0.4" @@ -5661,9 +5686,9 @@ http-errors@~1.6.2: statuses ">= 1.4.0 < 2" http-parser-js@>=0.5.1: - version "0.5.5" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.5.tgz#d7c30d5d3c90d865b4a2e870181f9d6f22ac7ac5" - integrity sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA== + version "0.5.6" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.6.tgz#2e02406ab2df8af8a7abfba62e0da01c62b95afd" + integrity sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA== http-proxy-agent@^4.0.0, http-proxy-agent@^4.0.1: version "4.0.1" @@ -6214,15 +6239,15 @@ is-nan@^1.2.1: call-bind "^1.0.0" define-properties "^1.1.3" -is-negative-zero@^2.0.1: +is-negative-zero@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== is-number-object@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" - integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== dependencies: has-tostringtag "^1.0.0" @@ -6297,10 +6322,12 @@ is-regex@^1.0.4, is-regex@^1.1.4: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-shared-array-buffer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" - integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" is-ssh@^1.4.0: version "1.4.0" @@ -6366,7 +6393,7 @@ is-utf8@^0.2.1: resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= -is-weakref@^1.0.1: +is-weakref@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== @@ -6953,12 +6980,10 @@ json-stringify-safe@^5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= -json5@2.x, json5@^2.1.2: - version "2.2.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" - integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== - dependencies: - minimist "^1.2.5" +json5@2.x, json5@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" + integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== json5@^1.0.1: version "1.0.1" @@ -7144,9 +7169,9 @@ jss@10.9.0, jss@^10.0.0: tiny-warning "^1.0.2" jszip@^3.2.2: - version "3.7.1" - resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.7.1.tgz#bd63401221c15625a1228c556ca8a68da6fda3d9" - integrity sha512-ghL0tz1XG9ZEmRMcEN2vt7xabrDdqHHeykgARpmZ0BiIctWxM47Vt63ZO2dnp4QYt/xJVLLy5Zv1l/xRdh2byg== + version "3.9.1" + resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.9.1.tgz#784e87f328450d1e8151003a9c67733e2b901051" + integrity sha512-H9A60xPqJ1CuC4Ka6qxzXZeU8aNmgOeP5IFqwJbQQwtu2EUYxota3LdsiZWplF7Wgd9tkAd0mdu36nceSaPuYw== dependencies: lie "~3.3.0" pako "~1.0.2" @@ -7320,9 +7345,9 @@ load-json-file@^6.2.0: type-fest "^0.6.0" loader-runner@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" - integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== + version "4.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== locate-path@^2.0.0: version "2.0.0" @@ -7644,12 +7669,12 @@ micromatch@^3.1.10, micromatch@^3.1.4: to-regex "^3.0.2" micromatch@^4.0.2: - version "4.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== dependencies: - braces "^3.0.1" - picomatch "^2.2.3" + braces "^3.0.2" + picomatch "^2.3.1" micromatch@^4.0.4: version "4.0.5" @@ -7667,12 +7692,7 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@1.51.0: - version "1.51.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" - integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== - -"mime-db@>= 1.43.0 < 2": +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== @@ -7682,7 +7702,7 @@ mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.24, resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== dependencies: - mime-db "1.51.0" + mime-db "1.52.0" mime@1.6.0: version "1.6.0" @@ -7855,11 +7875,11 @@ mkdirp@1.x, mkdirp@^1.0.3, mkdirp@^1.0.4: integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== dependencies: - minimist "^1.2.5" + minimist "^1.2.6" modify-values@^1.0.0: version "1.0.1" @@ -8100,9 +8120,9 @@ node-polyfill-webpack-plugin@^1.1.4: vm-browserify "^1.1.2" node-releases@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01" - integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg== + version "2.0.3" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.3.tgz#225ee7488e4a5e636da8da52854844f9d716ca96" + integrity sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw== nopt@^5.0.0: version "5.0.0" @@ -8341,7 +8361,7 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-inspect@^1.11.0: +object-inspect@^1.12.0: version "1.12.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== @@ -8936,9 +8956,9 @@ prelude-ls@~1.1.2: integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= prettier@^2.3.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.5.1.tgz#fff75fa9d519c54cf0fce328c1017d94546bc56a" - integrity sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg== + version "2.6.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.6.2.tgz#e26d71a18a74c3d0f0597f55f01fb6c06c206032" + integrity sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew== pretty-error@^4.0.0: version "4.0.0" @@ -9351,9 +9371,9 @@ regex-not@^1.0.0, regex-not@^1.0.2: safe-regex "^1.1.0" regexp.prototype.flags@^1.2.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz#b3f4c0059af9e47eca9f3f660e51d81307e72307" - integrity sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ== + version "1.4.2" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.2.tgz#bf635117a2f4b755595ebb0c0ee2d2a49b2084db" + integrity sha512-Ynz8fTQW5/1elh+jWU2EDDzeoNbD0OQ0R+D1VJU5ATOkUaro4A9YEkdN2ODQl/8UQFPPpZNw91fOcLFamM7Pww== dependencies: call-bind "^1.0.2" define-properties "^1.1.3" @@ -9648,9 +9668,9 @@ semver@7.3.4: lru-cache "^6.0.0" semver@7.x, semver@^7.3.2, semver@^7.3.4: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + version "7.3.7" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== dependencies: lru-cache "^6.0.0" @@ -10566,10 +10586,10 @@ ts-jest@^26.5.6: semver "7.x" yargs-parser "20.x" -ts-node@^10.6.0: - version "10.6.0" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.6.0.tgz#c3f4195d5173ce3affdc8f2fd2e9a7ac8de5376a" - integrity sha512-CJen6+dfOXolxudBQXnVjRVvYTmTWbyz7cn+xq2XTsvnaXbHqr4gXSCNbS2Jj8yTZMuGwUoBESLaOkLascVVvg== +ts-node@^10.7.0: + version "10.7.0" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.7.0.tgz#35d503d0fab3e2baa672a0e94f4b40653c2463f5" + integrity sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A== dependencies: "@cspotcode/source-map-support" "0.7.0" "@tsconfig/node10" "^1.0.7" @@ -10715,14 +10735,14 @@ typedarray@^0.0.6: integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= typescript@^4.3.5, typescript@^4.4.3: - version "4.6.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.2.tgz#fe12d2727b708f4eef40f51598b3398baa9611d4" - integrity sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg== + version "4.6.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.3.tgz#eefeafa6afdd31d725584c67a0eaba80f6fc6c6c" + integrity sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw== uglify-js@^3.1.4: - version "3.15.2" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.15.2.tgz#1ed2c976f448063b1f87adb68c741be79959f951" - integrity sha512-peeoTk3hSwYdoc9nrdiEJk+gx1ALCtTjdYuKSXMTDqq7n1W7dHPqWDdSi+BPL0ni2YMeHD7hKUSdbj3TZauY2A== + version "3.15.4" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.15.4.tgz#fa95c257e88f85614915b906204b9623d4fa340d" + integrity sha512-vMOPGDuvXecPs34V74qDKk4iJ/SN4vL3Ow/23ixafENYvtrNvtbcgUeugTcUGRGsOF/5fU8/NYSL5Hyb3l1OJA== unbox-primitive@^1.0.1: version "1.0.1" @@ -11109,9 +11129,9 @@ webpack-sources@^3.2.3: integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== webpack@^5.42.0: - version "5.69.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.69.1.tgz#8cfd92c192c6a52c99ab00529b5a0d33aa848dc5" - integrity sha512-+VyvOSJXZMT2V5vLzOnDuMz5GxEqLk7hKWQ56YxPW/PQRUuKimPqmEIJOx8jHYeyo65pKbapbW464mvsKbaj4A== + version "5.72.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.72.0.tgz#f8bc40d9c6bb489a4b7a8a685101d6022b8b6e28" + integrity sha512-qmSmbspI0Qo5ld49htys8GY9XhS9CGqFoHTsOVAnjBdg0Zn79y135R+k4IR4rKK6+eKaabMhJwiVB7xw0SJu5w== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^0.0.51" @@ -11122,7 +11142,7 @@ webpack@^5.42.0: acorn-import-assertions "^1.7.6" browserslist "^4.14.5" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.8.3" + enhanced-resolve "^5.9.2" es-module-lexer "^0.9.0" eslint-scope "5.1.1" events "^3.2.0"