diff --git a/.husky/pre-commit b/.husky/pre-commit index 0f46f55b..7664d352 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -3,12 +3,6 @@ yarn run markdown-source-import README.md --git-add -cp README.md packages/src/@rocket-scripts/web/README.md -git add packages/src/@rocket-scripts/web/README.md - -cp README.md packages/src/@rocket-scripts/electron/README.md -git add packages/src/@rocket-scripts/electron/README.md - yarn run lint-staged yarn workspace packages run precommit \ No newline at end of file diff --git a/package.json b/package.json index 290ce196..2dc6f650 100644 --- a/package.json +++ b/package.json @@ -27,9 +27,9 @@ "@handbook/markdown-source-import": "^1.1.0", "@ssen/eslint-config": "^2.0.1", "@ssen/prettier-config": "^2.0.1", - "eslint": "^7.27.0", - "husky": "^6.0.0", - "lint-staged": "^11.0.0", - "prettier": "^2.3.0" + "eslint": "^7.32.0", + "husky": "^7.0.1", + "lint-staged": "^11.1.2", + "prettier": "^2.3.2" } } diff --git a/packages/.packages.json b/packages/.packages.json index 171a6b8f..f293c894 100644 --- a/packages/.packages.json +++ b/packages/.packages.json @@ -1,13 +1,11 @@ { "$schema": "https://rocket-hangar.github.io/rocket-punch/schemas/packages.json", "@ssen/*": { - "version": "3.2.0", - "tag": "latest", - "module": "commonjs" + "version": "4.0.0-alpha.3", + "tag": "canary" }, "@rocket-scripts/*": { - "version": "3.2.0", - "tag": "latest", - "module": "commonjs" + "version": "4.0.0-alpha.7", + "tag": "canary" } } \ No newline at end of file diff --git a/packages/package.json b/packages/package.json index 922bdf59..664b9302 100644 --- a/packages/package.json +++ b/packages/package.json @@ -2,37 +2,13 @@ "name": "packages", "version": "1.0.0", "scripts": { - "build": "rocket-punch build --strict", + "build": "rocket-punch build", "publish": "rocket-punch publish", "view": "rocket-punch view", "doctor": "rocket-punch doctor", "test": "jest --runInBand --forceExit --detectOpenHandles --colors", "coverage": "jest --runInBand --forceExit --detectOpenHandles --coverage", - "precommit": "lint-staged", - "run:web:start": "node -r ts-node/register -r tsconfig-paths/register src/@rocket-scripts/web/__run__/start.run.ts", - "run:web:build": "node -r ts-node/register -r tsconfig-paths/register src/@rocket-scripts/web/__run__/build.run.ts", - "run:web:css:start": "node -r ts-node/register -r tsconfig-paths/register src/@rocket-scripts/web/__run__/start.css.run.ts", - "run:web:bundle:start": "node -r ts-node/register -r tsconfig-paths/register src/@rocket-scripts/web/__run__/start.bundle.run.ts", - "run:web:bundle:build": "node -r ts-node/register -r tsconfig-paths/register src/@rocket-scripts/web/__run__/build.bundle.run.ts", - "run:web:isolated-scripts:start": "node -r ts-node/register -r tsconfig-paths/register src/@rocket-scripts/web/__run__/start.isolated-scripts.run.ts", - "run:web:isolated-scripts:build": "node -r ts-node/register -r tsconfig-paths/register src/@rocket-scripts/web/__run__/build.isolated-scripts.run.ts", - "run:web:isolated-scripts:watch": "node -r ts-node/register -r tsconfig-paths/register src/@rocket-scripts/web/__run__/watch.isolated-scripts.run.ts", - "run:web:react-router:start": "node -r ts-node/register -r tsconfig-paths/register src/@rocket-scripts/web/__run__/start.react-router.run.ts", - "run:web:puppeteer-recorder-test": "node -r ts-node/register -r tsconfig-paths/register src/@rocket-scripts/web/__run__/start.puppeteer-recorder-test.run.ts", - "run:web:proxy:start": "node -r ts-node/register -r tsconfig-paths/register src/@rocket-scripts/web/__run__/start.proxy.run.ts", - "run:web:https:start": "node -r ts-node/register -r tsconfig-paths/register src/@rocket-scripts/web/__run__/start.https.run.ts", - "run:web:mdx:start": "node -r ts-node/register -r tsconfig-paths/register src/@rocket-scripts/web/__run__/start.mdx.run.ts", - "run:web:webpack:start": "node -r ts-node/register -r tsconfig-paths/register src/@rocket-scripts/web/__run__/start.webpack.run.ts", - "run:web:webpack:build": "node -r ts-node/register -r tsconfig-paths/register src/@rocket-scripts/web/__run__/build.webpack.run.ts", - "run:web:worker:start": "node -r ts-node/register -r tsconfig-paths/register src/@rocket-scripts/web/__run__/start.worker.run.ts", - "run:web:worker:build": "node -r ts-node/register -r tsconfig-paths/register src/@rocket-scripts/web/__run__/build.worker.run.ts", - "run:webpack-dev-server:basic": "node -r ts-node/register -r tsconfig-paths/register src/@ssen/webpack-dev-server/__run__/basic.run.ts", - "run:webpack-dev-server:multi": "node -r ts-node/register -r tsconfig-paths/register src/@ssen/webpack-dev-server/__run__/multi.run.ts", - "run:webpack-watch-server:basic": "node -r ts-node/register -r tsconfig-paths/register src/@ssen/webpack-watch-server/__run__/basic.run.ts", - "run:webpack-watch-server:multi": "node -r ts-node/register -r tsconfig-paths/register src/@ssen/webpack-watch-server/__run__/multi.run.ts", - "run:electron:start": "node -r ts-node/register -r tsconfig-paths/register src/@rocket-scripts/electron/__run__/start.run.ts", - "run:electron:build": "node -r ts-node/register -r tsconfig-paths/register src/@rocket-scripts/electron/__run__/build.run.ts", - "run:electron-dev-server:start": "node -r ts-node/register -r tsconfig-paths/register src/@ssen/electron-dev-server/__run__/basic.run.ts" + "precommit": "lint-staged" }, "lint-staged": { "src/{**/*,*}/*.{ts,tsx}": [ @@ -40,95 +16,91 @@ ] }, "devDependencies": { - "@mapbox/rehype-prism": "^0.6.0", + "@babel/core": "^7.15.0", + "@mapbox/rehype-prism": "^0.7.0", "@mdx-js/loader": "^1.6.22", - "@ssen/jest-transform": "^2.5.1", - "@ssen/promised": "^2.5.1", - "@ssen/require-typescript": "^2.5.1", - "@ssen/tmp-directory": "^2.5.1", + "@ssen/jest-transform": "^3.0.0", + "@ssen/promised": "^3.0.0", + "@ssen/require-typescript": "^3.0.0", + "@ssen/tmp-directory": "^3.0.0", "@svgr/plugin-jsx": "^5.5.0", "@svgr/webpack": "^5.5.0", - "@testing-library/dom": "^7.31.0", - "@testing-library/react": "^11.2.7", - "@testing-library/react-hooks": "^7.0.0", + "@testing-library/dom": "^8.1.0", + "@testing-library/react": "^12.0.0", + "@testing-library/react-hooks": "^7.0.1", "@types/anymatch": "^3.0.0", + "@types/babel__core": "^7.1.15", "@types/browserslist": "^4.15.0", - "@types/eslint": "^7.2.13", - "@types/file-loader": "^5.0.0", - "@types/fs-extra": "^9.0.11", - "@types/glob": "^7.1.3", - "@types/jest": "^26.0.23", - "@types/js-yaml": "^4.0.1", - "@types/less": "^3.0.2", + "@types/eslint": "^7.28.0", + "@types/file-loader": "^5.0.1", + "@types/fs-extra": "^9.0.12", + "@types/glob": "^7.1.4", + "@types/jest": "^26.0.24", + "@types/js-yaml": "^4.0.3", + "@types/less": "^3.0.3", "@types/lodash.debounce": "^4.0.6", - "@types/mini-css-extract-plugin": "^1.4.3", - "@types/node": "^15.6.2", - "@types/node-fetch": "^2.5.10", - "@types/nodemon": "^1.19.0", - "@types/prompts": "^2.4.0", - "@types/ramda": "^0.27.40", - "@types/react": "^17.0.9", - "@types/react-dev-utils": "^9.0.6", - "@types/react-dom": "^17.0.6", - "@types/react-router-dom": "^5.1.7", + "@types/mini-css-extract-plugin": "^2.2.0", + "@types/node": "^16.7.1", + "@types/node-fetch": "^2.5.12", + "@types/nodemon": "^1.19.1", + "@types/prompts": "^2.0.14", + "@types/ramda": "^0.27.44", + "@types/react": "^17.0.19", + "@types/react-dev-utils": "^9.0.7", + "@types/react-dom": "^17.0.9", + "@types/react-router-dom": "^5.1.8", "@types/react-test-renderer": "^17.0.1", - "@types/resolve": "^1.20.0", - "@types/rimraf": "^3.0.0", - "@types/semver": "^7.3.6", - "@types/source-map-support": "^0.5.3", - "@types/stream-buffers": "^3.0.3", + "@types/resolve": "^1.20.1", + "@types/rimraf": "^3.0.2", + "@types/semver": "^7.3.8", + "@types/source-map-support": "^0.5.4", + "@types/stream-buffers": "^3.0.4", "@types/testing-library__react-hooks": "^4.0.0", - "@types/tmp": "^0.2.0", - "@types/webpack-bundle-analyzer": "^4.4.0", - "@types/webpack-dev-server": "^3.11.4", - "@types/webpack-env": "^1.16.0", + "@types/tmp": "^0.2.1", + "@types/webpack-bundle-analyzer": "^4.4.1", + "@types/webpack-env": "^1.16.2", "@types/webpack-merge": "^5.0.0", - "@types/webpack-node-externals": "^2.5.1", - "@types/yargs": "^17.0.0", + "@types/webpack-node-externals": "^2.5.2", + "@types/yargs": "^17.0.2", "anymatch": "^3.1.2", - "browserslist": "^4.16.6", - "cfonts": "^2.9.2", - "chalk": "^4.1.1", - "chokidar": "^3.5.1", - "css-loader": "^5.2.6", - "date-fns": "^2.22.1", - "electron": "^13.0.1", + "browserslist": "^4.16.8", + "cfonts": "^2.9.3", + "chalk": "^4.1.2", + "chokidar": "^3.5.2", + "css-loader": "^5.2.7", + "date-fns": "^2.23.0", + "electron": "^13.2.1", "esbuild-jest": "^0.5.0", - "esbuild-loader": "^2.13.1", + "esbuild-loader": "^2.15.1", "escape-string-regexp": "^5.0.0", - "eslint": "^7.27.0", + "eslint": "^7.32.0", "eslint-config-prettier": "^8.3.0", "eslint-loader": "^4.0.2", "file-loader": "^6.2.0", - "fork-ts-checker-webpack-plugin": "^6.2.10", "fs-extra": "^10.0.0", "glob": "^7.1.7", "gray-matter": "^4.0.3", "html-webpack-plugin": "iamssen/html-webpack-plugin#5.3.1-fixed", - "ink": "^3.0.8", - "ink-testing-library": "^2.1.0", - "ink-use-stdout-dimensions": "^1.0.5", - "intl-messageformat": "^9.6.17", "jest": "^26.6.3", "js-yaml": "^4.1.0", "json-loader": "^0.5.7", "less": "^4.1.1", - "less-loader": "^9.0.0", - "lint-staged": "^11.0.0", + "less-loader": "^9.1.0", + "lint-staged": "^11.1.2", "lodash.debounce": "^4.0.8", - "mini-css-extract-plugin": "^1.6.0", + "mini-css-extract-plugin": "^1.6.2", "node-fetch": "^2.6.1", - "nodemon": "^2.0.7", - "package-json": "^6.5.0", + "nodemon": "^2.0.12", + "package-json": "^7.0.0", "portfinder": "^1.0.28", - "postcss": "^8.3.0", + "postcss": "^8.3.6", "postcss-flexbugs-fixes": "^5.0.2", - "postcss-loader": "^5.3.0", + "postcss-loader": "^6.1.1", "postcss-normalize": "^10.0.0", "postcss-preset-env": "^6.7.0", "prompts": "^2.4.1", - "puppeteer": "^10.0.0", - "puppeteer-core": "^10.0.0", + "puppeteer": "^10.2.0", + "puppeteer-core": "^10.2.0", "ramda": "^0.27.1", "raw-loader": "^4.0.2", "react": "^17.0.2", @@ -139,27 +111,26 @@ "react-test-renderer": "^17.0.2", "resolve": "^1.20.0", "rimraf": "^3.0.2", - "rocket-punch": "^2.5.4", - "rxjs": "^7.1.0", - "sass-loader": "^12.0.0", + "rocket-punch": "^3.0.1", + "rxjs": "^7.3.0", + "sass-loader": "^12.1.0", "semver": "^7.3.5", "source-map-support": "^0.5.19", "stream-buffers": "^3.0.2", "strip-ansi": "^7.0.0", "style-loader": "^2.0.0", "tmp": "^0.2.1", - "ts-node": "^10.0.0", - "tsconfig-paths": "^3.9.0", - "type-fest": "^1.2.0", - "typescript": "^4.3.2", + "ts-node": "^10.2.1", + "tsconfig-paths": "^3.10.1", + "type-fest": "^2.0.0", + "typescript": "^4.3.5", "url-loader": "^4.1.1", - "webpack": "^5.38.1", - "webpack-bundle-analyzer": "^4.4.2", - "webpack-dev-server": "^4.0.0-beta.3", - "webpack-merge": "^5.7.3", + "webpack": "^5.51.1", + "webpack-bundle-analyzer": "^4.5.0", + "webpack-merge": "^5.8.0", "webpack-node-externals": "^3.0.0", "worker-loader": "^3.0.8", "yaml-loader": "^0.6.0", - "yargs": "^17.0.1" + "yargs": "^17.1.1" } } diff --git a/packages/src/@rocket-scripts/electron/README.md b/packages/src/@rocket-scripts/electron/README.md deleted file mode 100644 index 1dec1f1a..00000000 --- a/packages/src/@rocket-scripts/electron/README.md +++ /dev/null @@ -1,310 +0,0 @@ -# 🚀 Rocket Scripts - -[![NPM](https://img.shields.io/npm/v/@rocket-scripts/web.svg)](https://www.npmjs.com/package/@rocket-scripts/web) -[![NPM](https://img.shields.io/npm/v/@rocket-scripts/electron.svg)](https://www.npmjs.com/package/@rocket-scripts/electron) -[![TEST](https://github.com/rocket-hangar/rocket-scripts/workflows/TEST/badge.svg)](https://github.com/rocket-hangar/rocket-scripts/actions?query=workflow%3ATEST) -[![E2E](https://github.com/rocket-hangar/rocket-scripts/workflows/E2E/badge.svg)](https://github.com/rocket-hangar/rocket-scripts/actions?query=workflow%3AE2E) -[![codecov](https://codecov.io/gh/rocket-hangar/rocket-scripts/branch/master/graph/badge.svg)](https://codecov.io/gh/rocket-hangar/rocket-scripts) - -🚀 Rocket Scripts are development scripts for React web apps and React electron apps. - -These scripts are not support CLI for easy usage. - -But, you can easy combine the many other environments (e.g. Back-End API Server, Puppeteer...) in API usage. - -For example, you can available like below. - - - -```ts -// 1. Start Back-End API Server -// 2. Start Front-End Development Server -// 3. Start Chromium Browser with Puppeteer -import { serverStart } from '@myorg/api-server'; -import { start } from '@rocket-scripts/web'; -import puppeteer from 'puppeteer'; - -(async () => { - const remoteDebuggingPort: number = +(process.env.INSPECT_CHROME ?? 9222); - const serverPort: number = +(process.env.API_SERVER_PORT ?? 9455); - - // start back-end server - await serverStart({ port: serverPort }); - - // start front-end dev server - const { port } = await start({ - app: 'client', - webpackDevServerConfig: { - // bind proxy `/*` -> `/api/*` - proxy: { - '/api': { - target: `http://localhost:${serverPort}`, - changeOrigin: true, - logLevel: 'debug', - pathRewrite: { - '^/api': '', - }, - }, - }, - }, - }); - - // start puppeteer - const browser = await puppeteer.launch({ - //userDataDir: process.env.CHROMIUM_USER_DATA_DEBUG, - headless: false, - args: [ - '--start-fullscreen', - `--remote-debugging-port=${remoteDebuggingPort}`, - ], - devtools: true, - }); - - const [page] = await browser.pages(); - await page.goto(`http://localhost:${port}`); - - await page.waitForFunction( - `document.querySelector('#app h1').innerHTML === 'Hello World!'`, - { - timeout: 1000 * 60, - polling: 1000 * 3, - }, - ); -})(); -``` - - - -```tsx -// 1. Start Front-End development server -// 2. Start Chromium Broser with Puppeteer -// 3. Start performance profiling with shortcut on Interactive CLI -import { start } from '@rocket-scripts/web'; -import { Divider } from '@ssen/dev-server-components'; -import chokidar from 'chokidar'; -import { format } from 'date-fns'; -import { FSWatcher } from 'fs'; -import fs from 'fs-extra'; -import { Text, useInput } from 'ink'; -import path from 'path'; -import puppeteer, { Browser } from 'puppeteer'; -import React, { useCallback, useEffect, useState } from 'react'; - -const profileStore: string = path.join(process.cwd(), 'profiles'); - -function ProfileRepeater({ - browser, - pageUrl, - shortcuts, -}: { - browser: Browser; - pageUrl: string; - shortcuts: { - record: string; - clean: string; - }; -}) { - const [profiles, setProfiles] = useState([]); - - const run = useCallback(async () => { - const page = await browser.newPage(); - - const profile: string = path.join( - profileStore, - `animate-${format(new Date(), 'yyyy-MM-dd-hhmmss')}.json`, - ); - - await page.tracing.start({ - path: profile, - screenshots: true, - // @see ~/tracing.categories.json - // const cdp: CDPSession = await page._client; - // const categories = await cdp.send('Tracing.getCategories'); - categories: [ - 'devtools.timeline', - 'disabled-by-default-devtools.timeline', - 'disabled-by-default-devtools.timeline.frame', - 'disabled-by-default-devtools.timeline.stack', - 'disabled-by-default-v8.cpu_profiler', - 'disabled-by-default-v8.cpu_profiler.hires', - 'memory', - ], - }); - - await page.goto(pageUrl); - - await page.waitFor(4000); - - await page.tracing.stop(); - - await page.close(); - }, [browser, pageUrl]); - - useEffect(() => { - function update() { - setProfiles( - fs.readdirSync(profileStore).filter((file) => /^animate-/.test(file)), - ); - } - - const watcher: FSWatcher = chokidar - .watch([`${profileStore}/*.json`]) - .on('add', update) - .on('unlink', update); - - return () => { - watcher.close(); - }; - }, []); - - useInput((input) => { - switch (input) { - case shortcuts.record: - run(); - break; - case shortcuts.clean: - for (const file of fs.readdirSync(profileStore)) { - if (/[0-9]{4}-[0-9]{2}-[0-9]{2}-[0-9]{6}\.json$/.test(file)) { - fs.removeSync(path.join(profileStore, file)); - } - } - break; - } - }); - - return ( - <> - - {`Profiles (${shortcuts.record}) Create a new profile (${shortcuts.clean}) Clean temp profiles`} - - {profiles.map((file) => ( - {file} - ))} - - ); -} - -(async () => { - const remoteDebuggingPort: number = +(process.env.INSPECT_CHROME ?? 9222); - const webPort: number = +(process.env.DEV_SERVER_PORT ?? 9633); - - await fs.mkdirp(profileStore); - - const browser = await puppeteer.launch({ - userDataDir: process.env.CHROMIUM_USER_DATA_DEBUG, - headless: false, - args: [ - '--start-fullscreen', - `--remote-debugging-port=${remoteDebuggingPort}`, - ], - devtools: true, - }); - - await start({ - app: 'app', - port: webPort, - children: ( - - ), - }); -})(); -``` - -# Quick start React Web app development - - - -```sh -# create a workspace directory -npx generate-github-directory https://github.com/rocket-hangar/workspace-template my-project -cd my-project - -# create an app -npx generate-github-directory https://github.com/rocket-hangar/rocket-scripts-templates/tree/master/templates/web my-app - -# add "my-app" to workspaces of package.json - -# install -yarn - -# start -cd my-app - -# start -yarn run start -``` - -
- -Fish shell function - -```fish -# add ~/.config/fish/config.fish -function generate-web-project - set project $argv[1] - set app $argv[2] - - if [ -z $project ] || [ -z $app ] - echo "Undefined arguments $project $app : generate-web-project project app" - else - # create a workspace directory - generate-github-directory https://github.com/rocket-hangar/workspace-template $project - cd $project - - # create an app - generate-github-directory https://github.com/rocket-hangar/rocket-scripts-templates/tree/master/templates/web $app - cd $app - - cd .. - - echo "👍 Generated! follow next steps" - echo "Add $app to workspaces of package.json" - echo "And, yarn install" - - # open project in your IDE - # webstorm . - # code . - end -end -``` - -
- -# Quick start React Electron app development - - - -```sh -# create a workspace directory -npx generate-github-directory https://github.com/rocket-hangar/workspace-template my-project -cd my-project - -# create an app -npx generate-github-directory https://github.com/rocket-hangar/rocket-scripts-templates/tree/master/templates/electron my-app - -# add "my-app" to workspaces of package.json - -# install -yarn - -# directory -cd my-app - -# start -yarn run start -``` - -# More repositories for reference - -- - -# Related Projects - -- -- -- -- diff --git a/packages/src/@rocket-scripts/electron/__run__/build.run.ts b/packages/src/@rocket-scripts/electron/__run__/build.run.ts deleted file mode 100644 index b3b29972..00000000 --- a/packages/src/@rocket-scripts/electron/__run__/build.run.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { build } from '@rocket-scripts/electron'; -import { copyFixture } from '@ssen/copy-fixture'; -import { exec } from '@ssen/promised'; -import { createTmpDirectory } from '@ssen/tmp-directory'; - -(async () => { - const cwd: string = await copyFixture('test/fixtures/electron/start'); - const outDir: string = await createTmpDirectory(); - - await build({ - cwd, - staticFileDirectories: ['{cwd}/public'], - app: 'app', - outDir, - }); - - exec(`npx electron ${outDir}/main.js`, { cwd: outDir }); -})(); diff --git a/packages/src/@rocket-scripts/electron/__run__/start.run.ts b/packages/src/@rocket-scripts/electron/__run__/start.run.ts deleted file mode 100644 index 77797338..00000000 --- a/packages/src/@rocket-scripts/electron/__run__/start.run.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { start } from '@rocket-scripts/electron'; -import { copyFixture } from '@ssen/copy-fixture'; -import fs from 'fs-extra'; -import path from 'path'; -import puppeteer, { Browser } from 'puppeteer-core'; - -const timeout = (t: number) => new Promise((resolve) => setTimeout(resolve, t)); - -(async () => { - const cwd: string = await copyFixture('test/fixtures/electron/start'); - const remoteDebuggingPort: number = 9366; - - await start({ - cwd, - staticFileDirectories: ['{cwd}/public'], - app: 'app', - electronSwitches: { - 'remote-debugging-port': remoteDebuggingPort, - }, - }); - - await timeout(1000 * 5); - - // Arrange : connect electron - let browser: Browser | null = null; - const connectTimeout: number = Date.now() + 1000 * 30; - - while (!browser) { - try { - browser = await puppeteer.connect({ - browserURL: `http://localhost:${remoteDebuggingPort}`, - }); - } catch (error) { - console.log( - 'start.test.ts..()', - error, - remoteDebuggingPort, - Date.now(), - connectTimeout, - browser, - ); - if (Date.now() > connectTimeout) { - throw error; - } - } - } - - const browserPages = await browser.pages(); - - const indexPage = browserPages.find((page) => - /index\.html$/.test(page.url()), - ); - if (!indexPage) throw new Error(`Undefined index.html`); - - await indexPage.waitForSelector('#app h1', { timeout: 1000 * 60 }); - //const text = await page.$eval('#app h1', (e) => e.innerHTML); - - const file: string = path.join(cwd, 'src/app/preload.ts'); - const source: string = await fs.readFile(file, 'utf8'); - await fs.writeFile(file, source.replace(/(Hello)/g, 'Hi'), { - encoding: 'utf8', - }); - - await timeout(1000 * 5); - - await indexPage.reload(); -})(); diff --git a/packages/src/@rocket-scripts/electron/__tests__/build.test.ts b/packages/src/@rocket-scripts/electron/__tests__/build.test.ts deleted file mode 100644 index 27da95ed..00000000 --- a/packages/src/@rocket-scripts/electron/__tests__/build.test.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { build } from '@rocket-scripts/electron'; -import { copyFixture } from '@ssen/copy-fixture'; -import { glob } from '@ssen/promised'; -import { createTmpDirectory } from '@ssen/tmp-directory'; - -describe('electron/build', () => { - test.each(['start'])( - 'should build the project "fixtures/electron/%s', - async (dir: string) => { - // Arrange : project directories - const cwd: string = await copyFixture(`test/fixtures/electron/${dir}`); - const outDir: string = await createTmpDirectory(); - const staticFileDirectories: string[] = ['{cwd}/public']; - const app: string = 'app'; - - // Act - await build({ - cwd, - staticFileDirectories, - app, - outDir, - }); - - // Assert - await expect(glob(`${outDir}/manifest.json`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/favicon.ico`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/main.js`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/preload.js`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/renderer.js`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/index.html`)).resolves.toHaveLength(1); - }, - ); -}); diff --git a/packages/src/@rocket-scripts/electron/__tests__/start.test.ts b/packages/src/@rocket-scripts/electron/__tests__/start.test.ts deleted file mode 100644 index b9183974..00000000 --- a/packages/src/@rocket-scripts/electron/__tests__/start.test.ts +++ /dev/null @@ -1,113 +0,0 @@ -import { start } from '@rocket-scripts/electron'; -import { copyFixture } from '@ssen/copy-fixture'; -import { createInkWriteStream } from '@ssen/ink-helpers'; -import fs from 'fs-extra'; -import path from 'path'; -import { getPortPromise } from 'portfinder'; -import puppeteer, { Browser } from 'puppeteer-core'; - -const timeout = (t: number) => new Promise((resolve) => setTimeout(resolve, t)); - -describe('electron/start', () => { - test.each(['start'])( - 'should read h1 text and the text should change with watch (%s)', - async (dir: string) => { - // Arrange : project directories - const cwd: string = await copyFixture(`test/fixtures/electron/${dir}`); - const staticFileDirectories: string[] = ['{cwd}/public']; - const app: string = 'app'; - const remoteDebuggingPort: number = await getPortPromise(); - - // Arrange : stdout - const stdout = createInkWriteStream(); - - // Act : server start - const { close } = await start({ - cwd, - staticFileDirectories, - app, - stdout, - logfile: '{cwd}/log.txt', - electronSwitches: { - 'remote-debugging-port': remoteDebuggingPort, - }, - }); - - await timeout(1000 * 5); - - // Arrange : connect electron - let browser: Browser | null = null; - const connectTimeout: number = Date.now() + 1000 * 30; - - while (!browser) { - try { - browser = await puppeteer.connect({ - browserURL: `http://localhost:${remoteDebuggingPort}`, - }); - } catch (error) { - console.log( - 'start.test.ts..()', - error, - remoteDebuggingPort, - Date.now(), - connectTimeout, - browser, - ); - if (Date.now() > connectTimeout) { - throw error; - } - } - } - - const browserPages = await browser.pages(); - - const indexPage = browserPages.find((page) => - /index\.html$/.test(page.url()), - ); - if (!indexPage) throw new Error(`Undefined index.html`); - - // Assert - await indexPage.waitForFunction( - `document.querySelector('#app h1').innerHTML === 'Hello World!'`, - { - timeout: 1000 * 60, - polling: 1000 * 3, - }, - ); - - // Act : update source file to be causing webpack watch - const file: string = path.join(cwd, 'src/app/preload.ts'); - const source: string = await fs.readFile(file, 'utf8'); - await fs.writeFile(file, source.replace(/(Hello)/g, 'Hi'), { - encoding: 'utf8', - }); - - await timeout(1000 * 5); - - const watchTimeout: number = Date.now() + 1000 * 60; - - while (true) { - await indexPage.reload({ waitUntil: 'load' }); - - await timeout(1000 * 5); - - // Assert : update browser text by webpack watch - const text: string = await indexPage.$eval( - '#app h1', - (e) => e.innerHTML, - ); - if (text === 'Hi World!') { - break; - } else if (Date.now() > watchTimeout) { - throw new Error(`${text} is not "Hi World!"`); - } - } - - // Exit - browser.disconnect(); - await close(); - - console.log(stdout.lastFrame()); - }, - ); -}); diff --git a/packages/src/@rocket-scripts/electron/build.ts b/packages/src/@rocket-scripts/electron/build.ts deleted file mode 100644 index 1e577f8e..00000000 --- a/packages/src/@rocket-scripts/electron/build.ts +++ /dev/null @@ -1,283 +0,0 @@ -import { - mainWebpackConfig as webpackReactElectronMainConfig, - rendererWebpackConfig as webpackReactElectronRendererConfig, -} from '@rocket-scripts/react-electron-preset'; -import { ESBuildLoaderOptions } from '@rocket-scripts/react-preset/webpackLoaders/getWebpackScriptLoaders'; -import { getWebpackAlias, icuFormat } from '@rocket-scripts/utils'; -import { filterReactEnv } from '@rocket-scripts/web/utils/filterReactEnv'; -import { ESBuildMinifyPlugin } from 'esbuild-loader'; -import fs from 'fs-extra'; -import HtmlWebpackPlugin from 'html-webpack-plugin'; -import MiniCssExtractPlugin from 'mini-css-extract-plugin'; -import path from 'path'; -import InterpolateHtmlPlugin from 'react-dev-utils/InterpolateHtmlPlugin'; -import webpack, { - Compiler, - Configuration as WebpackConfiguration, - DefinePlugin, - Stats, - WebpackPluginInstance, -} from 'webpack'; -import { merge as webpackMerge } from 'webpack-merge'; -import nodeExternals from 'webpack-node-externals'; -import { BuildParams } from './params'; -import { getMainTsConfigIncludes } from './utils/getMainTsConfigIncludes'; -import { getRendererTsConfigIncludes } from './utils/getRendererTsConfigIncludes'; - -export async function build({ - cwd = process.cwd(), - app, - staticFileDirectories: _staticFileDirectories = ['{cwd}/public'], - outDir: _outDir = '{cwd}/out/{app}', - - tsconfig: _tsconfig = '{cwd}/tsconfig.json', - - mainWebpackConfig: _mainWebpackConfig, - rendererWebpackConfig: _rendererWebpackConfig, - esbuildLoaderOptions: _esbuildLoaderOptions, -}: BuildParams) { - if (!process.env.NODE_ENV) { - process.env.NODE_ENV = 'production'; - } - - const staticFileDirectories: string[] = _staticFileDirectories.map((dir) => - icuFormat(dir, { cwd, app }), - ); - const outDir: string = icuFormat(_outDir, { cwd, app }); - const tsconfig: string = icuFormat(_tsconfig, { cwd, app }); - const alias = getWebpackAlias(cwd); - const publicPath: string = ''; - const chunkPath: string = ''; - - const userMainWebpackConfig: WebpackConfiguration | {} = - typeof _mainWebpackConfig === 'string' - ? require(icuFormat(_mainWebpackConfig, { cwd, app })) - : _mainWebpackConfig ?? {}; - - const userRendererWebpackConfig: WebpackConfiguration | {} = - typeof _rendererWebpackConfig === 'string' - ? require(icuFormat(_rendererWebpackConfig, { cwd, app })) - : _rendererWebpackConfig ?? {}; - - const webpackEnv: NodeJS.ProcessEnv = { - ...filterReactEnv(process.env), - PUBLIC_PATH: publicPath, - PUBLIC_URL: publicPath, - NODE_ENV: process.env.NODE_ENV, - }; - - const esbuildLoaderOptions: ESBuildLoaderOptions = { - target: 'es2019', - loader: 'tsx', - tsconfigRaw: {}, - ..._esbuildLoaderOptions, - }; - - const mainWebpackConfig: WebpackConfiguration = webpackMerge( - userMainWebpackConfig, - webpackReactElectronMainConfig({ - cwd, - esbuildLoaderOptions, - tsconfig, - tsConfigIncludes: getMainTsConfigIncludes({ cwd, app }), - }), - { - mode: 'production', - - output: { - path: outDir, - filename: `[name].js`, - chunkFilename: `[name].js`, - pathinfo: false, - }, - - resolve: { - symlinks: false, - alias, - }, - - entry: { - main: path.join(cwd, `src/${app}/main`), - preload: path.join(cwd, `src/${app}/preload`), - }, - - externals: [ - nodeExternals({ - allowlist: [ - // include asset files - /\.(?!(?:jsx?|json)$).{1,5}$/i, - ], - }), - ], - - optimization: { - concatenateModules: true, - minimize: true, - minimizer: [ - new ESBuildMinifyPlugin({ - target: esbuildLoaderOptions.target, - minify: true, - }), - ], - }, - - plugins: [ - new DefinePlugin({ - 'process.env': Object.keys(webpackEnv).reduce( - (stringifiedEnv, key) => { - stringifiedEnv[key] = JSON.stringify(webpackEnv[key]); - return stringifiedEnv; - }, - {} as Record, - ), - - 'global': JSON.stringify([]), - }), - ], - }, - ); - - const rendererWebpackConfig: WebpackConfiguration = webpackMerge( - userRendererWebpackConfig, - webpackReactElectronRendererConfig({ - cwd, - tsconfig, - esbuildLoaderOptions, - chunkPath, - publicPath, - extractCss: true, - tsConfigIncludes: getRendererTsConfigIncludes({ cwd, app }), - }), - { - mode: 'production', - - output: { - path: outDir, - filename: `[name].js`, - chunkFilename: `[name].js`, - pathinfo: false, - }, - - resolve: { - symlinks: false, - alias, - }, - - entry: { - renderer: path.join(cwd, `src/${app}/renderer`), - }, - - optimization: { - concatenateModules: true, - minimize: true, - minimizer: [ - new ESBuildMinifyPlugin({ - target: esbuildLoaderOptions.target, - minify: true, - css: true, - }), - ], - - splitChunks: { - cacheGroups: { - // vendor chunk - vendor: { - test: /[\\/]node_modules[\\/]/, - name: 'vendor', - chunks: 'all', - }, - - // extract single css file - style: { - test: (m) => m.constructor.name === 'CssModule', - name: 'style', - chunks: 'all', - enforce: true, - }, - }, - }, - }, - - plugins: [ - (new MiniCssExtractPlugin({ - filename: `[name].css`, - }) as unknown) as WebpackPluginInstance, - - new HtmlWebpackPlugin({ - template: path.join(cwd, `src/${app}/index.html`), - filename: 'index.html', - }), - - new InterpolateHtmlPlugin( - //eslint-disable-next-line @typescript-eslint/no-explicit-any - HtmlWebpackPlugin as any, - webpackEnv as Record, - ) as WebpackPluginInstance, - - new DefinePlugin({ - 'process.env': Object.keys(webpackEnv).reduce( - (stringifiedEnv, key) => { - stringifiedEnv[key] = JSON.stringify(webpackEnv[key]); - return stringifiedEnv; - }, - {} as Record, - ), - - 'global': JSON.stringify([]), - }), - ], - }, - ); - - await fs.mkdirp(outDir); - await Promise.all( - staticFileDirectories.map((dir) => - fs.copy(dir, outDir, { dereference: true }), - ), - ); - - const mainCompiler: Compiler = webpack(mainWebpackConfig); - const rendererCompiler: Compiler = webpack(rendererWebpackConfig); - - await new Promise((resolve, reject) => { - mainCompiler.run((error?: Error, stats?: Stats) => { - if (error) { - reject(error); - } else if (stats) { - console.log( - stats.toString( - typeof mainWebpackConfig.stats === 'object' - ? { - colors: true, - } - : mainWebpackConfig.stats ?? { colors: true }, - ), - ); - resolve(); - } else { - throw new Error('No error and stats'); - } - }); - }); - - await new Promise((resolve, reject) => { - rendererCompiler.run((error?: Error, stats?: Stats) => { - if (error) { - reject(error); - } else if (stats) { - console.log( - stats.toString( - typeof rendererWebpackConfig.stats === 'object' - ? { - colors: true, - } - : rendererWebpackConfig.stats ?? { colors: true }, - ), - ); - resolve(); - } else { - throw new Error('No error and stats'); - } - }); - }); -} diff --git a/packages/src/@rocket-scripts/electron/index.ts b/packages/src/@rocket-scripts/electron/index.ts deleted file mode 100644 index 890dc4b2..00000000 --- a/packages/src/@rocket-scripts/electron/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './params'; -export * from './start'; -export * from './build'; diff --git a/packages/src/@rocket-scripts/electron/jest-preset.ts b/packages/src/@rocket-scripts/electron/jest-preset.ts deleted file mode 100644 index d7cf9d82..00000000 --- a/packages/src/@rocket-scripts/electron/jest-preset.ts +++ /dev/null @@ -1,2 +0,0 @@ -import jestPreset from '@rocket-scripts/react-preset/jestPreset'; -export = jestPreset; diff --git a/packages/src/@rocket-scripts/electron/params.ts b/packages/src/@rocket-scripts/electron/params.ts deleted file mode 100644 index 1b7b622b..00000000 --- a/packages/src/@rocket-scripts/electron/params.ts +++ /dev/null @@ -1,201 +0,0 @@ -import { ESBuildLoaderOptions } from '@rocket-scripts/react-preset/webpackLoaders/getWebpackScriptLoaders'; -import { ElectronSwitchesYargsValues } from '@ssen/electron-switches'; -import { ReactNode } from 'react'; -import { Configuration as WebpackConfiguration } from 'webpack'; - -export interface CommonParams { - /** - * if you run from outside of project root. - * - * you have to set this value to your project root. - * - * @example { cwd: path.join(__dirname, 'my-project) } - * - * @default process.cwd() - */ - cwd?: string; - - /** - * app directory you want to run - * - * e.g. `app: 'app'` mean run `/src/app` directory - * - * warn. do not set over 2-depth directory path (e.g. `app: 'group/app'`) - * it just support top level directory only. - * - * @example { app: 'app' } - */ - app: string; - - /** - * set static file directories. - * - * you can set with this when you want to use the other static file directories instead of `{project}/public`. - * - * tip. you can use `{cwd}` and `{app}`. they are same values that you are input. - * - * @example { staticFileDirectories: ['{cwd}/static', '{cwd}/public'] } - * - * @default ['{cwd}/public'] - */ - staticFileDirectories?: string[]; - - /** - * @deprecated do not use this env option. use instead `process.env.VAR = 'value'` before run. - * - * @example - * - * // remove this like code - * start({ - * env: { REACT_APP_HELLO: 'value' } - * }) - * - * // use instead of this - * process.env.REACT_APP_HELLO = 'value' - * - * start({}) - */ - env?: NodeJS.ProcessEnv; - - /** - * ⚠️ custom webpack configuration to main and preload process - * - * but, this value will be used with the lowest priority. - * - * this value useful to set the miscellaneous options. - * - * @example { webpackConfig: '{cwd}/webpack.main.config.js' } - * - * @example { webpackConfig: { externals : { ... } } } - */ - mainWebpackConfig?: - | string - | Omit< - WebpackConfiguration, - // @rocket-scripts/react-preset - | 'module' - | 'plugin' - | 'resolveLoader' - | 'node' - // @rocket-scripts/web - | 'mode' - | 'devtool' - | 'output' - | 'entry' - | 'externals' // main process will make every packages to be external - | 'performance' - | 'optimization' - >; - - /** - * ⚠️ custom webpack configuration to renderer process - * - * but, this value will be used with the lowest priority. - * - * this value useful to set the miscellaneous options. - * - * @example { webpackConfig: '{cwd}/webpack.renderer.config.js' } - * - * @example { webpackConfig: { externals : { ... } } } - */ - rendererWebpackConfig?: - | string - | Omit< - WebpackConfiguration, - // @rocket-scripts/react-preset - | 'resolve' - | 'module' - | 'plugin' - | 'resolveLoader' - | 'node' - // @rocket-scripts/web - | 'mode' - | 'devtool' - | 'output' - | 'entry' - | 'performance' - | 'optimization' - >; - - /** - * ⚠️ custom esbuild configuration - * - * @example { target: 'esnext' } - * - * @default { target: 'es2019', loader: 'tsx', tsconfigRaw: {} } - */ - esbuildLoaderOptions?: ESBuildLoaderOptions; - - /** - * ⚠️ tsconfig path. (it will pass to fork-ts-checker-webpack-plugin) - * - * @example { tsconfig: '{cwd}/tsconfig.dev.json' } - * - * @default {cwd}/tsconfig.json - */ - tsconfig?: string; -} - -export interface StartParams extends CommonParams { - /** - * output directory. - * - * @example { outDir: '{cwd}/dist/{app}' } - * - * @default {cwd}/dev/{app} - */ - outDir?: string; - - /** - * logfile path. - * - * @example { logfile: '{cwd}/log.txt' } - * - * @default (if this value is undefined it will be new temporary file) - */ - logfile?: string; - - electronSwitches?: ElectronSwitchesYargsValues; - - /** - * ⚠️ ink stdout - * - * @default process.stdout - */ - stdout?: NodeJS.WriteStream; - - /** - * ⚠️ ink stdin - * - * @default process.stdin - */ - stdin?: NodeJS.ReadStream; - - /** - * ⚠️ attach ui elements - * - * This elements will attach the end of UI - * - * @example - * { - * children: ( - * <> - * - * - * - * ) - * } - */ - children?: ReactNode; -} - -export interface BuildParams extends CommonParams { - /** - * output directory. - * - * @example { outDir: '{cwd}/dist/{app}' } - * - * @default {cwd}/out/{app} - */ - outDir?: string; -} diff --git a/packages/src/@rocket-scripts/electron/start.tsx b/packages/src/@rocket-scripts/electron/start.tsx deleted file mode 100644 index 4e25ffc8..00000000 --- a/packages/src/@rocket-scripts/electron/start.tsx +++ /dev/null @@ -1,266 +0,0 @@ -import { - mainWebpackConfig as webpackReactElectronMainConfig, - rendererWebpackConfig as webpackReactElectronRendererConfig, -} from '@rocket-scripts/react-electron-preset'; -import { ESBuildLoaderOptions } from '@rocket-scripts/react-preset/webpackLoaders/getWebpackScriptLoaders'; -import { getWebpackAlias, icuFormat, rocketTitle } from '@rocket-scripts/utils'; -import { filterReactEnv } from '@rocket-scripts/web/utils/filterReactEnv'; -import { observeAliasChange } from '@rocket-scripts/web/utils/observeAliasChange'; -import { - devServerStart, - DevServerStartParams, -} from '@ssen/electron-dev-server'; -import HtmlWebpackPlugin from 'html-webpack-plugin'; -import MiniCssExtractPlugin from 'mini-css-extract-plugin'; -import path from 'path'; -import InterpolateHtmlPlugin from 'react-dev-utils/InterpolateHtmlPlugin'; -import { combineLatest, Observable } from 'rxjs'; -import { map } from 'rxjs/operators'; -import tmp from 'tmp'; -import { - Configuration as WebpackConfiguration, - DefinePlugin, - WebpackPluginInstance, -} from 'webpack'; -import { merge as webpackMerge } from 'webpack-merge'; -import nodeExternals from 'webpack-node-externals'; -import { StartParams } from './params'; -import { getMainTsConfigIncludes } from './utils/getMainTsConfigIncludes'; -import { getRendererTsConfigIncludes } from './utils/getRendererTsConfigIncludes'; - -export interface Start extends DevServerStartParams { - close: () => Promise; -} - -export async function start({ - cwd = process.cwd(), - app, - staticFileDirectories: _staticFileDirectories = ['{cwd}/public'], - outDir: _outDir = '{cwd}/dev/{app}', - - electronSwitches = {}, - tsconfig: _tsconfig = '{cwd}/tsconfig.json', - - mainWebpackConfig: _mainWebpackConfig, - rendererWebpackConfig: _rendererWebpackConfig, - esbuildLoaderOptions: _esbuildLoaderOptions, - - logfile: _logfile = tmp.fileSync({ mode: 0o644, postfix: '.log' }).name, - stdout = process.stdout, - stdin = process.stdin, - children, -}: StartParams): Promise { - if (!process.env.NODE_ENV) { - process.env.NODE_ENV = 'development'; - } - - console.log('Start Server...'); - - const staticFileDirectories: string[] = _staticFileDirectories.map((dir) => - icuFormat(dir, { cwd, app }), - ); - const outDir: string = icuFormat(_outDir, { cwd, app }); - const tsconfig: string = icuFormat(_tsconfig, { cwd, app }); - const alias = getWebpackAlias(cwd); - const logfile: string = icuFormat(_logfile, { cwd, app }); - const publicPath: string = ''; - const chunkPath: string = ''; - - const userMainWebpackConfig: WebpackConfiguration | {} = - typeof _mainWebpackConfig === 'string' - ? require(icuFormat(_mainWebpackConfig, { cwd, app })) - : _mainWebpackConfig ?? {}; - - const userRendererWebpackConfig: WebpackConfiguration | {} = - typeof _rendererWebpackConfig === 'string' - ? require(icuFormat(_rendererWebpackConfig, { cwd, app })) - : _rendererWebpackConfig ?? {}; - - const webpackEnv: NodeJS.ProcessEnv = { - ...filterReactEnv(process.env), - PUBLIC_PATH: publicPath, - PUBLIC_URL: publicPath, - NODE_ENV: process.env.NODE_ENV, - }; - - const esbuildLoaderOptions: ESBuildLoaderOptions = { - target: 'es2016', - loader: 'tsx', - tsconfigRaw: {}, - ..._esbuildLoaderOptions, - }; - - const mainWebpackConfig: WebpackConfiguration = webpackMerge( - userMainWebpackConfig, - webpackReactElectronMainConfig({ - cwd, - esbuildLoaderOptions, - tsconfig, - tsConfigIncludes: getMainTsConfigIncludes({ cwd, app }), - }), - { - mode: 'development', - devtool: 'source-map', - - output: { - path: outDir, - filename: `[name].js`, - chunkFilename: `[name].js`, - pathinfo: false, - }, - - resolve: { - symlinks: false, - alias, - }, - - entry: { - main: path.join(cwd, `src/${app}/main`), - preload: path.join(cwd, `src/${app}/preload`), - }, - - externals: [ - nodeExternals({ - allowlist: [ - // include asset files - /\.(?!(?:jsx?|json)$).{1,5}$/i, - ], - }), - ], - - plugins: [ - new DefinePlugin({ - 'process.env': Object.keys(webpackEnv).reduce( - (stringifiedEnv, key) => { - stringifiedEnv[key] = JSON.stringify(webpackEnv[key]); - return stringifiedEnv; - }, - {} as Record, - ), - }), - ], - - performance: { - hints: false, - }, - - optimization: { - removeAvailableModules: false, - removeEmptyChunks: false, - splitChunks: false, - - moduleIds: 'named', - emitOnErrors: false, - }, - }, - ); - - const rendererWebpackConfig: WebpackConfiguration = webpackMerge( - userRendererWebpackConfig, - webpackReactElectronRendererConfig({ - cwd, - tsconfig, - esbuildLoaderOptions, - chunkPath, - publicPath, - extractCss: true, - tsConfigIncludes: getRendererTsConfigIncludes({ cwd, app }), - }), - { - mode: 'development', - devtool: 'source-map', - - output: { - path: outDir, - filename: `[name].js`, - chunkFilename: `[name].js`, - pathinfo: false, - }, - - resolve: { - symlinks: false, - alias, - }, - - entry: { - renderer: path.join(cwd, `src/${app}/renderer`), - }, - - plugins: [ - (new MiniCssExtractPlugin({ - filename: `[name].css`, - }) as unknown) as WebpackPluginInstance, - - new HtmlWebpackPlugin({ - template: path.join(cwd, `src/${app}/index.html`), - filename: 'index.html', - }), - - new InterpolateHtmlPlugin( - //eslint-disable-next-line @typescript-eslint/no-explicit-any - HtmlWebpackPlugin as any, - webpackEnv as Record, - ) as WebpackPluginInstance, - - new DefinePlugin({ - 'process.env': Object.keys(webpackEnv).reduce( - (stringifiedEnv, key) => { - stringifiedEnv[key] = JSON.stringify(webpackEnv[key]); - return stringifiedEnv; - }, - {} as Record, - ), - }), - ], - - performance: { - hints: false, - }, - - optimization: { - removeAvailableModules: false, - removeEmptyChunks: false, - splitChunks: false, - - moduleIds: 'named', - emitOnErrors: false, - }, - }, - ); - - const restartAlarm: Observable = combineLatest([ - observeAliasChange({ cwd, current: alias }), - ]).pipe( - map<(string | null)[], string[]>((changes) => - changes.filter((change): change is string => !!change), - ), - ); - - let version: string = ''; - - try { - version = '\n ' + require('@rocket-scripts/electron/package.json').version; - } catch {} - - const startParams: DevServerStartParams = { - header: rocketTitle + version, - cwd, - outDir, - staticFileDirectories, - mainWebpackConfig, - rendererWebpackConfig, - electronSwitches, - stdin, - stdout, - restartAlarm, - logfile, - children, - }; - - const close = await devServerStart(startParams); - - return { - ...startParams, - close, - }; -} diff --git a/packages/src/@rocket-scripts/electron/storybook.ts b/packages/src/@rocket-scripts/electron/storybook.ts deleted file mode 100644 index 832681c0..00000000 --- a/packages/src/@rocket-scripts/electron/storybook.ts +++ /dev/null @@ -1 +0,0 @@ -export * from '@rocket-scripts/web/storybook'; diff --git a/packages/src/@rocket-scripts/electron/tsconfig.base.json b/packages/src/@rocket-scripts/electron/tsconfig.base.json deleted file mode 100644 index 9ac038db..00000000 --- a/packages/src/@rocket-scripts/electron/tsconfig.base.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "compilerOptions": { - // language - "jsx": "react", - "allowJs": true, - "downlevelIteration": true, - "resolveJsonModule": true, - "allowSyntheticDefaultImports": true, - "esModuleInterop": true, - // strict - "strict": true, - "alwaysStrict": true, - "strictNullChecks": true, - "strictBindCallApply": true, - "strictFunctionTypes": true, - "strictPropertyInitialization": true, - // module - "module": "ESNext", - "target": "ES2019", - "moduleResolution": "node", - // lib - "skipLibCheck": true, - "lib": [ - "DOM", - "DOM.Iterable", - "ESNext", - "WebWorker" - ] - } -} \ No newline at end of file diff --git a/packages/src/@rocket-scripts/electron/typings.d.ts b/packages/src/@rocket-scripts/electron/typings.d.ts deleted file mode 100644 index c88699e9..00000000 --- a/packages/src/@rocket-scripts/electron/typings.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/packages/src/@rocket-scripts/electron/utils/getMainTsConfigIncludes.ts b/packages/src/@rocket-scripts/electron/utils/getMainTsConfigIncludes.ts deleted file mode 100644 index a55c086b..00000000 --- a/packages/src/@rocket-scripts/electron/utils/getMainTsConfigIncludes.ts +++ /dev/null @@ -1,14 +0,0 @@ -import path from 'path'; - -interface Params { - cwd: string; - app: string; -} - -export function getMainTsConfigIncludes({ cwd, app }: Params) { - return [ - path.join(cwd, `src/${app}/main.ts*`), - path.join(cwd, `src/${app}/preload.ts*`), - path.join(cwd, 'src/**/*.d.ts'), - ]; -} diff --git a/packages/src/@rocket-scripts/electron/utils/getRendererTsConfigIncludes.ts b/packages/src/@rocket-scripts/electron/utils/getRendererTsConfigIncludes.ts deleted file mode 100644 index 777de933..00000000 --- a/packages/src/@rocket-scripts/electron/utils/getRendererTsConfigIncludes.ts +++ /dev/null @@ -1,13 +0,0 @@ -import path from 'path'; - -interface Params { - cwd: string; - app: string; -} - -export function getRendererTsConfigIncludes({ cwd, app }: Params) { - return [ - path.join(cwd, `src/${app}/renderer.ts*`), - path.join(cwd, 'src/**/*.d.ts'), - ]; -} diff --git a/packages/src/@rocket-scripts/react-electron-preset/README.md b/packages/src/@rocket-scripts/react-electron-preset/README.md deleted file mode 100644 index 171490ea..00000000 --- a/packages/src/@rocket-scripts/react-electron-preset/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# `@rocket-scripts/react-electron-preset` - -See \ No newline at end of file diff --git a/packages/src/@rocket-scripts/react-electron-preset/index.ts b/packages/src/@rocket-scripts/react-electron-preset/index.ts deleted file mode 100644 index 83fa4a37..00000000 --- a/packages/src/@rocket-scripts/react-electron-preset/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import mainWebpackConfig from './mainWebpackConfig'; -import rendererWebpackConfig from './rendererWebpackConfig'; - -export { mainWebpackConfig, rendererWebpackConfig }; diff --git a/packages/src/@rocket-scripts/react-electron-preset/mainWebpackConfig.ts b/packages/src/@rocket-scripts/react-electron-preset/mainWebpackConfig.ts deleted file mode 100644 index c57a3498..00000000 --- a/packages/src/@rocket-scripts/react-electron-preset/mainWebpackConfig.ts +++ /dev/null @@ -1,116 +0,0 @@ -import { getWebpackRawLoaders } from '@rocket-scripts/react-preset/webpackLoaders/getWebpackRawLoaders'; -import { - ESBuildLoaderOptions, - getWebpackScriptLoaders, -} from '@rocket-scripts/react-preset/webpackLoaders/getWebpackScriptLoaders'; -import { getWebpackYamlLoaders } from '@rocket-scripts/react-preset/webpackLoaders/getWebpackYamlLoaders'; -import { eslintConfigExistsSync } from '@rocket-scripts/utils'; -import ForkTsCheckerWebpackPlugin from 'fork-ts-checker-webpack-plugin'; -import fs from 'fs-extra'; -import path from 'path'; -import { Configuration, RuleSetRule, WatchIgnorePlugin } from 'webpack'; - -export interface MainWebpackConfigOptions { - cwd: string; - esbuildLoaderOptions: ESBuildLoaderOptions; - tsconfig: string; - tsConfigIncludes: string[]; -} - -export default function ({ - cwd, - esbuildLoaderOptions, - tsconfig, - tsConfigIncludes, -}: MainWebpackConfigOptions): Configuration { - return { - target: 'electron-main', - - resolve: { - extensions: ['.ts', '.tsx', '.mjs', '.js', '.jsx', '.json'], - mainFields: ['main'], - }, - - output: { - libraryTarget: 'commonjs2', - }, - - module: { - strictExportPresence: true, - - rules: [ - ...(eslintConfigExistsSync(cwd) - ? [ - { - test: /\.(js|mjs|jsx|ts|tsx)$/, - include: path.join(cwd, 'src'), - enforce: 'pre', - use: [ - { - loader: require.resolve('eslint-loader'), - options: { - eslintPath: require.resolve('eslint'), - cwd, - }, - }, - ], - } as RuleSetRule, - ] - : []), - { - oneOf: [ - // ts, tsx, js, jsx - script - ...getWebpackScriptLoaders({ - include: path.join(cwd, 'src'), - esbuildLoaderOptions, - useWebWorker: true, - chunkPath: '', - publicPath: '', - }), - - // html, ejs, txt, md - plain text - ...getWebpackRawLoaders(), - - // yaml, yml - ...getWebpackYamlLoaders(), - ], - }, - ], - }, - - plugins: [ - new WatchIgnorePlugin({ paths: [path.join(cwd, 'node_modules')] }), - - ...(fs.existsSync(tsconfig) - ? [ - new ForkTsCheckerWebpackPlugin({ - async: false, - typescript: { - configFile: tsconfig, - diagnosticOptions: { - semantic: true, - syntactic: true, - }, - configOverwrite: { - compilerOptions: { - incremental: true, - }, - include: tsConfigIncludes, - }, - }, - formatter: { - type: 'codeframe', - options: { - highlightCode: false, - }, - }, - }), - ] - : []), - ], - - resolveLoader: { - modules: ['node_modules'], - }, - }; -} diff --git a/packages/src/@rocket-scripts/react-electron-preset/rendererWebpackConfig.ts b/packages/src/@rocket-scripts/react-electron-preset/rendererWebpackConfig.ts deleted file mode 100644 index a304e978..00000000 --- a/packages/src/@rocket-scripts/react-electron-preset/rendererWebpackConfig.ts +++ /dev/null @@ -1,32 +0,0 @@ -import reactWebpackConfig, { - WebpackConfigOptions, -} from '@rocket-scripts/react-preset/webpackConfig'; -import { Configuration } from 'webpack'; -import { merge } from 'webpack-merge'; - -export interface RendererWebpackConfigOptions extends WebpackConfigOptions {} - -export default function ({ - cwd, - esbuildLoaderOptions, - chunkPath, - publicPath, - tsconfig, - extractCss, - tsConfigIncludes, -}: RendererWebpackConfigOptions): Configuration { - return merge( - reactWebpackConfig({ - cwd, - esbuildLoaderOptions, - chunkPath, - publicPath, - tsconfig, - extractCss, - tsConfigIncludes, - }), - { - target: 'electron-renderer', - }, - ); -} diff --git a/packages/src/@rocket-scripts/react-preset/webpackConfig.ts b/packages/src/@rocket-scripts/react-preset/webpackConfig.ts index 3ca28809..18ab267a 100644 --- a/packages/src/@rocket-scripts/react-preset/webpackConfig.ts +++ b/packages/src/@rocket-scripts/react-preset/webpackConfig.ts @@ -1,6 +1,3 @@ -import { eslintConfigExistsSync } from '@rocket-scripts/utils/eslintConfigExistsSync'; -import ForkTsCheckerWebpackPlugin from 'fork-ts-checker-webpack-plugin'; -import fs from 'fs-extra'; import path from 'path'; import { Configuration, RuleSetRule, WatchIgnorePlugin } from 'webpack'; import { getWebpackDataURILoaders } from './webpackLoaders/getWebpackDataURILoaders'; @@ -20,9 +17,7 @@ export interface WebpackConfigOptions { chunkPath: string; publicPath: string; esbuildLoaderOptions: ESBuildLoaderOptions; - tsconfig: string; extractCss: boolean; - tsConfigIncludes: string[]; } export default function ({ @@ -30,9 +25,7 @@ export default function ({ chunkPath, publicPath, esbuildLoaderOptions, - tsconfig, extractCss, - tsConfigIncludes, }: WebpackConfigOptions): Configuration { return { resolve: { @@ -44,31 +37,6 @@ export default function ({ strictExportPresence: true, rules: [ - // enable eslint-loader if exists - ...(() => { - try { - return eslintConfigExistsSync(cwd) - ? [ - { - test: /\.(js|mjs|jsx|ts|tsx)$/, - include: path.join(cwd, 'src'), - enforce: 'pre', - use: [ - { - loader: require.resolve('eslint-loader'), - options: { - eslintPath: require.resolve('eslint'), - cwd, - }, - }, - ], - } as RuleSetRule, - ] - : []; - } catch { - return []; - } - })(), { oneOf: [ // convert small image files to data uri @@ -144,33 +112,6 @@ export default function ({ plugins: [ new WatchIgnorePlugin({ paths: [path.join(cwd, 'node_modules')] }), - - ...(fs.existsSync(tsconfig) - ? [ - new ForkTsCheckerWebpackPlugin({ - async: false, - typescript: { - configFile: tsconfig, - diagnosticOptions: { - semantic: true, - syntactic: true, - }, - configOverwrite: { - compilerOptions: { - incremental: true, - }, - include: tsConfigIncludes, - }, - }, - formatter: { - type: 'codeframe', - options: { - highlightCode: false, - }, - }, - }), - ] - : []), ], }; } diff --git a/packages/src/@rocket-scripts/utils/__tests__/getWebpackAlias.test.ts b/packages/src/@rocket-scripts/read-package-alias/__tests__/readPackageAlias.test.ts similarity index 79% rename from packages/src/@rocket-scripts/utils/__tests__/getWebpackAlias.test.ts rename to packages/src/@rocket-scripts/read-package-alias/__tests__/readPackageAlias.test.ts index 37a862b6..50b855c6 100644 --- a/packages/src/@rocket-scripts/utils/__tests__/getWebpackAlias.test.ts +++ b/packages/src/@rocket-scripts/read-package-alias/__tests__/readPackageAlias.test.ts @@ -1,14 +1,14 @@ -import { getWebpackAlias } from '@rocket-scripts/utils/getWebpackAlias'; +import { readPackageAlias } from '@rocket-scripts/read-package-alias'; import { copyFixture } from '@ssen/copy-fixture'; import path from 'path'; -describe('getWebpackAlias()', () => { +describe('readPackageAlias()', () => { test('should get alias from dir', async () => { // Arrange const cwd: string = await copyFixture(`test/fixtures/web/alias`); // Act - const alias: Record = getWebpackAlias(cwd); + const alias: Record = readPackageAlias(cwd); // Assert expect(alias['app']).toBe(path.join(cwd, 'src/app')); @@ -22,7 +22,7 @@ describe('getWebpackAlias()', () => { const cwd: string = await copyFixture(`test/fixtures/web/alias-group`); // Act - const alias: Record = getWebpackAlias(cwd); + const alias: Record = readPackageAlias(cwd); // Assert expect(alias['app']).toBe(path.join(cwd, 'src/app')); diff --git a/packages/src/@rocket-scripts/utils/getWebpackAlias.ts b/packages/src/@rocket-scripts/read-package-alias/index.ts similarity index 91% rename from packages/src/@rocket-scripts/utils/getWebpackAlias.ts rename to packages/src/@rocket-scripts/read-package-alias/index.ts index 16326753..a8f475e8 100644 --- a/packages/src/@rocket-scripts/utils/getWebpackAlias.ts +++ b/packages/src/@rocket-scripts/read-package-alias/index.ts @@ -1,7 +1,7 @@ import fs from 'fs-extra'; import path from 'path'; -export function getWebpackAlias(cwd: string): Record { +export function readPackageAlias(cwd: string): Record { const src: string = path.join(cwd, 'src'); const alias: Record = {}; diff --git a/packages/src/@rocket-scripts/utils/__tests__/fixChunkPath.test.ts b/packages/src/@rocket-scripts/utils/__tests__/fixChunkPath.test.ts deleted file mode 100644 index 2ed7ac29..00000000 --- a/packages/src/@rocket-scripts/utils/__tests__/fixChunkPath.test.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { fixChunkPath } from '@rocket-scripts/utils/fixChunkPath'; - -describe('fixChunkPath()', () => { - test('should fix chunk paths', () => { - expect(fixChunkPath('')).toBe(''); - expect(fixChunkPath('/path/to')).toBe('/path/to/'); - expect(fixChunkPath('/path/to/')).toBe('/path/to/'); - }); -}); diff --git a/packages/src/@rocket-scripts/utils/__tests__/icuFormat.test.ts b/packages/src/@rocket-scripts/utils/__tests__/icuFormat.test.ts deleted file mode 100644 index 99efb943..00000000 --- a/packages/src/@rocket-scripts/utils/__tests__/icuFormat.test.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { icuFormat } from '@rocket-scripts/utils'; - -describe('icuFormat()', () => { - test('should format text', () => { - expect(icuFormat('aaa/bbb/ccc', {})).toBe('aaa/bbb/ccc'); - expect(icuFormat('aaa/{bbb}/ccc', { bbb: 1 })).toBe('aaa/1/ccc'); - }); - - test('should throw error with not provided values', () => { - expect(() => icuFormat('aaa/{bbb}/ccc', {})).toThrow(); - }); -}); diff --git a/packages/src/@rocket-scripts/utils/__tests__/parseNumber.test.ts b/packages/src/@rocket-scripts/utils/__tests__/parseNumber.test.ts deleted file mode 100644 index 07e1aa00..00000000 --- a/packages/src/@rocket-scripts/utils/__tests__/parseNumber.test.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { parseNumber } from '@rocket-scripts/utils'; - -describe('parseNumber()', () => { - test('should get numbers from correctly sources', () => { - expect(parseNumber(223)).toBe(223); - expect(parseNumber(-3)).toBe(-3); - expect(parseNumber(+3)).toBe(3); - expect(parseNumber('223')).toBe(223); - expect(parseNumber('-3')).toBe(-3); - expect(parseNumber('+3')).toBe(3); - }); - - test('should get undefined from incorrectly sources', () => { - expect(parseNumber('2/23')).toBeUndefined(); - expect(parseNumber('a')).toBeUndefined(); - expect(parseNumber('+-3')).toBeUndefined(); - }); -}); diff --git a/packages/src/@rocket-scripts/utils/eslintConfigExistsSync.ts b/packages/src/@rocket-scripts/utils/eslintConfigExistsSync.ts deleted file mode 100644 index 4d318704..00000000 --- a/packages/src/@rocket-scripts/utils/eslintConfigExistsSync.ts +++ /dev/null @@ -1,39 +0,0 @@ -import fs from 'fs-extra'; -import path from 'path'; - -// https://github.com/eslint/eslint/blob/master/lib/cli-engine/config-array-factory.js#L52 -const configFilenames: string[] = [ - '.eslintrc.js', - '.eslintrc.cjs', - '.eslintrc.yaml', - '.eslintrc.yml', - '.eslintrc.json', - '.eslintrc', -]; - -export function eslintConfigExistsSync(cwd: string): boolean { - try { - if ( - typeof require.resolve('eslint-loader') !== 'string' || - typeof require.resolve('eslint') !== 'string' - ) { - return false; - } - } catch { - return false; - } - - for (const filename of configFilenames) { - if (fs.existsSync(path.join(cwd, filename))) { - return true; - } - } - - const packageJson: string = path.join(cwd, 'package.json'); - - if (!fs.existsSync(packageJson)) return false; - - const { eslintConfig } = fs.readJsonSync(packageJson); - - return typeof eslintConfig === 'object'; -} diff --git a/packages/src/@rocket-scripts/utils/fixChunkPath.ts b/packages/src/@rocket-scripts/utils/fixChunkPath.ts deleted file mode 100644 index 30ed02de..00000000 --- a/packages/src/@rocket-scripts/utils/fixChunkPath.ts +++ /dev/null @@ -1,5 +0,0 @@ -export function fixChunkPath(chunkPath: string): string { - return chunkPath.length > 0 && !/\/$/.test(chunkPath) - ? chunkPath + '/' - : chunkPath; -} diff --git a/packages/src/@rocket-scripts/utils/icuFormat.ts b/packages/src/@rocket-scripts/utils/icuFormat.ts deleted file mode 100644 index ffd75184..00000000 --- a/packages/src/@rocket-scripts/utils/icuFormat.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { IntlMessageFormat } from 'intl-messageformat'; - -/** - * icu format based https://formatjs.io/docs/intl-messageformat - * @param text source text (e.g. "Hello, {name}!") - * @param vars variables (e.g. { name: "Jane" }) - * @return formatted text (e.g. "Hello, Jane!") - */ -export function icuFormat( - text: string, - vars: Record, -): string { - const { format } = new IntlMessageFormat(text); - const result: string | number | (string | number)[] = format(vars); - return Array.isArray(result) ? result.join(' ') : result.toString(); -} diff --git a/packages/src/@rocket-scripts/utils/index.ts b/packages/src/@rocket-scripts/utils/index.ts deleted file mode 100644 index f79e7ea7..00000000 --- a/packages/src/@rocket-scripts/utils/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -export * from './getWebpackAlias'; -export * from './icuFormat'; -export * from './parseNumber'; -export * from './eslintConfigExistsSync'; -export * from './fixChunkPath'; -export * from './rocketTitle'; diff --git a/packages/src/@rocket-scripts/utils/parseNumber.ts b/packages/src/@rocket-scripts/utils/parseNumber.ts deleted file mode 100644 index 6be26e8a..00000000 --- a/packages/src/@rocket-scripts/utils/parseNumber.ts +++ /dev/null @@ -1,4 +0,0 @@ -export function parseNumber(source: unknown): number | undefined { - const n: number = typeof source === 'number' ? source : Number(source); - return !isNaN(n) ? n : undefined; -} diff --git a/packages/src/@rocket-scripts/utils/rocketTitle.ts b/packages/src/@rocket-scripts/utils/rocketTitle.ts deleted file mode 100644 index bf59ed3a..00000000 --- a/packages/src/@rocket-scripts/utils/rocketTitle.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { render } from 'cfonts'; - -export const rocketTitle: string = render('ROCKET', { font: 'block' }).string; diff --git a/packages/src/@rocket-scripts/web/README.md b/packages/src/@rocket-scripts/web/README.md deleted file mode 100644 index 1dec1f1a..00000000 --- a/packages/src/@rocket-scripts/web/README.md +++ /dev/null @@ -1,310 +0,0 @@ -# 🚀 Rocket Scripts - -[![NPM](https://img.shields.io/npm/v/@rocket-scripts/web.svg)](https://www.npmjs.com/package/@rocket-scripts/web) -[![NPM](https://img.shields.io/npm/v/@rocket-scripts/electron.svg)](https://www.npmjs.com/package/@rocket-scripts/electron) -[![TEST](https://github.com/rocket-hangar/rocket-scripts/workflows/TEST/badge.svg)](https://github.com/rocket-hangar/rocket-scripts/actions?query=workflow%3ATEST) -[![E2E](https://github.com/rocket-hangar/rocket-scripts/workflows/E2E/badge.svg)](https://github.com/rocket-hangar/rocket-scripts/actions?query=workflow%3AE2E) -[![codecov](https://codecov.io/gh/rocket-hangar/rocket-scripts/branch/master/graph/badge.svg)](https://codecov.io/gh/rocket-hangar/rocket-scripts) - -🚀 Rocket Scripts are development scripts for React web apps and React electron apps. - -These scripts are not support CLI for easy usage. - -But, you can easy combine the many other environments (e.g. Back-End API Server, Puppeteer...) in API usage. - -For example, you can available like below. - - - -```ts -// 1. Start Back-End API Server -// 2. Start Front-End Development Server -// 3. Start Chromium Browser with Puppeteer -import { serverStart } from '@myorg/api-server'; -import { start } from '@rocket-scripts/web'; -import puppeteer from 'puppeteer'; - -(async () => { - const remoteDebuggingPort: number = +(process.env.INSPECT_CHROME ?? 9222); - const serverPort: number = +(process.env.API_SERVER_PORT ?? 9455); - - // start back-end server - await serverStart({ port: serverPort }); - - // start front-end dev server - const { port } = await start({ - app: 'client', - webpackDevServerConfig: { - // bind proxy `/*` -> `/api/*` - proxy: { - '/api': { - target: `http://localhost:${serverPort}`, - changeOrigin: true, - logLevel: 'debug', - pathRewrite: { - '^/api': '', - }, - }, - }, - }, - }); - - // start puppeteer - const browser = await puppeteer.launch({ - //userDataDir: process.env.CHROMIUM_USER_DATA_DEBUG, - headless: false, - args: [ - '--start-fullscreen', - `--remote-debugging-port=${remoteDebuggingPort}`, - ], - devtools: true, - }); - - const [page] = await browser.pages(); - await page.goto(`http://localhost:${port}`); - - await page.waitForFunction( - `document.querySelector('#app h1').innerHTML === 'Hello World!'`, - { - timeout: 1000 * 60, - polling: 1000 * 3, - }, - ); -})(); -``` - - - -```tsx -// 1. Start Front-End development server -// 2. Start Chromium Broser with Puppeteer -// 3. Start performance profiling with shortcut on Interactive CLI -import { start } from '@rocket-scripts/web'; -import { Divider } from '@ssen/dev-server-components'; -import chokidar from 'chokidar'; -import { format } from 'date-fns'; -import { FSWatcher } from 'fs'; -import fs from 'fs-extra'; -import { Text, useInput } from 'ink'; -import path from 'path'; -import puppeteer, { Browser } from 'puppeteer'; -import React, { useCallback, useEffect, useState } from 'react'; - -const profileStore: string = path.join(process.cwd(), 'profiles'); - -function ProfileRepeater({ - browser, - pageUrl, - shortcuts, -}: { - browser: Browser; - pageUrl: string; - shortcuts: { - record: string; - clean: string; - }; -}) { - const [profiles, setProfiles] = useState([]); - - const run = useCallback(async () => { - const page = await browser.newPage(); - - const profile: string = path.join( - profileStore, - `animate-${format(new Date(), 'yyyy-MM-dd-hhmmss')}.json`, - ); - - await page.tracing.start({ - path: profile, - screenshots: true, - // @see ~/tracing.categories.json - // const cdp: CDPSession = await page._client; - // const categories = await cdp.send('Tracing.getCategories'); - categories: [ - 'devtools.timeline', - 'disabled-by-default-devtools.timeline', - 'disabled-by-default-devtools.timeline.frame', - 'disabled-by-default-devtools.timeline.stack', - 'disabled-by-default-v8.cpu_profiler', - 'disabled-by-default-v8.cpu_profiler.hires', - 'memory', - ], - }); - - await page.goto(pageUrl); - - await page.waitFor(4000); - - await page.tracing.stop(); - - await page.close(); - }, [browser, pageUrl]); - - useEffect(() => { - function update() { - setProfiles( - fs.readdirSync(profileStore).filter((file) => /^animate-/.test(file)), - ); - } - - const watcher: FSWatcher = chokidar - .watch([`${profileStore}/*.json`]) - .on('add', update) - .on('unlink', update); - - return () => { - watcher.close(); - }; - }, []); - - useInput((input) => { - switch (input) { - case shortcuts.record: - run(); - break; - case shortcuts.clean: - for (const file of fs.readdirSync(profileStore)) { - if (/[0-9]{4}-[0-9]{2}-[0-9]{2}-[0-9]{6}\.json$/.test(file)) { - fs.removeSync(path.join(profileStore, file)); - } - } - break; - } - }); - - return ( - <> - - {`Profiles (${shortcuts.record}) Create a new profile (${shortcuts.clean}) Clean temp profiles`} - - {profiles.map((file) => ( - {file} - ))} - - ); -} - -(async () => { - const remoteDebuggingPort: number = +(process.env.INSPECT_CHROME ?? 9222); - const webPort: number = +(process.env.DEV_SERVER_PORT ?? 9633); - - await fs.mkdirp(profileStore); - - const browser = await puppeteer.launch({ - userDataDir: process.env.CHROMIUM_USER_DATA_DEBUG, - headless: false, - args: [ - '--start-fullscreen', - `--remote-debugging-port=${remoteDebuggingPort}`, - ], - devtools: true, - }); - - await start({ - app: 'app', - port: webPort, - children: ( - - ), - }); -})(); -``` - -# Quick start React Web app development - - - -```sh -# create a workspace directory -npx generate-github-directory https://github.com/rocket-hangar/workspace-template my-project -cd my-project - -# create an app -npx generate-github-directory https://github.com/rocket-hangar/rocket-scripts-templates/tree/master/templates/web my-app - -# add "my-app" to workspaces of package.json - -# install -yarn - -# start -cd my-app - -# start -yarn run start -``` - -
- -Fish shell function - -```fish -# add ~/.config/fish/config.fish -function generate-web-project - set project $argv[1] - set app $argv[2] - - if [ -z $project ] || [ -z $app ] - echo "Undefined arguments $project $app : generate-web-project project app" - else - # create a workspace directory - generate-github-directory https://github.com/rocket-hangar/workspace-template $project - cd $project - - # create an app - generate-github-directory https://github.com/rocket-hangar/rocket-scripts-templates/tree/master/templates/web $app - cd $app - - cd .. - - echo "👍 Generated! follow next steps" - echo "Add $app to workspaces of package.json" - echo "And, yarn install" - - # open project in your IDE - # webstorm . - # code . - end -end -``` - -
- -# Quick start React Electron app development - - - -```sh -# create a workspace directory -npx generate-github-directory https://github.com/rocket-hangar/workspace-template my-project -cd my-project - -# create an app -npx generate-github-directory https://github.com/rocket-hangar/rocket-scripts-templates/tree/master/templates/electron my-app - -# add "my-app" to workspaces of package.json - -# install -yarn - -# directory -cd my-app - -# start -yarn run start -``` - -# More repositories for reference - -- - -# Related Projects - -- -- -- -- diff --git a/packages/src/@rocket-scripts/web/__run__/build.bundle.run.ts b/packages/src/@rocket-scripts/web/__run__/build.bundle.run.ts deleted file mode 100644 index 3cba67c3..00000000 --- a/packages/src/@rocket-scripts/web/__run__/build.bundle.run.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { build } from '@rocket-scripts/web/build'; -import { copyFixture } from '@ssen/copy-fixture'; -import { exec } from '@ssen/promised'; - -(async () => { - const cwd: string = await copyFixture('test/fixtures/web/bundle'); - - await build({ - cwd, - staticFileDirectories: ['{cwd}/public'], - app: 'app', - }); - - exec(`code ${cwd}`); -})(); diff --git a/packages/src/@rocket-scripts/web/__run__/build.isolated-scripts.run.ts b/packages/src/@rocket-scripts/web/__run__/build.isolated-scripts.run.ts deleted file mode 100644 index 3616ff64..00000000 --- a/packages/src/@rocket-scripts/web/__run__/build.isolated-scripts.run.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { build } from '@rocket-scripts/web/build'; -import { copyFixture } from '@ssen/copy-fixture'; -import { exec } from '@ssen/promised'; - -(async () => { - const cwd: string = await copyFixture('test/fixtures/web/isolated-scripts'); - - await build({ - cwd, - staticFileDirectories: ['{cwd}/public'], - app: 'app', - isolatedScripts: { - isolate: 'isolate.ts', - }, - }); - - exec(`code ${cwd}`); -})(); diff --git a/packages/src/@rocket-scripts/web/__run__/build.run.ts b/packages/src/@rocket-scripts/web/__run__/build.run.ts deleted file mode 100644 index 068a0950..00000000 --- a/packages/src/@rocket-scripts/web/__run__/build.run.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { build } from '@rocket-scripts/web/build'; -import { copyFixture } from '@ssen/copy-fixture'; -import { exec } from '@ssen/promised'; - -(async () => { - const cwd: string = await copyFixture('test/fixtures/web/start'); - - await build({ - cwd, - staticFileDirectories: ['{cwd}/public'], - app: 'app', - }); - - exec(`code ${cwd}`); -})(); diff --git a/packages/src/@rocket-scripts/web/__run__/build.webpack.run.ts b/packages/src/@rocket-scripts/web/__run__/build.webpack.run.ts deleted file mode 100644 index 89376330..00000000 --- a/packages/src/@rocket-scripts/web/__run__/build.webpack.run.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { build } from '@rocket-scripts/web/build'; -import { copyFixture } from '@ssen/copy-fixture'; -import { exec } from '@ssen/promised'; - -(async () => { - const cwd: string = await copyFixture('test/fixtures/web/webpack-config'); - - await build({ - cwd, - staticFileDirectories: ['{cwd}/public'], - app: 'app', - webpackConfig: '{cwd}/webpack.config.js', - }); - - exec(`code ${cwd}`); -})(); diff --git a/packages/src/@rocket-scripts/web/__run__/build.worker.run.ts b/packages/src/@rocket-scripts/web/__run__/build.worker.run.ts deleted file mode 100644 index 593a3f29..00000000 --- a/packages/src/@rocket-scripts/web/__run__/build.worker.run.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { build } from '@rocket-scripts/web/build'; -import { copyFixture } from '@ssen/copy-fixture'; -import { exec } from '@ssen/promised'; - -(async () => { - const cwd: string = await copyFixture('test/fixtures/web/worker'); - - await build({ - cwd, - staticFileDirectories: ['{cwd}/public'], - app: 'app', - }); - - await exec(`code ${cwd}`); -})(); diff --git a/packages/src/@rocket-scripts/web/__run__/start.bundle.run.ts b/packages/src/@rocket-scripts/web/__run__/start.bundle.run.ts deleted file mode 100644 index 94b9b02c..00000000 --- a/packages/src/@rocket-scripts/web/__run__/start.bundle.run.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { start } from '@rocket-scripts/web/start'; -import { copyFixture } from '@ssen/copy-fixture'; -import puppeteer from 'puppeteer'; - -(async () => { - const cwd: string = await copyFixture('test/fixtures/web/bundle'); - - const { port } = await start({ - cwd, - staticFileDirectories: ['{cwd}/public'], - app: 'app', - }); - - const browser = await puppeteer.launch({ - userDataDir: process.env.CHROMIUM_USER_DATA_DEBUG, - headless: false, - args: ['--start-fullscreen'], - devtools: true, - }); - - const [page] = await browser.pages(); - await page.goto(`http://localhost:${port}`); -})(); diff --git a/packages/src/@rocket-scripts/web/__run__/start.css.run.ts b/packages/src/@rocket-scripts/web/__run__/start.css.run.ts deleted file mode 100644 index 41c9a919..00000000 --- a/packages/src/@rocket-scripts/web/__run__/start.css.run.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { start } from '@rocket-scripts/web/start'; -import { copyFixture } from '@ssen/copy-fixture'; -import puppeteer from 'puppeteer'; - -(async () => { - const cwd: string = await copyFixture('test/fixtures/web/css'); - - const { port } = await start({ - cwd, - staticFileDirectories: ['{cwd}/public'], - app: 'app', - }); - - const browser = await puppeteer.launch({ - userDataDir: process.env.CHROMIUM_USER_DATA_DEBUG, - headless: false, - args: ['--start-fullscreen'], - devtools: true, - }); - - const [page] = await browser.pages(); - await page.goto(`http://localhost:${port}`); -})(); diff --git a/packages/src/@rocket-scripts/web/__run__/start.https.run.ts b/packages/src/@rocket-scripts/web/__run__/start.https.run.ts deleted file mode 100644 index 286d8932..00000000 --- a/packages/src/@rocket-scripts/web/__run__/start.https.run.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { start } from '@rocket-scripts/web/start'; -import { copyFixture } from '@ssen/copy-fixture'; - -(async () => { - const cwd: string = await copyFixture('test/fixtures/web/start'); - - await start({ - cwd, - staticFileDirectories: ['{cwd}/public'], - app: 'app', - webpackDevServerConfig: { - https: { - cert: process.env.LOCALHOST_HTTPS_CERT, - key: process.env.LOCALHOST_HTTPS_KEY, - }, - }, - }); -})(); diff --git a/packages/src/@rocket-scripts/web/__run__/start.isolated-scripts.run.ts b/packages/src/@rocket-scripts/web/__run__/start.isolated-scripts.run.ts deleted file mode 100644 index b3310ac9..00000000 --- a/packages/src/@rocket-scripts/web/__run__/start.isolated-scripts.run.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { start } from '@rocket-scripts/web/start'; -import { copyFixture } from '@ssen/copy-fixture'; -import puppeteer from 'puppeteer'; - -(async () => { - const cwd: string = await copyFixture('test/fixtures/web/isolated-scripts'); - - const { port } = await start({ - cwd, - staticFileDirectories: ['{cwd}/public'], - app: 'app', - isolatedScripts: { - isolate: 'isolate.ts', - }, - }); - - const browser = await puppeteer.launch({ - userDataDir: process.env.CHROMIUM_USER_DATA_DEBUG, - headless: false, - args: ['--start-fullscreen'], - devtools: true, - }); - - const [page] = await browser.pages(); - await page.goto(`http://localhost:${port}`); -})(); diff --git a/packages/src/@rocket-scripts/web/__run__/start.proxy.run.ts b/packages/src/@rocket-scripts/web/__run__/start.proxy.run.ts deleted file mode 100644 index cf7c6a43..00000000 --- a/packages/src/@rocket-scripts/web/__run__/start.proxy.run.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { start } from '@rocket-scripts/web/start'; -import { copyFixture } from '@ssen/copy-fixture'; -import puppeteer from 'puppeteer'; - -(async () => { - const cwd: string = await copyFixture('test/fixtures/web/proxy'); - - const { port } = await start({ - cwd, - staticFileDirectories: ['{cwd}/public'], - app: 'app', - webpackDevServerConfig: { - proxy: { - '/api': { - target: 'http://labs.ssen.name', - changeOrigin: true, - logLevel: 'debug', - pathRewrite: { - '^/api': '', - }, - }, - }, - }, - }); - - const browser = await puppeteer.launch({ - userDataDir: process.env.CHROMIUM_USER_DATA_DEBUG, - headless: false, - args: ['--start-fullscreen'], - devtools: true, - }); - - const [page] = await browser.pages(); - await page.goto(`http://localhost:${port}`); -})(); diff --git a/packages/src/@rocket-scripts/web/__run__/start.puppeteer-recorder-test.run.ts b/packages/src/@rocket-scripts/web/__run__/start.puppeteer-recorder-test.run.ts deleted file mode 100644 index c55f8483..00000000 --- a/packages/src/@rocket-scripts/web/__run__/start.puppeteer-recorder-test.run.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { start } from '@rocket-scripts/web'; -import { copyFixture } from '@ssen/copy-fixture'; -import puppeteer from 'puppeteer'; - -const timeout = (t: number) => new Promise((resolve) => setTimeout(resolve, t)); - -(async () => { - const cwd: string = await copyFixture( - 'test/fixtures/web/puppeteer-recorder-test', - ); - - const { port } = await start({ - cwd, - staticFileDirectories: ['{cwd}/public'], - app: 'app', - }); - - const browser = await puppeteer.launch({ - userDataDir: process.env.CHROMIUM_USER_DATA_DEBUG, - headless: false, - args: ['--start-fullscreen'], - devtools: true, - }); - - const [page] = await browser.pages(); - await page.goto(`http://localhost:${port}`); - - await timeout(500); - - await page.waitForSelector('body > #app > div > button'); - await page.click('body > #app > div > button'); - - await timeout(500); - - await page.waitForSelector('body > #app > div > button'); - await page.click('body > #app > div > button'); - - await timeout(500); - - await page.waitForSelector('body > #app > div > button'); - await page.click('body > #app > div > button'); - - await timeout(500); - - await page.waitForSelector('body > #app > div > button'); - await page.click('body > #app > div > button'); - - await timeout(500); - - const value = await page.$eval('#app h1', (e) => e.innerHTML); - console.assert(value === 'Count = 4'); -})(); diff --git a/packages/src/@rocket-scripts/web/__run__/start.react-router.run.ts b/packages/src/@rocket-scripts/web/__run__/start.react-router.run.ts deleted file mode 100644 index 5ed2280c..00000000 --- a/packages/src/@rocket-scripts/web/__run__/start.react-router.run.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { start } from '@rocket-scripts/web/start'; -import { copyFixture } from '@ssen/copy-fixture'; -import puppeteer from 'puppeteer'; - -(async () => { - const cwd: string = await copyFixture('test/fixtures/web/react-router'); - - const { port } = await start({ - cwd, - staticFileDirectories: ['{cwd}/public'], - app: 'app', - }); - - const browser = await puppeteer.launch({ - userDataDir: process.env.CHROMIUM_USER_DATA_DEBUG, - headless: false, - args: ['--start-fullscreen'], - devtools: true, - }); - - const [page] = await browser.pages(); - await page.goto(`http://localhost:${port}`); -})(); diff --git a/packages/src/@rocket-scripts/web/__run__/start.run.ts b/packages/src/@rocket-scripts/web/__run__/start.run.ts deleted file mode 100644 index 96cd418c..00000000 --- a/packages/src/@rocket-scripts/web/__run__/start.run.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { start } from '@rocket-scripts/web/start'; -import { copyFixture } from '@ssen/copy-fixture'; -import puppeteer from 'puppeteer'; - -(async () => { - const cwd: string = await copyFixture('test/fixtures/web/start'); - - const { port } = await start({ - cwd, - staticFileDirectories: ['{cwd}/public'], - app: 'app', - }); - - const browser = await puppeteer.launch({ - userDataDir: process.env.CHROMIUM_USER_DATA_DEBUG, - headless: false, - args: ['--start-fullscreen'], - devtools: true, - }); - - const [page] = await browser.pages(); - await page.goto(`http://localhost:${port}`); -})(); diff --git a/packages/src/@rocket-scripts/web/__run__/start.webpack.run.ts b/packages/src/@rocket-scripts/web/__run__/start.webpack.run.ts deleted file mode 100644 index e7b9f4c3..00000000 --- a/packages/src/@rocket-scripts/web/__run__/start.webpack.run.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { start } from '@rocket-scripts/web/start'; -import { copyFixture } from '@ssen/copy-fixture'; - -(async () => { - const cwd: string = await copyFixture('test/fixtures/web/webpack-config'); - - await start({ - cwd, - staticFileDirectories: ['{cwd}/public'], - app: 'app', - webpackConfig: '{cwd}/webpack.config.js', - }); -})(); diff --git a/packages/src/@rocket-scripts/web/__run__/start.worker.run.ts b/packages/src/@rocket-scripts/web/__run__/start.worker.run.ts deleted file mode 100644 index 2ef7ec48..00000000 --- a/packages/src/@rocket-scripts/web/__run__/start.worker.run.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { start } from '@rocket-scripts/web/start'; -import { copyFixture } from '@ssen/copy-fixture'; -import puppeteer from 'puppeteer'; - -(async () => { - const cwd: string = await copyFixture('test/fixtures/web/worker'); - - const { port } = await start({ - cwd, - staticFileDirectories: ['{cwd}/public'], - app: 'app', - }); - - const browser = await puppeteer.launch({ - userDataDir: process.env.CHROMIUM_USER_DATA_DEBUG, - headless: false, - args: ['--start-fullscreen'], - devtools: true, - }); - - const [page] = await browser.pages(); - await page.goto(`http://localhost:${port}`); -})(); diff --git a/packages/src/@rocket-scripts/web/__run__/watch.isolated-scripts.run.ts b/packages/src/@rocket-scripts/web/__run__/watch.isolated-scripts.run.ts deleted file mode 100644 index a7fcbc8a..00000000 --- a/packages/src/@rocket-scripts/web/__run__/watch.isolated-scripts.run.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { watch } from '@rocket-scripts/web/watch'; -import { copyFixture } from '@ssen/copy-fixture'; -import { exec } from '@ssen/promised'; - -(async () => { - const cwd: string = await copyFixture('test/fixtures/web/isolated-scripts'); - - await watch({ - cwd, - staticFileDirectories: ['{cwd}/public'], - app: 'app', - isolatedScripts: { - isolate: 'isolate.ts', - }, - }); - - exec(`code ${cwd}`); -})(); diff --git a/packages/src/@rocket-scripts/web/__tests__/build.test.ts b/packages/src/@rocket-scripts/web/__tests__/build.test.ts deleted file mode 100644 index 4216d433..00000000 --- a/packages/src/@rocket-scripts/web/__tests__/build.test.ts +++ /dev/null @@ -1,115 +0,0 @@ -import { build } from '@rocket-scripts/web'; -import { copyFixture } from '@ssen/copy-fixture'; -import { glob } from '@ssen/promised'; -import { createTmpDirectory } from '@ssen/tmp-directory'; - -describe('web/build', () => { - test.each(['start', 'webpack-config', 'css'])( - 'should build the project "fixtures/web/%s"', - async (dir: string) => { - // Arrange : project directories - const cwd: string = await copyFixture(`test/fixtures/web/${dir}`); - const outDir: string = await createTmpDirectory(); - const staticFileDirectories: string[] = ['{cwd}/public']; - const app: string = 'app'; - - // Act - await build({ - cwd, - staticFileDirectories, - app, - outDir, - webpackConfig: - dir === 'webpack-config' ? '{cwd}/webpack.config.js' : undefined, - }); - - // Assert - await expect(glob(`${outDir}/manifest.json`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/size-report.html`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/favicon.ico`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/index.*.js`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/index.html`)).resolves.toHaveLength(1); - if (dir !== 'webpack-config') { - await expect(glob(`${outDir}/vendor.*.js`)).resolves.toHaveLength(1); - } - }, - ); - - test('should create the bundle svg file', async () => { - // Arrange : project directories - const cwd: string = await copyFixture(`test/fixtures/web/bundle`); - const outDir: string = await createTmpDirectory(); - const staticFileDirectories: string[] = ['{cwd}/public']; - const app: string = 'app'; - - // Act - await build({ - cwd, - staticFileDirectories, - app, - outDir, - }); - - // Assert - await expect(glob(`${outDir}/manifest.json`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/size-report.html`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/favicon.ico`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/index.*.js`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/index.html`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/test.*.svg`)).resolves.toHaveLength(1); - }); - - test('should create an isolated script', async () => { - // Arrange : project directories - const cwd: string = await copyFixture(`test/fixtures/web/isolated-scripts`); - const outDir: string = await createTmpDirectory(); - const staticFileDirectories: string[] = ['{cwd}/public']; - const app: string = 'app'; - - // Act - await build({ - cwd, - staticFileDirectories, - app, - outDir, - isolatedScripts: { - isolate: 'isolate.ts', - }, - }); - - // Assert - await expect(glob(`${outDir}/manifest.json`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/size-report.html`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/favicon.ico`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/index.*.js`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/index.html`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/isolate.js`)).resolves.toHaveLength(1); - }); - - test('should copy static files with multiple static file directories', async () => { - // Arrange : project directories - const cwd: string = await copyFixture( - `test/fixtures/web/static-file-directories`, - ); - const outDir: string = await createTmpDirectory(); - const staticFileDirectories: string[] = ['{cwd}/public', '{cwd}/static']; - const app: string = 'app'; - - // Act - await build({ - cwd, - staticFileDirectories, - app, - outDir, - }); - - // Assert - await expect(glob(`${outDir}/hello.json`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/manifest.json`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/size-report.html`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/favicon.ico`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/index.*.js`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/index.html`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/vendor.*.js`)).resolves.toHaveLength(1); - }); -}); diff --git a/packages/src/@rocket-scripts/web/__tests__/filterReactEnv.test.ts b/packages/src/@rocket-scripts/web/__tests__/filterReactEnv.test.ts deleted file mode 100644 index 807ff7c1..00000000 --- a/packages/src/@rocket-scripts/web/__tests__/filterReactEnv.test.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { filterReactEnv } from '@rocket-scripts/web/utils/filterReactEnv'; - -describe('filterReactEnv()', () => { - test('should filter REACT_APP_* envs', () => { - // Arrange - const envs: NodeJS.ProcessEnv = { - NODE_ENV: 'development', - REACT_APP_HELLO: 'hello', - APP_HELLO: 'hello', - FOO: 'bar', - }; - - // Act - const result: NodeJS.ProcessEnv = filterReactEnv(envs); - - // Assert - expect(result['NODE_ENV']).toBeUndefined(); - expect(result['REACT_APP_HELLO']).toBe('hello'); - expect(result['APP_HELLO']).toBe('hello'); - expect(result['FOO']).toBeUndefined(); - }); -}); diff --git a/packages/src/@rocket-scripts/web/__tests__/observeAliasChange.test.ts b/packages/src/@rocket-scripts/web/__tests__/observeAliasChange.test.ts deleted file mode 100644 index f9d06eec..00000000 --- a/packages/src/@rocket-scripts/web/__tests__/observeAliasChange.test.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { getWebpackAlias } from '@rocket-scripts/utils'; -import { observeAliasChange } from '@rocket-scripts/web/utils/observeAliasChange'; -import { copyFixture } from '@ssen/copy-fixture'; -import { waitFor } from '@testing-library/react'; -import fs from 'fs-extra'; -import path from 'path'; - -describe('observeAliasChange', () => { - test('should catch alias changed', async () => { - // Arrange - const cwd: string = await copyFixture('test/fixtures/web/start'); - - // Act - const current: Record = getWebpackAlias(cwd); - - // Assert - expect(Object.keys(current)).toEqual(['app']); - - // Arrange - let change: string | null = null; - - const subscription = observeAliasChange({ - cwd, - current, - interval: 1000, - }).subscribe((changeValue: string | null) => { - change = changeValue; - }); - - const hello: string = path.join(cwd, 'src/hello'); - - // Act - fs.mkdirpSync(hello); - - // Assert - await waitFor(() => expect(change).toContain('alias changed'), { - timeout: 5000, - }); - - // Act - fs.rmdirSync(hello); - - // Assert - await waitFor(() => expect(change).toBeNull(), { timeout: 5000 }); - - // Exit - subscription.unsubscribe(); - }); -}); diff --git a/packages/src/@rocket-scripts/web/__tests__/observeAppEntryChange.test.ts b/packages/src/@rocket-scripts/web/__tests__/observeAppEntryChange.test.ts deleted file mode 100644 index 4c632076..00000000 --- a/packages/src/@rocket-scripts/web/__tests__/observeAppEntryChange.test.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { AppEntry, getAppEntry } from '@rocket-scripts/web/utils/getAppEntry'; -import { observeAppEntryChange } from '@rocket-scripts/web/utils/observeAppEntryChange'; -import { copyFixture } from '@ssen/copy-fixture'; -import { waitFor } from '@testing-library/react'; -import fs from 'fs-extra'; -import path from 'path'; - -describe('observeAppEntrChange()', () => { - test('should catch app entry changed', async () => { - // Arrange - const cwd: string = await copyFixture( - 'test/fixtures/web/observeAppEntryChange', - ); - - // Act - const current: AppEntry[] = getAppEntry({ appDir: cwd }); - - // Assert - expect(current.length).toBe(2); - expect(fs.existsSync(path.join(cwd, 'test1.html'))).toBeTruthy(); - expect(fs.existsSync(path.join(cwd, 'test1.tsx'))).toBeTruthy(); - expect(fs.existsSync(path.join(cwd, 'test2.html'))).toBeTruthy(); - expect(fs.existsSync(path.join(cwd, 'test2.tsx'))).toBeTruthy(); - - // Arrange - let change: string | null = null; - - const subscription = observeAppEntryChange({ - current, - appDir: cwd, - }).subscribe((changeValue: string | null) => { - change = changeValue; - }); - - // Act - fs.copyFileSync(path.join(cwd, 'test1.html'), path.join(cwd, 'test3.html')); - fs.copyFileSync(path.join(cwd, 'test1.tsx'), path.join(cwd, 'test3.tsx')); - - // Assert - await waitFor(() => expect(change).toContain('entry changed'), { - timeout: 5000, - }); - - // Act - fs.unlinkSync(path.join(cwd, 'test3.html')); - - // Assert - await waitFor(() => expect(change).toBeNull(), { timeout: 5000 }); - - // Exit - subscription.unsubscribe(); - }); -}); diff --git a/packages/src/@rocket-scripts/web/__tests__/start.test.ts b/packages/src/@rocket-scripts/web/__tests__/start.test.ts deleted file mode 100644 index 9220125c..00000000 --- a/packages/src/@rocket-scripts/web/__tests__/start.test.ts +++ /dev/null @@ -1,348 +0,0 @@ -import { start } from '@rocket-scripts/web'; -import { copyFixture } from '@ssen/copy-fixture'; -import { createInkWriteStream } from '@ssen/ink-helpers'; -import fs from 'fs-extra'; -import path from 'path'; -import puppeteer, { Browser, Page } from 'puppeteer'; - -const timeout = (t: number) => new Promise((resolve) => setTimeout(resolve, t)); - -describe('web/start', () => { - let browser: Browser; - let page: Page; - - beforeAll(async () => { - browser = await puppeteer.launch({ - headless: true, - defaultViewport: { - width: 1200, - height: 900, - }, - }); - }); - - afterAll(async () => { - await browser.close(); - }); - - afterEach(async () => { - if (page && !page.isClosed()) { - await page.close(); - } - }); - - test.each(['start', 'webpack-config', 'css'])( - 'should read h1 text and the text should change with HMR (%s)', - async (dir: string) => { - // Arrange : project directories - const cwd: string = await copyFixture(`test/fixtures/web/${dir}`); - const staticFileDirectories: string[] = ['{cwd}/public']; - const app: string = 'app'; - - // Arrange : stdout - const stdout = createInkWriteStream(); - - // Act : server start - const { port, close } = await start({ - cwd, - staticFileDirectories, - app, - stdout, - logfile: process.env.CI - ? path.join(process.cwd(), `logs/start-basic.${dir}.txt`) - : undefined, - webpackConfig: - dir === 'webpack-config' ? '{cwd}/webpack.config.js' : undefined, - }); - - await timeout(1000 * 5); - - // Arrange : wait server start - const url: string = `http://localhost:${port}`; - - page = await browser.newPage(); - - await page.goto(url, { timeout: 1000 * 60 }); - - await page.waitForSelector('#app h1', { timeout: 1000 * 60 }); - - // Assert - await expect(page.$eval('#app h1', (e) => e.innerHTML)).resolves.toBe( - 'Hello World!', - ); - - // Act : update the source file to be causing HMR - const file: string = path.join(cwd, 'src/app/index.tsx'); - const source: string = await fs.readFile(file, 'utf8'); - await fs.writeFile(file, source.replace(/(Hello)/g, 'Hi'), { - encoding: 'utf8', - }); - - // Assert : update browser text by HMR (but, it can fail) - const waitMs: number = 1000; - let count: number = 20; - while (count >= 0) { - const text: string = await page.$eval( - '#app h1', - (e: Element) => e.innerHTML, - ); - if (text === 'Hi World!') { - break; - } else if (count === 0) { - // Assert : when HMR did not work - console.warn(`HMR did not work`); - await page.reload({ waitUntil: 'load' }); - await timeout(1000 * 2); - await page.waitForSelector('#app h1', { timeout: 1000 * 60 }); - await expect( - page.$eval('#app h1', (e: Element) => e.innerHTML), - ).resolves.toBe('Hi World!'); - } - await timeout(waitMs); - count -= 1; - } - - // Exit - await close(); - - console.log(stdout.lastFrame()); - }, - ); - - test.each(['alias', 'alias-group'])( - 'should make abc text from alias directories (%s)', - async (dir: string) => { - // Arrange : project directories - const cwd: string = await copyFixture(`test/fixtures/web/${dir}`); - const staticFileDirectories: string[] = ['{cwd}/public']; - const app: string = 'app'; - - // Arrange : stdout - const stdout = createInkWriteStream(); - - // Act : server start - const { port, close } = await start({ - cwd, - staticFileDirectories, - app, - stdout, - logfile: process.env.CI - ? path.join(process.cwd(), `logs/start-alias.${dir}.txt`) - : undefined, - }); - - await timeout(1000 * 5); - - // Arrange : wait server start - const url: string = `http://localhost:${port}`; - - page = await browser.newPage(); - - await page.goto(url, { timeout: 1000 * 60 }); - - await page.waitForSelector('#app h1', { timeout: 1000 * 60 }); - - // Assert - await expect( - page.$eval('#app h1', (e: Element) => e.innerHTML), - ).resolves.toBe('abc'); - - // Exit - await close(); - - console.log(stdout.lastFrame()); - }, - ); - - test('should create an isolate script', async () => { - // Arrange : project directories - const cwd: string = await copyFixture('test/fixtures/web/isolated-scripts'); - const staticFileDirectories: string[] = ['{cwd}/public']; - const app: string = 'app'; - - // Arrange : stdout - const stdout = createInkWriteStream(); - - // Act : server start - const { port, close } = await start({ - cwd, - staticFileDirectories, - app, - stdout, - logfile: process.env.CI - ? path.join(process.cwd(), `logs/isolate-script.txt`) - : undefined, - isolatedScripts: { - isolate: 'isolate.ts', - }, - }); - - await timeout(1000 * 5); - - // Arrange : wait server start - const url: string = `http://localhost:${port}`; - - page = await browser.newPage(); - - await page.goto(url, { timeout: 1000 * 60 }); - - await page.waitForSelector('#app h1', { timeout: 1000 * 60 }); - - // Assert - await expect( - page.$eval('#app h1', (e: Element) => e.innerHTML), - ).resolves.toBe('Hello World!'); - - const manifest = await fetch(`http://localhost:${port}/manifest.json`); - expect(manifest.status).toBeLessThan(299); - - const isolate = await fetch(`http://localhost:${port}/isolate.js`); - expect(isolate.status).toBeLessThan(299); - - // Arrange : server close - await close(); - - // Assert : print stdout - console.log(stdout.lastFrame()); - }); - - test('should rewrite url with history fallback', async () => { - // Arrange : project directories - const cwd: string = await copyFixture('test/fixtures/web/react-router'); - const staticFileDirectories: string[] = ['{cwd}/public']; - const app: string = 'app'; - - // Arrange : stdout - const stdout = createInkWriteStream(); - - // Act : server start - const { port, close } = await start({ - cwd, - staticFileDirectories, - app, - stdout, - logfile: process.env.CI - ? path.join(process.cwd(), `logs/history-fallback.txt`) - : undefined, - }); - - await timeout(1000 * 5); - - // Arrange : wait server start - const url: string = `http://localhost:${port}/b`; - - page = await browser.newPage(); - - await page.goto(url, { timeout: 1000 * 60 }); - - await page.waitForSelector('#app section div', { timeout: 1000 * 60 }); - - // Assert - await expect( - page.$eval('#app section div', (e: Element) => e.innerHTML), - ).resolves.toBe('B'); - - // Arrange : server close - await close(); - - // Assert : print stdout - console.log(stdout.lastFrame()); - }); - - test('should get static files with multiple static file directories', async () => { - // Arrange : project directories - const cwd: string = await copyFixture( - 'test/fixtures/web/static-file-directories', - ); - const staticFileDirectories: string[] = ['{cwd}/public', '{cwd}/static']; - const app: string = 'app'; - - // Arrange : stdout - const stdout = createInkWriteStream(); - - // Act : server start - const { port, close } = await start({ - cwd, - staticFileDirectories, - app, - stdout, - logfile: process.env.CI - ? path.join(process.cwd(), `logs/start-static-file-directories.txt`) - : undefined, - }); - - await timeout(1000 * 5); - - // Arrange : wait server start - const url: string = `http://localhost:${port}`; - - page = await browser.newPage(); - - await page.goto(url, { timeout: 1000 * 60 }); - - await page.waitForSelector('#app h1', { timeout: 1000 * 60 }); - - // Assert - await expect( - page.$eval('#app h1', (e: Element) => e.innerHTML), - ).resolves.toBe('Hello World!'); - - const manifest = await fetch(`http://localhost:${port}/manifest.json`); - expect(manifest.status).toBeLessThan(299); - - const hello = await fetch(`http://localhost:${port}/hello.json`); - expect(hello.status).toBeLessThan(299); - - // Arrange : server close - await close(); - - // Assert : print stdout - console.log(stdout.lastFrame()); - }); - - test('should use proxy api', async () => { - // Arrange : project directories - const cwd: string = await copyFixture('test/fixtures/web/proxy'); - const staticFileDirectories: string[] = ['{cwd}/public']; - const app: string = 'app'; - - // Arrange : stdout - const stdout = createInkWriteStream(); - - // Act : server start - const { port, close } = await start({ - cwd, - staticFileDirectories, - app, - stdout, - logfile: process.env.CI - ? path.join(process.cwd(), `logs/start-proxy.txt`) - : undefined, - webpackDevServerConfig: { - proxy: { - '/api': { - target: 'http://labs.ssen.name', - changeOrigin: true, - logLevel: 'debug', - pathRewrite: { - '^/api': '', - }, - }, - }, - }, - }); - - await timeout(1000 * 5); - - // Assert - const api = await fetch( - `http://localhost:${port}/api/assets/book-opened.svg`, - ); - expect(api.status).toBeLessThan(299); - - // Exit - await close(); - - console.log(stdout.lastFrame()); - }); -}); diff --git a/packages/src/@rocket-scripts/web/__tests__/watch.test.ts b/packages/src/@rocket-scripts/web/__tests__/watch.test.ts deleted file mode 100644 index 35a5205c..00000000 --- a/packages/src/@rocket-scripts/web/__tests__/watch.test.ts +++ /dev/null @@ -1,103 +0,0 @@ -import { watch } from '@rocket-scripts/web'; -import { copyFixture } from '@ssen/copy-fixture'; -import { createInkWriteStream } from '@ssen/ink-helpers'; -import { glob } from '@ssen/promised'; - -describe('web/watch', () => { - test.each(['start', 'webpack-config', 'css'])( - 'should build the project "fixtures/web/%s"', - async (dir: string) => { - // Arrange : project directories - const cwd: string = await copyFixture(`test/fixtures/web/${dir}`); - const staticFileDirectories: string[] = ['{cwd}/public']; - const app: string = 'app'; - - // Arrange : stdout - const stdout = createInkWriteStream(); - - // Act - const { close, outDir } = await watch({ - cwd, - staticFileDirectories, - app, - stdout, - webpackConfig: - dir === 'webpack-config' ? '{cwd}/webpack.config.js' : undefined, - }); - - // Assert - await expect(glob(`${outDir}/manifest.json`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/favicon.ico`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/index.js`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/index.html`)).resolves.toHaveLength(1); - - // Exit - await close(); - - console.log(stdout.lastFrame()); - }, - ); - - test('should create an isolated script', async () => { - // Arrange : project directories - const cwd: string = await copyFixture(`test/fixtures/web/isolated-scripts`); - const staticFileDirectories: string[] = ['{cwd}/public']; - const app: string = 'app'; - - // Arrange : stdout - const stdout = createInkWriteStream(); - - // Act - const { close, outDir } = await watch({ - cwd, - staticFileDirectories, - app, - isolatedScripts: { - isolate: 'isolate.ts', - }, - }); - - // Assert - await expect(glob(`${outDir}/manifest.json`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/favicon.ico`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/index.js`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/index.html`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/isolate.js`)).resolves.toHaveLength(1); - - // Exit - await close(); - - console.log(stdout.lastFrame()); - }); - - test('should copy static files with multiple static file directories', async () => { - // Arrange : project directories - const cwd: string = await copyFixture( - `test/fixtures/web/static-file-directories`, - ); - const staticFileDirectories: string[] = ['{cwd}/public', '{cwd}/static']; - const app: string = 'app'; - - // Arrange : stdout - const stdout = createInkWriteStream(); - - // Act - const { close, outDir } = await watch({ - cwd, - staticFileDirectories, - app, - }); - - // Assert - await expect(glob(`${outDir}/manifest.json`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/favicon.ico`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/index.js`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/index.html`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/hello.json`)).resolves.toHaveLength(1); - - // Exit - await close(); - - console.log(stdout.lastFrame()); - }); -}); diff --git a/packages/src/@rocket-scripts/web/build.ts b/packages/src/@rocket-scripts/web/build.ts deleted file mode 100644 index 4f5d08de..00000000 --- a/packages/src/@rocket-scripts/web/build.ts +++ /dev/null @@ -1,286 +0,0 @@ -import webpackReactConfig from '@rocket-scripts/react-preset/webpackConfig'; -import { ESBuildLoaderOptions } from '@rocket-scripts/react-preset/webpackLoaders/getWebpackScriptLoaders'; -import { getWebpackAlias, icuFormat } from '@rocket-scripts/utils'; -import { exec } from 'child_process'; -import { ESBuildMinifyPlugin } from 'esbuild-loader'; -import fs from 'fs-extra'; -import HtmlWebpackPlugin from 'html-webpack-plugin'; -import MiniCssExtractPlugin from 'mini-css-extract-plugin'; -import os from 'os'; -import path from 'path'; -import InterpolateHtmlPlugin from 'react-dev-utils/InterpolateHtmlPlugin'; -import webpack, { - Configuration as WebpackConfiguration, - DefinePlugin, - MultiCompiler, - WebpackPluginInstance, -} from 'webpack'; -import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer'; -import { merge as webpackMerge } from 'webpack-merge'; -import { BuildParams } from './params'; -import { filterReactEnv } from './utils/filterReactEnv'; -import { getAppEntry } from './utils/getAppEntry'; -import { getTsConfigIncludes } from './utils/getTsConfigIncludes'; - -export async function build({ - cwd = process.cwd(), - app, - staticFileDirectories: _staticFileDirectories = ['{cwd}/public'], - outDir: _outDir = '{cwd}/out/{app}', - - isolatedScripts, - - openBundleSizeReport = false, - - tsconfig: _tsconfig = '{cwd}/tsconfig.json', - - webpackConfig: _webpackConfig, - esbuildLoaderOptions: _esbuildLoaderOptions, - - devtool = 'source-map', -}: BuildParams) { - if (!process.env.NODE_ENV) { - process.env.NODE_ENV = 'production'; - } - - const outDir: string = icuFormat(_outDir, { cwd, app }); - const staticFileDirectories: string[] = _staticFileDirectories.map((dir) => - icuFormat(dir, { cwd, app }), - ); - const appDir: string = path.join(cwd, 'src', app); - const tsconfig: string = icuFormat(_tsconfig, { cwd, app }); - const alias = getWebpackAlias(cwd); - const entry = getAppEntry({ appDir }); - const publicPath: string = ''; - const chunkPath: string = ''; - - const userWebpackConfig: WebpackConfiguration | {} = - typeof _webpackConfig === 'string' - ? require(icuFormat(_webpackConfig, { cwd, app })) - : _webpackConfig ?? {}; - - const webpackEnv: NodeJS.ProcessEnv = { - ...filterReactEnv(process.env), - PUBLIC_PATH: publicPath, - PUBLIC_URL: publicPath, - NODE_ENV: process.env.NODE_ENV, - }; - - const esbuildLoaderOptions: ESBuildLoaderOptions = { - target: 'es2016', - loader: 'tsx', - tsconfigRaw: {}, - ..._esbuildLoaderOptions, - }; - - const tsConfigIncludes: string[] = getTsConfigIncludes({ - cwd, - entry, - app, - isolatedScripts, - }); - - const baseWebpackConfig: WebpackConfiguration = webpackMerge([ - userWebpackConfig, - webpackReactConfig({ - chunkPath, - publicPath, - cwd, - tsconfig, - esbuildLoaderOptions, - extractCss: true, - tsConfigIncludes, - }), - { - mode: 'production', - devtool, - - resolve: { - symlinks: false, - alias, - }, - - plugins: [ - new DefinePlugin({ - 'process.env': Object.keys(webpackEnv).reduce( - (stringifiedEnv, key) => { - stringifiedEnv[key] = JSON.stringify(webpackEnv[key]); - return stringifiedEnv; - }, - {} as Record, - ), - }), - ], - }, - ]); - - const appWebpackConfig: WebpackConfiguration = webpackMerge([ - baseWebpackConfig, - { - output: { - path: outDir, - publicPath, - filename: `${chunkPath}[name].[fullhash].js`, - chunkFilename: `${chunkPath}[name].[fullhash].js`, - pathinfo: false, - }, - - entry: entry.reduce((e, { name, index }) => { - e[name] = path.join(cwd, 'src', app, index); - return e; - }, {} as Record), - - optimization: { - concatenateModules: true, - minimize: true, - minimizer: [ - new ESBuildMinifyPlugin({ - target: esbuildLoaderOptions.target, - minify: true, - css: true, - }), - ], - - splitChunks: { - cacheGroups: { - // vendor chunk - vendor: { - test: /[\\/]node_modules[\\/]/, - name: 'vendor', - chunks: 'all', - }, - - // extract single css file - style: { - test: (m: object) => m.constructor.name === 'CssModule', - name: 'style', - chunks: 'all', - enforce: true, - }, - }, - }, - }, - - plugins: [ - // create css files - (new MiniCssExtractPlugin({ - filename: `${chunkPath}[name].[fullhash].css`, - chunkFilename: `${chunkPath}[name].[fullhash].css`, - }) as unknown) as WebpackPluginInstance, - - // create size report - new BundleAnalyzerPlugin({ - analyzerMode: 'static', - reportFilename: path.join(outDir, 'size-report.html'), - openAnalyzer: false, - }), - - //create html files - ...entry.map( - ({ html, name }) => - (new HtmlWebpackPlugin({ - template: path.join(cwd, 'src', app, html), - filename: html, - chunks: [name], - }) as unknown) as WebpackPluginInstance, - ), - - new InterpolateHtmlPlugin( - //eslint-disable-next-line @typescript-eslint/no-explicit-any - HtmlWebpackPlugin as any, - webpackEnv as Record, - ) as WebpackPluginInstance, - ], - }, - ]); - - const webpackConfigs: WebpackConfiguration[] = [appWebpackConfig]; - - if (isolatedScripts) { - const files = Object.keys(isolatedScripts); - - for (const file of files) { - webpackConfigs.push( - webpackMerge(baseWebpackConfig, { - output: { - path: outDir, - publicPath, - filename: `${chunkPath}[name].js`, - chunkFilename: `${chunkPath}[name].js`, - pathinfo: false, - }, - - entry: { - [file]: path.join(cwd, 'src', app, isolatedScripts[file]), - }, - - optimization: { - concatenateModules: true, - minimize: true, - minimizer: [ - new ESBuildMinifyPlugin({ - target: esbuildLoaderOptions.target, - minify: true, - }), - ], - - splitChunks: { - cacheGroups: { - // extract single css file - style: { - test: (m: object) => m.constructor.name === 'CssModule', - name: `${file}.style`, - chunks: 'all', - enforce: true, - }, - }, - }, - }, - }), - ); - } - } - - await fs.mkdirp(outDir); - await Promise.all( - staticFileDirectories.map((dir) => - fs.copy(dir, outDir, { dereference: true }), - ), - ); - - const compiler: MultiCompiler = webpack(webpackConfigs); - // FIXME webpack-bundle-analyzer related monkey patch https://github.com/webpack-contrib/webpack-bundle-analyzer/pull/384 - compiler.compilers.forEach( - (childCompiler) => (childCompiler.outputFileSystem.constructor = () => {}), - ); - - await new Promise((resolve, reject) => { - compiler.run((error?: Error, stats?) => { - if (error) { - reject(error); - } else if (stats) { - console.log( - stats.toString( - typeof webpackConfigs[0].stats === 'object' - ? { - colors: true, - } - : webpackConfigs[0].stats ?? { colors: true }, - ), - ); - - if (openBundleSizeReport) { - if (os.platform() === 'win32') { - exec(`start ${path.join(outDir, 'size-report.html')}`); - } else { - exec(`open ${path.join(outDir, 'size-report.html')}`); - } - } - - resolve(); - } else { - throw new Error(`No error and stats`); - } - }); - }); -} diff --git a/packages/src/@rocket-scripts/web/index.ts b/packages/src/@rocket-scripts/web/index.ts deleted file mode 100644 index d95d3029..00000000 --- a/packages/src/@rocket-scripts/web/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from './params'; -export * from './start'; -export * from './build'; -export * from './watch'; diff --git a/packages/src/@rocket-scripts/web/jest-preset.ts b/packages/src/@rocket-scripts/web/jest-preset.ts deleted file mode 100644 index d7cf9d82..00000000 --- a/packages/src/@rocket-scripts/web/jest-preset.ts +++ /dev/null @@ -1,2 +0,0 @@ -import jestPreset from '@rocket-scripts/react-preset/jestPreset'; -export = jestPreset; diff --git a/packages/src/@rocket-scripts/web/params.ts b/packages/src/@rocket-scripts/web/params.ts deleted file mode 100644 index e8c4f803..00000000 --- a/packages/src/@rocket-scripts/web/params.ts +++ /dev/null @@ -1,313 +0,0 @@ -import { ESBuildLoaderOptions } from '@rocket-scripts/react-preset/webpackLoaders/getWebpackScriptLoaders'; -import { ReactNode } from 'react'; -import { Configuration as WebpackConfiguration } from 'webpack'; -import { Configuration as WebpackDevServerConfiguration } from 'webpack-dev-server'; - -export interface CommonParams { - /** - * if you run from outside of project root. - * - * you have to set this value to your project root. - * - * @example { cwd: path.join(__dirname, 'my-project) } - * - * @default process.cwd() - */ - cwd?: string; - - /** - * app directory you want to run - * - * e.g. `app: 'app'` mean run `/src/app` directory - * - * warn. do not set over 2-depth directory path (e.g. `app: 'group/app'`) - * it just support top level directory only. - * - * @example { app: 'app' } - */ - app: string; - - /** - * add script builds that is out of main app context - * - * e.g. when you configure like `{ script: 'script.ts' }` - * - * it will create `script.js` - * - * and, the `script.js` is did not split by webpack split chunks - * - * @example { script: 'script.ts' } - */ - isolatedScripts?: Record; - - /** - * set static file directories. - * - * you can set with this when you want to use the other static file directories instead of `{project}/public`. - * - * tip. you can use `{cwd}` and `{app}`. they are same values that you are input. - * - * @example { staticFileDirectories: ['{cwd}/static', '{cwd}/public'] } - * - * @default ['{cwd}/public'] - */ - staticFileDirectories?: string[]; - - /** - * @deprecated do not use this env option. use instead `process.env.VAR = 'value'` before run. - * - * @example - * - * // remove this like code - * start({ - * env: { REACT_APP_HELLO: 'value' } - * }) - * - * // use instead of this - * process.env.REACT_APP_HELLO = 'value' - * - * start({}) - */ - env?: NodeJS.ProcessEnv; - - /** - * ⚠️ tsconfig path. (it will pass to fork-ts-checker-webpack-plugin) - * - * @example { tsconfig: '{cwd}/tsconfig.dev.json' } - * - * @default {cwd}/tsconfig.json - */ - tsconfig?: string; - - /** - * ⚠️ custom webpack configuration - * - * but, this value will be used with the lowest priority. - * - * this value useful to set the miscellaneous options like the "externals". - * - * @example { webpackConfig: '{cwd}/webpack.config.js' } - * - * @example { webpackConfig: { externals : { ... } } } - */ - webpackConfig?: - | string - | Omit< - WebpackConfiguration, - // @rocket-scripts/react-preset - | 'module' - | 'plugin' - | 'resolveLoader' - | 'node' - // @rocket-scripts/web - | 'mode' - | 'devtool' - | 'output' - | 'entry' - | 'performance' - | 'optimization' - >; - - /** - * ⚠️ custom esbuild configuration - * - * @example { target: 'esnext' } - * - * @default { target: 'es2016', loader: 'tsx', tsconfigRaw: {} } - */ - esbuildLoaderOptions?: ESBuildLoaderOptions; -} - -export interface StartParams extends CommonParams { - /** - * dev server port. (it will pass to port option of webpack-dev-server) - * - * if you unset this value the server will run with a random port. - * - * @example { port: 9044 } - * - * @default random - */ - port?: 'random' | number; - - /** - * dev server hostname. (it will pass to hostname option of webpack-dev-server) - * - * if you want to access from outside, set this value to '0.0.0.0' - * - * @example { hostname: '127.0.0.1' } - * - * @default localhost - */ - hostname?: string; - - /** - * ⚠️ custom webpack-dev-server configuration - * - * but, this value will be used with the lowest priority. - * - * also, `staticFileDirectories` options will be override this. - * - * so just use to set the miscellaneous options. - * - * @example { webpackDevServerConfig: '{cwd}/devServer.js' } - * - * @example { webpackDevServerConfig: { https: true } } - */ - webpackDevServerConfig?: - | string - | Omit< - WebpackDevServerConfiguration, - 'host' | 'port' | 'hot' | 'compress' | 'contentBase' | 'stats' - >; - - /** - * logfile path. - * - * @example { logfile: '{cwd}/log.txt' } - * - * @default (if this value is undefined it will be new temporary file) - */ - logfile?: string; - - /** - * ⚠️ ink stdout - * - * @default process.stdout - */ - stdout?: NodeJS.WriteStream; - - /** - * ⚠️ ink stdin - * - * @default process.stdin - */ - stdin?: NodeJS.ReadStream; - - /** - * ⚠️ attach ui elements - * - * This elements will attach the end of UI - * - * @example - * { - * children: ( - * <> - * - * - * - * ) - * } - */ - children?: ReactNode; -} - -export interface BuildParams extends CommonParams { - /** - * output directory. - * - * @example { outDir: '{cwd}/dist/{app}' } - * - * @default {cwd}/out/{app} - */ - outDir?: string; - - /** - * this value will pass to `devtool` option of webpackConfig. - * - * @example { devtool: false } - * - * @see https://webpack.js.org/configuration/devtool/#devtool - * - * @default source-map - */ - devtool?: - | false - | 'eval' - | 'eval-cheap-source-map' - | 'eval-cheap-module-source-map' - | 'eval-source-map' - | 'eval-nosources-source-map' - | 'eval-nosources-cheap-source-map' - | 'eval-nosources-cheap-module-source-map' - | 'cheap-source-map' - | 'cheap-module-source-map' - | 'inline-cheap-source-map' - | 'inline-cheap-module-source-map' - | 'inline-source-map' - | 'inline-nosources-source-map' - | 'inline-nosources-cheap-source-map' - | 'inline-nosources-cheap-module-source-map' - | 'source-map' - | 'hidden-source-map' - | 'hidden-nosources-source-map' - | 'hidden-nosources-cheap-source-map' - | 'hidden-nosources-cheap-module-source-map' - | 'hidden-cheap-source-map' - | 'hidden-cheap-module-source-map' - | 'nosources-source-map' - | 'nosources-cheap-source-map' - | 'nosources-cheap-module-source-map'; - - /** - * if you want to open bundle size report on your web browser after build set `true` this option. - * - * this option is just opening `{outDir}/size-report.html` file. - * - * `{outDir}/size-report.html` file always be made. - * - * @default false - */ - openBundleSizeReport?: boolean; -} - -export interface WatchParams extends CommonParams { - /** - * output directory. - * - * @example { outDir: '{cwd}/dev/{app}' } - * - * @default {cwd}/dev/{app} - */ - outDir?: string; - - /** - * logfile path. - * - * @example { logfile: '{cwd}/log.txt' } - * - * @default (if this value is undefined it will be new temporary file) - */ - logfile?: string; - - /** - * ⚠️ ink stdout - * - * @default process.stdout - */ - stdout?: NodeJS.WriteStream; - - /** - * ⚠️ ink stdin - * - * @default process.stdin - */ - stdin?: NodeJS.ReadStream; - - /** - * ⚠️ attach ui elements - * - * This elements will attach the end of UI - * - * @example - * { - * children: ( - * <> - * - * - * - * ) - * } - */ - children?: ReactNode; -} diff --git a/packages/src/@rocket-scripts/web/start.tsx b/packages/src/@rocket-scripts/web/start.tsx deleted file mode 100644 index 6c08e781..00000000 --- a/packages/src/@rocket-scripts/web/start.tsx +++ /dev/null @@ -1,255 +0,0 @@ -import webpackReactConfig from '@rocket-scripts/react-preset/webpackConfig'; -import { ESBuildLoaderOptions } from '@rocket-scripts/react-preset/webpackLoaders/getWebpackScriptLoaders'; -import { getWebpackAlias, icuFormat, rocketTitle } from '@rocket-scripts/utils'; -import { devServerStart, DevServerStartParams } from '@ssen/webpack-dev-server'; -import HtmlWebpackPlugin from 'html-webpack-plugin'; -import path from 'path'; -import { getPortPromise } from 'portfinder'; -import InterpolateHtmlPlugin from 'react-dev-utils/InterpolateHtmlPlugin'; -import { combineLatest, Observable } from 'rxjs'; -import { map } from 'rxjs/operators'; -import tmp from 'tmp'; -import { - Configuration as WebpackConfiguration, - DefinePlugin, - HotModuleReplacementPlugin, - WebpackPluginInstance, -} from 'webpack'; -import { Configuration as WebpackDevServerConfiguration } from 'webpack-dev-server'; -import { merge as webpackMerge } from 'webpack-merge'; -import { StartParams } from './params'; -import { filterReactEnv } from './utils/filterReactEnv'; -import { getAppEntry } from './utils/getAppEntry'; -import { getTsConfigIncludes } from './utils/getTsConfigIncludes'; -import { observeAliasChange } from './utils/observeAliasChange'; -import { observeAppEntryChange } from './utils/observeAppEntryChange'; - -export type Start = DevServerStartParams & { - close: () => Promise; -}; - -export async function start({ - cwd = process.cwd(), - app, - staticFileDirectories: _staticFileDirectories = ['{cwd}/public'], - - isolatedScripts, - - tsconfig: _tsconfig = '{cwd}/tsconfig.json', - - port: _port = 'random', - hostname = 'localhost', - - webpackConfig: _webpackConfig, - webpackDevServerConfig: _webpackDevServerConfig, - esbuildLoaderOptions: _esbuildLoaderOptions, - - logfile: _logfile = tmp.fileSync({ mode: 0o644, postfix: '.log' }).name, - stdout = process.stdout, - stdin = process.stdin, - children, -}: StartParams): Promise { - if (!process.env.NODE_ENV) { - process.env.NODE_ENV = 'development'; - } - - console.log('Start Server...'); - - const port: number = - typeof _port === 'number' ? _port : await getPortPromise(); - const staticFileDirectories: string[] = _staticFileDirectories.map((dir) => - icuFormat(dir, { cwd, app }), - ); - const appDir: string = path.join(cwd, 'src', app); - const logfile: string = icuFormat(_logfile, { cwd, app }); - const tsconfig: string = icuFormat(_tsconfig, { cwd, app }); - const alias = getWebpackAlias(cwd); - const entry = getAppEntry({ appDir }); - const publicPath: string = ''; - const chunkPath: string = ''; - - const userWebpackConfig: WebpackConfiguration | {} = - typeof _webpackConfig === 'string' - ? require(icuFormat(_webpackConfig, { cwd, app })) - : _webpackConfig ?? {}; - - const userWebpackDevServerConfig: WebpackDevServerConfiguration | {} = - typeof _webpackDevServerConfig === 'string' - ? require(icuFormat(_webpackDevServerConfig, { cwd, app })) - : _webpackDevServerConfig ?? {}; - - const webpackEnv: NodeJS.ProcessEnv = { - ...filterReactEnv(process.env), - PUBLIC_PATH: publicPath, - PUBLIC_URL: publicPath, - NODE_ENV: process.env.NODE_ENV, - }; - - const esbuildLoaderOptions: ESBuildLoaderOptions = { - target: 'es2016', - loader: 'tsx', - tsconfigRaw: {}, - ..._esbuildLoaderOptions, - }; - - const tsConfigIncludes: string[] = getTsConfigIncludes({ - cwd, - entry, - app, - isolatedScripts, - }); - - const baseWebpackConfig: WebpackConfiguration = webpackMerge( - userWebpackConfig, - webpackReactConfig({ - chunkPath, - publicPath, - cwd, - tsconfig, - esbuildLoaderOptions, - extractCss: false, - tsConfigIncludes, - }), - { - mode: 'development', - devtool: 'eval-cheap-module-source-map', - - resolve: { - symlinks: false, - alias, - }, - - plugins: [ - new HotModuleReplacementPlugin(), - - new DefinePlugin({ - 'process.env': Object.keys(webpackEnv).reduce( - (stringifiedEnv, key) => { - stringifiedEnv[key] = JSON.stringify(webpackEnv[key]); - return stringifiedEnv; - }, - {} as Record, - ), - }) as WebpackPluginInstance, - ], - - performance: { - hints: false, - }, - - optimization: { - removeAvailableModules: false, - removeEmptyChunks: false, - splitChunks: false, - - moduleIds: 'named', - emitOnErrors: false, - }, - }, - ); - - const appWebpackConfig: WebpackConfiguration = webpackMerge( - baseWebpackConfig, - { - output: { - path: cwd, - publicPath, - filename: `${chunkPath}[name].js`, - chunkFilename: `${chunkPath}[name].js`, - pathinfo: false, - }, - - entry: entry.reduce((e, { name, index }) => { - e[name] = path.join(cwd, 'src', app, index); - return e; - }, {} as Record), - - plugins: [ - //create html files - ...entry.map( - ({ html, name }) => - new HtmlWebpackPlugin({ - template: path.join(cwd, 'src', app, html), - filename: html, - chunks: [name], - }), - ), - - new InterpolateHtmlPlugin( - //eslint-disable-next-line @typescript-eslint/no-explicit-any - HtmlWebpackPlugin as any, - webpackEnv as Record, - ) as WebpackPluginInstance, - ], - }, - ); - - const webpackConfigs: WebpackConfiguration[] = [appWebpackConfig]; - - if (isolatedScripts) { - const files = Object.keys(isolatedScripts); - - for (const file of files) { - webpackConfigs.push( - webpackMerge(baseWebpackConfig, { - output: { - path: cwd, - publicPath, - filename: `${chunkPath}[name].js`, - chunkFilename: `${chunkPath}[name].js`, - pathinfo: false, - }, - - entry: { - [file]: path.join(cwd, 'src', app, isolatedScripts[file]), - }, - }), - ); - } - } - - const devServerConfig: WebpackDevServerConfiguration = { - ...userWebpackDevServerConfig, - hot: true, - compress: true, - //@ts-ignore TODO update typescript declaration webpack-dev-server 4.x - static: staticFileDirectories, - historyApiFallback: true, - }; - - const restartAlarm: Observable = combineLatest([ - observeAppEntryChange({ appDir, current: entry }), - observeAliasChange({ cwd, current: alias }), - ]).pipe( - map<(string | null)[], string[]>((changes) => - changes.filter((change): change is string => !!change), - ), - ); - - let version: string = ''; - - try { - version = '\n ' + require('@rocket-scripts/web/package.json').version; - } catch {} - - const startParams: DevServerStartParams = { - header: rocketTitle + version, - hostname, - webpackConfigs, - devServerConfig, - port, - cwd, - logfile, - stdout, - stdin, - restartAlarm, - children, - }; - - const close = await devServerStart(startParams); - - return { - ...startParams, - close, - }; -} diff --git a/packages/src/@rocket-scripts/web/storybook.ts b/packages/src/@rocket-scripts/web/storybook.ts deleted file mode 100644 index 25e53f4c..00000000 --- a/packages/src/@rocket-scripts/web/storybook.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { Configuration } from 'webpack'; -import { getWebpackAlias } from '@rocket-scripts/utils'; -import { merge } from 'webpack-merge'; - -export interface WebpackFinalParams { - cwd?: string; -} - -export const webpackFinal = ({ - cwd = process.cwd(), -}: WebpackFinalParams) => async ( - config: Configuration, -): Promise => { - const alias = getWebpackAlias(cwd); - - return merge(config, { - resolve: { - alias, - }, - }); -}; diff --git a/packages/src/@rocket-scripts/web/tsconfig.base.json b/packages/src/@rocket-scripts/web/tsconfig.base.json deleted file mode 100644 index fc0699f6..00000000 --- a/packages/src/@rocket-scripts/web/tsconfig.base.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "compilerOptions": { - // language - "jsx": "react", - "allowJs": true, - "downlevelIteration": true, - "resolveJsonModule": true, - "allowSyntheticDefaultImports": true, - "esModuleInterop": true, - // strict - "strict": true, - "alwaysStrict": true, - "strictNullChecks": true, - "strictBindCallApply": true, - "strictFunctionTypes": true, - "strictPropertyInitialization": true, - // module - "module": "ESNext", - "target": "ES2016", - "moduleResolution": "node", - // lib - "skipLibCheck": true, - "lib": [ - "DOM", - "DOM.Iterable", - "ESNext", - "WebWorker" - ] - } -} \ No newline at end of file diff --git a/packages/src/@rocket-scripts/web/typings.d.ts b/packages/src/@rocket-scripts/web/typings.d.ts deleted file mode 100644 index c88699e9..00000000 --- a/packages/src/@rocket-scripts/web/typings.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/packages/src/@rocket-scripts/web/utils/filterReactEnv.ts b/packages/src/@rocket-scripts/web/utils/filterReactEnv.ts deleted file mode 100644 index 938a95ae..00000000 --- a/packages/src/@rocket-scripts/web/utils/filterReactEnv.ts +++ /dev/null @@ -1,8 +0,0 @@ -export function filterReactEnv(env: NodeJS.ProcessEnv): NodeJS.ProcessEnv { - return Object.keys(env) - .filter((key) => /^REACT_APP_/i.test(key) || /^APP_/i.test(key)) - .reduce((e, key) => { - e[key] = env[key]; - return e; - }, {} as NodeJS.ProcessEnv); -} diff --git a/packages/src/@rocket-scripts/web/utils/getAppEntry.ts b/packages/src/@rocket-scripts/web/utils/getAppEntry.ts deleted file mode 100644 index e5e1d3f9..00000000 --- a/packages/src/@rocket-scripts/web/utils/getAppEntry.ts +++ /dev/null @@ -1,33 +0,0 @@ -import fs from 'fs-extra'; -import path from 'path'; - -interface Params { - appDir: string; -} - -export interface AppEntry { - name: string; - html: string; - index: string; -} - -export function getAppEntry({ appDir }: Params): AppEntry[] { - const list: string[] = fs.readdirSync(appDir); - const set: Set = new Set(list); - - return list - .map((html) => { - if (path.extname(html) === '.html') { - const name: string = path.basename(html, '.html'); - - for (const extname of ['.ts', '.tsx', '.js', '.jsx']) { - if (set.has(name + extname)) { - return { name, html, index: name + extname }; - } - } - } - return null; - }) - .filter((entry): entry is AppEntry => !!entry) - .sort((a, b) => (a.name > b.name ? -1 : 1)); -} diff --git a/packages/src/@rocket-scripts/web/utils/getTsConfigIncludes.ts b/packages/src/@rocket-scripts/web/utils/getTsConfigIncludes.ts deleted file mode 100644 index 8aa49526..00000000 --- a/packages/src/@rocket-scripts/web/utils/getTsConfigIncludes.ts +++ /dev/null @@ -1,31 +0,0 @@ -import path from 'path'; -import { AppEntry } from './getAppEntry'; - -interface Params { - cwd: string; - app: string; - entry: AppEntry[]; - isolatedScripts?: Record; -} - -export function getTsConfigIncludes({ - cwd, - app, - entry, - isolatedScripts, -}: Params) { - const tsConfigIncludes: string[] = [ - ...entry.map(({ index }) => path.join(cwd, 'src', app, index)), - path.join(cwd, 'src/**/*.d.ts'), - ]; - - if (isolatedScripts) { - tsConfigIncludes.push( - ...Object.keys(isolatedScripts).map((file) => - path.join(cwd, 'src', app, isolatedScripts[file]), - ), - ); - } - - return tsConfigIncludes; -} diff --git a/packages/src/@rocket-scripts/web/utils/observeAliasChange.ts b/packages/src/@rocket-scripts/web/utils/observeAliasChange.ts deleted file mode 100644 index eaf17019..00000000 --- a/packages/src/@rocket-scripts/web/utils/observeAliasChange.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { getWebpackAlias } from '@rocket-scripts/utils'; -import { Observable } from 'rxjs'; -import { clearInterval, setInterval } from 'timers'; - -interface Params { - cwd: string; - current: Record; - interval?: number; -} - -export function observeAliasChange({ - cwd, - current, - interval = 10000, -}: Params): Observable { - return new Observable((subscriber) => { - let intervalId: NodeJS.Timeout | null = null; - - const currentString: string = Object.keys(current).sort().join(', '); - - function update() { - const next: Record = getWebpackAlias(cwd); - const nextString: string = Object.keys(next).sort().join(', '); - - if (currentString !== nextString) { - subscriber.next(`alias changed : ${currentString} > ${nextString}`); - } else { - subscriber.next(null); - } - } - - intervalId = setInterval(update, interval); - - return () => { - if (intervalId) { - clearInterval(intervalId); - intervalId = null; - } - }; - }); -} diff --git a/packages/src/@rocket-scripts/web/utils/observeAppEntryChange.ts b/packages/src/@rocket-scripts/web/utils/observeAppEntryChange.ts deleted file mode 100644 index cc93456b..00000000 --- a/packages/src/@rocket-scripts/web/utils/observeAppEntryChange.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { watch } from 'chokidar'; -import { FSWatcher } from 'fs'; -import { Observable } from 'rxjs'; -import { AppEntry, getAppEntry } from './getAppEntry'; - -interface Params { - current: AppEntry[]; - appDir: string; -} - -export function observeAppEntryChange({ - appDir, - current, -}: Params): Observable { - return new Observable((subscriber) => { - function update() { - const next: AppEntry[] = getAppEntry({ appDir }); - - if ( - current.length !== next.length || - current.map(({ name }) => name).join('') !== - next.map(({ name }) => name).join('') - ) { - const message: string[] = [ - `entry changed : `, - current.map(({ name }) => name).join(', '), - ` > `, - next.map(({ name }) => name).join(', '), - ]; - subscriber.next(message.join('')); - } else { - subscriber.next(null); - } - } - - const watcher: FSWatcher = watch([ - `${appDir}/*.{js,jsx,ts,tsx}`, - `${appDir}/*.html`, - ]) - .on('add', update) - .on('unlink', update); - - return () => { - watcher.close(); - }; - }); -} diff --git a/packages/src/@rocket-scripts/web/watch.tsx b/packages/src/@rocket-scripts/web/watch.tsx deleted file mode 100644 index 1976080e..00000000 --- a/packages/src/@rocket-scripts/web/watch.tsx +++ /dev/null @@ -1,234 +0,0 @@ -import webpackReactConfig from '@rocket-scripts/react-preset/webpackConfig'; -import { ESBuildLoaderOptions } from '@rocket-scripts/react-preset/webpackLoaders/getWebpackScriptLoaders'; -import { getWebpackAlias, icuFormat, rocketTitle } from '@rocket-scripts/utils'; -import { - devServerStart, - DevServerStartParams, -} from '@ssen/webpack-watch-server'; -import HtmlWebpackPlugin from 'html-webpack-plugin'; -import path from 'path'; -import InterpolateHtmlPlugin from 'react-dev-utils/InterpolateHtmlPlugin'; -import { combineLatest, Observable } from 'rxjs'; -import { map } from 'rxjs/operators'; -import tmp from 'tmp'; -import { - Configuration as WebpackConfiguration, - DefinePlugin, - WebpackPluginInstance, -} from 'webpack'; -import { merge as webpackMerge } from 'webpack-merge'; -import { WatchParams } from './params'; -import { filterReactEnv } from './utils/filterReactEnv'; -import { getAppEntry } from './utils/getAppEntry'; -import { getTsConfigIncludes } from './utils/getTsConfigIncludes'; -import { observeAliasChange } from './utils/observeAliasChange'; -import { observeAppEntryChange } from './utils/observeAppEntryChange'; - -export type Watch = DevServerStartParams & { - close: () => Promise; -}; - -export async function watch({ - cwd = process.cwd(), - app, - staticFileDirectories: _staticFileDirectories = ['{cwd}/public'], - outDir: _outDir = '{cwd}/dev/{app}', - - isolatedScripts, - - tsconfig: _tsconfig = '{cwd}/tsconfig.json', - - webpackConfig: _webpackConfig, - esbuildLoaderOptions: _esbuildLoaderOptions, - - logfile: _logfile = tmp.fileSync({ mode: 0o644, postfix: '.log' }).name, - stdout = process.stdout, - stdin = process.stdin, - children, -}: WatchParams): Promise { - if (!process.env.NODE_ENV) { - process.env.NODE_ENV = 'development'; - } - - console.log('Start Server...'); - - const staticFileDirectories: string[] = _staticFileDirectories.map((dir) => - icuFormat(dir, { cwd, app }), - ); - const outDir: string = icuFormat(_outDir, { cwd, app }); - const appDir: string = path.join(cwd, 'src', app); - const logfile: string = icuFormat(_logfile, { cwd, app }); - const tsconfig: string = icuFormat(_tsconfig, { cwd, app }); - const alias = getWebpackAlias(cwd); - const entry = getAppEntry({ appDir }); - const publicPath: string = ''; - const chunkPath: string = ''; - - const userWebpackConfig: WebpackConfiguration | {} = - typeof _webpackConfig === 'string' - ? require(icuFormat(_webpackConfig, { cwd, app })) - : _webpackConfig ?? {}; - - const webpackEnv: NodeJS.ProcessEnv = { - ...filterReactEnv(process.env), - PUBLIC_PATH: publicPath, - PUBLIC_URL: publicPath, - NODE_ENV: process.env.NODE_ENV, - }; - - const esbuildLoaderOptions: ESBuildLoaderOptions = { - target: 'es2016', - loader: 'tsx', - tsconfigRaw: {}, - ..._esbuildLoaderOptions, - }; - - const tsConfigIncludes: string[] = getTsConfigIncludes({ - cwd, - entry, - app, - isolatedScripts, - }); - - const baseWebpackConfig: WebpackConfiguration = webpackMerge( - userWebpackConfig, - webpackReactConfig({ - chunkPath, - publicPath, - cwd, - tsconfig, - esbuildLoaderOptions, - extractCss: false, - tsConfigIncludes, - }), - { - mode: 'development', - devtool: 'source-map', - - resolve: { - symlinks: false, - alias, - }, - - plugins: [ - new DefinePlugin({ - 'process.env': Object.keys(webpackEnv).reduce( - (stringifiedEnv, key) => { - stringifiedEnv[key] = JSON.stringify(webpackEnv[key]); - return stringifiedEnv; - }, - {} as Record, - ), - }) as WebpackPluginInstance, - ], - - performance: { - hints: false, - }, - - optimization: { - removeAvailableModules: false, - removeEmptyChunks: false, - splitChunks: false, - - moduleIds: 'named', - emitOnErrors: false, - }, - }, - ); - - const appWebpackConfig: WebpackConfiguration = webpackMerge( - baseWebpackConfig, - { - output: { - path: outDir, - publicPath, - filename: `${chunkPath}[name].js`, - chunkFilename: `${chunkPath}[name].js`, - pathinfo: false, - }, - - entry: entry.reduce((e, { name, index }) => { - e[name] = path.join(cwd, 'src', app, index); - return e; - }, {} as Record), - - plugins: [ - //create html files - ...entry.map( - ({ html, name }) => - new HtmlWebpackPlugin({ - template: path.join(cwd, 'src', app, html), - filename: html, - chunks: [name], - }), - ), - - new InterpolateHtmlPlugin( - //eslint-disable-next-line @typescript-eslint/no-explicit-any - HtmlWebpackPlugin as any, - webpackEnv as Record, - ) as WebpackPluginInstance, - ], - }, - ); - - const webpackConfigs: WebpackConfiguration[] = [appWebpackConfig]; - - if (isolatedScripts) { - const files = Object.keys(isolatedScripts); - - for (const file of files) { - webpackConfigs.push( - webpackMerge(baseWebpackConfig, { - output: { - path: outDir, - publicPath, - filename: `${chunkPath}[name].js`, - chunkFilename: `${chunkPath}[name].js`, - pathinfo: false, - }, - - entry: { - [file]: path.join(cwd, 'src', app, isolatedScripts[file]), - }, - }), - ); - } - } - - const restartAlarm: Observable = combineLatest([ - observeAppEntryChange({ appDir, current: entry }), - observeAliasChange({ cwd, current: alias }), - ]).pipe( - map<(string | null)[], string[]>((changes) => - changes.filter((change): change is string => !!change), - ), - ); - - let version: string = ''; - - try { - version = '\n ' + require('@rocket-scripts/web/package.json').version; - } catch {} - - const startParams: DevServerStartParams = { - header: rocketTitle + version, - webpackConfigs, - staticFileDirectories, - cwd, - logfile, - stdout, - stdin, - outDir, - restartAlarm, - children, - }; - - const close = await devServerStart(startParams); - - return { - ...startParams, - close, - }; -} diff --git a/packages/src/@rocket-scripts/webpack-fns/configs.ts b/packages/src/@rocket-scripts/webpack-fns/configs.ts new file mode 100644 index 00000000..bc2a22e1 --- /dev/null +++ b/packages/src/@rocket-scripts/webpack-fns/configs.ts @@ -0,0 +1,44 @@ +import { Configuration, HotModuleReplacementPlugin } from 'webpack'; + +export const WATCH_DEV_CONFIG: Configuration = { + mode: 'development', + devtool: 'source-map', + + performance: { + hints: false, + }, + + optimization: { + removeAvailableModules: false, + removeEmptyChunks: false, + splitChunks: false, + + moduleIds: 'named', + emitOnErrors: false, + }, +}; + +export const BUILD_CONFIG: Configuration = { + mode: 'production', + devtool: 'source-map', +}; + +export const SERVER_DEV_CONFIG: Configuration = { + mode: 'development', + devtool: 'eval-cheap-module-source-map', + + plugins: [new HotModuleReplacementPlugin()], + + performance: { + hints: false, + }, + + optimization: { + removeAvailableModules: false, + removeEmptyChunks: false, + splitChunks: false, + + moduleIds: 'named', + emitOnErrors: false, + }, +}; diff --git a/packages/src/@rocket-scripts/webpack-fns/createEntry.ts b/packages/src/@rocket-scripts/webpack-fns/createEntry.ts new file mode 100644 index 00000000..07558770 --- /dev/null +++ b/packages/src/@rocket-scripts/webpack-fns/createEntry.ts @@ -0,0 +1,115 @@ +import { ESBuildMinifyPlugin } from 'esbuild-loader'; +import HtmlWebpackPlugin from 'html-webpack-plugin'; +import InterpolateHtmlPlugin from 'react-dev-utils/InterpolateHtmlPlugin'; +import { Configuration, WebpackPluginInstance } from 'webpack'; +import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer'; + +interface EntryParams { + outDir: string; + entry: Array<{ name: string; script: string; html?: string }>; + env?: NodeJS.ProcessEnv; + publicPath?: string; + chunkPath?: string; + filename?: string; + optimization?: 'minify-and-split-chunks' | 'minify' | false; + splitChunks?: boolean; + analyzerOptions?: BundleAnalyzerPlugin.Options; +} + +export function createEntry({ + outDir, + entry, + env = {}, + publicPath = '', + chunkPath = '', + filename: _filename, + optimization = false, + analyzerOptions, +}: EntryParams): Configuration { + const plugins: WebpackPluginInstance[] = entry + .map(({ name, html }) => { + return html + ? new HtmlWebpackPlugin({ + template: html, + filename: `${name}.html`, + chunks: [name], + }) + : null; + }) + .filter((plugin): plugin is HtmlWebpackPlugin => !!plugin); + + const hasHtml = plugins.length > 0; + + if (hasHtml) { + plugins.push( + new InterpolateHtmlPlugin( + HtmlWebpackPlugin, + env as Record, + ) as WebpackPluginInstance, + ); + } + + if (analyzerOptions) { + plugins.push(new BundleAnalyzerPlugin(analyzerOptions)); + } + + const filename = + typeof _filename === 'string' + ? _filename + : hasHtml + ? `${chunkPath}[name].[fullhash].js` + : `${chunkPath}[name].js`; + + return { + output: { + path: outDir, + publicPath, + filename, + chunkFilename: filename, + pathinfo: false, + }, + + entry: entry.reduce((e, { name, script }) => { + e[name] = script; + return e; + }, {} as Record), + + plugins: plugins, + + optimization: optimization.toString().startsWith('minify') + ? { + concatenateModules: true, + minimize: true, + minimizer: [ + new ESBuildMinifyPlugin({ + target: 'es2018', + minify: true, + css: hasHtml, + }), + ], + + splitChunks: + optimization === 'minify-and-split-chunks' + ? { + cacheGroups: { + // vendor chunk + vendor: { + test: /[\\/]node_modules[\\/]/, + name: 'vendor', + chunks: 'all', + }, + + // extract single css file + style: { + test: (m: object) => m.constructor.name === 'CssModule', + name: 'style', + chunks: 'all', + enforce: true, + }, + }, + } + : undefined, + } + : undefined, + }; +} diff --git a/packages/src/@rocket-scripts/webpack-fns/index.ts b/packages/src/@rocket-scripts/webpack-fns/index.ts new file mode 100644 index 00000000..5b77b544 --- /dev/null +++ b/packages/src/@rocket-scripts/webpack-fns/index.ts @@ -0,0 +1,3 @@ +export * from './configs'; +export * from './createEntry'; +export * from './readEnv'; diff --git a/packages/src/@rocket-scripts/webpack-fns/readEnv.ts b/packages/src/@rocket-scripts/webpack-fns/readEnv.ts new file mode 100644 index 00000000..46e447fc --- /dev/null +++ b/packages/src/@rocket-scripts/webpack-fns/readEnv.ts @@ -0,0 +1,31 @@ +import { DefinePlugin } from 'webpack'; + +type DefinePluginDefinitions = ConstructorParameters[0]; + +export function readEnv(userEnv?: Record): NodeJS.ProcessEnv { + return { + ...filterReactEnv(process.env), + NODE_ENV: process.env.NODE_ENV, + ...userEnv, + }; +} + +export function envToDefinePluginDefinitions( + env: NodeJS.ProcessEnv, +): DefinePluginDefinitions { + return { + 'process.env': Object.keys(env).reduce((stringifiedEnv, key) => { + stringifiedEnv[key] = JSON.stringify(env[key]); + return stringifiedEnv; + }, {} as Record), + }; +} + +export function filterReactEnv(env: NodeJS.ProcessEnv): NodeJS.ProcessEnv { + return Object.keys(env) + .filter((key) => /^REACT_APP_/i.test(key) || /^APP_/i.test(key)) + .reduce((e, key) => { + e[key] = env[key]; + return e; + }, {} as NodeJS.ProcessEnv); +} diff --git a/packages/src/@ssen/dev-server-components/Divider.tsx b/packages/src/@ssen/dev-server-components/Divider.tsx deleted file mode 100644 index 59d294b0..00000000 --- a/packages/src/@ssen/dev-server-components/Divider.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import { BackgroundColor, ForegroundColor } from 'chalk'; -import { Text, TextProps } from 'ink'; -import React from 'react'; - -export interface DividerProps - extends Omit { - indent?: number; - children: string; - width?: number; - color?: typeof ForegroundColor; - backgroundColor?: typeof BackgroundColor; - delimiter?: string; -} - -export function Divider({ - indent = 1, - children, - width = process.stdout.columns - 9, - delimiter = '-', - ...textProps -}: DividerProps) { - return ( - <> - - {' '} - {'\n'} - {delimiter.repeat(indent)} - {(' ' + children + ' ').padEnd(width, delimiter)} - - - ); -} diff --git a/packages/src/@ssen/dev-server-components/PadText.tsx b/packages/src/@ssen/dev-server-components/PadText.tsx deleted file mode 100644 index c135d21e..00000000 --- a/packages/src/@ssen/dev-server-components/PadText.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import { BackgroundColor, ForegroundColor } from 'chalk'; -import { Text, TextProps } from 'ink'; -import React from 'react'; - -export interface PadTextProps - extends Omit { - title: string; - children: string; - indent?: number; - titleWidth?: number; - color?: typeof ForegroundColor; - backgroundColor?: typeof BackgroundColor; -} - -export function PadText({ - title, - children, - indent = 1, - titleWidth = 7, - ...textProps -}: PadTextProps) { - return ( - - {' '.repeat(indent)} - {title.padEnd(titleWidth, ' ')} : {children} - - ); -} diff --git a/packages/src/@ssen/dev-server-components/index.ts b/packages/src/@ssen/dev-server-components/index.ts deleted file mode 100644 index 06c61e8a..00000000 --- a/packages/src/@ssen/dev-server-components/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './Divider'; -export * from './PadText'; diff --git a/packages/src/@ssen/electron-dev-server/DevServerUI.tsx b/packages/src/@ssen/electron-dev-server/DevServerUI.tsx deleted file mode 100644 index e4c7bcd1..00000000 --- a/packages/src/@ssen/electron-dev-server/DevServerUI.tsx +++ /dev/null @@ -1,281 +0,0 @@ -import { Divider, PadText } from '@ssen/dev-server-components'; -import { MirrorMessage } from '@ssen/mirror-files'; -import { exec } from 'child_process'; -import { format } from 'date-fns'; -import { Box, Text, useInput, useStdin } from 'ink'; -import useStdoutDimensions from 'ink-use-stdout-dimensions'; -import React, { ReactNode, useEffect, useMemo, useState } from 'react'; -import { Observable } from 'rxjs'; -import { ElectronServer } from './ElectronServer'; -import { WebpackServerStatus, WebpackStats } from './types'; -import { WebpackServer } from './WebpackServer'; - -export interface DevServerUIProps { - header?: ReactNode; - webpackServer: WebpackServer; - electronServer: ElectronServer; - syncStaticFiles?: Observable; - cwd: string; - logfile: string; - restartAlarm?: Observable; - children?: ReactNode; - exit: () => void; -} - -export function DevServerUI({ - header, - webpackServer, - electronServer, - syncStaticFiles, - cwd, - logfile, - restartAlarm, - children, - exit, -}: DevServerUIProps) { - const [ - webpackServerStatus, - setWebpackServerStatus, - ] = useState(WebpackServerStatus.STARTING); - const [webpackMainStats, setWebpackMainStats] = useState({ - status: 'waiting', - }); - const [ - webpackRendererStats, - setWebpackRendererStats, - ] = useState({ status: 'waiting' }); - const [restartMessages, setRestartMessages] = useState(null); - const [syncStaticFilesMessages, setSyncStaticFilesMessages] = useState< - MirrorMessage[] - >([]); - - useEffect(() => { - const statusSubscription = webpackServer - .status() - .subscribe(setWebpackServerStatus); - const mainStatsSubscription = webpackServer - .mainWebpackStats() - .subscribe(setWebpackMainStats); - const rendererStatsSubscription = webpackServer - .rendererWebpackStats() - .subscribe(setWebpackRendererStats); - - return () => { - statusSubscription.unsubscribe(); - mainStatsSubscription.unsubscribe(); - rendererStatsSubscription.unsubscribe(); - }; - }, [webpackServer]); - - useEffect(() => { - if (restartAlarm) { - const subscription = restartAlarm.subscribe((next) => { - if (next.some((message) => !!message)) { - setRestartMessages(next.filter((message) => !!message)); - } else { - setRestartMessages(null); - } - }); - - return () => { - subscription.unsubscribe(); - }; - } else { - setRestartMessages(null); - } - }, [restartAlarm]); - - useEffect(() => { - if (syncStaticFiles) { - const subscription = syncStaticFiles.subscribe((message) => { - setSyncStaticFilesMessages((prev) => { - return [message, ...prev].slice(0, 5); - }); - }); - - return () => { - subscription.unsubscribe(); - }; - } - }, [syncStaticFiles]); - - const webpackMainStatsJson = useMemo(() => { - return webpackMainStats.status === 'done' - ? webpackMainStats.statsData.toJson({ - all: false, - errors: true, - warnings: true, - timings: true, - }) - : null; - }, [webpackMainStats]); - - const webpackRendererStatsJson = useMemo(() => { - return webpackRendererStats.status === 'done' - ? webpackRendererStats.statsData.toJson({ - all: false, - errors: true, - warnings: true, - timings: true, - }) - : null; - }, [webpackRendererStats]); - - const { isRawModeSupported } = useStdin(); - - useInput( - (input, key) => { - if (input === 'q' || (input === 'c' && key.ctrl)) { - exit(); - } - - switch (input) { - case 'r': - electronServer.restart(); - break; - case 'l': - exec(`code ${logfile}`); - break; - case 'p': - exec(`code ${cwd}`); - break; - } - }, - { isActive: isRawModeSupported === true }, - ); - - const [, height] = useStdoutDimensions(); - - return ( - - {typeof header === 'string' ? {header} : header} - - - {logfile} - - - {isRawModeSupported === true && ( - - )} - - - {webpackServerStatus === WebpackServerStatus.STARTING - ? 'Webpack Starting...' - : webpackServerStatus === WebpackServerStatus.STARTED - ? 'Webpack Started!' - : webpackServerStatus === WebpackServerStatus.CLOSING - ? 'Webpack Closing...' - : 'Webpack Closed.'} - - - {restartMessages && restartMessages.length > 0 && ( - <> - - Restart Dev Server! - - {restartMessages.map((message) => ( - - {message} - - ))} - - )} - - - {webpackMainStats.status === 'waiting' - ? 'Webpack Stating...' - : webpackMainStats.status === 'invalid' - ? 'Webpack Compiling...' - : webpackMainStatsJson - ? `Webpack Compiled (${webpackMainStatsJson.time}ms)` - : '?? Webpack Unknown Webpack Status ??'} - - - {webpackMainStatsJson?.errors && webpackMainStatsJson.errors.length > 0 && ( - <> - - Error - - {webpackMainStatsJson.errors.map((error) => ( - - {JSON.stringify(error)} - - ))} - - )} - - {webpackMainStatsJson?.warnings && - webpackMainStatsJson.warnings.length > 0 && ( - <> - - Warning - - {webpackMainStatsJson.warnings.map((warning) => ( - - {JSON.stringify(warning)} - - ))} - - )} - - - {webpackRendererStats.status === 'waiting' - ? 'Webpack Stating...' - : webpackRendererStats.status === 'invalid' - ? 'Webpack Compiling...' - : webpackRendererStatsJson - ? `Webpack Compiled (${webpackRendererStatsJson.time}ms)` - : '?? Webpack Unknown Webpack Status ??'} - - - {webpackRendererStatsJson?.errors && - webpackRendererStatsJson.errors.length > 0 && ( - <> - - Error - - {webpackRendererStatsJson.errors.map((error) => ( - - {JSON.stringify(error)} - - ))} - - )} - - {webpackRendererStatsJson?.warnings && - webpackRendererStatsJson.warnings.length > 0 && ( - <> - - Warning - - {webpackRendererStatsJson.warnings.map((warning) => ( - - {JSON.stringify(warning)} - - ))} - - )} - - {syncStaticFilesMessages.length > 0 && ( - <> - Sync Static Files - {syncStaticFilesMessages.map(({ type, file, time }, i) => ( - 3} - > - [{format(time, 'hh:mm:ss')}] [{type}] {file} - - ))} - - )} - - {children} - - ); -} diff --git a/packages/src/@ssen/electron-dev-server/ElectronServer.ts b/packages/src/@ssen/electron-dev-server/ElectronServer.ts deleted file mode 100644 index 32c472bf..00000000 --- a/packages/src/@ssen/electron-dev-server/ElectronServer.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { ChildProcessWithoutNullStreams, spawn } from 'child_process'; -import { watch } from 'chokidar'; -import electron from 'electron'; -import { FSWatcher } from 'fs'; - -export interface ElectronServerParams { - dir: string; - main: string; - argv: string[]; -} - -export class ElectronServer { - private proc: ChildProcessWithoutNullStreams | null = null; - private watcher: FSWatcher | null = null; - - constructor(private params: ElectronServerParams) { - this.startProc(); - this.watcher = watch(params.main).on('change', this.restart); - - process.on('exit', this.close); - process.on('SIGINT', this.close); - process.on('SIGTERM', this.close); - } - - public restart = () => { - this.proc?.kill(); - this.startProc(); - }; - - public close = () => { - this.proc?.kill(); - this.proc = null; - - this.watcher?.close(); - this.watcher = null; - }; - - private startProc = () => { - const { main, dir, argv } = this.params; - - //@ts-ignore - this.proc = spawn(electron, [...argv, main], { cwd: dir, shell: true }); - }; -} diff --git a/packages/src/@ssen/electron-dev-server/WebpackServer.ts b/packages/src/@ssen/electron-dev-server/WebpackServer.ts deleted file mode 100644 index 3bec9e80..00000000 --- a/packages/src/@ssen/electron-dev-server/WebpackServer.ts +++ /dev/null @@ -1,199 +0,0 @@ -import { BehaviorSubject, combineLatest } from 'rxjs'; -import webpack, { - Compiler, - Configuration as WebpackConfiguration, - Stats, -} from 'webpack'; -import { WebpackServerStatus, WebpackStats } from './types'; - -export type WatchParams = Parameters; -export type WatchOptions = WatchParams[0]; -export type Watching = ReturnType; - -export interface WebpackServerParams { - mainWebpackConfig: WebpackConfiguration; - mainWebpackWatchOptions: WatchOptions; - rendererWebpackConfig: WebpackConfiguration; - rendererWebpackWatchOptions: WatchOptions; -} - -export class WebpackServer { - readonly mainCompiler: Compiler; - readonly rendererCompiler: Compiler; - - private mainWatching: Watching; - private rendererWatching: Watching; - - private readonly statusSubject: BehaviorSubject; - private readonly mainWebpackStatusSubject: BehaviorSubject; - private readonly rendererWebpackStatusSubject: BehaviorSubject; - - private readonly startResolvers: Set<() => void> = new Set(); - private readonly closeResolvers: Set<() => void> = new Set(); - - constructor({ - mainWebpackConfig, - rendererWebpackConfig, - mainWebpackWatchOptions, - rendererWebpackWatchOptions, - }: WebpackServerParams) { - this.mainCompiler = webpack(mainWebpackConfig); - this.rendererCompiler = webpack(rendererWebpackConfig); - - this.statusSubject = new BehaviorSubject( - WebpackServerStatus.STARTING, - ); - - this.mainWebpackStatusSubject = new BehaviorSubject({ - status: 'waiting', - }); - - this.mainCompiler.hooks.invalid.tap('invalid', () => { - this.mainWebpackStatusSubject.next({ - status: 'invalid', - }); - }); - - this.mainWatching = this.mainCompiler.watch( - mainWebpackWatchOptions, - (error?: Error, stats?: Stats) => { - if (error) { - throw error; - } else if (stats) { - console.log( - stats.toString({ - colors: false, - }), - ); - - this.mainWebpackStatusSubject.next({ - status: 'done', - statsData: stats, - }); - } else { - throw new Error('No error and stats'); - } - }, - ); - - this.rendererWebpackStatusSubject = new BehaviorSubject({ - status: 'waiting', - }); - - this.rendererCompiler.hooks.invalid.tap('invalid', () => { - this.rendererWebpackStatusSubject.next({ - status: 'invalid', - }); - }); - - this.rendererWatching = this.rendererCompiler.watch( - rendererWebpackWatchOptions, - (error?: Error, stats?: Stats) => { - if (error) { - throw error; - } else if (stats) { - console.log( - stats.toString({ - colors: false, - }), - ); - - this.rendererWebpackStatusSubject.next({ - status: 'done', - statsData: stats, - }); - } else { - throw new Error('No error and stats'); - } - }, - ); - - const startSubscription = combineLatest([ - this.mainWebpackStatusSubject, - this.rendererWebpackStatusSubject, - ]).subscribe(([main, renderer]) => { - if (main.status !== 'waiting' && renderer.status !== 'waiting') { - startSubscription.unsubscribe(); - this.onStart(); - } - }); - } - - public status = () => this.statusSubject.asObservable(); - - public mainWebpackStats = () => this.mainWebpackStatusSubject.asObservable(); - - public rendererWebpackStats = () => - this.rendererWebpackStatusSubject.asObservable(); - - public waitUntilStart = () => - new Promise((resolve) => { - if (this.statusSubject.getValue() >= WebpackServerStatus.STARTED) { - resolve(); - } else { - this.startResolvers.add(resolve); - } - }); - - private onStart = () => { - for (const resolve of this.startResolvers) { - resolve(); - } - this.startResolvers.clear(); - - this.statusSubject.next(WebpackServerStatus.STARTED); - }; - - public close = () => { - if (this.statusSubject.getValue() !== WebpackServerStatus.STARTED) { - return; - } - - this.statusSubject.next(WebpackServerStatus.CLOSING); - - let mainClosed: boolean = false; - let rendererClosed: boolean = false; - - this.mainWatching.close(() => { - mainClosed = true; - - if (mainClosed && rendererClosed) { - this.onClose(); - } - }); - - this.rendererWatching.close(() => { - rendererClosed = true; - - if (mainClosed && rendererClosed) { - this.onClose(); - } - }); - }; - - public waitUntilClose = () => - new Promise((resolve) => { - if ( - this.statusSubject.isStopped || - this.statusSubject.getValue() >= WebpackServerStatus.CLOSED - ) { - resolve(); - } else { - this.closeResolvers.add(resolve); - } - }); - - private onClose = () => { - for (const resolve of this.closeResolvers) { - resolve(); - } - this.closeResolvers.clear(); - - this.mainWebpackStatusSubject.unsubscribe(); - this.rendererWebpackStatusSubject.unsubscribe(); - - this.statusSubject.next(WebpackServerStatus.CLOSED); - - this.statusSubject.unsubscribe(); - }; -} diff --git a/packages/src/@ssen/electron-dev-server/__run__/basic.run.ts b/packages/src/@ssen/electron-dev-server/__run__/basic.run.ts deleted file mode 100644 index d9508130..00000000 --- a/packages/src/@ssen/electron-dev-server/__run__/basic.run.ts +++ /dev/null @@ -1,183 +0,0 @@ -import mainWebpackConfig from '@rocket-scripts/react-electron-preset/mainWebpackConfig'; -import rendererWebpackConfig from '@rocket-scripts/react-electron-preset/rendererWebpackConfig'; -import { ESBuildLoaderOptions } from '@rocket-scripts/react-preset/webpackLoaders/getWebpackScriptLoaders'; -import { getWebpackAlias } from '@rocket-scripts/utils'; -import { copyFixture } from '@ssen/copy-fixture'; -import { exec } from '@ssen/promised'; -import { createTmpDirectory } from '@ssen/tmp-directory'; -import HtmlWebpackPlugin from 'html-webpack-plugin'; -import MiniCssExtractPlugin from 'mini-css-extract-plugin'; -import path from 'path'; -import InterpolateHtmlPlugin from 'react-dev-utils/InterpolateHtmlPlugin'; -import { DefinePlugin, WebpackPluginInstance } from 'webpack'; -import { merge } from 'webpack-merge'; -import nodeExternals from 'webpack-node-externals'; -import { devServerStart } from '../devServerStart'; - -(async () => { - process.env.NODE_ENV = 'development'; - - const cwd: string = await copyFixture('test/fixtures/electron/start'); - const outDir: string = await createTmpDirectory(); - const env: NodeJS.ProcessEnv = process.env; - - // await exec(`yarn --production`, { cwd }); - - console.log('Start Server...'); - - exec(`open ${cwd}`); - exec(`open ${outDir}`); - - //const appDir: string = path.join(cwd, 'src/app'); - const tsconfig: string = path.join(cwd, 'tsconfig.json'); - const alias = getWebpackAlias(cwd); - const publicPath: string = ''; - const chunkPath: string = ''; - - const reactAppEnv: NodeJS.ProcessEnv = Object.keys(env) - .filter((key) => /^REACT_APP_/i.test(key)) - .reduce((e, key) => { - e[key] = env[key]; - return e; - }, {} as NodeJS.ProcessEnv); - - const webpackEnv: NodeJS.ProcessEnv = { - ...reactAppEnv, - PUBLIC_PATH: publicPath, - PUBLIC_URL: publicPath, - NODE_ENV: process.env.NODE_ENV ?? 'development', - }; - - const esbuildLoaderOptions: ESBuildLoaderOptions = { - loader: 'tsx', - target: 'es2016', - tsconfigRaw: {}, - }; - - await devServerStart({ - cwd, - outDir, - staticFileDirectories: [path.join(cwd, 'public')], - mainWebpackConfig: merge( - mainWebpackConfig({ - tsconfig, - esbuildLoaderOptions, - cwd, - tsConfigIncludes: [ - path.join(cwd, 'src/app/main.ts'), - path.join(cwd, 'src/app/preload.ts'), - path.join(cwd, 'src/**/*.d.ts'), - ], - }), - { - mode: 'development', - devtool: 'source-map', - - externals: [ - nodeExternals({ - allowlist: [ - // include asset files - /\.(?!(?:jsx?|json)$).{1,5}$/i, - ], - }), - ], - - resolve: { - symlinks: false, - alias, - }, - - entry: { - main: path.join(cwd, 'src/app/main'), - preload: path.join(cwd, 'src/app/preload'), - }, - - plugins: [ - new DefinePlugin({ - 'process.env': Object.keys(webpackEnv).reduce( - (stringifiedEnv, key) => { - stringifiedEnv[key] = JSON.stringify(webpackEnv[key]); - return stringifiedEnv; - }, - {} as Record, - ), - }), - ], - - performance: { - hints: false, - }, - - optimization: { - removeAvailableModules: false, - removeEmptyChunks: false, - splitChunks: false, - - moduleIds: 'named', - emitOnErrors: false, - }, - }, - ), - rendererWebpackConfig: merge( - rendererWebpackConfig({ - publicPath, - chunkPath, - esbuildLoaderOptions, - cwd, - tsconfig, - extractCss: false, - tsConfigIncludes: [ - path.join(cwd, 'src/app/renderer.tsx'), - path.join(cwd, 'src/**/*.d.ts'), - ], - }), - { - mode: 'development', - devtool: 'source-map', - - entry: { - renderer: path.join(cwd, 'src/app/renderer'), - }, - - plugins: [ - (new MiniCssExtractPlugin({ - filename: `[name].css`, - }) as unknown) as WebpackPluginInstance, - - new HtmlWebpackPlugin({ - template: path.join(cwd, 'src/app/index.html'), - filename: 'index.html', - }), - - new InterpolateHtmlPlugin( - HtmlWebpackPlugin, - webpackEnv as Record, - ) as WebpackPluginInstance, - - new DefinePlugin({ - 'process.env': Object.keys(webpackEnv).reduce( - (stringifiedEnv, key) => { - stringifiedEnv[key] = JSON.stringify(webpackEnv[key]); - return stringifiedEnv; - }, - {} as Record, - ), - }), - ], - - performance: { - hints: false, - }, - - optimization: { - removeAvailableModules: false, - removeEmptyChunks: false, - splitChunks: false, - - moduleIds: 'named', - emitOnErrors: false, - }, - }, - ), - }); -})(); diff --git a/packages/src/@ssen/electron-dev-server/devServerStart.tsx b/packages/src/@ssen/electron-dev-server/devServerStart.tsx deleted file mode 100644 index e19383b2..00000000 --- a/packages/src/@ssen/electron-dev-server/devServerStart.tsx +++ /dev/null @@ -1,159 +0,0 @@ -import { - ElectronSwitchesYargsValues, - toElectronArgv, -} from '@ssen/electron-switches'; -import { mirrorFiles, MirrorMessage } from '@ssen/mirror-files'; -import { patchConsole } from '@ssen/patch-console'; -import { createTmpDirectory } from '@ssen/tmp-directory'; -import fs from 'fs-extra'; -import { Box, render, Text } from 'ink'; -import path from 'path'; -import React, { ReactNode } from 'react'; -import { ConnectableObservable, Observable, Subject } from 'rxjs'; -import { multicast } from 'rxjs/operators'; -import tmp from 'tmp'; -import { Configuration as WebpackConfiguration } from 'webpack'; -import { merge } from 'webpack-merge'; -import { DevServerUI } from './DevServerUI'; -import { ElectronServer } from './ElectronServer'; -import { WebpackServer } from './WebpackServer'; - -export interface DevServerStartParams { - mainWebpackConfig: WebpackConfiguration; - rendererWebpackConfig: WebpackConfiguration; - staticFileDirectories?: string[]; - stdout?: NodeJS.WriteStream; - stdin?: NodeJS.ReadStream; - header?: ReactNode; - cwd?: string; - outDir?: string; - logfile?: string; - electronSwitches?: ElectronSwitchesYargsValues; - restartAlarm?: Observable; - children?: ReactNode; -} - -export async function devServerStart({ - mainWebpackConfig, - rendererWebpackConfig, - staticFileDirectories, - stdout = process.stdout, - stdin = process.stdin, - header, - cwd = process.cwd(), - outDir, - logfile = tmp.fileSync({ mode: 0o644, postfix: '.log' }).name, - electronSwitches = {}, - restartAlarm, - children, -}: DevServerStartParams): Promise<() => Promise> { - if (!fs.existsSync(path.dirname(logfile))) { - fs.mkdirpSync(path.dirname(logfile)); - } - - const interactiveUI = !process.env.CI && process.env.NODE_ENV !== 'test'; - const clearUI: (() => void)[] = []; - - if (interactiveUI) { - console.clear(); - const stream: NodeJS.WritableStream = fs.createWriteStream(logfile); - const restoreConsole = patchConsole({ - stdout: stream, - stderr: stream, - colorMode: false, - }); - clearUI.push(restoreConsole); - } - - if (!outDir) { - outDir = await createTmpDirectory(); - } - - await fs.mkdirp(outDir); - const outNodeModules: string = path.resolve(outDir, 'node_modules'); - if (fs.existsSync(outNodeModules)) fs.unlinkSync(outNodeModules); - // TODO Test this code should works in a package on yarn workspaces - //await exec(`ln -s ${path.resolve(cwd, 'node_modules')} ${outNodeModules}`) - await fs.symlink(path.resolve(cwd, 'node_modules'), outNodeModules, 'dir'); - //console.log('devServerStart.tsx..devServerStart()', outNodeModules); - - const syncStaticFiles: Observable | undefined = - Array.isArray(staticFileDirectories) && staticFileDirectories.length > 0 - ? mirrorFiles({ - filesDirsOrGlobs: staticFileDirectories, - outDir, - }) - : undefined; - - const syncStaticFilesCaster: - | ConnectableObservable - | undefined = syncStaticFiles?.pipe( - multicast(() => new Subject()), - ) as ConnectableObservable; - - const syncStaticFilesSubscription = syncStaticFilesCaster?.connect(); - - const webpackServer: WebpackServer = new WebpackServer({ - mainWebpackConfig: merge(mainWebpackConfig, { - output: { - path: outDir, - }, - }), - rendererWebpackConfig: merge(rendererWebpackConfig, { - output: { - path: outDir, - }, - }), - mainWebpackWatchOptions: {}, - rendererWebpackWatchOptions: {}, - }); - - await webpackServer.waitUntilStart(); - - const electronServer: ElectronServer = new ElectronServer({ - argv: toElectronArgv(electronSwitches), - dir: outDir, - main: path.join(outDir, 'main.js'), - }); - - if (interactiveUI) { - const { unmount, rerender } = render( - { - rerender( - - [DevServer Closed] {logfile} - , - ); - process.exit(); - }} - />, - { - stdout, - stdin, - patchConsole: false, - exitOnCtrlC: false, - }, - ); - clearUI.push(unmount); - } - - await new Promise((resolve) => setTimeout(resolve, 1000)); - - return async () => { - electronServer.close(); - webpackServer.close(); - await webpackServer.waitUntilClose(); - syncStaticFilesSubscription?.unsubscribe(); - clearUI.forEach((fn) => fn()); - await new Promise((resolve) => setTimeout(resolve, 1000)); - }; -} diff --git a/packages/src/@ssen/electron-dev-server/index.ts b/packages/src/@ssen/electron-dev-server/index.ts deleted file mode 100644 index 0a2dac56..00000000 --- a/packages/src/@ssen/electron-dev-server/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * from './devServerStart'; -export * from './WebpackServer'; -export * from './ElectronServer'; -export * from './DevServerUI'; -export * from './types'; diff --git a/packages/src/@ssen/electron-dev-server/types.ts b/packages/src/@ssen/electron-dev-server/types.ts deleted file mode 100644 index 41797091..00000000 --- a/packages/src/@ssen/electron-dev-server/types.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { Stats } from 'webpack'; - -export enum WebpackServerStatus { - STARTING, - STARTED, - CLOSING, - CLOSED, -} - -export enum ElectronServerStatus { - WAITING, - STARTED, - CLOSED, -} - -export type WebpackStats = - | { - status: 'waiting' | 'invalid'; - } - | { - status: 'done'; - statsData: Stats; - }; - -export type TimeMessage = { - time: number; - level: 'log' | 'info' | 'warn' | 'debug' | 'error'; - message: string; -}; - -/** - * @see https://www.electronjs.org/docs/api/command-line-switches - */ -export interface ElectronSwitches { - 'ignore-connections-limit'?: string; - 'disable-http-cache'?: boolean; - 'disable-http2'?: boolean; - 'disable-ntlm-v2'?: boolean; - lang?: string; - inspect?: string; - 'inspect-brk'?: string; - 'remote-debugging-port'?: string; - 'disk-cache-size'?: number; - 'js-flags'?: string; - 'proxy-server'?: string; - 'proxy-bypass-list'?: string; - 'proxy-pac-url'?: string; - 'no-proxy-server'?: boolean; - 'host-rules'?: string; - 'host-resolver-rules'?: string; - 'auth-server-whitelist'?: string; - 'auth-negotiate-delegate-whitelist'?: string; - 'ignore-certificate-errors'?: boolean; - 'log-net-log'?: string; - 'disable-renderer-backgrounding'?: boolean; - 'enable-logging'?: boolean; - v?: string; - vmodule?: string; - 'enable-api-filtering-logging'?: boolean; - 'no-sandbox'?: boolean; -} diff --git a/packages/src/@ssen/electron-switches/__tests__/electron-switches.test.ts b/packages/src/@ssen/electron-switches/__tests__/electron-switches.test.ts deleted file mode 100644 index b66c60f4..00000000 --- a/packages/src/@ssen/electron-switches/__tests__/electron-switches.test.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { - ElectronSwitchesYargsValues, - toElectronArgv, -} from '@ssen/electron-switches'; - -describe('electron-switches', () => { - test('should convert to electron argv', () => { - const options: ElectronSwitchesYargsValues = { - 'remote-debugging-port': 3566, - 'enable-logging': true, - 'js-flags': '--allow-natives-functions', - }; - - expect(toElectronArgv(options).join(' ')).toBe( - '--remote-debugging-port=3566 --enable-logging --js-flags="--allow-natives-functions"', - ); - }); -}); diff --git a/packages/src/@ssen/electron-switches/index.ts b/packages/src/@ssen/electron-switches/index.ts deleted file mode 100644 index 5c654563..00000000 --- a/packages/src/@ssen/electron-switches/index.ts +++ /dev/null @@ -1,64 +0,0 @@ -const describe = '* electon command-line switch'; - -/** - * @see https://www.electronjs.org/docs/api/command-line-switches - */ -export const electronSwitchesYargsOptions = { - 'ignore-connections-limit': { type: 'string', describe }, - 'disable-http-cache': { type: 'boolean', describe }, - 'disable-http2': { type: 'boolean', describe }, - 'disable-ntlm-v2': { type: 'boolean', describe }, - lang: { type: 'string', describe }, - inspect: { type: 'string', describe }, - 'inspect-brk': { type: 'string', describe }, - 'remote-debugging-port': { type: 'number', describe }, - 'disk-cache-size': { type: 'number', describe }, - 'js-flags': { type: 'string', describe }, - 'proxy-server': { type: 'string', describe }, - 'proxy-bypass-list': { type: 'string', describe }, - 'proxy-pac-url': { type: 'string', describe }, - 'no-proxy-server': { type: 'boolean', describe }, - 'host-rules': { type: 'string', describe }, - 'host-resolver-rules': { type: 'string', describe }, - 'auth-server-whitelist': { type: 'string', describe }, - 'auth-negotiate-delegate-whitelist': { type: 'string', describe }, - 'ignore-certificate-errors': { type: 'boolean', describe }, - 'log-net-log': { type: 'string', describe }, - 'disable-renderer-backgrounding': { type: 'boolean', describe }, - 'enable-logging': { type: 'boolean', describe }, - v: { type: 'string', describe }, - vmodule: { type: 'string', describe }, - 'enable-api-filtering-logging': { type: 'boolean', describe }, - 'no-sandbox': { type: 'boolean', describe }, -} as const; - -export type ElectronSwitchesYargsValues = { - [Key in keyof typeof electronSwitchesYargsOptions]?: typeof electronSwitchesYargsOptions[Key]['type'] extends 'boolean' - ? boolean - : typeof electronSwitchesYargsOptions[Key]['type'] extends 'number' - ? number - : string; -}; - -export function toElectronArgv(values: ElectronSwitchesYargsValues): string[] { - return Object.keys(values).reduce((args: string[], _key) => { - const key = _key as keyof typeof electronSwitchesYargsOptions; - - if (!!electronSwitchesYargsOptions[key]) { - switch (electronSwitchesYargsOptions[key].type) { - case 'boolean': - if (values[key] === true) { - args.push(`--${key}`); - } - break; - case 'number': - args.push(`--${key}=${values[key]}`); - break; - default: - args.push(`--${key}="${values[key]}"`); - break; - } - } - return args; - }, []); -} diff --git a/packages/src/@ssen/ink-helpers/__tests__/inkToString.test.tsx b/packages/src/@ssen/ink-helpers/__tests__/inkToString.test.tsx deleted file mode 100644 index 86bde795..00000000 --- a/packages/src/@ssen/ink-helpers/__tests__/inkToString.test.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import { inkToString } from '@ssen/ink-helpers'; -import chalk from 'chalk'; -import { Text } from 'ink'; -import React from 'react'; - -describe('inkToString()', () => { - test('should get text', () => { - expect( - inkToString( - <> - Hello - World - Foo - , - ), - ).toBe('Hello\nWorld\nFoo\n'); - - expect( - inkToString( - <> - Hello - World - , - ), - ).toBe(`${chalk.bold('Hello')}\n${chalk.blue('World')}\n`); - - expect( - inkToString( - <> - {`${chalk.bold('Hello')}\n${chalk.blue('World')}`} - , - ), - ).toBe(`${chalk.bold('Hello')}\n${chalk.blue('World')}\n`); - }); -}); diff --git a/packages/src/@ssen/ink-helpers/index.ts b/packages/src/@ssen/ink-helpers/index.ts deleted file mode 100644 index 4ffad0b0..00000000 --- a/packages/src/@ssen/ink-helpers/index.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { EventEmitter } from 'events'; -import { render } from 'ink'; -import { ReactElement } from 'react'; - -export class InkWritableStream extends EventEmitter { - get columns() { - return 100; - } - - readonly frames: string[] = []; - private _lastFrame?: string; - - write = (frame: string) => { - this.frames.push(frame); - this._lastFrame = frame; - }; - - lastFrame = () => { - return this._lastFrame; - }; -} - -export function createInkWriteStream(): InkWritableStream & NodeJS.WriteStream { - return (new InkWritableStream() as unknown) as InkWritableStream & - NodeJS.WriteStream; -} - -export function inkToString(element: ReactElement): string { - const stdout = createInkWriteStream(); - - const { unmount } = render(element, { stdout, patchConsole: false }); - - unmount(); - - return stdout.lastFrame() ?? ''; -} diff --git a/packages/src/@ssen/mdx-matter-loader/__tests__/mdx-matter-loader.test.ts b/packages/src/@ssen/mdx-matter-loader/__tests__/mdx-matter-loader.test.ts index 710ef131..1ed7db33 100644 --- a/packages/src/@ssen/mdx-matter-loader/__tests__/mdx-matter-loader.test.ts +++ b/packages/src/@ssen/mdx-matter-loader/__tests__/mdx-matter-loader.test.ts @@ -3,16 +3,18 @@ import matterLoader from '@ssen/mdx-matter-loader'; function compile(source: string): Promise { return new Promise((resolve, reject) => { const context = { - async: () => ( - err: Error | null | undefined, - content: string | Buffer | undefined, - ) => { - if (err) { - reject(err); - } else { - resolve(content); - } - }, + async: + () => + ( + err: Error | null | undefined, + content: string | Buffer | undefined, + ) => { + if (err) { + reject(err); + } else { + resolve(content); + } + }, }; matterLoader.call(context, source); diff --git a/packages/src/@ssen/mirror-files/__tests__/mirror-files.test.ts b/packages/src/@ssen/mirror-files/__tests__/mirror-files.test.ts deleted file mode 100644 index 9939ed88..00000000 --- a/packages/src/@ssen/mirror-files/__tests__/mirror-files.test.ts +++ /dev/null @@ -1,84 +0,0 @@ -import { mirrorFiles } from '@ssen/mirror-files/index'; -import { createTmpDirectory } from '@ssen/tmp-directory'; -import fs from 'fs-extra'; -import path from 'path'; - -function waitExists(file: string, timeout: number = 1000): Promise { - return new Promise((resolve) => { - const start: number = performance.now(); - - function check() { - if (fs.existsSync(file)) { - resolve(true); - } else if (performance.now() - start > timeout) { - resolve(false); - } else { - setTimeout(check, 100); - } - } - - check(); - }); -} - -async function copy(file: string, dir: string, toDir: string) { - const f: string = path.join(toDir, file); - await fs.mkdirp(path.dirname(f)); - await fs.copyFile(path.join(dir, file), f); -} - -describe('mirrorFiles()', () => { - test('should mirror static files', async () => { - const source: string = path.join( - process.cwd(), - 'test/fixtures/mirror-files/static-files', - ); - const dir: string = await createTmpDirectory(); - const outDir: string = await createTmpDirectory(); - - await copy('a.mp4', source, dir); - await copy('b.jpeg', source, dir); - - expect(fs.existsSync(path.join(dir, 'a.mp4'))).toBeTruthy(); - expect(fs.existsSync(path.join(dir, 'b.jpeg'))).toBeTruthy(); - - const subscription = mirrorFiles({ - filesDirsOrGlobs: [dir], - outDir, - ignored: /.jpeg$/, - }).subscribe(() => {}); - - await expect(waitExists(path.join(outDir, 'a.mp4'))).resolves.toBeTruthy(); - await expect(waitExists(path.join(outDir, 'b.jpeg'))).resolves.toBeFalsy(); - - await copy('public/c.svg', source, dir); - await expect( - waitExists(path.join(outDir, 'public/c.svg')), - ).resolves.toBeTruthy(); - - await copy('public/d.html', source, dir); - await copy('public/e.pdf', source, dir); - await expect( - waitExists(path.join(outDir, 'public/d.html')), - ).resolves.toBeTruthy(); - await expect( - waitExists(path.join(outDir, 'public/e.pdf')), - ).resolves.toBeTruthy(); - - await fs.unlink(path.join(path.join(outDir, 'a.mp4'))); - await fs.unlink(path.join(path.join(outDir, 'public/c.svg'))); - await expect(waitExists(path.join(outDir, 'a.mp4'))).resolves.toBeFalsy(); - await expect(waitExists(path.join(outDir, 'b.jpeg'))).resolves.toBeFalsy(); - await expect( - waitExists(path.join(outDir, 'public/c.svg')), - ).resolves.toBeFalsy(); - await expect( - waitExists(path.join(outDir, 'public/d.html')), - ).resolves.toBeTruthy(); - await expect( - waitExists(path.join(outDir, 'public/e.pdf')), - ).resolves.toBeTruthy(); - - subscription.unsubscribe(); - }); -}); diff --git a/packages/src/@ssen/mirror-files/index.ts b/packages/src/@ssen/mirror-files/index.ts deleted file mode 100644 index 9cf205ff..00000000 --- a/packages/src/@ssen/mirror-files/index.ts +++ /dev/null @@ -1,123 +0,0 @@ -import { Matcher } from 'anymatch'; -import { watch } from 'chokidar'; -import { FSWatcher } from 'fs'; -import fs from 'fs-extra'; -import path from 'path'; -import { Observable } from 'rxjs'; - -interface Params { - filesDirsOrGlobs: string[]; - outDir: string; - ignored?: Matcher; -} - -export type MirrorMessage = - | { - type: 'added' | 'updated' | 'removed'; - file: string; - time: Date; - } - | { - type: 'undefined'; - file: string; - time: Date; - }; - -export function mirrorFiles({ - filesDirsOrGlobs, - outDir, - ignored, -}: Params): Observable { - return new Observable((subscriber) => { - fs.mkdirpSync(outDir); - - function toRelativePath(file: string): string | undefined { - const source: string | undefined = filesDirsOrGlobs.find( - (s) => file.indexOf(s) === 0, - ); - return source ? path.relative(source, file) : undefined; - } - - const watcher: FSWatcher = watch(filesDirsOrGlobs, { - ignored, - }); - - watcher - //.on('ready', () => { - //}) - .on('add', async (file) => { - const relpath: string | undefined = toRelativePath(file); - - if (!relpath) { - subscriber.next({ - type: 'undefined', - file, - time: new Date(), - }); - return; - } - - const tofile: string = path.join(outDir, relpath); - - await fs.mkdirp(path.dirname(tofile)); - await fs.copyFile(file, tofile); - - subscriber.next({ - type: 'added', - file: relpath, - time: new Date(), - }); - }) - .on('change', async (file) => { - const relpath: string | undefined = toRelativePath(file); - - if (!relpath) { - subscriber.next({ - type: 'undefined', - file, - time: new Date(), - }); - return; - } - - const tofile: string = path.join(outDir, relpath); - - await fs.mkdirp(path.dirname(tofile)); - await fs.copyFile(file, tofile); - - subscriber.next({ - type: 'updated', - file: relpath, - time: new Date(), - }); - }) - .on('unlink', async (file) => { - const relpath: string | undefined = toRelativePath(file); - - if (!relpath) { - subscriber.next({ - type: 'undefined', - file, - time: new Date(), - }); - return; - } - - const tofile: string = path.join(outDir, relpath); - - if (fs.pathExistsSync(tofile)) { - await fs.remove(tofile); - - subscriber.next({ - type: 'removed', - file: relpath, - time: new Date(), - }); - } - }); - - return () => { - watcher.close(); - }; - }); -} diff --git a/packages/src/@ssen/patch-console/__tests__/patchConsole.test.ts b/packages/src/@ssen/patch-console/__tests__/patchConsole.test.ts deleted file mode 100644 index 460acc35..00000000 --- a/packages/src/@ssen/patch-console/__tests__/patchConsole.test.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { patchConsole } from '@ssen/patch-console'; -import { WritableStreamBuffer } from 'stream-buffers'; - -describe('patchConsole()', () => { - test('should write console messages in another writable stream', () => { - const orig: Function = console.log; - const stdout: WritableStreamBuffer = new WritableStreamBuffer(); - - const restore = patchConsole({ - stdout, - }); - - expect(console.log).not.toBe(orig); - - console.log(1); - console.log(2); - console.log(3); - console.log(4); - console.log(5); - - expect(stdout.getContentsAsString('utf8')).toBe('1\n2\n3\n4\n5\n'); - - restore(); - - expect(console.log).toBe(orig); - }); -}); diff --git a/packages/src/@ssen/patch-console/index.ts b/packages/src/@ssen/patch-console/index.ts deleted file mode 100644 index 04674217..00000000 --- a/packages/src/@ssen/patch-console/index.ts +++ /dev/null @@ -1,104 +0,0 @@ -import { Console } from 'console'; - -/* eslint-disable @typescript-eslint/no-explicit-any */ -type ConsoleMethodName = keyof Console; - -const methodNames: ConsoleMethodName[] = Object.keys(console).filter( - (method: string): method is keyof Console => - method !== 'Console' && - method !== 'context' && - typeof console[method as keyof Console] === 'function', -); -const originMethods: Map = methodNames.reduce( - (methods, name) => { - methods.set(name, console[name]); - return methods; - }, - new Map(), -); - -class ConsoleRouter implements Omit { - private consoles: Set = new Set(); - - add = (console: Console) => this.consoles.add(console); - delete = (console: Console) => this.consoles.delete(console); - size = () => this.consoles.size; - - memory = 0; - exception = (...args: any[]) => - this.consoles.forEach((console) => console.exception(...args)); - assert = (...args: any[]) => - this.consoles.forEach((console) => console.assert(...args)); - clear = () => this.consoles.forEach((console) => console.clear()); - count = (...args: any[]) => - this.consoles.forEach((console) => console.count(...args)); - countReset = (...args: any[]) => - this.consoles.forEach((console) => console.countReset(...args)); - debug = (...args: any[]) => - this.consoles.forEach((console) => console.debug(...args)); - dir = (...args: any[]) => - this.consoles.forEach((console) => console.dir(...args)); - dirxml = (...args: any[]) => - this.consoles.forEach((console) => console.dirxml(...args)); - error = (...args: any[]) => - this.consoles.forEach((console) => console.error(...args)); - group = (...args: any[]) => - this.consoles.forEach((console) => console.group(...args)); - groupCollapsed = (...args: any[]) => - this.consoles.forEach((console) => console.groupCollapsed(...args)); - groupEnd = () => this.consoles.forEach((console) => console.groupEnd()); - info = (...args: any[]) => - this.consoles.forEach((console) => console.info(...args)); - log = (...args: any[]) => - this.consoles.forEach((console) => console.log(...args)); - table = (...args: any[]) => - this.consoles.forEach((console) => console.table(...args)); - time = (...args: any[]) => - this.consoles.forEach((console) => console.time(...args)); - timeEnd = (...args: any[]) => - this.consoles.forEach((console) => console.timeEnd(...args)); - timeLog = (...args: any[]) => - this.consoles.forEach((console) => console.timeLog(...args)); - trace = (...args: any[]) => - this.consoles.forEach((console) => console.trace(...args)); - warn = (...args: any[]) => - this.consoles.forEach((console) => console.warn(...args)); - profile = (...args: any[]) => - this.consoles.forEach((console) => console.profile(...args)); - profileEnd = (...args: any[]) => - this.consoles.forEach((console) => console.profileEnd(...args)); - timeStamp = (...args: any[]) => - this.consoles.forEach((console) => console.timeStamp(...args)); -} - -let router: ConsoleRouter | null; - -export function patchConsole( - options: NodeJS.ConsoleConstructorOptions, -): () => void { - const childConsole = new Console(options); - - if (!router) { - router = new ConsoleRouter(); - - for (const method of methodNames) { - console[method] = router[method as keyof ConsoleRouter]; - } - } - - router.add(childConsole); - - return () => { - if (!router) return; - - router.delete(childConsole); - - if (router.size() === 0) { - for (const method of methodNames) { - console[method] = originMethods.get(method); - } - - router = null; - } - }; -} diff --git a/packages/src/@ssen/svg-react-loader/index.ts b/packages/src/@ssen/svg-react-loader/index.ts index 2173a284..6bc4a69b 100644 --- a/packages/src/@ssen/svg-react-loader/index.ts +++ b/packages/src/@ssen/svg-react-loader/index.ts @@ -1,3 +1,4 @@ +// @ts-ignore import svgToJsx from '@svgr/plugin-jsx'; import fs from 'fs'; diff --git a/packages/src/@ssen/webpack-dev-server/DevServer.ts b/packages/src/@ssen/webpack-dev-server/DevServer.ts deleted file mode 100644 index 63d0006a..00000000 --- a/packages/src/@ssen/webpack-dev-server/DevServer.ts +++ /dev/null @@ -1,151 +0,0 @@ -import { BehaviorSubject } from 'rxjs'; -import webpack, { - Configuration as WebpackConfiguration, - MultiCompiler, -} from 'webpack'; -import WebpackDevServer, { - Configuration as WebpackDevServerConfiguration, -} from 'webpack-dev-server'; -import { DevServerStatus, TimeMessage, WebpackStats } from './types'; - -export interface DevServerParams { - port: number; - hostname: string; - webpackConfigs: WebpackConfiguration[]; - devServerConfig: WebpackDevServerConfiguration; -} - -export class DevServer { - readonly compiler: MultiCompiler; - readonly devServer: WebpackDevServer; - readonly url: string; - - private readonly statusSubject: BehaviorSubject; - private readonly webpackStatsSubject: BehaviorSubject; - private readonly devServerSubject: BehaviorSubject; - - private readonly startResolvers: Set<() => void> = new Set(); - private readonly closeResolvers: Set<() => void> = new Set(); - - constructor({ - port, - hostname, - devServerConfig, - webpackConfigs, - }: DevServerParams) { - this.url = - (devServerConfig.https ? 'https://' : 'http://') + hostname + ':' + port; - - this.compiler = webpack(webpackConfigs); - - this.statusSubject = new BehaviorSubject( - DevServerStatus.STARTING, - ); - this.webpackStatsSubject = new BehaviorSubject({ - status: 'waiting', - }); - this.devServerSubject = new BehaviorSubject([]); - - this.devServer = new WebpackDevServer(this.compiler, devServerConfig); - this.devServer.listen(port, hostname, this.onStart); - - this.compiler.hooks.invalid.tap('invalid', () => { - this.webpackStatsSubject.next({ - status: 'invalid', - }); - }); - - this.compiler.hooks.done.tap('done', (statsData) => { - this.webpackStatsSubject.next({ - status: 'done', - statsData, - }); - }); - - this.compiler.hooks.infrastructureLog.tap( - 'webpack-dev-server', - (plugin: string, level: string, msgs: string[]) => { - const prevMessages: TimeMessage[] = this.devServerSubject.getValue(); - const nextMessages: TimeMessage[] = [ - ...prevMessages.slice(0, 9), - { - time: Date.now(), - level: - level === 'log' || - level === 'info' || - level === 'warn' || - level === 'debug' || - level === 'error' - ? level - : 'info', - message: msgs.join('\n'), - }, - ]; - this.devServerSubject.next(nextMessages); - }, - ); - } - - public status = () => this.statusSubject.asObservable(); - - public webpackStats = () => this.webpackStatsSubject.asObservable(); - - public devServerMessages = () => this.devServerSubject.asObservable(); - - public waitUntilStart = () => - new Promise((resolve) => { - if (this.statusSubject.getValue() >= DevServerStatus.STARTED) { - resolve(); - } else { - this.startResolvers.add(resolve); - } - }); - - private onStart = (error?: Error) => { - if (error) { - throw error; - } - - for (const resolve of this.startResolvers) { - resolve(); - } - this.startResolvers.clear(); - - this.statusSubject.next(DevServerStatus.STARTED); - }; - - public close = () => { - if (this.statusSubject.getValue() !== DevServerStatus.STARTED) { - return; - } - - this.statusSubject.next(DevServerStatus.CLOSING); - - this.devServer.close(this.onClose); - }; - - public waitUntilClose = () => - new Promise((resolve) => { - if ( - this.statusSubject.isStopped || - this.statusSubject.getValue() >= DevServerStatus.CLOSED - ) { - resolve(); - } else { - this.closeResolvers.add(resolve); - } - }); - - private onClose = () => { - for (const resolve of this.closeResolvers) { - resolve(); - } - this.closeResolvers.clear(); - - this.webpackStatsSubject.unsubscribe(); - - this.statusSubject.next(DevServerStatus.CLOSED); - - this.statusSubject.unsubscribe(); - }; -} diff --git a/packages/src/@ssen/webpack-dev-server/DevServerUI.tsx b/packages/src/@ssen/webpack-dev-server/DevServerUI.tsx deleted file mode 100644 index dee3727d..00000000 --- a/packages/src/@ssen/webpack-dev-server/DevServerUI.tsx +++ /dev/null @@ -1,222 +0,0 @@ -import { Divider, PadText } from '@ssen/dev-server-components'; -import { exec } from 'child_process'; -import { format } from 'date-fns'; -import { Box, Text, useInput, useStdin } from 'ink'; -import useStdoutDimensions from 'ink-use-stdout-dimensions'; -import os from 'os'; -import React, { ReactNode, useEffect, useMemo, useState } from 'react'; -import { Observable } from 'rxjs'; -import { DevServer } from './DevServer'; -import { DevServerStatus, TimeMessage, WebpackStats } from './types'; - -export interface DevServerUIProps { - header?: ReactNode; - devServer: DevServer; - cwd: string; - logfile: string; - restartAlarm?: Observable; - children?: ReactNode; - exit: () => void; -} - -export function DevServerUI({ - header, - devServer, - cwd, - logfile, - restartAlarm, - children, - exit, -}: DevServerUIProps) { - const [status, setStatus] = useState( - DevServerStatus.STARTING, - ); - const [webpackStats, setWebpackStats] = useState({ - status: 'waiting', - }); - const [restartMessages, setRestartMessages] = useState(null); - const [devServerMessages, setDevServerMessages] = useState([]); - - useEffect(() => { - const statusSubscription = devServer.status().subscribe(setStatus); - - const webpackStatsSubscription = devServer - .webpackStats() - .subscribe(setWebpackStats); - - const devServerMessagesSubscription = devServer - .devServerMessages() - .subscribe(setDevServerMessages); - - return () => { - statusSubscription.unsubscribe(); - webpackStatsSubscription.unsubscribe(); - devServerMessagesSubscription.unsubscribe(); - }; - }, [devServer]); - - useEffect(() => { - if (restartAlarm) { - const subscription = restartAlarm.subscribe((next) => { - if (next.some((message) => !!message)) { - setRestartMessages(next.filter((message) => !!message)); - } else { - setRestartMessages(null); - } - }); - - return () => { - subscription.unsubscribe(); - }; - } else { - setRestartMessages(null); - } - }, [restartAlarm]); - - const webpackStatsJson = useMemo(() => { - return webpackStats.status === 'done' - ? webpackStats.statsData.toJson({ - all: false, - errors: true, - warnings: true, - timings: true, - }) - : null; - }, [webpackStats]); - - const { isRawModeSupported } = useStdin(); - - useInput( - (input, key) => { - if (input === 'q' || (input === 'c' && key.ctrl)) { - exit(); - } - - switch (input) { - case 'b': - if (os.platform() === 'win32') { - exec(`start ${devServer.url}`); - } else { - exec(`open ${devServer.url}`); - } - break; - case 'l': - exec(`code ${logfile}`); - break; - case 'p': - exec(`code ${cwd}`); - break; - } - }, - { isActive: isRawModeSupported === true }, - ); - - const [, height] = useStdoutDimensions(); - - return ( - - {typeof header === 'string' ? {header} : header} - - - {logfile} - - - {isRawModeSupported === true && ( - - )} - - - {status === DevServerStatus.STARTING - ? 'DevServer Starting...' - : status === DevServerStatus.STARTED - ? 'DevServer Started!' - : status === DevServerStatus.CLOSING - ? 'DevServer Closing...' - : 'DevServer Closed.'} - - - - {webpackStats.status === 'waiting' - ? 'Server Stating...' - : webpackStats.status === 'invalid' - ? 'Compiling...' - : webpackStatsJson - ? Array.isArray(webpackStatsJson.children) - ? `Compiled (${webpackStatsJson.children - .map(({ time }) => time + 'ms') - .join(', ')})` - : `Compiled (${webpackStatsJson.time}ms)` - : '?? Unknown Webpack Status ??'} - - - {restartMessages && restartMessages.length > 0 && ( - <> - - Restart server! - - {restartMessages.map((message) => ( - - {message} - - ))} - - )} - - {webpackStatsJson?.errors && webpackStatsJson.errors.length > 0 && ( - <> - - Error - - {webpackStatsJson.errors.map((error) => ( - - {JSON.stringify(error)} - - ))} - - )} - - {webpackStatsJson?.warnings && webpackStatsJson.warnings.length > 0 && ( - <> - - Warning - - {webpackStatsJson.warnings.map((warning) => ( - - {JSON.stringify(warning)} - - ))} - - )} - - {devServerMessages.length > 0 && ( - <> - Webpack Dev Server - {devServerMessages - .slice() - .reverse() - .map(({ message, level, time }, i) => ( - 3} - > - [{format(new Date(time), 'hh:mm:ss')}] {message} - - ))} - - )} - - {children} - - ); -} diff --git a/packages/src/@ssen/webpack-dev-server/README.md b/packages/src/@ssen/webpack-dev-server/README.md deleted file mode 100644 index 9bdb0d80..00000000 --- a/packages/src/@ssen/webpack-dev-server/README.md +++ /dev/null @@ -1,34 +0,0 @@ -# `@ssen/webpack-dev-server` - -Interactive UI for `webpack-dev-server` - -Screenshot - -# Usage - -```js -// devServer.js -const { devServerStart } = require('@ssen/webpack-dev-server'); - -const { devServer: devServerConfig, ...webpackConfig } = require('./webpack.config'); - -(async () => { - const port = process.env.PORT; - - await devServerStart({ - header: '\nHEADER TEXT\n', - port, - hostname: 'localhost', - webpackConfig, - devServerConfig, - }); -})(); -``` - -```sh -node devServer.js -``` - -# Examples - -- [react-redux-typescript-boilerplate](https://github.com/iamssen/react-redux-typescript-boilerplate/compare/09d1c336436662fd978cb081db616ff26d2cda8c...33d5b2fa493d96b524b2880cbf3ab7371d75c6c3) \ No newline at end of file diff --git a/packages/src/@ssen/webpack-dev-server/__run__/basic.run.ts b/packages/src/@ssen/webpack-dev-server/__run__/basic.run.ts deleted file mode 100644 index 62697f52..00000000 --- a/packages/src/@ssen/webpack-dev-server/__run__/basic.run.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { copyFixture } from '@ssen/copy-fixture'; -import { devServerStart } from '@ssen/webpack-dev-server/devServerStart'; -import path from 'path'; -import { getPortPromise } from 'portfinder'; -import puppeteer from 'puppeteer'; - -(async () => { - const cwd: string = await copyFixture( - 'test/fixtures/webpack-dev-server/basic', - ); - - const port: number = await getPortPromise(); - - const { - devServer: devServerConfig, - ...webpackConfig - } = require(`${cwd}/webpack.config.js`); - - await devServerStart({ - cwd, - header: '\nBASIC SAMPLE!!!\n', - port, - logfile: path.join(cwd, 'rocket-test.log'), - hostname: 'localhost', - webpackConfig, - devServerConfig, - }); - - const browser = await puppeteer.launch({ - userDataDir: process.env.CHROMIUM_USER_DATA_DEBUG, - headless: false, - args: ['--start-fullscreen'], - devtools: true, - }); - - const [page] = await browser.pages(); - await page.goto(`http://localhost:${port}`); -})(); diff --git a/packages/src/@ssen/webpack-dev-server/__run__/multi.run.ts b/packages/src/@ssen/webpack-dev-server/__run__/multi.run.ts deleted file mode 100644 index 4a1c83c2..00000000 --- a/packages/src/@ssen/webpack-dev-server/__run__/multi.run.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { copyFixture } from '@ssen/copy-fixture'; -import { devServerStart } from '@ssen/webpack-dev-server/devServerStart'; -import path from 'path'; -import { getPortPromise } from 'portfinder'; -import puppeteer from 'puppeteer'; - -(async () => { - const cwd: string = await copyFixture( - 'test/fixtures/webpack-dev-server/multi', - ); - - const port: number = await getPortPromise(); - - const { - devServer: devServerConfig, - ...indexWebpackConfig - } = require(`${cwd}/index.webpack.config.js`); - - const anotherWebpackConfig = require(`${cwd}/another.webpack.config.js`); - - await devServerStart({ - cwd, - header: '\nMULTI SAMPLE!!!\n', - port, - logfile: path.join(cwd, 'rocket-test.log'), - hostname: 'localhost', - webpackConfigs: [indexWebpackConfig, anotherWebpackConfig], - devServerConfig, - }); - - const browser = await puppeteer.launch({ - userDataDir: process.env.CHROMIUM_USER_DATA_DEBUG, - headless: false, - args: ['--start-fullscreen'], - devtools: true, - }); - - const [page] = await browser.pages(); - await page.goto(`http://localhost:${port}`); -})(); diff --git a/packages/src/@ssen/webpack-dev-server/__tests__/webpack-dev-server.test.ts b/packages/src/@ssen/webpack-dev-server/__tests__/webpack-dev-server.test.ts deleted file mode 100644 index d25b7d2a..00000000 --- a/packages/src/@ssen/webpack-dev-server/__tests__/webpack-dev-server.test.ts +++ /dev/null @@ -1,147 +0,0 @@ -import { copyFixture } from '@ssen/copy-fixture'; -import { createInkWriteStream } from '@ssen/ink-helpers'; -import { devServerStart } from '@ssen/webpack-dev-server'; -import { format } from 'date-fns'; -import path from 'path'; -import { getPortPromise } from 'portfinder'; -import puppeteer, { Browser, Page } from 'puppeteer'; - -const timeout = (t: number) => new Promise((resolve) => setTimeout(resolve, t)); - -describe('webpack-dev-server', () => { - let browser: Browser; - let page: Page; - - beforeAll(async () => { - browser = await puppeteer.launch({ - headless: true, - defaultViewport: { - width: 1200, - height: 900, - }, - }); - }); - - afterAll(async () => { - await browser.close(); - }); - - afterEach(async () => { - if (page && !page.isClosed()) { - await page.close(); - } - }); - - test('should read text', async () => { - // Arrange : project directories - const cwd: string = await copyFixture( - 'test/fixtures/webpack-dev-server/basic', - ); - - const port: number = await getPortPromise(); - - const { - devServer: devServerConfig, - ...webpackConfig - } = require(`${cwd}/webpack.config.js`); - - // Arrange : stdout - const stdout = createInkWriteStream(); - - // Act : server start - const close = await devServerStart({ - cwd, - header: '\nBASIC SAMPLE!!!\n', - port, - hostname: 'localhost', - webpackConfig, - devServerConfig, - stdout, - logfile: process.env.CI - ? path.join(process.cwd(), `logs/webpack-dev-server.txt`) - : undefined, - }); - - await timeout(1000 * 5); - - // Arrange - page = await browser.newPage(); - - await page.goto(`http://localhost:${port}`, { timeout: 1000 * 60 }); - await page.waitForSelector('#app', { timeout: 1000 * 60 }); - - // Assert - const time: string = format(1596258181790, 'yyyy-MM-dd hh:mm:ss'); - await expect(page.$eval('#app', (e) => e.innerHTML)).resolves.toBe( - `Hello Webpack! ${time}`, - ); - - // Exit - await close(); - - console.log(stdout.lastFrame()); - }); - - test('should create multiple files', async () => { - // Arrange : project directories - const cwd: string = await copyFixture( - 'test/fixtures/webpack-dev-server/multi', - ); - - const port: number = await getPortPromise(); - - const { - devServer: devServerConfig, - ...indexWebpackConfig - } = require(`${cwd}/index.webpack.config.js`); - - const anotherWebpackConfig = require(`${cwd}/another.webpack.config.js`); - - // Arrange : stdout - const stdout = createInkWriteStream(); - - // Act : server start - const close = await devServerStart({ - cwd, - header: '\nBASIC SAMPLE!!!\n', - port, - hostname: 'localhost', - webpackConfigs: [indexWebpackConfig, anotherWebpackConfig], - devServerConfig, - stdout, - logfile: process.env.CI - ? path.join(process.cwd(), `logs/webpack-dev-server.txt`) - : undefined, - }); - - await timeout(1000 * 5); - - // Arrange - page = await browser.newPage(); - - await page.goto(`http://localhost:${port}`, { timeout: 1000 * 60 }); - await page.waitForSelector('#app', { timeout: 1000 * 60 }); - - // Assert - const indexTime: string = format(1596258181790, 'yyyy-MM-dd hh:mm:ss'); - await expect(page.$eval('#app', (e) => e.innerHTML)).resolves.toBe( - `Hello Webpack! ${indexTime}`, - ); - - await page.goto(`http://localhost:${port}/another.html`, { - timeout: 1000 * 60, - }); - await page.waitForSelector('#app', { timeout: 1000 * 60 }); - - // Assert - const anotherTime: string = format(1596258181790, 'yyyy-MM-dd hh:mm:ss'); - await expect(page.$eval('#app', (e) => e.innerHTML)).resolves.toBe( - `Another Config ${anotherTime}`, - ); - - // Exit - await close(); - - console.log(stdout.lastFrame()); - }); -}); diff --git a/packages/src/@ssen/webpack-dev-server/devServerStart.tsx b/packages/src/@ssen/webpack-dev-server/devServerStart.tsx deleted file mode 100644 index 316337f7..00000000 --- a/packages/src/@ssen/webpack-dev-server/devServerStart.tsx +++ /dev/null @@ -1,111 +0,0 @@ -import { patchConsole } from '@ssen/patch-console'; -import fs from 'fs-extra'; -import { Box, render, Text } from 'ink'; -import path from 'path'; -import React, { ReactNode } from 'react'; -import { Observable } from 'rxjs'; -import tmp from 'tmp'; -import { Configuration as WebpackConfiguration } from 'webpack'; -import { DevServer, DevServerParams } from './DevServer'; -import { DevServerUI } from './DevServerUI'; - -export type WebpackConfigs = - | { - /** - * @deprecated use instead webpackConfigs - */ - webpackConfig: WebpackConfiguration; - } - | { webpackConfigs: WebpackConfiguration[] }; - -export type DevServerStartParams = WebpackConfigs & - Omit & { - stdout?: NodeJS.WriteStream; - stdin?: NodeJS.ReadStream; - header?: ReactNode; - cwd?: string; - logfile?: string; - restartAlarm?: Observable; - children?: ReactNode; - }; - -export async function devServerStart({ - stdout = process.stdout, - stdin = process.stdin, - header, - cwd = process.cwd(), - logfile = tmp.fileSync({ mode: 0o644, postfix: '.log' }).name, - port, - hostname, - devServerConfig, - restartAlarm, - children, - ..._webpackConfigs -}: DevServerStartParams): Promise<() => Promise> { - const webpackConfigs = - 'webpackConfigs' in _webpackConfigs - ? _webpackConfigs.webpackConfigs - : [_webpackConfigs.webpackConfig]; - - if (!fs.existsSync(path.dirname(logfile))) { - fs.mkdirpSync(path.dirname(logfile)); - } - - const interactiveUI = !process.env.CI && process.env.NODE_ENV !== 'test'; - const clearUI: (() => void)[] = []; - - if (interactiveUI) { - console.clear(); - const stream: NodeJS.WritableStream = fs.createWriteStream(logfile); - const restoreConsole = patchConsole({ - stdout: stream, - stderr: stream, - colorMode: false, - }); - clearUI.push(restoreConsole); - } - - const server: DevServer = new DevServer({ - port, - hostname, - webpackConfigs, - devServerConfig, - }); - - if (interactiveUI) { - const { unmount, rerender } = render( - { - rerender( - - [DevServer Closed] {logfile} - , - ); - process.exit(); - }} - />, - { - stdout, - stdin, - patchConsole: false, - exitOnCtrlC: false, - }, - ); - clearUI.push(unmount); - } - - await server.waitUntilStart(); - - return async () => { - server.close(); - await server.waitUntilClose(); - clearUI.forEach((fn) => fn()); - await new Promise((resolve) => setTimeout(resolve, 1000)); - }; -} diff --git a/packages/src/@ssen/webpack-dev-server/index.ts b/packages/src/@ssen/webpack-dev-server/index.ts deleted file mode 100644 index e3668185..00000000 --- a/packages/src/@ssen/webpack-dev-server/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from './devServerStart'; -export * from './DevServer'; -export * from './DevServerUI'; -export * from './types'; diff --git a/packages/src/@ssen/webpack-dev-server/types.ts b/packages/src/@ssen/webpack-dev-server/types.ts deleted file mode 100644 index 995fd59f..00000000 --- a/packages/src/@ssen/webpack-dev-server/types.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { MultiStats } from 'webpack'; - -export enum DevServerStatus { - STARTING, - STARTED, - CLOSING, - CLOSED, -} - -export type WebpackStats = - | { - status: 'waiting' | 'invalid'; - } - | { - status: 'done'; - statsData: MultiStats; - }; - -export type TimeMessage = { - time: number; - level: 'log' | 'info' | 'warn' | 'debug' | 'error'; - message: string; -}; diff --git a/packages/src/@ssen/webpack-watch-server/DevServer.ts b/packages/src/@ssen/webpack-watch-server/DevServer.ts deleted file mode 100644 index ef2abdcc..00000000 --- a/packages/src/@ssen/webpack-watch-server/DevServer.ts +++ /dev/null @@ -1,136 +0,0 @@ -import { BehaviorSubject } from 'rxjs'; -import webpack, { - Configuration as WebpackConfiguration, - MultiCompiler, - MultiStats, -} from 'webpack'; -import { DevServerStatus, WebpackStats } from './types'; - -export type WatchParams = Parameters; -export type WatchOptions = WatchParams[0]; -export type Watching = ReturnType; - -export interface DevServerParams { - webpackConfigs: WebpackConfiguration[]; - watchOptions?: WatchOptions; -} - -export class DevServer { - readonly compiler: MultiCompiler; - - private watching: Watching; - - private readonly statusSubject: BehaviorSubject; - private readonly webpackStatusSubject: BehaviorSubject; - - private readonly startResolvers: Set<() => void> = new Set(); - private readonly closeResolvers: Set<() => void> = new Set(); - - constructor({ webpackConfigs, watchOptions = {} }: DevServerParams) { - this.compiler = webpack(webpackConfigs); - - this.statusSubject = new BehaviorSubject( - DevServerStatus.STARTING, - ); - - this.webpackStatusSubject = new BehaviorSubject({ - status: 'waiting', - }); - - this.compiler.hooks.invalid.tap('invalid', () => { - this.webpackStatusSubject.next({ - status: 'invalid', - }); - }); - - this.watching = this.compiler.watch( - watchOptions, - (error?: Error, stats?: MultiStats) => { - if (error) { - throw error; - } else if (stats) { - console.log( - stats.toString({ - colors: false, - }), - ); - - this.webpackStatusSubject.next({ - status: 'done', - statsData: stats, - }); - } else { - throw new Error('No error and stats'); - } - }, - ); - - const startSubscription = this.webpackStatusSubject.subscribe( - (stats: WebpackStats) => { - if (stats.status !== 'waiting') { - startSubscription.unsubscribe(); - this.onStart(); - } - }, - ); - } - - public status = () => this.statusSubject.asObservable(); - - public webpackStats = () => this.webpackStatusSubject.asObservable(); - - public waitUntilStart = () => - new Promise((resolve) => { - if (this.statusSubject.getValue() >= DevServerStatus.STARTED) { - resolve(); - } else { - this.startResolvers.add(resolve); - } - }); - - private onStart = () => { - for (const resolve of this.startResolvers) { - resolve(); - } - this.startResolvers.clear(); - - this.statusSubject.next(DevServerStatus.STARTED); - }; - - public close = () => { - if (this.statusSubject.getValue() !== DevServerStatus.STARTED) { - return; - } - - this.statusSubject.next(DevServerStatus.CLOSING); - - this.watching.close(() => { - this.onClose(); - }); - }; - - public waitUntilClose = () => - new Promise((resolve) => { - if ( - this.statusSubject.isStopped || - this.statusSubject.getValue() >= DevServerStatus.CLOSED - ) { - resolve(); - } else { - this.closeResolvers.add(resolve); - } - }); - - private onClose = () => { - for (const resolve of this.closeResolvers) { - resolve(); - } - this.closeResolvers.clear(); - - this.webpackStatusSubject.unsubscribe(); - - this.statusSubject.next(DevServerStatus.CLOSED); - - this.statusSubject.unsubscribe(); - }; -} diff --git a/packages/src/@ssen/webpack-watch-server/DevServerUI.tsx b/packages/src/@ssen/webpack-watch-server/DevServerUI.tsx deleted file mode 100644 index 0943b685..00000000 --- a/packages/src/@ssen/webpack-watch-server/DevServerUI.tsx +++ /dev/null @@ -1,218 +0,0 @@ -import { Divider, PadText } from '@ssen/dev-server-components'; -import { MirrorMessage } from '@ssen/mirror-files'; -import { exec } from 'child_process'; -import { format } from 'date-fns'; -import { Box, Text, useInput, useStdin } from 'ink'; -import useStdoutDimensions from 'ink-use-stdout-dimensions'; -import React, { ReactNode, useEffect, useMemo, useState } from 'react'; -import { Observable } from 'rxjs'; -import { DevServer } from './DevServer'; -import { DevServerStatus, WebpackStats } from './types'; - -export interface DevServerUIProps { - header?: ReactNode; - devServer: DevServer; - syncStaticFiles?: Observable; - cwd: string; - logfile: string; - restartAlarm?: Observable; - children?: ReactNode; - exit: () => void; -} - -export function DevServerUI({ - header, - devServer, - syncStaticFiles, - cwd, - logfile, - restartAlarm, - children, - exit, -}: DevServerUIProps) { - const [status, setStatus] = useState( - DevServerStatus.STARTING, - ); - const [webpackStats, setWebpackStats] = useState({ - status: 'waiting', - }); - const [restartMessages, setRestartMessages] = useState(null); - const [syncStaticFilesMessages, setSyncStaticFilesMessages] = useState< - MirrorMessage[] - >([]); - - useEffect(() => { - const statusSubscription = devServer.status().subscribe(setStatus); - const webpackStatsSubscription = devServer - .webpackStats() - .subscribe(setWebpackStats); - - return () => { - statusSubscription.unsubscribe(); - webpackStatsSubscription.unsubscribe(); - }; - }, [devServer]); - - useEffect(() => { - if (restartAlarm) { - const subscription = restartAlarm.subscribe((next) => { - if (next.some((message) => !!message)) { - setRestartMessages(next.filter((message) => !!message)); - } else { - setRestartMessages(null); - } - }); - - return () => { - subscription.unsubscribe(); - }; - } else { - setRestartMessages(null); - } - }, [restartAlarm]); - - useEffect(() => { - if (syncStaticFiles) { - const subscription = syncStaticFiles.subscribe((message) => { - setSyncStaticFilesMessages((prev) => { - return [message, ...prev].slice(0, 5); - }); - }); - - return () => { - subscription.unsubscribe(); - }; - } - }, [syncStaticFiles]); - - const webpackStatsJson = useMemo(() => { - return webpackStats.status === 'done' - ? webpackStats.statsData.toJson({ - all: false, - errors: true, - warnings: true, - timings: true, - }) - : null; - }, [webpackStats]); - - const { isRawModeSupported } = useStdin(); - - useInput( - (input, key) => { - if (input === 'q' || (input === 'c' && key.ctrl)) { - exit(); - } - - switch (input) { - case 'l': - exec(`code ${logfile}`); - break; - case 'p': - exec(`code ${cwd}`); - break; - } - }, - { isActive: isRawModeSupported === true }, - ); - - const [, height] = useStdoutDimensions(); - - return ( - - {typeof header === 'string' ? {header} : header} - - - {logfile} - - - {isRawModeSupported === true && ( - - )} - - - {status === DevServerStatus.STARTING - ? 'DevServer Starting...' - : status === DevServerStatus.STARTED - ? 'DevServer Started!' - : status === DevServerStatus.CLOSING - ? 'DevServer Closing...' - : 'DevServer Closed.'} - - - - {webpackStats.status === 'waiting' - ? 'Server Stating...' - : webpackStats.status === 'invalid' - ? 'Compiling...' - : webpackStatsJson - ? Array.isArray(webpackStatsJson.children) - ? `Compiled (${webpackStatsJson.children - .map(({ time }) => time + 'ms') - .join(', ')})` - : `Compiled (${webpackStatsJson.time}ms)` - : '?? Unknown Webpack Status ??'} - - - {restartMessages && restartMessages.length > 0 && ( - <> - - Restart server! - - {restartMessages.map((message) => ( - - {message} - - ))} - - )} - - {webpackStatsJson?.errors && webpackStatsJson.errors.length > 0 && ( - <> - - Error - - {webpackStatsJson.errors.map((error) => ( - - {JSON.stringify(error)} - - ))} - - )} - - {webpackStatsJson?.warnings && webpackStatsJson.warnings.length > 0 && ( - <> - - Warning - - {webpackStatsJson.warnings.map((warning) => ( - - {JSON.stringify(warning)} - - ))} - - )} - - {syncStaticFilesMessages.length > 0 && ( - <> - Sync Static Files - {syncStaticFilesMessages.map(({ type, file, time }, i) => ( - 3} - > - [{format(time, 'hh:mm:ss')}] [{type}] {file} - - ))} - - )} - - {children} - - ); -} diff --git a/packages/src/@ssen/webpack-watch-server/__run__/basic.run.ts b/packages/src/@ssen/webpack-watch-server/__run__/basic.run.ts deleted file mode 100644 index 80750ff5..00000000 --- a/packages/src/@ssen/webpack-watch-server/__run__/basic.run.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { copyFixture } from '@ssen/copy-fixture'; -import { devServerStart } from '@ssen/webpack-watch-server/devServerStart'; -import path from 'path'; - -(async () => { - const cwd: string = await copyFixture( - 'test/fixtures/webpack-dev-server/basic', - ); - - const webpackConfig = require(`${cwd}/webpack.config.js`); - - await devServerStart({ - cwd, - header: '\nBASIC SAMPLE!!!\n', - logfile: path.join(cwd, 'rocket-test.log'), - webpackConfigs: [webpackConfig], - outDir: path.join(cwd, 'dev'), - }); -})(); diff --git a/packages/src/@ssen/webpack-watch-server/__run__/multi.run.ts b/packages/src/@ssen/webpack-watch-server/__run__/multi.run.ts deleted file mode 100644 index 9c4b4f36..00000000 --- a/packages/src/@ssen/webpack-watch-server/__run__/multi.run.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { copyFixture } from '@ssen/copy-fixture'; -import { devServerStart } from '@ssen/webpack-watch-server/devServerStart'; -import path from 'path'; - -(async () => { - const cwd: string = await copyFixture( - 'test/fixtures/webpack-dev-server/multi', - ); - - const indexWebpackConfig = require(`${cwd}/index.webpack.config.js`); - const anotherWebpackConfig = require(`${cwd}/another.webpack.config.js`); - - await devServerStart({ - cwd, - header: '\nMULTI SAMPLE!!!\n', - logfile: path.join(cwd, 'rocket-test.log'), - webpackConfigs: [indexWebpackConfig, anotherWebpackConfig], - outDir: path.join(cwd, 'dev'), - }); -})(); diff --git a/packages/src/@ssen/webpack-watch-server/__tests__/webpack-watch-server.test.ts b/packages/src/@ssen/webpack-watch-server/__tests__/webpack-watch-server.test.ts deleted file mode 100644 index b5f6546c..00000000 --- a/packages/src/@ssen/webpack-watch-server/__tests__/webpack-watch-server.test.ts +++ /dev/null @@ -1,93 +0,0 @@ -import { copyFixture } from '@ssen/copy-fixture'; -import { createInkWriteStream } from '@ssen/ink-helpers'; -import { glob } from '@ssen/promised'; -import { devServerStart } from '@ssen/webpack-watch-server'; -import path from 'path'; - -describe('webpack-watch-server', () => { - test('should create files', async () => { - // Arrange : project directories - const cwd: string = await copyFixture( - 'test/fixtures/webpack-dev-server/basic', - ); - const outDir = path.join(cwd, 'dist'); - const staticFileDirectories = [path.join(cwd, 'public')]; - - const { - devServer: devServerConfig, - ...webpackConfig - } = require(`${cwd}/webpack.config.js`); - - // Arrange : stdout - const stdout = createInkWriteStream(); - - // Act : server start - const close = await devServerStart({ - cwd, - header: '\nBASIC SAMPLE!!!\n', - outDir, - staticFileDirectories, - webpackConfigs: [webpackConfig], - stdout, - logfile: process.env.CI - ? path.join(process.cwd(), `logs/webpack-dev-server.txt`) - : undefined, - }); - - // Assert - await expect(glob(`${outDir}/manifest.json`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/favicon.ico`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/index.html`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/index.js`)).resolves.toHaveLength(1); - - // Exit - await close(); - - console.log(stdout.lastFrame()); - }); - - test('should create multiple files', async () => { - // Arrange : project directories - const cwd: string = await copyFixture( - 'test/fixtures/webpack-dev-server/multi', - ); - const outDir: string = path.join(cwd, 'dist'); - const staticFileDirectories = [path.join(cwd, 'public')]; - - const { - devServer: devServerConfig, - ...indexWebpackConfig - } = require(`${cwd}/index.webpack.config.js`); - - const anotherWebpackConfig = require(`${cwd}/another.webpack.config.js`); - - // Arrange : stdout - const stdout = createInkWriteStream(); - - // Act : server start - const close = await devServerStart({ - cwd, - header: '\nBASIC SAMPLE!!!\n', - outDir, - staticFileDirectories, - webpackConfigs: [indexWebpackConfig, anotherWebpackConfig], - stdout, - logfile: process.env.CI - ? path.join(process.cwd(), `logs/webpack-dev-server.txt`) - : undefined, - }); - - // Assert - await expect(glob(`${outDir}/manifest.json`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/favicon.ico`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/index.html`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/index.js`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/another.html`)).resolves.toHaveLength(1); - await expect(glob(`${outDir}/another.js`)).resolves.toHaveLength(1); - - // Exit - await close(); - - console.log(stdout.lastFrame()); - }); -}); diff --git a/packages/src/@ssen/webpack-watch-server/devServerStart.tsx b/packages/src/@ssen/webpack-watch-server/devServerStart.tsx deleted file mode 100644 index 960d51aa..00000000 --- a/packages/src/@ssen/webpack-watch-server/devServerStart.tsx +++ /dev/null @@ -1,127 +0,0 @@ -import { mirrorFiles, MirrorMessage } from '@ssen/mirror-files'; -import { patchConsole } from '@ssen/patch-console'; -import fs from 'fs-extra'; -import { Box, render, Text } from 'ink'; -import path from 'path'; -import React, { ReactNode } from 'react'; -import { ConnectableObservable, Observable, Subject, Subscription } from 'rxjs'; -import { multicast } from 'rxjs/operators'; -import tmp from 'tmp'; -import { DevServer, DevServerParams } from './DevServer'; -import { DevServerUI } from './DevServerUI'; - -export interface DevServerStartParams extends DevServerParams { - staticFileDirectories?: string[]; - stdout?: NodeJS.WriteStream; - stdin?: NodeJS.ReadStream; - header?: ReactNode; - cwd?: string; - outDir: string; - logfile?: string; - restartAlarm?: Observable; - children?: ReactNode; -} - -export async function devServerStart({ - stdout = process.stdout, - stdin = process.stdin, - staticFileDirectories, - header, - cwd = process.cwd(), - outDir, - logfile = tmp.fileSync({ mode: 0o644, postfix: '.log' }).name, - restartAlarm, - children, - webpackConfigs, - watchOptions = {}, -}: DevServerStartParams): Promise<() => Promise> { - if (!fs.existsSync(path.dirname(logfile))) { - fs.mkdirpSync(path.dirname(logfile)); - } - - const interactiveUI = !process.env.CI && process.env.NODE_ENV !== 'test'; - const clearUI: (() => void)[] = []; - - if (interactiveUI) { - console.clear(); - const stream: NodeJS.WritableStream = fs.createWriteStream(logfile); - const restoreConsole = patchConsole({ - stdout: stream, - stderr: stream, - colorMode: false, - }); - clearUI.push(restoreConsole); - } - - let syncStaticFiles: Observable | undefined; - let syncStaticFilesSubscription: Subscription; - - if (staticFileDirectories && staticFileDirectories.length > 0) { - await fs.mkdirp(outDir); - await Promise.all( - staticFileDirectories.map((dir) => - fs.copy(dir, outDir, { dereference: true }), - ), - ); - - syncStaticFiles = - Array.isArray(staticFileDirectories) && staticFileDirectories.length > 0 - ? mirrorFiles({ - filesDirsOrGlobs: staticFileDirectories, - outDir, - }) - : undefined; - - const syncStaticFilesCaster: - | ConnectableObservable - | undefined = syncStaticFiles?.pipe( - multicast(() => new Subject()), - ) as ConnectableObservable; - - syncStaticFilesSubscription = syncStaticFilesCaster?.connect(); - } - - const server: DevServer = new DevServer({ - webpackConfigs, - watchOptions, - }); - - if (interactiveUI) { - const { unmount, rerender } = render( - { - rerender( - - [DevServer Closed] {logfile} - , - ); - process.exit(); - }} - />, - { - stdout, - stdin, - patchConsole: false, - exitOnCtrlC: false, - }, - ); - clearUI.push(unmount); - } - - await server.waitUntilStart(); - - return async () => { - server.close(); - await server.waitUntilClose(); - syncStaticFilesSubscription?.unsubscribe(); - clearUI.forEach((fn) => fn()); - await new Promise((resolve) => setTimeout(resolve, 1000)); - }; -} diff --git a/packages/src/@ssen/webpack-watch-server/index.ts b/packages/src/@ssen/webpack-watch-server/index.ts deleted file mode 100644 index e3668185..00000000 --- a/packages/src/@ssen/webpack-watch-server/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from './devServerStart'; -export * from './DevServer'; -export * from './DevServerUI'; -export * from './types'; diff --git a/packages/src/@ssen/webpack-watch-server/types.ts b/packages/src/@ssen/webpack-watch-server/types.ts deleted file mode 100644 index 990ee11c..00000000 --- a/packages/src/@ssen/webpack-watch-server/types.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { MultiStats } from 'webpack'; - -export enum DevServerStatus { - STARTING, - STARTED, - CLOSING, - CLOSED, -} - -export type WebpackStats = - | { - status: 'waiting' | 'invalid'; - } - | { - status: 'done'; - statsData: MultiStats; - }; diff --git a/packages/test/e2e.sh b/packages/test/e2e.sh index 8b90c82e..aa158c35 100644 --- a/packages/test/e2e.sh +++ b/packages/test/e2e.sh @@ -99,99 +99,99 @@ function createTmpFixture() { yarn install --registry "$LOCAL_REGISTRY_URL" > /dev/null; } -# webpack-dev-server - -createTmpFixture webpack-dev-server/basic; -yarn add @ssen/webpack-dev-server@e2e --dev --registry "$LOCAL_REGISTRY_URL" > /dev/null; -(PORT=$TEST_SERVER_PORT yarn run start &> log.txt &); -sleep 15s; -is200 "http://localhost:$TEST_SERVER_PORT"; -stopTestServer; - -# web - -createTmpFixture web/start; -yarn add @rocket-scripts/web@e2e --dev --registry "$LOCAL_REGISTRY_URL" > /dev/null; - -(PORT=$TEST_SERVER_PORT yarn run start &> log.txt &); -sleep 15s; -is200 "http://localhost:$TEST_SERVER_PORT"; -is200 "http://localhost:$TEST_SERVER_PORT/manifest.json"; -is200 "http://localhost:$TEST_SERVER_PORT/favicon.ico"; -stopTestServer; - -yarn run build; -fileExists "$TEMP"/out/app/manifest.json; -fileExists "$TEMP"/out/app/size-report.html; -fileExists "$TEMP"/out/app/favicon.ico; -fileExists "$TEMP"/out/app/index.html; -fileExists "$TEMP"/out/app/index.*.js; -fileExists "$TEMP"/out/app/vendor.*.js; - - -createTmpFixture web/worker; -yarn add @rocket-scripts/web@e2e --dev --registry "$LOCAL_REGISTRY_URL" > /dev/null; - -yarn run build; -fileExists "$TEMP"/out/app/manifest.json; -fileExists "$TEMP"/out/app/size-report.html; -fileExists "$TEMP"/out/app/favicon.ico; -fileExists "$TEMP"/out/app/index.html; -fileExists "$TEMP"/out/app/index.*.js; -fileExists "$TEMP"/out/app/vendor.*.js; -fileExists "$TEMP"/out/app/*.worker.js; - - -createTmpFixture web/webpack-config; -yarn add @rocket-scripts/web@e2e --dev --registry "$LOCAL_REGISTRY_URL" > /dev/null; - -(PORT=$TEST_SERVER_PORT yarn run start &> log.txt &); -sleep 15s; -is200 "http://localhost:$TEST_SERVER_PORT"; -is200 "http://localhost:$TEST_SERVER_PORT/manifest.json"; -is200 "http://localhost:$TEST_SERVER_PORT/favicon.ico"; -stopTestServer; - -yarn run build; -fileExists "$TEMP"/out/app/manifest.json; -fileExists "$TEMP"/out/app/size-report.html; -fileExists "$TEMP"/out/app/favicon.ico; -fileExists "$TEMP"/out/app/index.*.js; -fileExists "$TEMP"/out/app/index.html; - - -createTmpFixture web/static-file-directories; -yarn add @rocket-scripts/web@e2e --dev --registry "$LOCAL_REGISTRY_URL" > /dev/null; - -(PORT=$TEST_SERVER_PORT yarn run start &> log.txt &); -sleep 15s; -is200 "http://localhost:$TEST_SERVER_PORT"; -is200 "http://localhost:$TEST_SERVER_PORT/manifest.json"; -is200 "http://localhost:$TEST_SERVER_PORT/favicon.ico"; -is200 "http://localhost:$TEST_SERVER_PORT/hello.json"; -stopTestServer; - -yarn run build; -fileExists "$TEMP"/out/app/manifest.json; -fileExists "$TEMP"/out/app/size-report.html; -fileExists "$TEMP"/out/app/favicon.ico; -fileExists "$TEMP"/out/app/index.*.js; -fileExists "$TEMP"/out/app/index.html; -fileExists "$TEMP"/out/app/hello.json; - - -createTmpFixture web/proxy; -yarn add @rocket-scripts/web@e2e --dev --registry "$LOCAL_REGISTRY_URL" > /dev/null; - -(PORT=$TEST_SERVER_PORT yarn run start &> log.txt &); -sleep 15s; -is200 "http://localhost:$TEST_SERVER_PORT"; -is200 "http://localhost:$TEST_SERVER_PORT/manifest.json"; -is200 "http://localhost:$TEST_SERVER_PORT/favicon.ico"; -is200 "http://localhost:$TEST_SERVER_PORT/api/assets/book-opened.svg"; -stopTestServer; - -# TODO out-dir +## webpack-dev-server +# +#createTmpFixture webpack-dev-server/basic; +#yarn add @ssen/webpack-dev-server@e2e --dev --registry "$LOCAL_REGISTRY_URL" > /dev/null; +#(PORT=$TEST_SERVER_PORT yarn run start &> log.txt &); +#sleep 15s; +#is200 "http://localhost:$TEST_SERVER_PORT"; +#stopTestServer; +# +## web +# +#createTmpFixture web/start; +#yarn add @rocket-scripts/web@e2e --dev --registry "$LOCAL_REGISTRY_URL" > /dev/null; +# +#(PORT=$TEST_SERVER_PORT yarn run start &> log.txt &); +#sleep 15s; +#is200 "http://localhost:$TEST_SERVER_PORT"; +#is200 "http://localhost:$TEST_SERVER_PORT/manifest.json"; +#is200 "http://localhost:$TEST_SERVER_PORT/favicon.ico"; +#stopTestServer; +# +#yarn run build; +#fileExists "$TEMP"/out/app/manifest.json; +#fileExists "$TEMP"/out/app/size-report.html; +#fileExists "$TEMP"/out/app/favicon.ico; +#fileExists "$TEMP"/out/app/index.html; +#fileExists "$TEMP"/out/app/index.*.js; +#fileExists "$TEMP"/out/app/vendor.*.js; +# +# +#createTmpFixture web/worker; +#yarn add @rocket-scripts/web@e2e --dev --registry "$LOCAL_REGISTRY_URL" > /dev/null; +# +#yarn run build; +#fileExists "$TEMP"/out/app/manifest.json; +#fileExists "$TEMP"/out/app/size-report.html; +#fileExists "$TEMP"/out/app/favicon.ico; +#fileExists "$TEMP"/out/app/index.html; +#fileExists "$TEMP"/out/app/index.*.js; +#fileExists "$TEMP"/out/app/vendor.*.js; +#fileExists "$TEMP"/out/app/*.worker.js; +# +# +#createTmpFixture web/webpack-config; +#yarn add @rocket-scripts/web@e2e --dev --registry "$LOCAL_REGISTRY_URL" > /dev/null; +# +#(PORT=$TEST_SERVER_PORT yarn run start &> log.txt &); +#sleep 15s; +#is200 "http://localhost:$TEST_SERVER_PORT"; +#is200 "http://localhost:$TEST_SERVER_PORT/manifest.json"; +#is200 "http://localhost:$TEST_SERVER_PORT/favicon.ico"; +#stopTestServer; +# +#yarn run build; +#fileExists "$TEMP"/out/app/manifest.json; +#fileExists "$TEMP"/out/app/size-report.html; +#fileExists "$TEMP"/out/app/favicon.ico; +#fileExists "$TEMP"/out/app/index.*.js; +#fileExists "$TEMP"/out/app/index.html; +# +# +#createTmpFixture web/static-file-directories; +#yarn add @rocket-scripts/web@e2e --dev --registry "$LOCAL_REGISTRY_URL" > /dev/null; +# +#(PORT=$TEST_SERVER_PORT yarn run start &> log.txt &); +#sleep 15s; +#is200 "http://localhost:$TEST_SERVER_PORT"; +#is200 "http://localhost:$TEST_SERVER_PORT/manifest.json"; +#is200 "http://localhost:$TEST_SERVER_PORT/favicon.ico"; +#is200 "http://localhost:$TEST_SERVER_PORT/hello.json"; +#stopTestServer; +# +#yarn run build; +#fileExists "$TEMP"/out/app/manifest.json; +#fileExists "$TEMP"/out/app/size-report.html; +#fileExists "$TEMP"/out/app/favicon.ico; +#fileExists "$TEMP"/out/app/index.*.js; +#fileExists "$TEMP"/out/app/index.html; +#fileExists "$TEMP"/out/app/hello.json; +# +# +#createTmpFixture web/proxy; +#yarn add @rocket-scripts/web@e2e --dev --registry "$LOCAL_REGISTRY_URL" > /dev/null; +# +#(PORT=$TEST_SERVER_PORT yarn run start &> log.txt &); +#sleep 15s; +#is200 "http://localhost:$TEST_SERVER_PORT"; +#is200 "http://localhost:$TEST_SERVER_PORT/manifest.json"; +#is200 "http://localhost:$TEST_SERVER_PORT/favicon.ico"; +#is200 "http://localhost:$TEST_SERVER_PORT/api/assets/book-opened.svg"; +#stopTestServer; +# +## TODO out-dir # EXIT # ==================================================---------------------------------- diff --git a/yarn.lock b/yarn.lock index 728b2bce..05cfd597 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,19 +23,19 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.5.5, @babel/code-frame@npm:^7.8.3": - version: 7.12.13 - resolution: "@babel/code-frame@npm:7.12.13" +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.14.5, @babel/code-frame@npm:^7.5.5": + version: 7.14.5 + resolution: "@babel/code-frame@npm:7.14.5" dependencies: - "@babel/highlight": ^7.12.13 - checksum: d0491bb59fb8d7a763cb175c5504818cfd3647321d8eedb9173336d5c47dccce248628ee68b3ed3586c5efc753d8d990ceafe956f707dcf92572a1661b92b1ef + "@babel/highlight": ^7.14.5 + checksum: 0adbe4f8d91586f764f524e57631f582ab988b2ef504391a5d89db29bfaaf7c67c237798ed4a249b6a2d7135852cf94d3d07ce6b9739dd1df1f271d5ed069565 languageName: node linkType: hard -"@babel/compat-data@npm:^7.13.0, @babel/compat-data@npm:^7.13.12, @babel/compat-data@npm:^7.13.8, @babel/compat-data@npm:^7.14.4": - version: 7.14.4 - resolution: "@babel/compat-data@npm:7.14.4" - checksum: 38f6388bb564c24878124120dc1684e290405c0c1c3698a3569a3e19ce732a64cd799186df4e51ec37dc4d6e93fa82f61fe1751d0326399ba061e914f36416ad +"@babel/compat-data@npm:^7.13.0, @babel/compat-data@npm:^7.13.12, @babel/compat-data@npm:^7.13.8, @babel/compat-data@npm:^7.15.0": + version: 7.15.0 + resolution: "@babel/compat-data@npm:7.15.0" + checksum: 65088d87b14966dcdba397c799f312beb1e7a4dac178e7daa922a17ee9b65d8cfd9f35ff8352ccb6e20bb9a169df1171263ef5fd5967aa25d544ea3f62681993 languageName: node linkType: hard @@ -63,37 +63,37 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:7.14.3, @babel/core@npm:^7.1.0, @babel/core@npm:^7.12.17, @babel/core@npm:^7.12.3, @babel/core@npm:^7.4.5, @babel/core@npm:^7.7.5": - version: 7.14.3 - resolution: "@babel/core@npm:7.14.3" +"@babel/core@npm:7.15.0, @babel/core@npm:^7.1.0, @babel/core@npm:^7.12.17, @babel/core@npm:^7.12.3, @babel/core@npm:^7.15.0, @babel/core@npm:^7.4.5, @babel/core@npm:^7.7.5": + version: 7.15.0 + resolution: "@babel/core@npm:7.15.0" dependencies: - "@babel/code-frame": ^7.12.13 - "@babel/generator": ^7.14.3 - "@babel/helper-compilation-targets": ^7.13.16 - "@babel/helper-module-transforms": ^7.14.2 - "@babel/helpers": ^7.14.0 - "@babel/parser": ^7.14.3 - "@babel/template": ^7.12.13 - "@babel/traverse": ^7.14.2 - "@babel/types": ^7.14.2 + "@babel/code-frame": ^7.14.5 + "@babel/generator": ^7.15.0 + "@babel/helper-compilation-targets": ^7.15.0 + "@babel/helper-module-transforms": ^7.15.0 + "@babel/helpers": ^7.14.8 + "@babel/parser": ^7.15.0 + "@babel/template": ^7.14.5 + "@babel/traverse": ^7.15.0 + "@babel/types": ^7.15.0 convert-source-map: ^1.7.0 debug: ^4.1.0 gensync: ^1.0.0-beta.2 json5: ^2.1.2 semver: ^6.3.0 source-map: ^0.5.0 - checksum: b91ed6adc790428966e134b9b8bfa1f2d54d8867877057ed9f9fcc354475a26d267afd6b0c84ac1a7ac7805bffc7b3353fdd9d894e58ef52c7c7e06f17044fd0 + checksum: 6f7ac97d2d2eebe62a431ce55b37753aa443b762da0524640caa2f7d4417750f8e21f3eb30d62f25e479f93dac505c868d24011b124cfa6905abebb23b44715c languageName: node linkType: hard -"@babel/generator@npm:^7.12.5, @babel/generator@npm:^7.14.2, @babel/generator@npm:^7.14.3": - version: 7.14.3 - resolution: "@babel/generator@npm:7.14.3" +"@babel/generator@npm:^7.12.5, @babel/generator@npm:^7.15.0": + version: 7.15.0 + resolution: "@babel/generator@npm:7.15.0" dependencies: - "@babel/types": ^7.14.2 + "@babel/types": ^7.15.0 jsesc: ^2.5.1 source-map: ^0.5.0 - checksum: 2c104bbe531935d73a66b6c1370da2e986e94154e7e574bd081fe6abe0d493e39d94a38a4c07c415aa90281047f858a51967b74eed83fec17cbca98a657e864a + checksum: ef227c4c39ab810616b1d76cf9fa7b452b3a36ae1f26d52c2a7c68edcba29d6dd3cd3e88c58f6e3969a58dadee7b73016d3cabbd6f0040ff832f686db4679628 languageName: node linkType: hard @@ -116,17 +116,17 @@ __metadata: languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.13.0, @babel/helper-compilation-targets@npm:^7.13.10, @babel/helper-compilation-targets@npm:^7.13.16, @babel/helper-compilation-targets@npm:^7.13.8": - version: 7.14.4 - resolution: "@babel/helper-compilation-targets@npm:7.14.4" +"@babel/helper-compilation-targets@npm:^7.13.0, @babel/helper-compilation-targets@npm:^7.13.10, @babel/helper-compilation-targets@npm:^7.13.8, @babel/helper-compilation-targets@npm:^7.15.0": + version: 7.15.0 + resolution: "@babel/helper-compilation-targets@npm:7.15.0" dependencies: - "@babel/compat-data": ^7.14.4 - "@babel/helper-validator-option": ^7.12.17 + "@babel/compat-data": ^7.15.0 + "@babel/helper-validator-option": ^7.14.5 browserslist: ^4.16.6 semver: ^6.3.0 peerDependencies: "@babel/core": ^7.0.0 - checksum: 0a6a3215d6aad027eee73c3ac5ec8ad353b493e8b3c4f27589528ffd3c53277fd5f5b8beaf5f23d68770f72b132d9f34f00d1a2141df692b31bb8bd124154704 + checksum: 82a1f5d8041d39454fe5d7d109e32e90f5c6c13f0e87c7ac94332ac79a1fb62ab135b2f8ceba07ba307bb0db792c1f64796aec68bb258a13aa69a56ee65e2427 languageName: node linkType: hard @@ -184,76 +184,75 @@ __metadata: languageName: node linkType: hard -"@babel/helper-function-name@npm:^7.12.13, @babel/helper-function-name@npm:^7.14.2": - version: 7.14.2 - resolution: "@babel/helper-function-name@npm:7.14.2" +"@babel/helper-function-name@npm:^7.12.13, @babel/helper-function-name@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/helper-function-name@npm:7.14.5" dependencies: - "@babel/helper-get-function-arity": ^7.12.13 - "@babel/template": ^7.12.13 - "@babel/types": ^7.14.2 - checksum: 70365d36ad1707e240916e160ced4bc1b3a57a0f4a1dfe7da3fd5c53afd1527610b53097c39deb72e63893bf5ad7d1676c7d546710043d24573347936103a9f0 + "@babel/helper-get-function-arity": ^7.14.5 + "@babel/template": ^7.14.5 + "@babel/types": ^7.14.5 + checksum: fd8ffa82f7622b6e9a6294fb3b98b42e743ab2a8e3c329367667a960b5b98b48bc5ebf8be7308981f1985b9f3c69e1a3b4a91c8944ae97c31803240da92fb3c8 languageName: node linkType: hard -"@babel/helper-get-function-arity@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-get-function-arity@npm:7.12.13" +"@babel/helper-get-function-arity@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/helper-get-function-arity@npm:7.14.5" dependencies: - "@babel/types": ^7.12.13 - checksum: 847ef9f4d4b2dc38574db6b0732c3add1cd65d54bab94c24d319188f2066c9b9ab2b0dda539cae7281d12ec302e3335b11ca3dcfb555566138d213905d00f711 + "@babel/types": ^7.14.5 + checksum: a60779918b677a35e177bb4f46babfd54e9790587b6a4f076092a9eff2a940cbeacdeb10c94331b26abfe838769554d72293d16df897246cfccd1444e5e27cb7 languageName: node linkType: hard -"@babel/helper-hoist-variables@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/helper-hoist-variables@npm:7.13.0" +"@babel/helper-hoist-variables@npm:^7.13.0, @babel/helper-hoist-variables@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/helper-hoist-variables@npm:7.14.5" dependencies: - "@babel/traverse": ^7.13.0 - "@babel/types": ^7.13.0 - checksum: 14980ab95c9687f8df72d2ce4a074e2560d16b03de5c5e10382c06b779e1982c99da0625ec338a82fa2fd63048f97a25d46a692e83f5524cab5f9f1402743aff + "@babel/types": ^7.14.5 + checksum: 35af58eebffca10988de7003e044ce2d27212aea72ac6d2c4604137da7f1e193cc694d8d60805d0d0beaf3d990f6f2dcc2622c52e3d3148e37017a29cacf2e56 languageName: node linkType: hard -"@babel/helper-member-expression-to-functions@npm:^7.13.0, @babel/helper-member-expression-to-functions@npm:^7.13.12": - version: 7.13.12 - resolution: "@babel/helper-member-expression-to-functions@npm:7.13.12" +"@babel/helper-member-expression-to-functions@npm:^7.13.0, @babel/helper-member-expression-to-functions@npm:^7.15.0": + version: 7.15.0 + resolution: "@babel/helper-member-expression-to-functions@npm:7.15.0" dependencies: - "@babel/types": ^7.13.12 - checksum: 76a5ad6ae60bec5cbef56dc2ef0e08269a985c41137e50bce642dd6c1d228c5454f656ba0de4ec819dfcbced007ec516f3c1ceaffff8d17c3957e4608be0fc8c + "@babel/types": ^7.15.0 + checksum: 63b4824839990fbf3fe38b5c8a7b002a73bb2161e72b7146b1dc256671bcf36f34587a927e597a556dd496b49089cf13ea77877482aef1f35f628899042127ae languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.12.13, @babel/helper-module-imports@npm:^7.13.12": - version: 7.13.12 - resolution: "@babel/helper-module-imports@npm:7.13.12" +"@babel/helper-module-imports@npm:^7.12.13, @babel/helper-module-imports@npm:^7.13.12, @babel/helper-module-imports@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/helper-module-imports@npm:7.14.5" dependencies: - "@babel/types": ^7.13.12 - checksum: 9abb5e3acb5630bf519b4205b7784947b64f93d573ed13579d894611392e48cac40b598f67b34c7b342fc6ac6d2262dcdecf125cac8806888328e914b2775c43 + "@babel/types": ^7.14.5 + checksum: b98279908698a50a22634e683924cb25eb93edf1bf28ac65691dfa82d7a1a4dae4e6b12b8ef9f9a50171ca484620bce544f270873c53505d8a45364c5b665c0c languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.12.1, @babel/helper-module-transforms@npm:^7.13.0, @babel/helper-module-transforms@npm:^7.14.2": - version: 7.14.2 - resolution: "@babel/helper-module-transforms@npm:7.14.2" +"@babel/helper-module-transforms@npm:^7.12.1, @babel/helper-module-transforms@npm:^7.13.0, @babel/helper-module-transforms@npm:^7.15.0": + version: 7.15.0 + resolution: "@babel/helper-module-transforms@npm:7.15.0" dependencies: - "@babel/helper-module-imports": ^7.13.12 - "@babel/helper-replace-supers": ^7.13.12 - "@babel/helper-simple-access": ^7.13.12 - "@babel/helper-split-export-declaration": ^7.12.13 - "@babel/helper-validator-identifier": ^7.14.0 - "@babel/template": ^7.12.13 - "@babel/traverse": ^7.14.2 - "@babel/types": ^7.14.2 - checksum: cb6930cb45cf078c3057f60769ad5f6ec3e6bbbcfc6ea069aa4b1ead15642fe43ada1bb1c13bed66bcde74c0c4ca12be818aff3067562494429b7688e6a3ea16 + "@babel/helper-module-imports": ^7.14.5 + "@babel/helper-replace-supers": ^7.15.0 + "@babel/helper-simple-access": ^7.14.8 + "@babel/helper-split-export-declaration": ^7.14.5 + "@babel/helper-validator-identifier": ^7.14.9 + "@babel/template": ^7.14.5 + "@babel/traverse": ^7.15.0 + "@babel/types": ^7.15.0 + checksum: 65eca31a9571d43c454cad13b26e17a0909e1fb439a939d2f17268f016ec85cec2fe7a9abcadea863d1b80b448f89647ac9be0abd76265c0e274205794031f33 languageName: node linkType: hard -"@babel/helper-optimise-call-expression@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-optimise-call-expression@npm:7.12.13" +"@babel/helper-optimise-call-expression@npm:^7.12.13, @babel/helper-optimise-call-expression@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/helper-optimise-call-expression@npm:7.14.5" dependencies: - "@babel/types": ^7.12.13 - checksum: 9925679d67a809c42b990825ee31f5f02787f385e27301da3343487f6a84482c7e2ebdd2b6d1ed066c309218750f2b7f78ab44dbb25ea6152f71d22839962a35 + "@babel/types": ^7.14.5 + checksum: c7af558c63eb5449bf2249f1236d892ed54a400cb6c721756cde573b996c12c64dee6b57fa18ad1a0025d152e6f689444f7ea32997a1d56e1af66c3eda18843d languageName: node linkType: hard @@ -282,24 +281,24 @@ __metadata: languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.12.13, @babel/helper-replace-supers@npm:^7.13.0, @babel/helper-replace-supers@npm:^7.13.12": - version: 7.13.12 - resolution: "@babel/helper-replace-supers@npm:7.13.12" +"@babel/helper-replace-supers@npm:^7.12.13, @babel/helper-replace-supers@npm:^7.13.0, @babel/helper-replace-supers@npm:^7.15.0": + version: 7.15.0 + resolution: "@babel/helper-replace-supers@npm:7.15.0" dependencies: - "@babel/helper-member-expression-to-functions": ^7.13.12 - "@babel/helper-optimise-call-expression": ^7.12.13 - "@babel/traverse": ^7.13.0 - "@babel/types": ^7.13.12 - checksum: 9ac99070152157e74ecca16e161a3d5977f346cff19109d0ebb943553c3e5e064c4f3319e5517948406ca1990e8feff704726772b54e1b08951261023e072000 + "@babel/helper-member-expression-to-functions": ^7.15.0 + "@babel/helper-optimise-call-expression": ^7.14.5 + "@babel/traverse": ^7.15.0 + "@babel/types": ^7.15.0 + checksum: e1fce39b88ac32058a6fad15f0840cc40a63af7d60ef1d3bca0fcda3e4d88422d164a165c3b1efbcbda3b80ac68165fa79005fe27fc5569d2b9582a8cc002db3 languageName: node linkType: hard -"@babel/helper-simple-access@npm:^7.12.13, @babel/helper-simple-access@npm:^7.13.12": - version: 7.13.12 - resolution: "@babel/helper-simple-access@npm:7.13.12" +"@babel/helper-simple-access@npm:^7.12.13, @babel/helper-simple-access@npm:^7.14.8": + version: 7.14.8 + resolution: "@babel/helper-simple-access@npm:7.14.8" dependencies: - "@babel/types": ^7.13.12 - checksum: afd0a8d1c7530a5184cd6fc23175d765a3eeb16f35c83090a90cec1010fcca684d238287c2e0f7ea9c0939d52235603986bd73c61e689d600f5dd1d1ef0ca204 + "@babel/types": ^7.14.8 + checksum: c1dae88c956154c854bb1679d19b9158ff1c8241329a4a70026ec16c594b9637e73647e5a1a0f9b7c47b2309201f633c259fb41d06a800496283debce6a67fab languageName: node linkType: hard @@ -312,26 +311,26 @@ __metadata: languageName: node linkType: hard -"@babel/helper-split-export-declaration@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-split-export-declaration@npm:7.12.13" +"@babel/helper-split-export-declaration@npm:^7.12.13, @babel/helper-split-export-declaration@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/helper-split-export-declaration@npm:7.14.5" dependencies: - "@babel/types": ^7.12.13 - checksum: adc8954a0b7e44548425f62ce4dc865d3efa288f016852539d3eddaeec13cf4baff3f397b494dc0f609aab51942480891cbe1adc955e05fe048b7f92db2bcf20 + "@babel/types": ^7.14.5 + checksum: 93437025a33747bfd37d6d5a9cdac8f4b6b3e5c0c53c0e24c5444575e731ea64fd5471a51a039fd74ff3378f916ea2d69d9f10274d253ed6f832952be2fd65f0 languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.12.11, @babel/helper-validator-identifier@npm:^7.14.0": - version: 7.14.0 - resolution: "@babel/helper-validator-identifier@npm:7.14.0" - checksum: 6276d57677bac403dd2e99176b4c7bc38ecdf757ac845c4339a2bf2f6f1003203caaa5af24880bcc7084ee59b6687a897263592cab21f49da29eb8c246f2a0d8 +"@babel/helper-validator-identifier@npm:^7.12.11, @babel/helper-validator-identifier@npm:^7.14.5, @babel/helper-validator-identifier@npm:^7.14.9": + version: 7.14.9 + resolution: "@babel/helper-validator-identifier@npm:7.14.9" + checksum: 58552531a7674363e74672434c312ddaf1545b8a43308e1a7f38db58bf79c796c095a6dab6a6105eb0d783b97441f6cbb525bb887f29a35f232fcdbd8cb240dc languageName: node linkType: hard -"@babel/helper-validator-option@npm:^7.12.17": - version: 7.12.17 - resolution: "@babel/helper-validator-option@npm:7.12.17" - checksum: 940e7b78dc05508d726b721e06dfdbfd56fd8a56522ee37e9d6f3ed9bef6df5dba82a1d74434e7670b0e5e5caa699f1454a63254199df3cddc2a0829acf75e36 +"@babel/helper-validator-option@npm:^7.12.17, @babel/helper-validator-option@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/helper-validator-option@npm:7.14.5" + checksum: 1b25c34a5cb3d8602280f33b9ab687d2a77895e3616458d0f70ddc450ada9b05e342c44f322bc741d51b252e84cff6ec44ae93d622a3354828579a643556b523 languageName: node linkType: hard @@ -347,34 +346,34 @@ __metadata: languageName: node linkType: hard -"@babel/helpers@npm:^7.12.5, @babel/helpers@npm:^7.14.0": - version: 7.14.0 - resolution: "@babel/helpers@npm:7.14.0" +"@babel/helpers@npm:^7.12.5, @babel/helpers@npm:^7.14.8": + version: 7.15.3 + resolution: "@babel/helpers@npm:7.15.3" dependencies: - "@babel/template": ^7.12.13 - "@babel/traverse": ^7.14.0 - "@babel/types": ^7.14.0 - checksum: 276716f77cd5e439543e446bed25c1b541b855bb94ffe6f6193335653e17c044503fa194de25cc2f9208dbfa6b406c2cb77e4e0382f2ca4241bd6bf773dcd091 + "@babel/template": ^7.14.5 + "@babel/traverse": ^7.15.0 + "@babel/types": ^7.15.0 + checksum: cd70614d610b01189812c83b505b076dca0822df55ed6cd41232416f3a10ae9200a07315683942e0adbc1833481920c2fc7a23a08064ced5a8770259aa0ad707 languageName: node linkType: hard -"@babel/highlight@npm:^7.10.4, @babel/highlight@npm:^7.12.13": - version: 7.13.10 - resolution: "@babel/highlight@npm:7.13.10" +"@babel/highlight@npm:^7.10.4, @babel/highlight@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/highlight@npm:7.14.5" dependencies: - "@babel/helper-validator-identifier": ^7.12.11 + "@babel/helper-validator-identifier": ^7.14.5 chalk: ^2.0.0 js-tokens: ^4.0.0 - checksum: 2f33624c8e0947101fd72ca8d2af291cd9560bcb3ed63299e5f95a70e64c2a435922d915ede6760f30ff23942589fe42b962b6b8138f868abaa6f7abd4d4f5e9 + checksum: 4e4b22fb886c939551d73307de16232c186fdb4d8ec8f514541b058feaecdba5234788a0740ca5bcd28777f4108596c39ac4b7463684c63b3812f6071e3fb88f languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.12.0, @babel/parser@npm:^7.12.13, @babel/parser@npm:^7.12.5, @babel/parser@npm:^7.12.7, @babel/parser@npm:^7.14.2, @babel/parser@npm:^7.14.3, @babel/parser@npm:^7.7.0": - version: 7.14.4 - resolution: "@babel/parser@npm:7.14.4" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.12.0, @babel/parser@npm:^7.12.5, @babel/parser@npm:^7.12.7, @babel/parser@npm:^7.14.5, @babel/parser@npm:^7.15.0, @babel/parser@npm:^7.7.0": + version: 7.15.3 + resolution: "@babel/parser@npm:7.15.3" bin: parser: ./bin/babel-parser.js - checksum: b96ba7f3e95184f7776868dd9327fff3bbdc497af72afeae4516fba1757b917ddc32cc13b8da8a6ba8a167048859238ee1ba822607e6920d948cf35fb775d25a + checksum: 4b9ba7e8ffe0a3d0dd8c61dee975c79863f7744177de677cb7d12f96549eb5c8b9ffc70ca2b1b2488b06e056da99a6273e2d7d68fc31f498d01483dfac149e13 languageName: node linkType: hard @@ -1306,40 +1305,41 @@ __metadata: languageName: node linkType: hard -"@babel/template@npm:^7.12.13, @babel/template@npm:^7.12.7, @babel/template@npm:^7.3.3": - version: 7.12.13 - resolution: "@babel/template@npm:7.12.13" +"@babel/template@npm:^7.12.13, @babel/template@npm:^7.12.7, @babel/template@npm:^7.14.5, @babel/template@npm:^7.3.3": + version: 7.14.5 + resolution: "@babel/template@npm:7.14.5" dependencies: - "@babel/code-frame": ^7.12.13 - "@babel/parser": ^7.12.13 - "@babel/types": ^7.12.13 - checksum: e0377316317ff55c794ec79f70d8f27b5cd3323ce76278ade525c264af669952b09613288221c76ee4abd49626a5f014a60ec4a637694c9121a1b77f820792d0 + "@babel/code-frame": ^7.14.5 + "@babel/parser": ^7.14.5 + "@babel/types": ^7.14.5 + checksum: 4939199c5b1ca8940e14c87f30f4fab5f35c909bef88447131075349027546927b4e3e08e50db5c2db2024f2c6585a4fe571c739c835ac980f7a4ada2dd8a623 languageName: node linkType: hard -"@babel/traverse@npm:^7.1.0, @babel/traverse@npm:^7.12.5, @babel/traverse@npm:^7.12.9, @babel/traverse@npm:^7.13.0, @babel/traverse@npm:^7.14.0, @babel/traverse@npm:^7.14.2, @babel/traverse@npm:^7.7.0": - version: 7.14.2 - resolution: "@babel/traverse@npm:7.14.2" +"@babel/traverse@npm:^7.1.0, @babel/traverse@npm:^7.12.5, @babel/traverse@npm:^7.12.9, @babel/traverse@npm:^7.13.0, @babel/traverse@npm:^7.15.0, @babel/traverse@npm:^7.7.0": + version: 7.15.0 + resolution: "@babel/traverse@npm:7.15.0" dependencies: - "@babel/code-frame": ^7.12.13 - "@babel/generator": ^7.14.2 - "@babel/helper-function-name": ^7.14.2 - "@babel/helper-split-export-declaration": ^7.12.13 - "@babel/parser": ^7.14.2 - "@babel/types": ^7.14.2 + "@babel/code-frame": ^7.14.5 + "@babel/generator": ^7.15.0 + "@babel/helper-function-name": ^7.14.5 + "@babel/helper-hoist-variables": ^7.14.5 + "@babel/helper-split-export-declaration": ^7.14.5 + "@babel/parser": ^7.15.0 + "@babel/types": ^7.15.0 debug: ^4.1.0 globals: ^11.1.0 - checksum: 054d5e44429254e1beade12c40e6fb0ea5a12242d4a17173da2d9c0f76644d0c32f578f3e284f6d8c059cea8f4c3c1a1e45a021ee4233dcf047341252d1022a3 + checksum: e13056690a2a4a4dd699e241b89d4f7cf701ceef2f4ee0efc32a8cc4e07e1bbd397423868ecfec8aa98a769486f7d08778420d48f981b4f5dbb1b2f211daf656 languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.12.0, @babel/types@npm:^7.12.1, @babel/types@npm:^7.12.13, @babel/types@npm:^7.12.6, @babel/types@npm:^7.12.7, @babel/types@npm:^7.13.0, @babel/types@npm:^7.13.12, @babel/types@npm:^7.14.0, @babel/types@npm:^7.14.2, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.7.0, @babel/types@npm:^7.8.3": - version: 7.14.4 - resolution: "@babel/types@npm:7.14.4" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.12.0, @babel/types@npm:^7.12.1, @babel/types@npm:^7.12.13, @babel/types@npm:^7.12.6, @babel/types@npm:^7.12.7, @babel/types@npm:^7.13.0, @babel/types@npm:^7.13.12, @babel/types@npm:^7.14.5, @babel/types@npm:^7.14.8, @babel/types@npm:^7.15.0, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.7.0, @babel/types@npm:^7.8.3": + version: 7.15.0 + resolution: "@babel/types@npm:7.15.0" dependencies: - "@babel/helper-validator-identifier": ^7.14.0 + "@babel/helper-validator-identifier": ^7.14.9 to-fast-properties: ^2.0.0 - checksum: 52ae21c8240dd2f6820590056c9f8fd04631c410d4f404ec2fe6b26ed46e39fb58270a5afe56bea66a57992061cdccad9317c99a6962febb6691071c9b481f30 + checksum: 6d6bcdfce94b5446520a24087c6dede453e28425af092965b304d4028e9bca79712fd691cdad031e3570c7667bf3206e5f642bcccbfccb33d42ca4a8203587f9 languageName: node linkType: hard @@ -1362,6 +1362,22 @@ __metadata: languageName: node linkType: hard +"@cspotcode/source-map-consumer@npm:0.8.0": + version: 0.8.0 + resolution: "@cspotcode/source-map-consumer@npm:0.8.0" + checksum: c0c16ca3d2f58898f1bd74c4f41a189dbcc202e642e60e489cbcc2e52419c4e89bdead02c886a12fb13ea37798ede9e562b2321df997ebc210ae9bd881561b4e + languageName: node + linkType: hard + +"@cspotcode/source-map-support@npm:0.6.1": + version: 0.6.1 + resolution: "@cspotcode/source-map-support@npm:0.6.1" + dependencies: + "@cspotcode/source-map-consumer": 0.8.0 + checksum: da9fb4f6404ebd210537bfa8b2821a747407bf422d2d3d46f29bf85c7c3a68a126de1a9ec41398d57ca116c3bef56d58c2fb4def0800630b1ec82533ad2447c2 + languageName: node + linkType: hard + "@csstools/convert-colors@npm:^1.4.0": version: 1.4.0 resolution: "@csstools/convert-colors@npm:1.4.0" @@ -1398,57 +1414,20 @@ __metadata: languageName: node linkType: hard -"@eslint/eslintrc@npm:^0.4.1": - version: 0.4.1 - resolution: "@eslint/eslintrc@npm:0.4.1" +"@eslint/eslintrc@npm:^0.4.3": + version: 0.4.3 + resolution: "@eslint/eslintrc@npm:0.4.3" dependencies: ajv: ^6.12.4 debug: ^4.1.1 espree: ^7.3.0 - globals: ^12.1.0 + globals: ^13.9.0 ignore: ^4.0.6 import-fresh: ^3.2.1 js-yaml: ^3.13.1 minimatch: ^3.0.4 strip-json-comments: ^3.1.1 - checksum: 85eeaa022eba510ff093040a66e67bf0b4c5e5aa8c39e3655e4fa6de929d1076e2320858325708b723b367d8aeaddd89e6fa5b34c8676a4d95246d099e1b1759 - languageName: node - linkType: hard - -"@formatjs/ecma402-abstract@npm:1.9.2": - version: 1.9.2 - resolution: "@formatjs/ecma402-abstract@npm:1.9.2" - dependencies: - tslib: ^2.1.0 - checksum: d4b578b4f9693cf3b0f8b1c6e8d699b3f59c0b223cec726305cc745016c83270524355d8fac0a1de2af886559662b36e0bfcdf1ac8c138580de7bca478ce3346 - languageName: node - linkType: hard - -"@formatjs/fast-memoize@npm:1.1.1": - version: 1.1.1 - resolution: "@formatjs/fast-memoize@npm:1.1.1" - checksum: 49f4a567e464835eaec869eb3b53e4885868b2bd824fee2da705958fd5e604456d68825482dbf5ed88bcf614db2885362342495b3293b8341a59d4e5fa3a4ba0 - languageName: node - linkType: hard - -"@formatjs/icu-messageformat-parser@npm:2.0.5": - version: 2.0.5 - resolution: "@formatjs/icu-messageformat-parser@npm:2.0.5" - dependencies: - "@formatjs/ecma402-abstract": 1.9.2 - "@formatjs/icu-skeleton-parser": 1.2.6 - tslib: ^2.1.0 - checksum: 58d3acd15632344a23a20d50a13ee6f5810e35b124fa4fb451eef9f36e7773b84415b9d7672a100b096872b5d8e8bd39d8d2bd6809480e73934dabe9478e33e2 - languageName: node - linkType: hard - -"@formatjs/icu-skeleton-parser@npm:1.2.6": - version: 1.2.6 - resolution: "@formatjs/icu-skeleton-parser@npm:1.2.6" - dependencies: - "@formatjs/ecma402-abstract": 1.9.2 - tslib: ^2.1.0 - checksum: 81901c02d9370f3756c9a0fa4b0b5b9b5eac0b2d84eeda35a05c94b3a53542b969f89bd0b8d2e2a87344b503182020d66a4a0deb5f086f4e62d0aff7432cf70d + checksum: 03a7704150b868c318aab6a94d87a33d30dc2ec579d27374575014f06237ba1370ae11178db772f985ef680d469dc237e7b16a1c5d8edaaeb8c3733e7a95a6d3 languageName: node linkType: hard @@ -1515,6 +1494,24 @@ __metadata: languageName: node linkType: hard +"@humanwhocodes/config-array@npm:^0.5.0": + version: 0.5.0 + resolution: "@humanwhocodes/config-array@npm:0.5.0" + dependencies: + "@humanwhocodes/object-schema": ^1.2.0 + debug: ^4.1.1 + minimatch: ^3.0.4 + checksum: 44ee6a9f05d93dd9d5935a006b17572328ba9caff8002442f601736cbda79c580cc0f5a49ce9eb88fbacc5c3a6b62098357c2e95326cd17bb9f1a6c61d6e95e7 + languageName: node + linkType: hard + +"@humanwhocodes/object-schema@npm:^1.2.0": + version: 1.2.0 + resolution: "@humanwhocodes/object-schema@npm:1.2.0" + checksum: 40b75480376de8104d65f7c44a7dd76d30fb57823ca8ba3a3239b2b568323be894d93440578a72fd8e5e2cc3df3577ce0d2f0fe308b990dd51cf35392bf3c9a2 + languageName: node + linkType: hard + "@istanbuljs/load-nyc-config@npm:^1.0.0": version: 1.1.0 resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" @@ -1730,6 +1727,19 @@ __metadata: languageName: node linkType: hard +"@jest/types@npm:^27.0.6": + version: 27.0.6 + resolution: "@jest/types@npm:27.0.6" + dependencies: + "@types/istanbul-lib-coverage": ^2.0.0 + "@types/istanbul-reports": ^3.0.0 + "@types/node": "*" + "@types/yargs": ^16.0.0 + chalk: ^4.0.0 + checksum: abe367b073d5b7396d7397620f57a24409551bb940761d78e6775f10aee68fb96eb80d7177824090ac811c7e7ba5d9cfce4cbdded86f3adef2abc291da28de77 + languageName: node + linkType: hard + "@kwsites/file-exists@npm:^1.1.1": version: 1.1.1 resolution: "@kwsites/file-exists@npm:1.1.1" @@ -1746,14 +1756,14 @@ __metadata: languageName: node linkType: hard -"@mapbox/rehype-prism@npm:^0.6.0": - version: 0.6.0 - resolution: "@mapbox/rehype-prism@npm:0.6.0" +"@mapbox/rehype-prism@npm:^0.7.0": + version: 0.7.0 + resolution: "@mapbox/rehype-prism@npm:0.7.0" dependencies: hast-util-to-string: ^1.0.4 - refractor: ^3.3.1 + refractor: ^3.4.0 unist-util-visit: ^2.0.3 - checksum: 30db7ce34e0eb6696da8e70bdb4edf64f562df58803fd9d7d27af92077e3a16ec0b471814761115aa3b79c1212fe39035a681cb5de41f4b80a307b48ab4aec50 + checksum: e016f23d4a748cbbb3fb66f885c687a77929b776e6060d46befcbeaeac2f67ed48e3eab2fa13920c54c1c7c8d8c007aefcb9594beaca887237b9e74d53340691 languageName: node linkType: hard @@ -1838,10 +1848,10 @@ __metadata: languageName: node linkType: hard -"@polka/url@npm:^1.0.0-next.9": - version: 1.0.0-next.11 - resolution: "@polka/url@npm:1.0.0-next.11" - checksum: db1626fb6d7167ce2de6223c95f0a5ff8e1e7c56b2e8709f904f219d8fcc7b075de842ea8bf0ed7af9f5bc350b166b286b241636982f10d0f02964f34215a0e0 +"@polka/url@npm:^1.0.0-next.20": + version: 1.0.0-next.21 + resolution: "@polka/url@npm:1.0.0-next.21" + checksum: c7654046d38984257dd639eab3dc770d1b0340916097b2fac03ce5d23506ada684e05574a69b255c32ea6a144a957c8cd84264159b545fca031c772289d88788 languageName: node linkType: hard @@ -1852,6 +1862,13 @@ __metadata: languageName: node linkType: hard +"@sindresorhus/is@npm:^4.0.0": + version: 4.0.1 + resolution: "@sindresorhus/is@npm:4.0.1" + checksum: 92ae3f3d765bd5bc7355852cb9852091ebce6a76bb00eeb37d08e0247b9b3e742eae43ff3753de0c0c00876c526613db6433c9594ae0d17b305b3d6dbeef2514 + languageName: node + linkType: hard + "@sinonjs/commons@npm:^1.7.0": version: 1.8.2 resolution: "@sinonjs/commons@npm:1.8.2" @@ -1870,13 +1887,26 @@ __metadata: languageName: node linkType: hard -"@ssen/collect-dependencies@npm:^2.5.1": - version: 2.5.1 - resolution: "@ssen/collect-dependencies@npm:2.5.1" +"@ssen/bundle-import-rewrite@npm:^3.0.0": + version: 3.0.0 + resolution: "@ssen/bundle-import-rewrite@npm:3.0.0" + dependencies: + "@ssen/rewrite-bundle-import": ^3.0.0 + peerDependencies: + typescript: ^3.9.0 || ^4.0.0 + checksum: 6e910d252d515ccba03fa800602c1cb3fd94b1ca54c29f80104e0e24f5a4b96783a49faa1cc4e1988c00faa9901519b53c698d6e55112c621850eb2eb44ae6b1 + languageName: node + linkType: hard + +"@ssen/collect-dependencies@npm:^3.0.0": + version: 3.0.0 + resolution: "@ssen/collect-dependencies@npm:3.0.0" dependencies: + toposort: ^2.0.2 type-fest: ^1.2.0 - typescript: ^4.3.2 - checksum: f1009093078f318e9427a1fbdfccae5374eee08af8a5d75bfd56095be81078bf208e67ea4fa19b2acf9b6e9ae9a6a328be34646e55fba39892e8264691f50911 + peerDependencies: + typescript: ^3.9.0 || ^4.0.0 + checksum: 62caa6412a20e8bcf3044f64ff070d1245c853b6412f2b06b3695c98f80d87d7772c7705ea5db29feda8fb54ff9682b179fba93235db3347b5be6c4b6449d2ff languageName: node linkType: hard @@ -1909,54 +1939,58 @@ __metadata: languageName: node linkType: hard -"@ssen/extended-compiler-host@npm:^2.5.1": - version: 2.5.1 - resolution: "@ssen/extended-compiler-host@npm:2.5.1" +"@ssen/extended-compiler-host@npm:^3.0.0": + version: 3.0.0 + resolution: "@ssen/extended-compiler-host@npm:3.0.0" dependencies: - "@ssen/transform": ^2.5.1 + "@ssen/transform": ^3.0.0 react: ^17.0.2 - typescript: ^4.3.2 - checksum: 51660c14c4a2899a5c78892ca0cd4c1eb15def711394388e4f5e5c01270827998789c34b2a9cf77c15a8dcd5f7ffad70da5ca15c6eeebdf9c10e6dcee5478d64 + peerDependencies: + typescript: ^3.9.0 || ^4.0.0 + checksum: fdd577357528522851b8ddf631d926917d25eb839cfb0014238c47e067ee90fb9ce7e4f113aba64f5fe679b0c7266f808dae6242f2d0ce1368246b5b70853ed2 languageName: node linkType: hard -"@ssen/flat-package-name@npm:^2.5.1": - version: 2.5.1 - resolution: "@ssen/flat-package-name@npm:2.5.1" - checksum: 8c6f9bf9c30710dbe9a8fd1fdd110053a0524777d62bb3bee7853c0358bde50a0480710f961e7d0ae6af79b3fd3b48233814b82ed165f74695fadd90207990ad +"@ssen/flat-package-name@npm:^3.0.0": + version: 3.0.0 + resolution: "@ssen/flat-package-name@npm:3.0.0" + checksum: 82b0b6ed82402de8cc07f9ad9b79c31e324b6110f367b0894e12c628fdca090046c9711e8b233009d014d6a3a30d1f91092d0a62bd9183060ace36db2314b86a languageName: node linkType: hard -"@ssen/import-path-rewrite-compiler-host@npm:^2.5.1": - version: 2.5.1 - resolution: "@ssen/import-path-rewrite-compiler-host@npm:2.5.1" +"@ssen/import-path-rewrite-compiler-host@npm:^3.0.0": + version: 3.0.0 + resolution: "@ssen/import-path-rewrite-compiler-host@npm:3.0.0" dependencies: - "@ssen/import-path-rewrite": ^2.5.1 - typescript: ^4.3.2 - checksum: d83b7e74ca675ed4cf89c6061b385ac3bdb8e87a532b211ef9af2216c3032fb649485649e33d63d2f8403c3134335ddd7f2ebea9271b0cfbfd2d69fdcb60c6b3 + "@ssen/import-path-rewrite": ^3.0.0 + peerDependencies: + typescript: ^3.9.0 || ^4.0.0 + checksum: 7a9dba97e5cc4af8970bf0eaf9245f5302f0587221186ec67b7af1ff2e8d5ffc4ef2d9d9617ed79304677c053f797d0c65b1b397c783723c9197579522330b76 languageName: node linkType: hard -"@ssen/import-path-rewrite@npm:^2.5.1": - version: 2.5.1 - resolution: "@ssen/import-path-rewrite@npm:2.5.1" +"@ssen/import-path-rewrite@npm:^3.0.0": + version: 3.0.0 + resolution: "@ssen/import-path-rewrite@npm:3.0.0" dependencies: - "@ssen/rewrite-src-path": ^2.5.1 - typescript: ^4.3.2 - checksum: 763df3902e612e1a3b14d4358491004b83655c7564b308829121c58437539b30284c3180773e9e47c84f8ad4683ca1582dfb9cdb9c5a2225f4076dcb3a0235b5 + "@ssen/rewrite-src-path": ^3.0.0 + peerDependencies: + typescript: ^3.9.0 || ^4.0.0 + checksum: a06bb051d049f09bb8c3bceff5c87ebba988907c4ff9aae0ac4ac3d44a37f7c37f221fbc7a569104546d6fbf09a5350696e7d1c7b3d5fb70b05229c71de373b7 languageName: node linkType: hard -"@ssen/jest-transform@npm:^2.5.1": - version: 2.5.1 - resolution: "@ssen/jest-transform@npm:2.5.1" +"@ssen/jest-transform@npm:^3.0.0": + version: 3.0.0 + resolution: "@ssen/jest-transform@npm:3.0.0" dependencies: "@svgr/plugin-jsx": ^5.5.0 js-yaml: ^4.1.0 mini-svg-data-uri: ^1.3.3 node-fetch: ^2.6.1 - typescript: ^4.3.2 - checksum: c2a93a8453f2c9b1745ea0344a057f479a056f19a9939d6e14ceaf7475c1298a285fe713523cdb203faa4cc1aaeaa90c7497ccf7c4d583c3c1410827ea46da12 + peerDependencies: + typescript: ^3.9.0 || ^4.0.0 + checksum: 94578986e56ee54e9757aca3e49d401e6d0c2e3eaa12b0ad30440ba1b7eda070f464d7be53757ad49f35942b7f16e5b86870480d8bbcc5aa7da9636b262f6704 languageName: node linkType: hard @@ -1967,7 +2001,7 @@ __metadata: languageName: node linkType: hard -"@ssen/promised@npm:^2.4.0, @ssen/promised@npm:^2.5.1": +"@ssen/promised@npm:^2.4.0": version: 2.5.1 resolution: "@ssen/promised@npm:2.5.1" dependencies: @@ -1977,71 +2011,88 @@ __metadata: languageName: node linkType: hard -"@ssen/publish-packages@npm:^2.5.1": - version: 2.5.1 - resolution: "@ssen/publish-packages@npm:2.5.1" +"@ssen/promised@npm:^3.0.0": + version: 3.0.0 + resolution: "@ssen/promised@npm:3.0.0" + dependencies: + glob: ^7.1.7 + rimraf: ^3.0.2 + checksum: 650027b82d97868440d855c2eaf429f5e617439a3b6ba106cc9b3768c43d7009f66b32f894270539bbdd2aa0ddcc3629a5793e2f4305f33952769c48bb2d0fac + languageName: node + linkType: hard + +"@ssen/publish-packages@npm:^3.0.0": + version: 3.0.0 + resolution: "@ssen/publish-packages@npm:3.0.0" dependencies: - "@ssen/flat-package-name": ^2.5.1 + "@ssen/flat-package-name": ^3.0.0 fs-extra: ^10.0.0 package-json: ^6.5.0 prompts: ^2.4.1 semver: ^7.3.5 type-fest: ^1.2.0 - checksum: 0f74d13094c7e76b3322c3b4ab8966bf6c7cb45a0b18e3951488b67b805159b1327350030a5f1987765ed8d4fe4e86321710e62c030c5eccaf19196925fa8296 + checksum: d83922874911da542e3fe61d39ecb359bc5e830894b5337b01f84d70e5afe1a6bfa40731aa6fea1e7ed7f3d95b5a47e82e3d7eae6ec562b18a97f9a19bc20129 languageName: node linkType: hard -"@ssen/read-last-argv@npm:^2.5.1": - version: 2.5.1 - resolution: "@ssen/read-last-argv@npm:2.5.1" - checksum: b2ee3a50a623d79369bb75e4553b24569e750356008de45f498550d55e7f2524f867c8d1dc843f00ce407b47c327de2b878ad6eb29a3c21937342a54ce0eaef8 +"@ssen/read-last-argv@npm:^3.0.0": + version: 3.0.0 + resolution: "@ssen/read-last-argv@npm:3.0.0" + checksum: eaa4961d6c36f213f71ac51cbaa2726e87590989fb478d2141eda0eaef3744c8670aca5450062e28cca88ca84910d50b78bd6148bfa882ff46af87a17e9f2c46 languageName: node linkType: hard -"@ssen/read-tsconfig@npm:^2.5.1": - version: 2.5.1 - resolution: "@ssen/read-tsconfig@npm:2.5.1" - dependencies: - typescript: ^4.3.2 - checksum: baa0393d9586ace0797f6d2f101f3ba38a35b3eb988543f2bbaac962718c84cd707b10b8e320f17010a6884e0aae8b3332ff9120528d0cae990919fae7269fbe +"@ssen/read-tsconfig@npm:^3.0.0": + version: 3.0.0 + resolution: "@ssen/read-tsconfig@npm:3.0.0" + peerDependencies: + typescript: ^3.9.0 || ^4.0.0 + checksum: 1137e46c5f1c179afb562bf8e229e7377f66141957848da0e23dbb1e619a46f6998dc743ada78e5563f6fd18ce0955a4b649ce0fe9d327d56f5b4c28394d7c70 languageName: node linkType: hard -"@ssen/require-typescript@npm:^2.5.1": - version: 2.5.1 - resolution: "@ssen/require-typescript@npm:2.5.1" - dependencies: - typescript: ^4.3.2 - checksum: 11b54eddc17c3df6414d45590e827a6bfd6769eee522545262f4e4bbb8091dd55c9363e6f1dc50212ec809efb6d800b914f41adf5820a041cc4fd5292ea9366e +"@ssen/require-typescript@npm:^3.0.0": + version: 3.0.0 + resolution: "@ssen/require-typescript@npm:3.0.0" + peerDependencies: + typescript: ^3.9.0 || ^4.0.0 + checksum: a62b1bd34d8d32b774ef1525bdc755fc8a0dd8994301b78ea51ddeb0a9bef3fb1d410ec241a3cb423dad06076f22e3903ab975cde602b008022bf8f9d0bba79c languageName: node linkType: hard -"@ssen/rewrite-src-path@npm:^2.5.1": - version: 2.5.1 - resolution: "@ssen/rewrite-src-path@npm:2.5.1" - checksum: b1e7d55a454ef7cba850a4b1bbdab74cc4d6f1569bbef423b1ab86c372b7fd1d3d9a76c6fee0858cbcc608dc7c56c0118b010970e36d91a9e4b80db9330dae67 +"@ssen/rewrite-bundle-import@npm:^3.0.0": + version: 3.0.0 + resolution: "@ssen/rewrite-bundle-import@npm:3.0.0" + checksum: 8c54721a720b190d29b050cf72738e9b3e73d127c753e8053841c8777044503fe3f745c3bbfdd0cf5bafe8cc8f5f58a0b3ee1c42bd70dfbe0fca870742370d72 languageName: node linkType: hard -"@ssen/tmp-directory@npm:^2.5.1": - version: 2.5.1 - resolution: "@ssen/tmp-directory@npm:2.5.1" +"@ssen/rewrite-src-path@npm:^3.0.0": + version: 3.0.0 + resolution: "@ssen/rewrite-src-path@npm:3.0.0" + checksum: 498e9f26d616a2723f201ec6956fbf812dc5a8ae547de8951caa29b6ff1fdcba8d7786beaccca43307401d6f1cbe470b4c9a47c370a2c18cdbba0cd8eefe6748 + languageName: node + linkType: hard + +"@ssen/tmp-directory@npm:^3.0.0": + version: 3.0.0 + resolution: "@ssen/tmp-directory@npm:3.0.0" dependencies: fs-extra: ^10.0.0 tmp: ^0.2.1 - checksum: 4a364ac15186f4166fa94a13daa2228290be572e2ea9164b60d33643027fcc5ba7d68d25f180ddb4382f69475efd04c870d154904e7a3a918fa14cfc7fb6ded4 + checksum: 58878d3477a77aedcefcc5acc21556cc44ba772ee9a9d433ad1b312c5d32fe1839bacc39edbd1bda0b9c07a73de9d319ef1334fac81a7ec94e853b367a40d0a8 languageName: node linkType: hard -"@ssen/transform@npm:^2.5.1": - version: 2.5.1 - resolution: "@ssen/transform@npm:2.5.1" +"@ssen/transform@npm:^3.0.0": + version: 3.0.0 + resolution: "@ssen/transform@npm:3.0.0" dependencies: "@svgr/plugin-jsx": ^5.5.0 fs-extra: ^10.0.0 js-yaml: ^4.1.0 mini-svg-data-uri: ^1.3.3 - checksum: 510bd2086b0913ff20cd65bcbaa1bb7b59ade04b610307048d28190202c5900d3716ced80800f194d5f8547a216e61dd97c841ce3fbddce6d0170c7cad8ba9ba + checksum: 22f0ab86219de13b2c516ccc3d62a8c5bb011480be1f5b4fbe9b0fdc1f29f1933d95e640a8ecc7227ac394acbeb892940a1b25f6ca087c533e8e945a0d0a2f90 languageName: node linkType: hard @@ -2185,25 +2236,34 @@ __metadata: languageName: node linkType: hard -"@testing-library/dom@npm:^7.28.1, @testing-library/dom@npm:^7.31.0": - version: 7.31.0 - resolution: "@testing-library/dom@npm:7.31.0" +"@szmarczak/http-timer@npm:^4.0.5": + version: 4.0.6 + resolution: "@szmarczak/http-timer@npm:4.0.6" + dependencies: + defer-to-connect: ^2.0.0 + checksum: c29df3bcec6fc3bdec2b17981d89d9c9fc9bd7d0c9bcfe92821dc533f4440bc890ccde79971838b4ceed1921d456973c4180d7175ee1d0023ad0562240a58d95 + languageName: node + linkType: hard + +"@testing-library/dom@npm:^8.0.0, @testing-library/dom@npm:^8.1.0": + version: 8.1.0 + resolution: "@testing-library/dom@npm:8.1.0" dependencies: "@babel/code-frame": ^7.10.4 "@babel/runtime": ^7.12.5 "@types/aria-query": ^4.2.0 aria-query: ^4.2.2 chalk: ^4.1.0 - dom-accessibility-api: ^0.5.4 + dom-accessibility-api: ^0.5.6 lz-string: ^1.4.4 - pretty-format: ^26.6.2 - checksum: 4214612561da33e4667ecb56d10ce8e2fe40b341b43802e9fb41790a807d962c2f4d45929647eef9a0b5787cb3a96a96d004f2ab1537a0e934975122bfdbda82 + pretty-format: ^27.0.2 + checksum: 8d3778b59c08dba4f1ba62823c0dad0990d2fcbd0396fcf0b8a2c4ce7420f8c5adbcae708f8f58a75ead749bd06d9ef4285187763abb18ac464ed47c2f8e332b languageName: node linkType: hard -"@testing-library/react-hooks@npm:*, @testing-library/react-hooks@npm:^7.0.0": - version: 7.0.0 - resolution: "@testing-library/react-hooks@npm:7.0.0" +"@testing-library/react-hooks@npm:*, @testing-library/react-hooks@npm:^7.0.1": + version: 7.0.1 + resolution: "@testing-library/react-hooks@npm:7.0.1" dependencies: "@babel/runtime": ^7.12.5 "@types/react": ">=16.9.0" @@ -2219,20 +2279,20 @@ __metadata: optional: true react-test-renderer: optional: true - checksum: 3c5e91459b2b939276bfa383cc73f40a2e5abec781d33b13db7dc1efd4796e7341ecbac638526623e8868ba23e4266b88bc537298931066797b11b3c0053e3d2 + checksum: eecb59df11ae8e9d715e3b1e13a199995d363d879a9177497a5609d5ad41f1c112cb708d24b4f2a6c6ce7d81edefae34e8e8bbd5cde2a1d0abcc0f539df904de languageName: node linkType: hard -"@testing-library/react@npm:^11.2.7": - version: 11.2.7 - resolution: "@testing-library/react@npm:11.2.7" +"@testing-library/react@npm:^12.0.0": + version: 12.0.0 + resolution: "@testing-library/react@npm:12.0.0" dependencies: "@babel/runtime": ^7.12.5 - "@testing-library/dom": ^7.28.1 + "@testing-library/dom": ^8.0.0 peerDependencies: react: "*" react-dom: "*" - checksum: 64e07cb96e40dbdbd3c46a09c47bed14446b30efafaa65a5d4fed5a7553878990cda108578f2b114422a775f31c635d51fd50b752f6163ddd6b8474e0e5fc2ce + checksum: 07f0ba4092f7cd3232c2c61329353b2f2fa65388fc58666780be80f99f75daaf897a09a9897ac53f213d7b2d57e3cecb8127fd940da8cfd4275fa4a281e5b32c languageName: node linkType: hard @@ -2264,10 +2324,10 @@ __metadata: languageName: node linkType: hard -"@tsconfig/node16@npm:^1.0.1": - version: 1.0.1 - resolution: "@tsconfig/node16@npm:1.0.1" - checksum: 5fdfd91e48dc1f406cb59d19fd450a594ea6279f3be54a50bd6fd6b8d189a53bb930f2e7d496cbc3bb45fbb23f0ce5c69086f90c796ce8441cbd2a26fb738fd5 +"@tsconfig/node16@npm:^1.0.2": + version: 1.0.2 + resolution: "@tsconfig/node16@npm:1.0.2" + checksum: ca94d3639714672bbfd55f03521d3f56bb6a25479bd425da81faf21f13e1e9d15f40f97377dedbbf477a5841c5b0c8f4cd1b391f33553d750b9202c54c2c07aa languageName: node linkType: hard @@ -2287,16 +2347,16 @@ __metadata: languageName: node linkType: hard -"@types/babel__core@npm:^7.0.0, @types/babel__core@npm:^7.1.7": - version: 7.1.14 - resolution: "@types/babel__core@npm:7.1.14" +"@types/babel__core@npm:^7.0.0, @types/babel__core@npm:^7.1.15, @types/babel__core@npm:^7.1.7": + version: 7.1.15 + resolution: "@types/babel__core@npm:7.1.15" dependencies: "@babel/parser": ^7.1.0 "@babel/types": ^7.0.0 "@types/babel__generator": "*" "@types/babel__template": "*" "@types/babel__traverse": "*" - checksum: de4a1a4905e4fb66e9b5ea185704b209892fa104b6aec8705021a3ddf0ff017234c41a1b0bffb0acf2c361afd5352c2d216e3548c8a702ba2558ab63f0bf2200 + checksum: 3ea016369666a013564f8d3119ae987b3a3f1bdf31cc90e0d58714eea10d6b89a9fb1f6146290ee239ecc285800b246f18be930625c1d83e79d074842e43ab7d languageName: node linkType: hard @@ -2347,6 +2407,18 @@ __metadata: languageName: node linkType: hard +"@types/cacheable-request@npm:^6.0.1": + version: 6.0.2 + resolution: "@types/cacheable-request@npm:6.0.2" + dependencies: + "@types/http-cache-semantics": "*" + "@types/keyv": "*" + "@types/node": "*" + "@types/responselike": "*" + checksum: 667d25808dbf46fe104d6f029e0281ff56058d50c7c1b9182774b3e38bb9c1124f56e4c367ba54f92dbde2d1cc573f26eb0e9748710b2822bc0fd1e5498859c6 + languageName: node + linkType: hard + "@types/clean-css@npm:*": version: 4.2.3 resolution: "@types/clean-css@npm:4.2.3" @@ -2386,20 +2458,20 @@ __metadata: languageName: node linkType: hard -"@types/eslint@npm:*, @types/eslint@npm:^7.2.13": - version: 7.2.13 - resolution: "@types/eslint@npm:7.2.13" +"@types/eslint@npm:*, @types/eslint@npm:^7.28.0": + version: 7.28.0 + resolution: "@types/eslint@npm:7.28.0" dependencies: "@types/estree": "*" "@types/json-schema": "*" - checksum: 6dac9f9d7d155c90a6eba104718e1adb43c3e4020ea75ab8f5094db8603617473a4ac6f7ddeb2c670822860b869a7e3871406a82425ec470965cdfc1f3dd3ad0 + checksum: 75ac2577d2a2e35bae66f56d2d1c871d5e836b2721cf14bd3df450c9d584eba48fa3b1013fba710245bf4795f16e1df0ed315e543e3199c4815ee4782537d0ae languageName: node linkType: hard -"@types/estree@npm:*, @types/estree@npm:^0.0.47": - version: 0.0.47 - resolution: "@types/estree@npm:0.0.47" - checksum: aed5c940436250c25c5e140aa19e7199ba3452e72e1aecc515621507df9e5ed5076ddba84a1684c36d62be841ff3e2bafce8793f16fe6f69d10884449d4461e7 +"@types/estree@npm:*, @types/estree@npm:^0.0.50": + version: 0.0.50 + resolution: "@types/estree@npm:0.0.50" + checksum: 9a2b6a4a8c117f34d08fbda5e8f69b1dfb109f7d149b60b00fd7a9fb6ac545c078bc590aa4ec2f0a256d680cf72c88b3b28b60c326ee38a7bc8ee1ee95624922 languageName: node linkType: hard @@ -2426,31 +2498,31 @@ __metadata: languageName: node linkType: hard -"@types/file-loader@npm:^5.0.0": - version: 5.0.0 - resolution: "@types/file-loader@npm:5.0.0" +"@types/file-loader@npm:^5.0.1": + version: 5.0.1 + resolution: "@types/file-loader@npm:5.0.1" dependencies: "@types/webpack": ^4 - checksum: 6de7b3a6c07460fdbc31953610cf1ad11bda1c65cbd4ac943a95f773bb67fa26c834b56d6f7cbd2e490be3f42b59a9ba762fdf311b6004cdee39a39c602e4095 + checksum: dfde296d4421b4e6f37655e44bec3827592625fffae41c54138af33da8753d338713761325161c59859d2ad810ef9284948f435bf058672869f3b6f876ccff56 languageName: node linkType: hard -"@types/fs-extra@npm:^9.0.11": - version: 9.0.11 - resolution: "@types/fs-extra@npm:9.0.11" +"@types/fs-extra@npm:^9.0.12": + version: 9.0.12 + resolution: "@types/fs-extra@npm:9.0.12" dependencies: "@types/node": "*" - checksum: 54619e50583a45d63e1d061dc5ca09b53424dd8ec01edfc282b6d5733d4fc40bcf3e66a2704a13ed4d3bf36f261b6fa27c180fd2f86114f6bc30c3eb245f453e + checksum: c63834f0be8d0993c55abcc0b2c90f3c095cf3aa9e827973472167bd93687df9da546bd5e0823ddc9e83e1651c9cfb09bbac99fa57a15ab28fd21280426e472c languageName: node linkType: hard -"@types/glob@npm:*, @types/glob@npm:^7.1.3": - version: 7.1.3 - resolution: "@types/glob@npm:7.1.3" +"@types/glob@npm:*, @types/glob@npm:^7.1.4": + version: 7.1.4 + resolution: "@types/glob@npm:7.1.4" dependencies: "@types/minimatch": "*" "@types/node": "*" - checksum: e0eef12285f548f15d887145590594a04ccce7f7e645fb047cbac18cb093f25d507ffbcc725312294c224bb78cf980fce33e5807de8d6f8a868b4186253499d4 + checksum: 6911a956448f5eddea1e4371f814bf92072e8ceedba83de6ce2a6745938a6f0327376e1c0072fa0d7b3b73d84e255aafda53c1dff148225cfe542a8cc5d54b02 languageName: node linkType: hard @@ -2508,6 +2580,13 @@ __metadata: languageName: node linkType: hard +"@types/http-cache-semantics@npm:*": + version: 4.0.1 + resolution: "@types/http-cache-semantics@npm:4.0.1" + checksum: 1048aacf627829f0d5f00184e16548205cd9f964bf0841c29b36bc504509230c40bc57c39778703a1c965a6f5b416ae2cbf4c1d4589c889d2838dd9dbfccf6e9 + languageName: node + linkType: hard + "@types/http-proxy@npm:^1.17.5": version: 1.17.5 resolution: "@types/http-proxy@npm:1.17.5" @@ -2542,50 +2621,43 @@ __metadata: languageName: node linkType: hard -"@types/jest@npm:^26.0.23": - version: 26.0.23 - resolution: "@types/jest@npm:26.0.23" +"@types/jest@npm:^26.0.24": + version: 26.0.24 + resolution: "@types/jest@npm:26.0.24" dependencies: jest-diff: ^26.0.0 pretty-format: ^26.0.0 - checksum: 69db26061e6be34de2a440c8a470b651c53ba6ee0057614a278c4f756ff00281f46cc075b24e5bd761f399f175f49d0a5758b50dd921342a8592461548dea29a - languageName: node - linkType: hard - -"@types/js-yaml@npm:^4.0.1": - version: 4.0.1 - resolution: "@types/js-yaml@npm:4.0.1" - checksum: c1bc8a72272197d4dfb04c6b043346eff618be760116371b3d20b9e069e78b6964c58bcc75d5868afaa98055e1817ef3f6b57e76462c44f1f6edf54b784fe01d + checksum: ae39675412f08d884926254e9b12bfd2b5a4e4d204c94d3148cb942174a474930d0c60540133c968f22241d4712b7940c96cbc883096eb326a4d5b206fb78bd0 languageName: node linkType: hard -"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.3, @types/json-schema@npm:^7.0.4, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.6": - version: 7.0.7 - resolution: "@types/json-schema@npm:7.0.7" - checksum: ea3b409235862d28122751158f4054e729e31ad844bd7b8b23868f38c518047b1c0e8e4e7cc293e02c31a2fb8cfc8a4506c2de2a745cf78b218e064fb8898cd4 +"@types/js-yaml@npm:^4.0.3": + version: 4.0.3 + resolution: "@types/js-yaml@npm:4.0.3" + checksum: 4be74c029f3fe4ab01f382481521c15bc79c96589747f588f8d3b92e97b8e04ffbe208451d24c99fd289593ff5325710eb83d267c8f2449d3248299f909003d7 languageName: node linkType: hard -"@types/json5@npm:^0.0.29": - version: 0.0.29 - resolution: "@types/json5@npm:0.0.29" - checksum: e60b153664572116dfea673c5bda7778dbff150498f44f998e34b5886d8afc47f16799280e4b6e241c0472aef1bc36add771c569c68fc5125fc2ae519a3eb9ac +"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.3, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.8": + version: 7.0.9 + resolution: "@types/json-schema@npm:7.0.9" + checksum: 259d0e25f11a21ba5c708f7ea47196bd396e379fddb79c76f9f4f62c945879dc21657904914313ec2754e443c5018ea8372362f323f30e0792897fdb2098a705 languageName: node linkType: hard -"@types/keyv@npm:^3.1.1": - version: 3.1.1 - resolution: "@types/keyv@npm:3.1.1" +"@types/keyv@npm:*, @types/keyv@npm:^3.1.1": + version: 3.1.2 + resolution: "@types/keyv@npm:3.1.2" dependencies: "@types/node": "*" - checksum: ee0d098693bf4af44be756eed02daf95f5d0fd4b5b02da952a5952e08842baddf6a986a9ea5f9e460729782f1a0a47848c892ad96ea188b66a363feb49a1536f + checksum: 769e462ae9d663f1c2b65f07f621d52cfd02b8289357ac9f8af353243a7356a54f1568d4cbef13b90de367aaeb768446b324b792b6c5ff958d0b34ed68b75df2 languageName: node linkType: hard -"@types/less@npm:^3.0.2": - version: 3.0.2 - resolution: "@types/less@npm:3.0.2" - checksum: f425e5d3980ddc4ab9f77aef176caf2944f70ab47106f510545beadab137aea2955bb49993be111bf69f5a7757be8a589bbe9cd3b07895a37dd7acde181672db +"@types/less@npm:^3.0.3": + version: 3.0.3 + resolution: "@types/less@npm:3.0.3" + checksum: 389ce4c843fb88484ffbe4e3b63da0db1cea3e594c57086a5e642431f031f569819b4a210ae4ca109207d2307daa7e48e0e00315892fa7582748e0f434e62881 languageName: node linkType: hard @@ -2621,14 +2693,14 @@ __metadata: languageName: node linkType: hard -"@types/mini-css-extract-plugin@npm:^1.4.3": - version: 1.4.3 - resolution: "@types/mini-css-extract-plugin@npm:1.4.3" +"@types/mini-css-extract-plugin@npm:^2.2.0": + version: 2.2.0 + resolution: "@types/mini-css-extract-plugin@npm:2.2.0" dependencies: "@types/node": "*" tapable: ^2.2.0 webpack: ^5 - checksum: 809ffb750926c8f66112fcff82e2c4773dd54bde9fadcfee70303b256fbac7d3833d99453044449f49633ce78b1a55bbbbeca9cc1fc86dc446bb77e25ccd5a20 + checksum: 865bca4834ed9330d250c92a9810747c14b48f0b1510ebfd3f78b1593e96b162e6c020dd43666230684c70d1be1946fad012e1470ffcc52d612bd55ae97efd70 languageName: node linkType: hard @@ -2639,20 +2711,20 @@ __metadata: languageName: node linkType: hard -"@types/node-fetch@npm:^2.5.10": - version: 2.5.10 - resolution: "@types/node-fetch@npm:2.5.10" +"@types/node-fetch@npm:^2.5.12": + version: 2.5.12 + resolution: "@types/node-fetch@npm:2.5.12" dependencies: "@types/node": "*" form-data: ^3.0.0 - checksum: 504d3834083fcbb90dc488618a60d078ff3b018c3c77e649b4990aff6dfafe9e41c82699ed474e01d9df40448240b6b455653d25afeecbc0eacb4154a217c253 + checksum: ad63c85ba6a9477b8e057ec8682257738130d98e8ece4e31141789bd99df9d9147985cc8bc0cb5c8983ed5aa6bb95d46df23d1e055f4ad5cf8b82fc69cf626c7 languageName: node linkType: hard -"@types/node@npm:*, @types/node@npm:^15.6.2": - version: 15.6.2 - resolution: "@types/node@npm:15.6.2" - checksum: 80357594472d4d854d64b046f0fed4b7487527ee2fea225b6c155d0598562136cb662e703bc40c8126d69751dda68d4eae8078adac0da41b13bd78c7b5df738d +"@types/node@npm:*, @types/node@npm:^16.7.1": + version: 16.7.1 + resolution: "@types/node@npm:16.7.1" + checksum: fcf1a2c7b1f19c2201574b2110176b49c6efd824a39b2ed8ac3e6688740e2a35bef95a3334dfa345f4bd4873fd8b79d8ac8cfcc9fcd3d2f4f8f993c2c37ce4ab languageName: node linkType: hard @@ -2663,12 +2735,12 @@ __metadata: languageName: node linkType: hard -"@types/nodemon@npm:^1.19.0": - version: 1.19.0 - resolution: "@types/nodemon@npm:1.19.0" +"@types/nodemon@npm:^1.19.1": + version: 1.19.1 + resolution: "@types/nodemon@npm:1.19.1" dependencies: "@types/node": "*" - checksum: 632b2a5bc0aa6cff550e8279c348892085f6930fc84f02d3904d6ee5bcdde6bb75f12ffd0981cd84b7c6b8c97695f2cd6e00f426bca259395e2b98e15c4363fc + checksum: 62d0efcec06509ded373f6f5bbc0310901e23028ccc7828c703030b011c4bd17ae188d8387b8eb83bcc1e4e6006ec23572965f5d95aef10f5015ea376daaa1e7 languageName: node linkType: hard @@ -2700,7 +2772,7 @@ __metadata: languageName: node linkType: hard -"@types/prompts@npm:^2.4.0": +"@types/prompts@npm:^2.0.14": version: 2.4.0 resolution: "@types/prompts@npm:2.4.0" checksum: ec75655f07fbc3cb2df60a3e3bdd13bfda0554a16f5541285c4b1cc0610756838a2863dccfc911cbb1385492054c07210512164e3dbef272ec638d631783b278 @@ -2728,12 +2800,12 @@ __metadata: languageName: node linkType: hard -"@types/ramda@npm:^0.27.40": - version: 0.27.40 - resolution: "@types/ramda@npm:0.27.40" +"@types/ramda@npm:^0.27.44": + version: 0.27.44 + resolution: "@types/ramda@npm:0.27.44" dependencies: ts-toolbelt: ^6.15.1 - checksum: 25254f007a0b3715eb76f2e47e249559358d7fdd518943ef4f57506638db937a17745e42bd8cdaab4f8341dd1cbeae162d623e1ddf2ed46ecff4028b48f5afae + checksum: 3ad5a303268a9d406e17950fd13bf1005ffc1d2aaee728634e63f32ff3a74356a9eb50026670e8193fa8dc4bc9702d7f66d1bd64011b2952883962ea985be0dc languageName: node linkType: hard @@ -2744,36 +2816,36 @@ __metadata: languageName: node linkType: hard -"@types/react-dev-utils@npm:^9.0.6": - version: 9.0.6 - resolution: "@types/react-dev-utils@npm:9.0.6" +"@types/react-dev-utils@npm:^9.0.7": + version: 9.0.7 + resolution: "@types/react-dev-utils@npm:9.0.7" dependencies: "@types/eslint": "*" "@types/express": "*" "@types/html-webpack-plugin": "*" "@types/webpack": ^4 "@types/webpack-dev-server": "*" - checksum: ceb294dea8bd7e2c074a35e868d0617dd1d2c610e41c9c5715e9c47740d13c95f19ad9cb3c29b8ec2f1936727c032cb6a74aa63408eeacabcc3ae8898fae1a23 + checksum: 80a6caa963aeb671a861f4d112a7e761021f30e477f4b967b1c3e2d3be7ec4eb9a23f70cc386f092347afd76e831747a102fcca65ed2750cf33c91961b6f5f3f languageName: node linkType: hard -"@types/react-dom@npm:>=16.9.0, @types/react-dom@npm:^17.0.6": - version: 17.0.6 - resolution: "@types/react-dom@npm:17.0.6" +"@types/react-dom@npm:>=16.9.0, @types/react-dom@npm:^17.0.9": + version: 17.0.9 + resolution: "@types/react-dom@npm:17.0.9" dependencies: "@types/react": "*" - checksum: cc167c24a77cef2be8dcabd1bbe8b95c0d713b943b2f1c8a1468c8009c50daad51a46859a217a8383b89bb4ea499937d405699ce8db164f70c871f9d22d703f0 + checksum: b7e898e1a22643a371f58e801a3d1d8cf13a82d77063c24be73e840ef8d877ca1d04adc5db168d0dac3167dc050a26b1d70efc5fe8566a7f46a3c488a8322989 languageName: node linkType: hard -"@types/react-router-dom@npm:^5.1.7": - version: 5.1.7 - resolution: "@types/react-router-dom@npm:5.1.7" +"@types/react-router-dom@npm:^5.1.8": + version: 5.1.8 + resolution: "@types/react-router-dom@npm:5.1.8" dependencies: "@types/history": "*" "@types/react": "*" "@types/react-router": "*" - checksum: ad40f55557bb7cd8d19d783c1d7dbca85e8874e03cced37e464f74f9f0a588a9a7e411de74da362d1a5c5bf80f7aaca78fe9a66d26741e47c5c06e49a62d1229 + checksum: ff4af091f8e076b64f6f3f2af52429772641388393065930880e8931ce881873c2f0dff53bb1e373db5ae6b737fc514db4a1f5daa7d8bf3cf3b3088ce84472fc languageName: node linkType: hard @@ -2796,14 +2868,14 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:*, @types/react@npm:>=16.9.0, @types/react@npm:^17.0.9": - version: 17.0.9 - resolution: "@types/react@npm:17.0.9" +"@types/react@npm:*, @types/react@npm:>=16.9.0, @types/react@npm:^17.0.19": + version: 17.0.19 + resolution: "@types/react@npm:17.0.19" dependencies: "@types/prop-types": "*" "@types/scheduler": "*" csstype: ^3.0.2 - checksum: c626e3ca42b6173b0617102af6c1c8c6068f69fafeba51f5d614962cabaf98a5706295081941ece93da04117268cb0aad471be87e76dde7e0d5f79a46280c586 + checksum: d5af52623dd863e5a9f64eb72979f19c21e03012e25ee93adc93f664ed7976e81b654128dc653b225ad5ba2aaae24e0febe37face272bb051d6289e23ed7177d languageName: node linkType: hard @@ -2814,14 +2886,14 @@ __metadata: languageName: node linkType: hard -"@types/resolve@npm:^1.20.0": - version: 1.20.0 - resolution: "@types/resolve@npm:1.20.0" - checksum: d3d046dbd6e42859e170839d1060a82995b9f087e9d6977233656fecea42817e9053434cb8b2d6e15b7531d81db4e76f3be23e69e98fb0093a2a231aaf5da690 +"@types/resolve@npm:^1.20.1": + version: 1.20.1 + resolution: "@types/resolve@npm:1.20.1" + checksum: d035d5aaadbd455027fa9457a4a263563d49647f088876aebd2b0388d4c35400b85c0382fdc2ec5253c35442abfc2d25431c989345b97fefe26a367811214343 languageName: node linkType: hard -"@types/responselike@npm:^1.0.0": +"@types/responselike@npm:*, @types/responselike@npm:^1.0.0": version: 1.0.0 resolution: "@types/responselike@npm:1.0.0" dependencies: @@ -2830,20 +2902,13 @@ __metadata: languageName: node linkType: hard -"@types/retry@npm:^0.12.0": - version: 0.12.0 - resolution: "@types/retry@npm:0.12.0" - checksum: 61a072c7639f6e8126588bf1eb1ce8835f2cb9c2aba795c4491cf6310e013267b0c8488039857c261c387e9728c1b43205099223f160bb6a76b4374f741b5603 - languageName: node - linkType: hard - -"@types/rimraf@npm:^3.0.0": - version: 3.0.0 - resolution: "@types/rimraf@npm:3.0.0" +"@types/rimraf@npm:^3.0.2": + version: 3.0.2 + resolution: "@types/rimraf@npm:3.0.2" dependencies: "@types/glob": "*" "@types/node": "*" - checksum: a2a9a3f5a88546e11bfe15031a3a8442974c1df5e3f9a6b5cb22680bc3721fb9f0b5880a99ec99f6bb12e274fa4cb43e41cc7152d8400360c4060fc609f4ff8a + checksum: b47fa302f46434cba704d20465861ad250df79467d3d289f9d6490d3aeeb41e8cb32dd80bd1a8fd833d1e185ac719fbf9be12e05ad9ce9be094d8ee8f1405347 languageName: node linkType: hard @@ -2854,10 +2919,10 @@ __metadata: languageName: node linkType: hard -"@types/semver@npm:^7.3.6": - version: 7.3.6 - resolution: "@types/semver@npm:7.3.6" - checksum: 933b115a59b1665b4418f48264cc8e497fa8c72425554e97dad07a4fbad09ba3744a726a58fb11c739a944ac868ba4aef926697ad1facedf7858be3410c10d6f +"@types/semver@npm:^7.3.8": + version: 7.3.8 + resolution: "@types/semver@npm:7.3.8" + checksum: bc90f5a9d5430e36f766c08c898e3c28af88830ebc7736baef8ffc74783bad2efb32f29c40d450e85fc341847ee74e2dd97b76cfc7da407e4232ba9ecae4ff9c languageName: node linkType: hard @@ -2878,12 +2943,12 @@ __metadata: languageName: node linkType: hard -"@types/source-map-support@npm:^0.5.3": - version: 0.5.3 - resolution: "@types/source-map-support@npm:0.5.3" +"@types/source-map-support@npm:^0.5.4": + version: 0.5.4 + resolution: "@types/source-map-support@npm:0.5.4" dependencies: source-map: ^0.6.0 - checksum: 96eabd19d1640e5921d9830f075d832d16febb0e0d5131c58f47338afcc0070d3fa74f73052d7529906c17c7ba979920a0c660ca845d9d29ae3534f28b91896d + checksum: 160ff77e8a101b18d9915cb5320fd73d484679aef8518ce007b9b5988e333631778730196c4bb15517ff881bee805663fd8640c0ce2ebfab65f061103c452369 languageName: node linkType: hard @@ -2894,12 +2959,12 @@ __metadata: languageName: node linkType: hard -"@types/stream-buffers@npm:^3.0.3": - version: 3.0.3 - resolution: "@types/stream-buffers@npm:3.0.3" +"@types/stream-buffers@npm:^3.0.4": + version: 3.0.4 + resolution: "@types/stream-buffers@npm:3.0.4" dependencies: "@types/node": "*" - checksum: c3456fa2a18f89d31c54fe169621d8288a9735fb7e92aba45786642659d93be26fa0b4caa5c1043b21f4cfaeeefc24d247fa833586a8a0f3aecedf03adb7b5ac + checksum: 5b432b2bf963d612747b79ac317562888236d6a9ea14414fb055c24e7be9643b5e3c7b7470841fa82802aa1c1c0d752a4ba935bbc0cfb12de6b89f7e1dadee92 languageName: node linkType: hard @@ -2919,10 +2984,10 @@ __metadata: languageName: node linkType: hard -"@types/tmp@npm:^0.2.0": - version: 0.2.0 - resolution: "@types/tmp@npm:0.2.0" - checksum: c3c17b316c7e626ab543b008124c8e3468a858647d235f49217205476a5012abca075ac29def1d79c9f2d2375b4fb7bf756041c8897883435a5ee1d253d7aa45 +"@types/tmp@npm:^0.2.1": + version: 0.2.1 + resolution: "@types/tmp@npm:0.2.1" + checksum: 2617d2a04811ca78a8d21f5ffc3bd7c392e03c440053a615b091f3e3726540d36babffc750614a803c81b9f2c5f218cdafc748d8cf4638eade2962f8ccddd2fa languageName: node linkType: hard @@ -2942,34 +3007,34 @@ __metadata: languageName: node linkType: hard -"@types/webpack-bundle-analyzer@npm:^4.4.0": - version: 4.4.0 - resolution: "@types/webpack-bundle-analyzer@npm:4.4.0" +"@types/webpack-bundle-analyzer@npm:^4.4.1": + version: 4.4.1 + resolution: "@types/webpack-bundle-analyzer@npm:4.4.1" dependencies: "@types/node": "*" tapable: ^2.2.0 webpack: ^5 - checksum: 4c102233bc78f81a0ace3c11c1258b047ecc8cad688364a4596f793cb27403fd6eb7c5a93873506d5c52b560fed85615b00f678f07480ea7f2f91676d96f86e2 + checksum: 50afdbd2a40545a8acda4adda09b98772dd646dea894dfa95d9f86d224d3df462405b5d0c04077958e87399cda4c9bac7451bbb7285c99e7220806b439ae7f72 languageName: node linkType: hard -"@types/webpack-dev-server@npm:*, @types/webpack-dev-server@npm:^3.11.4": - version: 3.11.4 - resolution: "@types/webpack-dev-server@npm:3.11.4" +"@types/webpack-dev-server@npm:*": + version: 3.11.5 + resolution: "@types/webpack-dev-server@npm:3.11.5" dependencies: "@types/connect-history-api-fallback": "*" "@types/express": "*" "@types/serve-static": "*" "@types/webpack": ^4 http-proxy-middleware: ^1.0.0 - checksum: 06a3d08737df147bbfd3466ec6b38c7971d80cc6ef410933896b5f96c7cae2d36f4000214e637c4dd73b016e40e0577925aa16083c59367a48753d06dbdd2773 + checksum: 474a01ee2408c3c6dccccdf671e31fe53e6d8733c482255381d87985c00541504ffb288c3153eda7135744f3afef98cda3d47738fc937f2362372697fe0edad2 languageName: node linkType: hard -"@types/webpack-env@npm:^1.16.0": - version: 1.16.0 - resolution: "@types/webpack-env@npm:1.16.0" - checksum: 9d23191e48a6de17931685140aea701c8cf04f518ce20fc095085a2552bd2a7a4fd566060658e6c51306a5d0ceb0cb430057872a432707c61159340413d1f8b1 +"@types/webpack-env@npm:^1.16.2": + version: 1.16.2 + resolution: "@types/webpack-env@npm:1.16.2" + checksum: 122273f20e2bed6895aae2f03891f51ddacd826018e395d18aa5d833ad0462bb159637b83f8d202907234a6a48c66a8e4e9fdd703afc66f6afddb83eeac82b13 languageName: node linkType: hard @@ -2982,12 +3047,12 @@ __metadata: languageName: node linkType: hard -"@types/webpack-node-externals@npm:^2.5.1": - version: 2.5.1 - resolution: "@types/webpack-node-externals@npm:2.5.1" +"@types/webpack-node-externals@npm:^2.5.2": + version: 2.5.2 + resolution: "@types/webpack-node-externals@npm:2.5.2" dependencies: "@types/webpack": ^4 - checksum: ef3f1d0f5eb397163f95435adc21de1dbc205bc4058de526035806d78a665c836e536ed9f723b7aaf8518a1e49f49761eda2911ee2742e21063b7db49dc84e2c + checksum: 07f5c39706ff5691db029c736da252fdaef455531453b59c1113de2109510df959f9e79141c1601c473163d65143d72dbf519db86eab6fb6a8cc9687796469c9 languageName: node linkType: hard @@ -3032,12 +3097,21 @@ __metadata: languageName: node linkType: hard -"@types/yargs@npm:^17.0.0": - version: 17.0.0 - resolution: "@types/yargs@npm:17.0.0" +"@types/yargs@npm:^16.0.0": + version: 16.0.4 + resolution: "@types/yargs@npm:16.0.4" + dependencies: + "@types/yargs-parser": "*" + checksum: caa21d2c957592fe2184a8368c8cbe5a82a6c2e2f2893722e489f842dc5963293d2f3120bc06fe3933d60a3a0d1e2eb269649fd6b1947fe1820f8841ba611dd9 + languageName: node + linkType: hard + +"@types/yargs@npm:^17.0.2": + version: 17.0.2 + resolution: "@types/yargs@npm:17.0.2" dependencies: "@types/yargs-parser": "*" - checksum: a9963dd351737a4f03eeda631848e1e0a8d687a8d463c882a5446ca0b420cd78b7b1c87e22e7a48429809281dd9dd1c0bfe8442100d4172919c30c7294f11e8b + checksum: 6f4600d3b786c0eb083782f59c9ed61bb4c204269b0a07819bb9e9b1fc29deaf4fe28abde7dca5fbf3cf851beca9458cbcf63ebd128ebfe83d31002d84337b31 languageName: node linkType: hard @@ -3050,13 +3124,6 @@ __metadata: languageName: node linkType: hard -"@types/yoga-layout@npm:1.9.2": - version: 1.9.2 - resolution: "@types/yoga-layout@npm:1.9.2" - checksum: dbc3d6ab997d50fe1fcca5dd6822982c8fe586145ab648e0e97c3bc4ebc93d0b40c9edd75febaba374d61f60c1379b639f6be652965c776a901bf1068f2eac87 - languageName: node - linkType: hard - "@typescript-eslint/eslint-plugin@npm:^4.0.0": version: 4.20.0 resolution: "@typescript-eslint/eslint-plugin@npm:4.20.0" @@ -3273,154 +3340,154 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/ast@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/ast@npm:1.11.0" +"@webassemblyjs/ast@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/ast@npm:1.11.1" dependencies: - "@webassemblyjs/helper-numbers": 1.11.0 - "@webassemblyjs/helper-wasm-bytecode": 1.11.0 - checksum: ee81d1a40d04da516e82296db366be8236acb7ef26b86877723cfd0a23e8c9579895beb523be1491f06f06db2bccdf6102ea99099fcdd41ab17f236524b8e747 + "@webassemblyjs/helper-numbers": 1.11.1 + "@webassemblyjs/helper-wasm-bytecode": 1.11.1 + checksum: 1eee1534adebeece635362f8e834ae03e389281972611408d64be7895fc49f48f98fddbbb5339bf8a72cb101bcb066e8bca3ca1bf1ef47dadf89def0395a8d87 languageName: node linkType: hard -"@webassemblyjs/floating-point-hex-parser@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.0" - checksum: bcfbf90a1e23217c4f5200a1d20226f07b2ef5adddea1f0ed7729c04efec8445ec1bc9e57a2f29480ea80e25a50c6b3d46ebb90cd776de8ffbbb648d4235e332 +"@webassemblyjs/floating-point-hex-parser@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.1" + checksum: b8efc6fa08e4787b7f8e682182d84dfdf8da9d9c77cae5d293818bc4a55c1f419a87fa265ab85252b3e6c1fd323d799efea68d825d341a7c365c64bc14750e97 languageName: node linkType: hard -"@webassemblyjs/helper-api-error@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/helper-api-error@npm:1.11.0" - checksum: d606eef863c028ba872afe706ad56acc5cdcae568f90c74a6159c063dfa4c199a41f81b17a2bf02a31c059a68d6acc115a020109e09d0dfa77f639dd5a45815a +"@webassemblyjs/helper-api-error@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/helper-api-error@npm:1.11.1" + checksum: 0792813f0ed4a0e5ee0750e8b5d0c631f08e927f4bdfdd9fe9105dc410c786850b8c61bff7f9f515fdfb149903bec3c976a1310573a4c6866a94d49bc7271959 languageName: node linkType: hard -"@webassemblyjs/helper-buffer@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/helper-buffer@npm:1.11.0" - checksum: cce45295e533a83db0fd9a31e2f94d679a835c88765eca18922a0c6d5fddbcb515ee11f53c7867e17220c647f748bbd0e30af717086361b1f121cfd4ccd7ab9c +"@webassemblyjs/helper-buffer@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/helper-buffer@npm:1.11.1" + checksum: a337ee44b45590c3a30db5a8b7b68a717526cf967ada9f10253995294dbd70a58b2da2165222e0b9830cd4fc6e4c833bf441a721128d1fe2e9a7ab26b36003ce languageName: node linkType: hard -"@webassemblyjs/helper-numbers@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/helper-numbers@npm:1.11.0" +"@webassemblyjs/helper-numbers@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/helper-numbers@npm:1.11.1" dependencies: - "@webassemblyjs/floating-point-hex-parser": 1.11.0 - "@webassemblyjs/helper-api-error": 1.11.0 + "@webassemblyjs/floating-point-hex-parser": 1.11.1 + "@webassemblyjs/helper-api-error": 1.11.1 "@xtuc/long": 4.2.2 - checksum: 66f20c755b2df23064128109c13178a9c24beac76278c1f36561ef87ce16cf3d92fc29e677921d86a952cc6bda5fb7d527947663bb21bd092932ce05ca278044 + checksum: 44d2905dac2f14d1e9b5765cf1063a0fa3d57295c6d8930f6c59a36462afecc6e763e8a110b97b342a0f13376166c5d41aa928e6ced92e2f06b071fd0db59d3a languageName: node linkType: hard -"@webassemblyjs/helper-wasm-bytecode@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.0" - checksum: 0110bfa3755886ea402b86256ce98a9106d0349672e0528c5da27c7672479a4d885458e231591cb0a99c1b07a93c5d046a86fdcbf0c9245c0ade11a9b3a4d772 +"@webassemblyjs/helper-wasm-bytecode@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.1" + checksum: eac400113127832c88f5826bcc3ad1c0db9b3dbd4c51a723cfdb16af6bfcbceb608170fdaac0ab7731a7e18b291be7af68a47fcdb41cfe0260c10857e7413d97 languageName: node linkType: hard -"@webassemblyjs/helper-wasm-section@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/helper-wasm-section@npm:1.11.0" +"@webassemblyjs/helper-wasm-section@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/helper-wasm-section@npm:1.11.1" dependencies: - "@webassemblyjs/ast": 1.11.0 - "@webassemblyjs/helper-buffer": 1.11.0 - "@webassemblyjs/helper-wasm-bytecode": 1.11.0 - "@webassemblyjs/wasm-gen": 1.11.0 - checksum: 54153a703dfc18884a301f75bd29af58177ba890e0a0ca57561cd1d7553a18875a46966f546054e15de6c7280ce30cc9e63c6986bad6093583e188c08168b4b6 + "@webassemblyjs/ast": 1.11.1 + "@webassemblyjs/helper-buffer": 1.11.1 + "@webassemblyjs/helper-wasm-bytecode": 1.11.1 + "@webassemblyjs/wasm-gen": 1.11.1 + checksum: 617696cfe8ecaf0532763162aaf748eb69096fb27950219bb87686c6b2e66e11cd0614d95d319d0ab1904bc14ebe4e29068b12c3e7c5e020281379741fe4bedf languageName: node linkType: hard -"@webassemblyjs/ieee754@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/ieee754@npm:1.11.0" +"@webassemblyjs/ieee754@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/ieee754@npm:1.11.1" dependencies: "@xtuc/ieee754": ^1.2.0 - checksum: c4dbd174263b98ef4d18ce3200a08094e7d4e66ba703cf3cd8a581d5676648e2e182e370437a64a1a7b770f2956782f9e67ab980833f0d123752a3b7c4fa9248 + checksum: 23a0ac02a50f244471631802798a816524df17e56b1ef929f0c73e3cde70eaf105a24130105c60aff9d64a24ce3b640dad443d6f86e5967f922943a7115022ec languageName: node linkType: hard -"@webassemblyjs/leb128@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/leb128@npm:1.11.0" +"@webassemblyjs/leb128@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/leb128@npm:1.11.1" dependencies: "@xtuc/long": 4.2.2 - checksum: 0d5f977d600da64d448dda84df99f6b6e0c2773eb30f5b4e5bb733f12da56377acec1cc275979973277d6caf8bef90d29e3ba7442674c9e5a107b010ce267864 + checksum: 33ccc4ade2f24de07bf31690844d0b1ad224304ee2062b0e464a610b0209c79e0b3009ac190efe0e6bd568b0d1578d7c3047fc1f9d0197c92fc061f56224ff4a languageName: node linkType: hard -"@webassemblyjs/utf8@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/utf8@npm:1.11.0" - checksum: 6e7d2024cdfb6104fdc9865d5f4a1c3212fde96b8fe229375e1b9034929f0b5587d644ca095005cc1a8b3a4d00030581f9d3a9a1fd53c05ed74d77f178ee1de0 +"@webassemblyjs/utf8@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/utf8@npm:1.11.1" + checksum: 972c5cfc769d7af79313a6bfb96517253a270a4bf0c33ba486aa43cac43917184fb35e51dfc9e6b5601548cd5931479a42e42c89a13bb591ffabebf30c8a6a0b languageName: node linkType: hard -"@webassemblyjs/wasm-edit@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/wasm-edit@npm:1.11.0" +"@webassemblyjs/wasm-edit@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/wasm-edit@npm:1.11.1" dependencies: - "@webassemblyjs/ast": 1.11.0 - "@webassemblyjs/helper-buffer": 1.11.0 - "@webassemblyjs/helper-wasm-bytecode": 1.11.0 - "@webassemblyjs/helper-wasm-section": 1.11.0 - "@webassemblyjs/wasm-gen": 1.11.0 - "@webassemblyjs/wasm-opt": 1.11.0 - "@webassemblyjs/wasm-parser": 1.11.0 - "@webassemblyjs/wast-printer": 1.11.0 - checksum: 9ca4c3ff9abdb9648fc1039f8dcf600f7017a270724ce7751f125b49d19daae4731b95dfd14e4c077b09a7ab7c0105fa5820dc1ded3bdc0257509d5e3d6d6b27 + "@webassemblyjs/ast": 1.11.1 + "@webassemblyjs/helper-buffer": 1.11.1 + "@webassemblyjs/helper-wasm-bytecode": 1.11.1 + "@webassemblyjs/helper-wasm-section": 1.11.1 + "@webassemblyjs/wasm-gen": 1.11.1 + "@webassemblyjs/wasm-opt": 1.11.1 + "@webassemblyjs/wasm-parser": 1.11.1 + "@webassemblyjs/wast-printer": 1.11.1 + checksum: 6d7d9efaec1227e7ef7585a5d7ff0be5f329f7c1c6b6c0e906b18ed2e9a28792a5635e450aca2d136770d0207225f204eff70a4b8fd879d3ac79e1dcc26dbeb9 languageName: node linkType: hard -"@webassemblyjs/wasm-gen@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/wasm-gen@npm:1.11.0" +"@webassemblyjs/wasm-gen@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/wasm-gen@npm:1.11.1" dependencies: - "@webassemblyjs/ast": 1.11.0 - "@webassemblyjs/helper-wasm-bytecode": 1.11.0 - "@webassemblyjs/ieee754": 1.11.0 - "@webassemblyjs/leb128": 1.11.0 - "@webassemblyjs/utf8": 1.11.0 - checksum: 678e2b8ee3e13ebcd7794c78379ab95501e4c8499b4d4b669bd9a780f3c34aecace7690d09adb0df7cc531ce8bfd28fdfad72df05c57a779c67595caafbc55ee + "@webassemblyjs/ast": 1.11.1 + "@webassemblyjs/helper-wasm-bytecode": 1.11.1 + "@webassemblyjs/ieee754": 1.11.1 + "@webassemblyjs/leb128": 1.11.1 + "@webassemblyjs/utf8": 1.11.1 + checksum: 1f6921e640293bf99fb16b21e09acb59b340a79f986c8f979853a0ae9f0b58557534b81e02ea2b4ef11e929d946708533fd0693c7f3712924128fdafd6465f5b languageName: node linkType: hard -"@webassemblyjs/wasm-opt@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/wasm-opt@npm:1.11.0" +"@webassemblyjs/wasm-opt@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/wasm-opt@npm:1.11.1" dependencies: - "@webassemblyjs/ast": 1.11.0 - "@webassemblyjs/helper-buffer": 1.11.0 - "@webassemblyjs/wasm-gen": 1.11.0 - "@webassemblyjs/wasm-parser": 1.11.0 - checksum: 7f0e5ed309b7c9983f45deacb583a2508de418f8819a36782859bfe7ceabd2dc1a521c24129319ec10f03940c1ae20352c2dbcefe86561d9fae1246ee292c6c2 + "@webassemblyjs/ast": 1.11.1 + "@webassemblyjs/helper-buffer": 1.11.1 + "@webassemblyjs/wasm-gen": 1.11.1 + "@webassemblyjs/wasm-parser": 1.11.1 + checksum: 21586883a20009e2b20feb67bdc451bbc6942252e038aae4c3a08e6f67b6bae0f5f88f20bfc7bd0452db5000bacaf5ab42b98cf9aa034a6c70e9fc616142e1db languageName: node linkType: hard -"@webassemblyjs/wasm-parser@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/wasm-parser@npm:1.11.0" +"@webassemblyjs/wasm-parser@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/wasm-parser@npm:1.11.1" dependencies: - "@webassemblyjs/ast": 1.11.0 - "@webassemblyjs/helper-api-error": 1.11.0 - "@webassemblyjs/helper-wasm-bytecode": 1.11.0 - "@webassemblyjs/ieee754": 1.11.0 - "@webassemblyjs/leb128": 1.11.0 - "@webassemblyjs/utf8": 1.11.0 - checksum: cd861066c9fdd16a9b8c920aa6f27039e200f4d06aff35b438c1acc3e22ec81af26bacd1467f563edb7e00bf00d473ed12dc6d481089c61dc4e01f58e416a7d7 + "@webassemblyjs/ast": 1.11.1 + "@webassemblyjs/helper-api-error": 1.11.1 + "@webassemblyjs/helper-wasm-bytecode": 1.11.1 + "@webassemblyjs/ieee754": 1.11.1 + "@webassemblyjs/leb128": 1.11.1 + "@webassemblyjs/utf8": 1.11.1 + checksum: 1521644065c360e7b27fad9f4bb2df1802d134dd62937fa1f601a1975cde56bc31a57b6e26408b9ee0228626ff3ba1131ae6f74ffb7d718415b6528c5a6dbfc2 languageName: node linkType: hard -"@webassemblyjs/wast-printer@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/wast-printer@npm:1.11.0" +"@webassemblyjs/wast-printer@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/wast-printer@npm:1.11.1" dependencies: - "@webassemblyjs/ast": 1.11.0 + "@webassemblyjs/ast": 1.11.1 "@xtuc/long": 4.2.2 - checksum: 5462cf6c7ffb4082464c7238497064d067f1421648a5f9fa784d04223a876a9b41cbd95106e899326840aad36fea0b7a39cad264b5c73df8c7fc2bca6313fd74 + checksum: f15ae4c2441b979a3b4fce78f3d83472fb22350c6dc3fd34bfe7c3da108e0b2360718734d961bba20e7716cb8578e964b870da55b035e209e50ec9db0378a3f7 languageName: node linkType: hard @@ -3452,16 +3519,6 @@ __metadata: languageName: node linkType: hard -"accepts@npm:~1.3.4, accepts@npm:~1.3.5, accepts@npm:~1.3.7": - version: 1.3.7 - resolution: "accepts@npm:1.3.7" - dependencies: - mime-types: ~2.1.24 - negotiator: 0.6.2 - checksum: 27fc8060ffc69481ff6719cd3ee06387d2b88381cb0ce626f087781bbd02201a645a9febc8e7e7333558354b33b1d2f922ad13560be4ec1b7ba9e76fc1c1241d - languageName: node - linkType: hard - "acorn-globals@npm:^6.0.0": version: 6.0.0 resolution: "acorn-globals@npm:6.0.0" @@ -3472,6 +3529,15 @@ __metadata: languageName: node linkType: hard +"acorn-import-assertions@npm:^1.7.6": + version: 1.7.6 + resolution: "acorn-import-assertions@npm:1.7.6" + peerDependencies: + acorn: ^8 + checksum: bc8a1585abd70ebfb3a6b3112f5e3974fee3ac598230f916a3857f0ad4fa7e72197be532c49d1feeb83678ef264f34bee9bf1934dfb2f276d88468134a51fa9f + languageName: node + linkType: hard + "acorn-jsx@npm:^5.3.1": version: 5.3.1 resolution: "acorn-jsx@npm:5.3.1" @@ -3488,10 +3554,10 @@ __metadata: languageName: node linkType: hard -"acorn-walk@npm:^8.0.0": - version: 8.0.2 - resolution: "acorn-walk@npm:8.0.2" - checksum: 0e26d2830be32b41418426f2f5550e715360810d5e89d226c1e109abd3d8ae182bd15cc053d84bc1e230bbc9a6f6932192f1e55bb99f472fe2078d4dc9558969 +"acorn-walk@npm:^8.0.0, acorn-walk@npm:^8.1.1": + version: 8.2.0 + resolution: "acorn-walk@npm:8.2.0" + checksum: 1715e76c01dd7b2d4ca472f9c58968516a4899378a63ad5b6c2d668bba8da21a71976c14ec5f5b75f887b6317c4ae0b897ab141c831d741dc76024d8745f1ad1 languageName: node linkType: hard @@ -3504,12 +3570,12 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.0.4, acorn@npm:^8.2.1, acorn@npm:^8.2.4": - version: 8.3.0 - resolution: "acorn@npm:8.3.0" +"acorn@npm:^8.0.4, acorn@npm:^8.2.4, acorn@npm:^8.4.1": + version: 8.5.0 + resolution: "acorn@npm:8.5.0" bin: acorn: bin/acorn - checksum: 9217542382451ea95902c650e0d03c661abaf39c41f3c797347b61f2950b0f03c5f77ef93b9f702dc8112907cf40812e3cb5f1e62b3054f017ebeb07ed267587 + checksum: 2e4c1dbed3da327684863debf31d341bf8882c6893c506653872c00977eee45675feb9129255d6c74c88424d2b20d889ca6de5b39776e5e3cccfc756b3ca1da8 languageName: node linkType: hard @@ -3539,7 +3605,7 @@ __metadata: languageName: node linkType: hard -"ajv-keywords@npm:^3.4.1, ajv-keywords@npm:^3.5.2": +"ajv-keywords@npm:^3.5.2": version: 3.5.2 resolution: "ajv-keywords@npm:3.5.2" peerDependencies: @@ -3548,7 +3614,7 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^6.10.0, ajv@npm:^6.12.2, ajv@npm:^6.12.3, ajv@npm:^6.12.4, ajv@npm:^6.12.5": +"ajv@npm:^6.10.0, ajv@npm:^6.12.3, ajv@npm:^6.12.4, ajv@npm:^6.12.5": version: 6.12.6 resolution: "ajv@npm:6.12.6" dependencies: @@ -3597,15 +3663,6 @@ __metadata: languageName: node linkType: hard -"ansi-html@npm:^0.0.7": - version: 0.0.7 - resolution: "ansi-html@npm:0.0.7" - bin: - ansi-html: ./bin/ansi-html - checksum: 9b839ce99650b4c2d83621d67d68622d27e7948b54f7a4386f2218a3997ee4e684e5a6e8d290880c3f3260e8d90c2613c59c7028f04992ad5c8d99d3a0fcc02c - languageName: node - linkType: hard - "ansi-regex@npm:^2.0.0": version: 2.1.1 resolution: "ansi-regex@npm:2.1.1" @@ -3659,7 +3716,14 @@ __metadata: languageName: node linkType: hard -"anymatch@npm:*, anymatch@npm:^3.0.3, anymatch@npm:^3.1.2, anymatch@npm:~3.1.1": +"ansi-styles@npm:^5.0.0": + version: 5.2.0 + resolution: "ansi-styles@npm:5.2.0" + checksum: d7f4e97ce0623aea6bc0d90dcd28881ee04cba06c570b97fd3391bd7a268eedfd9d5e2dd4fdcbdd82b8105df5faf6f24aaedc08eaf3da898e702db5948f63469 + languageName: node + linkType: hard + +"anymatch@npm:*, anymatch@npm:^3.0.3, anymatch@npm:^3.1.2, anymatch@npm:~3.1.2": version: 3.1.2 resolution: "anymatch@npm:3.1.2" dependencies: @@ -3757,20 +3821,6 @@ __metadata: languageName: node linkType: hard -"array-flatten@npm:1.1.1": - version: 1.1.1 - resolution: "array-flatten@npm:1.1.1" - checksum: a9925bf3512d9dce202112965de90c222cd59a4fbfce68a0951d25d965cf44642931f40aac72309c41f12df19afa010ecadceb07cfff9ccc1621e99d89ab5f3b - languageName: node - linkType: hard - -"array-flatten@npm:^2.1.0": - version: 2.1.2 - resolution: "array-flatten@npm:2.1.2" - checksum: e8988aac1fbfcdaae343d08c9a06a6fddd2c6141721eeeea45c3cf523bf4431d29a46602929455ed548c7a3e0769928cdc630405427297e7081bd118fdec9262 - languageName: node - linkType: hard - "array-includes@npm:^3.1.1, array-includes@npm:^3.1.2, array-includes@npm:^3.1.3": version: 3.1.3 resolution: "array-includes@npm:3.1.3" @@ -3858,13 +3908,6 @@ __metadata: languageName: node linkType: hard -"astral-regex@npm:^1.0.0": - version: 1.0.0 - resolution: "astral-regex@npm:1.0.0" - checksum: 93417fc0879531cd95ace2560a54df865c9461a3ac0714c60cbbaa5f1f85d2bee85489e78d82f70b911b71ac25c5f05fc5a36017f44c9bb33c701bee229ff848 - languageName: node - linkType: hard - "astral-regex@npm:^2.0.0": version: 2.0.0 resolution: "astral-regex@npm:2.0.0" @@ -3904,13 +3947,6 @@ __metadata: languageName: node linkType: hard -"auto-bind@npm:4.0.0": - version: 4.0.0 - resolution: "auto-bind@npm:4.0.0" - checksum: 00cad71cce5742faccb7dd65c1b55ebc4f45add4b0c9a1547b10b05bab22813230133b0c892c67ba3eb969a4524710c5e43cc45c72898ec84e56f3a596e7a04f - languageName: node - linkType: hard - "autoprefixer@npm:^9.6.1": version: 9.8.6 resolution: "autoprefixer@npm:9.8.6" @@ -4160,13 +4196,6 @@ __metadata: languageName: node linkType: hard -"batch@npm:0.6.1": - version: 0.6.1 - resolution: "batch@npm:0.6.1" - checksum: 61f9934c7378a51dce61b915586191078ef7f1c3eca707fdd58b96ff2ff56d9e0af2bdab66b1462301a73c73374239e6542d9821c0af787f3209a23365d07e7f - languageName: node - linkType: hard - "bcrypt-pbkdf@npm:^1.0.0": version: 1.0.2 resolution: "bcrypt-pbkdf@npm:1.0.2" @@ -4208,38 +4237,6 @@ __metadata: languageName: node linkType: hard -"body-parser@npm:1.19.0": - version: 1.19.0 - resolution: "body-parser@npm:1.19.0" - dependencies: - bytes: 3.1.0 - content-type: ~1.0.4 - debug: 2.6.9 - depd: ~1.1.2 - http-errors: 1.7.2 - iconv-lite: 0.4.24 - on-finished: ~2.3.0 - qs: 6.7.0 - raw-body: 2.4.0 - type-is: ~1.6.17 - checksum: 490231b4c89bbd43112762f7ba8e5342c174a6c9f64284a3b0fcabf63277e332f8316765596f1e5b15e4f3a6cf0422e005f4bb3149ed3a224bb025b7a36b9ac1 - languageName: node - linkType: hard - -"bonjour@npm:^3.5.0": - version: 3.5.0 - resolution: "bonjour@npm:3.5.0" - dependencies: - array-flatten: ^2.1.0 - deep-equal: ^1.0.1 - dns-equal: ^1.0.0 - dns-txt: ^2.0.2 - multicast-dns: ^6.0.1 - multicast-dns-service-types: ^1.1.0 - checksum: 2cfbe9fa861f4507b5ff3853eeae3ef03a231ede2b7363efedd80880ea3c0576f64416f98056c96e429ed68ff38dc4a70c0583d1eb4dab72e491ca44a0f03444 - languageName: node - linkType: hard - "boolbase@npm:^1.0.0, boolbase@npm:~1.0.0": version: 1.0.0 resolution: "boolbase@npm:1.0.0" @@ -4314,18 +4311,18 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:*, browserslist@npm:^4.12.0, browserslist@npm:^4.14.5, browserslist@npm:^4.16.3, browserslist@npm:^4.16.6, browserslist@npm:^4.6.4": - version: 4.16.6 - resolution: "browserslist@npm:4.16.6" +"browserslist@npm:*, browserslist@npm:^4.12.0, browserslist@npm:^4.14.5, browserslist@npm:^4.16.3, browserslist@npm:^4.16.6, browserslist@npm:^4.16.8, browserslist@npm:^4.6.4": + version: 4.16.8 + resolution: "browserslist@npm:4.16.8" dependencies: - caniuse-lite: ^1.0.30001219 - colorette: ^1.2.2 - electron-to-chromium: ^1.3.723 + caniuse-lite: ^1.0.30001251 + colorette: ^1.3.0 + electron-to-chromium: ^1.3.811 escalade: ^3.1.1 - node-releases: ^1.1.71 + node-releases: ^1.1.75 bin: browserslist: cli.js - checksum: 3dffc86892d2dcfcfc66b52519b7e5698ae070b4fc92ab047e760efc4cae0474e9e70bbe10d769c8d3491b655ef3a2a885b88e7196c83cc5dc0a46dfdba8b70c + checksum: a442ab2156b95bc88627591c5af6f3e4952eab4a3b1eef942af37bbeaa717f60a78b31890c76b1ade08e881c541c6ac9e7a74f0a66968658e9fe013e69e69093 languageName: node linkType: hard @@ -4375,13 +4372,6 @@ __metadata: languageName: node linkType: hard -"buffer-indexof@npm:^1.0.0": - version: 1.1.1 - resolution: "buffer-indexof@npm:1.1.1" - checksum: 0967abc2981a8e7d776324c6b84811e4d84a7ead89b54a3bb8791437f0c4751afd060406b06db90a436f1cf771867331b5ecf5c4aca95b4ccb9f6cb146c22ebc - languageName: node - linkType: hard - "buffer@npm:^5.2.1, buffer@npm:^5.5.0": version: 5.7.1 resolution: "buffer@npm:5.7.1" @@ -4392,20 +4382,6 @@ __metadata: languageName: node linkType: hard -"bytes@npm:3.0.0": - version: 3.0.0 - resolution: "bytes@npm:3.0.0" - checksum: a2b386dd8188849a5325f58eef69c3b73c51801c08ffc6963eddc9be244089ba32d19347caf6d145c86f315ae1b1fc7061a32b0c1aa6379e6a719090287ed101 - languageName: node - linkType: hard - -"bytes@npm:3.1.0": - version: 3.1.0 - resolution: "bytes@npm:3.1.0" - checksum: 7c3b21c5d9d44ed455460d5d36a31abc6fa2ce3807964ba60a4b03fd44454c8cf07bb0585af83bfde1c5cc2ea4bbe5897bc3d18cd15e0acf25a3615a35aba2df - languageName: node - linkType: hard - "cache-base@npm:^1.0.1": version: 1.0.1 resolution: "cache-base@npm:1.0.1" @@ -4423,6 +4399,13 @@ __metadata: languageName: node linkType: hard +"cacheable-lookup@npm:^5.0.3": + version: 5.0.4 + resolution: "cacheable-lookup@npm:5.0.4" + checksum: 763e02cf9196bc9afccacd8c418d942fc2677f22261969a4c2c2e760fa44a2351a81557bd908291c3921fe9beb10b976ba8fa50c5ca837c5a0dd945f16468f2d + languageName: node + linkType: hard + "cacheable-request@npm:^6.0.0": version: 6.1.0 resolution: "cacheable-request@npm:6.1.0" @@ -4438,6 +4421,21 @@ __metadata: languageName: node linkType: hard +"cacheable-request@npm:^7.0.1": + version: 7.0.2 + resolution: "cacheable-request@npm:7.0.2" + dependencies: + clone-response: ^1.0.2 + get-stream: ^5.1.0 + http-cache-semantics: ^4.0.0 + keyv: ^4.0.0 + lowercase-keys: ^2.0.0 + normalize-url: ^6.0.1 + responselike: ^2.0.0 + checksum: 6152813982945a5c9989cb457a6c499f12edcc7ade323d2fbfd759abc860bdbd1306e08096916bb413c3c47e812f8e4c0a0cc1e112c8ce94381a960f115bc77f + languageName: node + linkType: hard + "call-bind@npm:^1.0.0, call-bind@npm:^1.0.2": version: 1.0.2 resolution: "call-bind@npm:1.0.2" @@ -4486,10 +4484,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30000981, caniuse-lite@npm:^1.0.30001109, caniuse-lite@npm:^1.0.30001125, caniuse-lite@npm:^1.0.30001219": - version: 1.0.30001233 - resolution: "caniuse-lite@npm:1.0.30001233" - checksum: 7a628430f01192779a0e21384a464c566b7ffd1b9a082526efdb1dee4dda685ae05bbf7c2b8c04217ae7e3fb507af65c3df1eb0f87c3441f5e6a01a9a7030858 +"caniuse-lite@npm:^1.0.30000981, caniuse-lite@npm:^1.0.30001109, caniuse-lite@npm:^1.0.30001125, caniuse-lite@npm:^1.0.30001251": + version: 1.0.30001251 + resolution: "caniuse-lite@npm:1.0.30001251" + checksum: 918e1b1662c26c11291206146bc305d7fd1ca351aa9231c2e21cb1526d87b444830e2d8dc54416ebb8ecf7e0addea12d66a1c41493476229987e5e6922f0c14b languageName: node linkType: hard @@ -4516,15 +4514,15 @@ __metadata: languageName: node linkType: hard -"cfonts@npm:^2.9.2": - version: 2.9.2 - resolution: "cfonts@npm:2.9.2" +"cfonts@npm:^2.9.3": + version: 2.9.3 + resolution: "cfonts@npm:2.9.3" dependencies: chalk: ^4.1.1 window-size: ^1.1.1 bin: cfonts: bin/index.js - checksum: 3baa59a69676a558850b416ee021b9352f2927504052554f4870760d85bbe17b835b5c29f91c37abe42dda0384779278a19ee3874620467ff44f4efb6f2edd9e + checksum: 8bad5ec1cce489d09e3abda79bd340a41c6f54cfb29376aeb969a2d05d3b734419712e4cc7c95ac0a745cc9e31443e2f56390b4c01dbb5a0de80c921b2cc1739 languageName: node linkType: hard @@ -4549,13 +4547,13 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.1": - version: 4.1.1 - resolution: "chalk@npm:4.1.1" +"chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.1, chalk@npm:^4.1.2": + version: 4.1.2 + resolution: "chalk@npm:4.1.2" dependencies: ansi-styles: ^4.1.0 supports-color: ^7.1.0 - checksum: 036e973e665ba1a32c975e291d5f3d549bceeb7b1b983320d4598fb75d70fe20c5db5d62971ec0fe76cdbce83985a00ee42372416abfc3a5584465005a7855ed + checksum: fe75c9d5c76a7a98d45495b91b2172fa3b7a09e0cc9370e5c8feb1c567b85c4288e2b3fded7cfdd7359ac28d6b3844feb8b82b8686842e93d23c827c417e83fc languageName: node linkType: hard @@ -4587,22 +4585,22 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:>=2.0.0 <4.0.0, chokidar@npm:^3.2.2, chokidar@npm:^3.4.2, chokidar@npm:^3.5.1": - version: 3.5.1 - resolution: "chokidar@npm:3.5.1" +"chokidar@npm:>=2.0.0 <4.0.0, chokidar@npm:^3.2.2, chokidar@npm:^3.5.2": + version: 3.5.2 + resolution: "chokidar@npm:3.5.2" dependencies: - anymatch: ~3.1.1 + anymatch: ~3.1.2 braces: ~3.0.2 - fsevents: ~2.3.1 - glob-parent: ~5.1.0 + fsevents: ~2.3.2 + glob-parent: ~5.1.2 is-binary-path: ~2.1.0 is-glob: ~4.0.1 normalize-path: ~3.0.0 - readdirp: ~3.5.0 + readdirp: ~3.6.0 dependenciesMeta: fsevents: optional: true - checksum: b7774e6e3aeca084d39e8542041555a11452414c744122436101243f89580fad97154ae11525e46bfa816313ae32533e2a88e8587e4d50b14ea716a9e6538978 + checksum: d1fda32fcd67d9f6170a8468ad2630a3c6194949c9db3f6a91b16478c328b2800f433fb5d2592511b6cb145a47c013ea1cce60b432b1a001ae3ee978a8bffc2d languageName: node linkType: hard @@ -4697,17 +4695,6 @@ __metadata: languageName: node linkType: hard -"clipboard@npm:^2.0.0": - version: 2.0.8 - resolution: "clipboard@npm:2.0.8" - dependencies: - good-listener: ^1.2.2 - select: ^1.1.2 - tiny-emitter: ^2.0.0 - checksum: 13bda94d102cbab9f214c546358a27405f79bcaa58b1bd364f1ef9b9b44e2b3a2b0345bbaad5ce72b24fe89e9b0e6d8aaec0a59157721c47143010238e815a24 - languageName: node - linkType: hard - "cliui@npm:^6.0.0": version: 6.0.0 resolution: "cliui@npm:6.0.0" @@ -4768,15 +4755,6 @@ __metadata: languageName: node linkType: hard -"code-excerpt@npm:^3.0.0": - version: 3.0.0 - resolution: "code-excerpt@npm:3.0.0" - dependencies: - convert-to-spaces: ^1.0.1 - checksum: fa3a8ed15967076a43a4093b0c824cf0ada15d9aab12ea3c028851b72a69b56495aac1eadf18c3b6ae4baf0a95bb1e1faa9dbeeb0a2b2b5ae058da23328e9dd8 - languageName: node - linkType: hard - "code-point-at@npm:^1.0.0": version: 1.1.0 resolution: "code-point-at@npm:1.1.0" @@ -4840,10 +4818,10 @@ __metadata: languageName: node linkType: hard -"colorette@npm:^1.2.1, colorette@npm:^1.2.2": - version: 1.2.2 - resolution: "colorette@npm:1.2.2" - checksum: 69fec14ddaedd0f5b00e4bae40dc4bc61f7050ebdc82983a595d6fd64e650b9dc3c033fff378775683138e992e0ddd8717ac7c7cec4d089679dcfbe3cd921b04 +"colorette@npm:^1.2.1, colorette@npm:^1.2.2, colorette@npm:^1.3.0": + version: 1.3.0 + resolution: "colorette@npm:1.3.0" + checksum: bda403dfba4d032bee4169f2a6436a83ae3da488a53bcb3be92dc44ace056518245cc614b12429d7529493d6b090a119b2523b0d55e8cd6b81ad939a3003c008 languageName: node linkType: hard @@ -4877,13 +4855,6 @@ __metadata: languageName: node linkType: hard -"commander@npm:^6.2.0": - version: 6.2.1 - resolution: "commander@npm:6.2.1" - checksum: d7090410c0de6bc5c67d3ca41c41760d6d268f3c799e530aafb73b7437d1826bbf0d2a3edac33f8b57cc9887b4a986dce307fa5557e109be40eadb7c43b21742 - languageName: node - linkType: hard - "commander@npm:^7.2.0": version: 7.2.0 resolution: "commander@npm:7.2.0" @@ -4905,30 +4876,6 @@ __metadata: languageName: node linkType: hard -"compressible@npm:~2.0.16": - version: 2.0.18 - resolution: "compressible@npm:2.0.18" - dependencies: - mime-db: ">= 1.43.0 < 2" - checksum: 58321a85b375d39230405654721353f709d0c1442129e9a17081771b816302a012471a9b8f4864c7dbe02eef7f2aaac3c614795197092262e94b409c9be108f0 - languageName: node - linkType: hard - -"compression@npm:^1.7.4": - version: 1.7.4 - resolution: "compression@npm:1.7.4" - dependencies: - accepts: ~1.3.5 - bytes: 3.0.0 - compressible: ~2.0.16 - debug: 2.6.9 - on-headers: ~1.0.2 - safe-buffer: 5.1.2 - vary: ~1.1.2 - checksum: 35c0f2eb1f28418978615dc1bc02075b34b1568f7f56c62d60f4214d4b7cc00d0f6d282b5f8a954f59872396bd770b6b15ffd8aa94c67d4bce9b8887b906999b - languageName: node - linkType: hard - "concat-map@npm:0.0.1": version: 0.0.1 resolution: "concat-map@npm:0.0.1" @@ -4979,13 +4926,6 @@ __metadata: languageName: node linkType: hard -"connect-history-api-fallback@npm:^1.6.0": - version: 1.6.0 - resolution: "connect-history-api-fallback@npm:1.6.0" - checksum: 804ca2be28c999032ecd37a9f71405e5d7b7a4b3defcebbe41077bb8c5a0a150d7b59f51dcc33b2de30bc7e217a31d10f8cfad27e8e74c2fc7655eeba82d6e7e - languageName: node - linkType: hard - "console-control-strings@npm:^1.0.0, console-control-strings@npm:~1.1.0": version: 1.1.0 resolution: "console-control-strings@npm:1.1.0" @@ -5009,22 +4949,6 @@ __metadata: languageName: node linkType: hard -"content-disposition@npm:0.5.3": - version: 0.5.3 - resolution: "content-disposition@npm:0.5.3" - dependencies: - safe-buffer: 5.1.2 - checksum: 95bf164c0b0b8199d3f44b7631e51b37f683c6a90b9baa4315bd3d405a6d1bc81b7346f0981046aa004331fb3d7a28b629514d01fc209a5251573fc7e4d33380 - languageName: node - linkType: hard - -"content-type@npm:~1.0.4": - version: 1.0.4 - resolution: "content-type@npm:1.0.4" - checksum: 3d93585fda985d1554eca5ebd251994327608d2e200978fdbfba21c0c679914d5faf266d17027de44b34a72c7b0745b18584ecccaa7e1fdfb6a68ac7114f12e0 - languageName: node - linkType: hard - "convert-source-map@npm:^1.4.0, convert-source-map@npm:^1.6.0, convert-source-map@npm:^1.7.0": version: 1.7.0 resolution: "convert-source-map@npm:1.7.0" @@ -5034,27 +4958,6 @@ __metadata: languageName: node linkType: hard -"convert-to-spaces@npm:^1.0.1": - version: 1.0.2 - resolution: "convert-to-spaces@npm:1.0.2" - checksum: e73f2ae39eb2b184f0796138eaab9c088b03b94937377d31be5b2282aef6a6ccce6b46f51bd99b3b7dfc70f516e2a6b16c0dd911883bfadf8d1073f462480224 - languageName: node - linkType: hard - -"cookie-signature@npm:1.0.6": - version: 1.0.6 - resolution: "cookie-signature@npm:1.0.6" - checksum: f4e1b0a98a27a0e6e66fd7ea4e4e9d8e038f624058371bf4499cfcd8f3980be9a121486995202ba3fca74fbed93a407d6d54d43a43f96fd28d0bd7a06761591a - languageName: node - linkType: hard - -"cookie@npm:0.4.0": - version: 0.4.0 - resolution: "cookie@npm:0.4.0" - checksum: 760384ba0aef329c52523747e36a452b5e51bc49b34160363a6934e7b7df3f93fcc88b35e33450361535d40a92a96412da870e1816aba9aa6cc556a9fedd8492 - languageName: node - linkType: hard - "copy-anything@npm:^2.0.1": version: 2.0.3 resolution: "copy-anything@npm:2.0.3" @@ -5102,19 +5005,6 @@ __metadata: languageName: node linkType: hard -"cosmiconfig@npm:^6.0.0": - version: 6.0.0 - resolution: "cosmiconfig@npm:6.0.0" - dependencies: - "@types/parse-json": ^4.0.0 - import-fresh: ^3.1.0 - parse-json: ^5.0.0 - path-type: ^4.0.0 - yaml: ^1.7.2 - checksum: 8eed7c854b91643ecb820767d0deb038b50780ecc3d53b0b19e03ed8aabed4ae77271198d1ae3d49c3b110867edf679f5faad924820a8d1774144a87cb6f98fc - languageName: node - linkType: hard - "cosmiconfig@npm:^7.0.0": version: 7.0.0 resolution: "cosmiconfig@npm:7.0.0" @@ -5189,9 +5079,9 @@ __metadata: languageName: node linkType: hard -"css-loader@npm:^5.2.6": - version: 5.2.6 - resolution: "css-loader@npm:5.2.6" +"css-loader@npm:^5.2.7": + version: 5.2.7 + resolution: "css-loader@npm:5.2.7" dependencies: icss-utils: ^5.1.0 loader-utils: ^2.0.0 @@ -5205,7 +5095,7 @@ __metadata: semver: ^7.3.5 peerDependencies: webpack: ^4.27.0 || ^5.0.0 - checksum: 993354a24887724712dc1320abba5c1c4f7a4fdc6cfd64d160a0706218d6eeb241dbf4cea0694cd2752f7c3626b543efdd9993d12f4bb5b75f33e9c4da155e10 + checksum: fb0742b30ac0919f94b99a323bdefe6d48ae46d66c7d966aae59031350532f368f8bba5951fcd268f2e053c5e6e4655551076268e9073ccb58e453f98ae58f8e languageName: node linkType: hard @@ -5357,19 +5247,10 @@ __metadata: languageName: node linkType: hard -"date-fns@npm:^2.22.1": - version: 2.22.1 - resolution: "date-fns@npm:2.22.1" - checksum: 7ff97cd605af50c02f341687c2cafd218839a1aace67965374989855a13f76dc4fe52e0e38c343c1ad1f8399787cb6839a0b14a669c44b30550c287300b1bb50 - languageName: node - linkType: hard - -"debug@npm:2.6.9, debug@npm:^2.2.0, debug@npm:^2.3.3, debug@npm:^2.6.0, debug@npm:^2.6.9": - version: 2.6.9 - resolution: "debug@npm:2.6.9" - dependencies: - ms: 2.0.0 - checksum: d2f51589ca66df60bf36e1fa6e4386b318c3f1e06772280eea5b1ae9fd3d05e9c2b7fd8a7d862457d00853c75b00451aa2d7459b924629ee385287a650f58fe6 +"date-fns@npm:^2.23.0": + version: 2.23.0 + resolution: "date-fns@npm:2.23.0" + checksum: 485216d550255a548552db16379e7a5cd440e262b90fbdc0362f63ee71d0e74bd00ce29ca8d76b343f6df36c1ecb6f22edba0b72848a4c32674e755619695c1f languageName: node linkType: hard @@ -5397,6 +5278,15 @@ __metadata: languageName: node linkType: hard +"debug@npm:^2.2.0, debug@npm:^2.3.3, debug@npm:^2.6.0, debug@npm:^2.6.9": + version: 2.6.9 + resolution: "debug@npm:2.6.9" + dependencies: + ms: 2.0.0 + checksum: d2f51589ca66df60bf36e1fa6e4386b318c3f1e06772280eea5b1ae9fd3d05e9c2b7fd8a7d862457d00853c75b00451aa2d7459b924629ee385287a650f58fe6 + languageName: node + linkType: hard + "debug@npm:^3.1.1, debug@npm:^3.2.6": version: 3.2.7 resolution: "debug@npm:3.2.7" @@ -5436,24 +5326,12 @@ __metadata: languageName: node linkType: hard -"dedent@npm:^0.7.0": - version: 0.7.0 - resolution: "dedent@npm:0.7.0" - checksum: 87de191050d9a40dd70cad01159a0bcf05ecb59750951242070b6abf9569088684880d00ba92a955b4058804f16eeaf91d604f283929b4f614d181cd7ae633d2 - languageName: node - linkType: hard - -"deep-equal@npm:^1.0.1": - version: 1.1.1 - resolution: "deep-equal@npm:1.1.1" +"decompress-response@npm:^6.0.0": + version: 6.0.0 + resolution: "decompress-response@npm:6.0.0" dependencies: - is-arguments: ^1.0.4 - is-date-object: ^1.0.1 - is-regex: ^1.0.4 - object-is: ^1.0.1 - object-keys: ^1.1.1 - regexp.prototype.flags: ^1.2.0 - checksum: f92686f2c5bcdf714a75a5fa7a9e47cb374a8ec9307e717b8d1ce61f56a75aaebf5619c2a12b8087a705b5a2f60d0292c35f8b58cb1f72e3268a3a15cab9f78d + mimic-response: ^3.1.0 + checksum: d377cf47e02d805e283866c3f50d3d21578b779731e8c5072d6ce8c13cc31493db1c2f6784da9d1d5250822120cefa44f1deab112d5981015f2e17444b763812 languageName: node linkType: hard @@ -5478,15 +5356,6 @@ __metadata: languageName: node linkType: hard -"default-gateway@npm:^6.0.0": - version: 6.0.3 - resolution: "default-gateway@npm:6.0.3" - dependencies: - execa: ^5.0.0 - checksum: 126f8273ecac8ee9ff91ea778e8784f6cd732d77c3157e8c5bdd6ed03651b5291f71446d05bc02d04073b1e67583604db5394ea3cf992ede0088c70ea15b7378 - languageName: node - linkType: hard - "defer-to-connect@npm:^1.0.1": version: 1.1.3 resolution: "defer-to-connect@npm:1.1.3" @@ -5494,6 +5363,13 @@ __metadata: languageName: node linkType: hard +"defer-to-connect@npm:^2.0.0": + version: 2.0.1 + resolution: "defer-to-connect@npm:2.0.1" + checksum: 8a9b50d2f25446c0bfefb55a48e90afd58f85b21bcf78e9207cd7b804354f6409032a1705c2491686e202e64fc05f147aa5aa45f9aa82627563f045937f5791b + languageName: node + linkType: hard + "define-properties@npm:^1.1.3": version: 1.1.3 resolution: "define-properties@npm:1.1.3" @@ -5531,22 +5407,6 @@ __metadata: languageName: node linkType: hard -"del@npm:^6.0.0": - version: 6.0.0 - resolution: "del@npm:6.0.0" - dependencies: - globby: ^11.0.1 - graceful-fs: ^4.2.4 - is-glob: ^4.0.1 - is-path-cwd: ^2.2.0 - is-path-inside: ^3.0.2 - p-map: ^4.0.0 - rimraf: ^3.0.2 - slash: ^3.0.0 - checksum: 5742891627e91aaf62385714025233f4664da28bc55b6ab825649dcdea4691fed3cf329a2b1913fd2d2612e693e99e08a03c84cac7f36ef54bacac9390520192 - languageName: node - linkType: hard - "delayed-stream@npm:~1.0.0": version: 1.0.0 resolution: "delayed-stream@npm:1.0.0" @@ -5554,13 +5414,6 @@ __metadata: languageName: node linkType: hard -"delegate@npm:^3.1.2": - version: 3.2.0 - resolution: "delegate@npm:3.2.0" - checksum: d943058fe05897228b158cbd1bab05164df28c8f54127873231d6b03b0a5acc1b3ee1f98ac70ccc9b79cd84aa47118a7de111fee2923753491583905069da27d - languageName: node - linkType: hard - "delegates@npm:^1.0.0": version: 1.0.0 resolution: "delegates@npm:1.0.0" @@ -5600,13 +5453,6 @@ __metadata: languageName: node linkType: hard -"depd@npm:~1.1.2": - version: 1.1.2 - resolution: "depd@npm:1.1.2" - checksum: 6b406620d269619852885ce15965272b829df6f409724415e0002c8632ab6a8c0a08ec1f0bd2add05dc7bd7507606f7e2cc034fa24224ab829580040b835ecd9 - languageName: node - linkType: hard - "deps-regex@npm:^0.1.4": version: 0.1.4 resolution: "deps-regex@npm:0.1.4" @@ -5614,13 +5460,6 @@ __metadata: languageName: node linkType: hard -"destroy@npm:~1.0.4": - version: 1.0.4 - resolution: "destroy@npm:1.0.4" - checksum: da9ab4961dc61677c709da0c25ef01733042614453924d65636a7db37308fef8a24cd1e07172e61173d471ca175371295fbc984b0af5b2b4ff47cd57bd784c03 - languageName: node - linkType: hard - "detab@npm:2.0.4": version: 2.0.4 resolution: "detab@npm:2.0.4" @@ -5657,10 +5496,10 @@ __metadata: languageName: node linkType: hard -"devtools-protocol@npm:0.0.883894": - version: 0.0.883894 - resolution: "devtools-protocol@npm:0.0.883894" - checksum: 18f06c2d51c6037e6a0cfd3177bceea9c12d4758a858db8023a3f79bcee867f2cc0e92f9a118eb0952057726225ca19202d994eb2e0fa03b862bd9925983fdc4 +"devtools-protocol@npm:0.0.901419": + version: 0.0.901419 + resolution: "devtools-protocol@npm:0.0.901419" + checksum: de68331ddfb35b828ad743d939d9237e122f76d4a6cbf1e64f6c6d8e9c2c5cc65a5f1994db0fead90192cca1aa9dbed2ea822a7da7b58104cd041a90e215b9a3 languageName: node linkType: hard @@ -5687,32 +5526,6 @@ __metadata: languageName: node linkType: hard -"dns-equal@npm:^1.0.0": - version: 1.0.0 - resolution: "dns-equal@npm:1.0.0" - checksum: a8471ac849c7c13824f053babea1bc26e2f359394dd5a460f8340d8abd13434be01e3327a5c59d212f8c8997817450efd3f3ac77bec709b21979cf0235644524 - languageName: node - linkType: hard - -"dns-packet@npm:^1.3.1": - version: 1.3.1 - resolution: "dns-packet@npm:1.3.1" - dependencies: - ip: ^1.1.0 - safe-buffer: ^5.0.1 - checksum: 6575edeea6e6e719823a1574cd1adcfebdc96f870cb1b367d6168490dc36c9826a97bf57ad009e6fdcd3dc5000cc43de7cb72a2102ba05b83178c8d0300c5a6e - languageName: node - linkType: hard - -"dns-txt@npm:^2.0.2": - version: 2.0.2 - resolution: "dns-txt@npm:2.0.2" - dependencies: - buffer-indexof: ^1.0.0 - checksum: 80130b665379ecd991687ae079fbee25d091e03e4c4cef41e7643b977849ac48c2f56bfcb3727e53594d29029b833749811110d9f3fbee1b26a6e6f8096a5cef - languageName: node - linkType: hard - "doctrine@npm:1.5.0": version: 1.5.0 resolution: "doctrine@npm:1.5.0" @@ -5741,10 +5554,10 @@ __metadata: languageName: node linkType: hard -"dom-accessibility-api@npm:^0.5.4": - version: 0.5.4 - resolution: "dom-accessibility-api@npm:0.5.4" - checksum: 1fb22b351984564212b41bd7265ad1288322ad72e7367753f589facaeb98c2e3515502396acf2463f71dbaa1e238d6e006ec144a6217f1cd42e962b9bebd2dee +"dom-accessibility-api@npm:^0.5.6": + version: 0.5.7 + resolution: "dom-accessibility-api@npm:0.5.7" + checksum: 16161688087510bc31e9103be3a0b0b7d3b044fd4ca03059ac97950f391958008198627c688bd94346757169de91c2500903b14ee9e420c006961a25770b8c62 languageName: node linkType: hard @@ -5852,30 +5665,23 @@ __metadata: languageName: node linkType: hard -"ee-first@npm:1.1.1": - version: 1.1.1 - resolution: "ee-first@npm:1.1.1" - checksum: 1b4cac778d64ce3b582a7e26b218afe07e207a0f9bfe13cc7395a6d307849cfe361e65033c3251e00c27dd060cab43014c2d6b2647676135e18b77d2d05b3f4f - languageName: node - linkType: hard - -"electron-to-chromium@npm:^1.3.564, electron-to-chromium@npm:^1.3.723": - version: 1.3.743 - resolution: "electron-to-chromium@npm:1.3.743" - checksum: ea9526335f835cab6b6e9755c8eb24c24a88827eac4849943914f35c43442c7f36b983d3c3062d126f742750bf1332ed2d0f2966b0695f8dd37fc75f77561ef5 +"electron-to-chromium@npm:^1.3.564, electron-to-chromium@npm:^1.3.811": + version: 1.3.814 + resolution: "electron-to-chromium@npm:1.3.814" + checksum: 5d74e2fdb46a2edff9d3940a7419aaa950ec07ef0bb89e843a4320222fe14b811b34079ffeac2f04cd21c468c71c10f6921b7e13648b6309f98f5cd42030726d languageName: node linkType: hard -"electron@npm:^13.0.1": - version: 13.0.1 - resolution: "electron@npm:13.0.1" +"electron@npm:^13.2.1": + version: 13.2.1 + resolution: "electron@npm:13.2.1" dependencies: "@electron/get": ^1.0.1 "@types/node": ^14.6.2 extract-zip: ^1.0.3 bin: electron: cli.js - checksum: e380f7673bfa32bc0b28907f4c5698cdef7f2354b0de716b2f9eab9f6cfa24bd3e222850a3fc78461e3f685e9ba6efe5d8c4caf5550ed2698066f87e1e8e5583 + checksum: 836537d387e574085d5a3df74414d36a21c2b5741609f2d9bd90c2fa718d99c8054e0e893f4ca4292ac852647d49b9bcaa0bf226acc16dac5852db37e9a83668 languageName: node linkType: hard @@ -5914,7 +5720,7 @@ __metadata: languageName: node linkType: hard -"encodeurl@npm:^1.0.2, encodeurl@npm:~1.0.2": +"encodeurl@npm:^1.0.2": version: 1.0.2 resolution: "encodeurl@npm:1.0.2" checksum: e50e3d508cdd9c4565ba72d2012e65038e5d71bdc9198cb125beb6237b5b1ade6c0d343998da9e170fb2eae52c1bed37d4d6d98a46ea423a0cddbed5ac3f780c @@ -6014,10 +5820,10 @@ __metadata: languageName: node linkType: hard -"es-module-lexer@npm:^0.4.0": - version: 0.4.1 - resolution: "es-module-lexer@npm:0.4.1" - checksum: c33ee30390812df875e419783cf37f3a32b73daabbb1f8a08fe9282fe0777b0a8064a219a34a253cb954b3308bbd4227e17da9e8ec253d309a83b4c90b2e9388 +"es-module-lexer@npm:^0.7.1": + version: 0.7.1 + resolution: "es-module-lexer@npm:0.7.1" + checksum: c66fb633cc521529862818caf603897d58d30442c885a1a1ed16823ddbbb8a437e3952454a4b2650242df1c1b4d0efa42fedbe49594e3ef2ceb3c891cf1211dd languageName: node linkType: hard @@ -6052,29 +5858,29 @@ __metadata: languageName: node linkType: hard -"esbuild-loader@npm:^2.13.1": - version: 2.13.1 - resolution: "esbuild-loader@npm:2.13.1" +"esbuild-loader@npm:^2.15.1": + version: 2.15.1 + resolution: "esbuild-loader@npm:2.15.1" dependencies: - esbuild: ^0.11.19 + esbuild: ^0.12.21 joycon: ^3.0.1 json5: ^2.2.0 loader-utils: ^2.0.0 tapable: ^2.2.0 - type-fest: ^1.0.1 + type-fest: ^1.4.0 webpack-sources: ^2.2.0 peerDependencies: webpack: ^4.40.0 || ^5.0.0 - checksum: 2b2cad7c7f0364d210706bab6558e9adfc3325b1ba0447b18a816260ea450f48e3846f11670c505162b19bebe9c77fe81cc21f9e7820f1304a74df3edfd0c131 + checksum: bbc7e9a07b0a9cb4bbe06764f9d68e1c620299c30c16d923b8e36c13b13663c0c9db533e5684ce4d9ca470aba776ea919f3d6b97b6132374e34b8139ce8551b6 languageName: node linkType: hard -"esbuild@npm:^0.11.19": - version: 0.11.23 - resolution: "esbuild@npm:0.11.23" +"esbuild@npm:^0.12.21": + version: 0.12.22 + resolution: "esbuild@npm:0.12.22" bin: esbuild: bin/esbuild - checksum: d55bea84f94e7854fa6fb013ffc63747f2286001b3d73c2a7beb605e6e4847c24ff2cde0660f03045d06d083695c8082423b007a9ee8687e70b52719458bfdd6 + checksum: db14cc10914d40a875da1b102cee7479ebe1b085cdc2deaa8e275468ada9bf3c6b793bd6004a031a9f2e34865fe629dc59030c5fe4820978f1cf071966aa2c5d languageName: node linkType: hard @@ -6092,13 +5898,6 @@ __metadata: languageName: node linkType: hard -"escape-html@npm:~1.0.3": - version: 1.0.3 - resolution: "escape-html@npm:1.0.3" - checksum: 6213ca9ae00d0ab8bccb6d8d4e0a98e76237b2410302cf7df70aaa6591d509a2a37ce8998008cbecae8fc8ffaadf3fb0229535e6a145f3ce0b211d060decbb24 - languageName: node - linkType: hard - "escape-string-regexp@npm:2.0.0, escape-string-regexp@npm:^2.0.0": version: 2.0.0 resolution: "escape-string-regexp@npm:2.0.0" @@ -6365,12 +6164,13 @@ __metadata: languageName: node linkType: hard -"eslint@npm:^7.27.0": - version: 7.27.0 - resolution: "eslint@npm:7.27.0" +"eslint@npm:^7.32.0": + version: 7.32.0 + resolution: "eslint@npm:7.32.0" dependencies: "@babel/code-frame": 7.12.11 - "@eslint/eslintrc": ^0.4.1 + "@eslint/eslintrc": ^0.4.3 + "@humanwhocodes/config-array": ^0.5.0 ajv: ^6.10.0 chalk: ^4.0.0 cross-spawn: ^7.0.2 @@ -6387,7 +6187,7 @@ __metadata: fast-deep-equal: ^3.1.3 file-entry-cache: ^6.0.1 functional-red-black-tree: ^1.0.1 - glob-parent: ^5.0.0 + glob-parent: ^5.1.2 globals: ^13.6.0 ignore: ^4.0.6 import-fresh: ^3.0.0 @@ -6410,7 +6210,7 @@ __metadata: v8-compile-cache: ^2.0.3 bin: eslint: bin/eslint.js - checksum: f45eb40e7758fdff0eaeb3d5c0f185c269b644722dfc926dd5bbfa5a47a183f64fa517a6031db1a3212251de8af2015bb684a1b2cc293bd0b9d5eadc373bbd59 + checksum: cc85af9985a3a11085c011f3d27abe8111006d34cc274291b3c4d7bea51a4e2ff6135780249becd919ba7f6d6d1ecc38a6b73dacb6a7be08d38453b344dc8d37 languageName: node linkType: hard @@ -6481,13 +6281,6 @@ __metadata: languageName: node linkType: hard -"etag@npm:~1.8.1": - version: 1.8.1 - resolution: "etag@npm:1.8.1" - checksum: 571aeb3dbe0f2bbd4e4fadbdb44f325fc75335cd5f6f6b6a091e6a06a9f25ed5392f0863c5442acb0646787446e816f13cbfc6edce5b07658541dff573cab1ff - languageName: node - linkType: hard - "eventemitter3@npm:^4.0.0": version: 4.0.7 resolution: "eventemitter3@npm:4.0.7" @@ -6594,44 +6387,6 @@ __metadata: languageName: node linkType: hard -"express@npm:^4.17.1": - version: 4.17.1 - resolution: "express@npm:4.17.1" - dependencies: - accepts: ~1.3.7 - array-flatten: 1.1.1 - body-parser: 1.19.0 - content-disposition: 0.5.3 - content-type: ~1.0.4 - cookie: 0.4.0 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: ~1.1.2 - encodeurl: ~1.0.2 - escape-html: ~1.0.3 - etag: ~1.8.1 - finalhandler: ~1.1.2 - fresh: 0.5.2 - merge-descriptors: 1.0.1 - methods: ~1.1.2 - on-finished: ~2.3.0 - parseurl: ~1.3.3 - path-to-regexp: 0.1.7 - proxy-addr: ~2.0.5 - qs: 6.7.0 - range-parser: ~1.2.1 - safe-buffer: 5.1.2 - send: 0.17.1 - serve-static: 1.14.1 - setprototypeof: 1.1.1 - statuses: ~1.5.0 - type-is: ~1.6.18 - utils-merge: 1.0.1 - vary: ~1.1.2 - checksum: d964e9e17af331ea6fa2f84999b063bc47189dd71b4a735df83f9126d3bb2b92e830f1cb1d7c2742530eb625e2689d7a9a9c71f0c3cc4dd6015c3cd32a01abd5 - languageName: node - linkType: hard - "extend-shallow@npm:^2.0.1": version: 2.0.1 resolution: "extend-shallow@npm:2.0.1" @@ -6763,15 +6518,6 @@ __metadata: languageName: node linkType: hard -"faye-websocket@npm:^0.11.3": - version: 0.11.3 - resolution: "faye-websocket@npm:0.11.3" - dependencies: - websocket-driver: ">=0.5.1" - checksum: d7b2d68546812ea24e3079bd1e08bf1d79cd6d6137bfcea565d1cb1f6a5fc8fc29b689df2c1aff8b8b291d60fc808e1b27aa2896b86ba77ded10f1d9734c8e9f - languageName: node - linkType: hard - "fb-watchman@npm:^2.0.0": version: 2.0.1 resolution: "fb-watchman@npm:2.0.1" @@ -6839,21 +6585,6 @@ __metadata: languageName: node linkType: hard -"finalhandler@npm:~1.1.2": - version: 1.1.2 - resolution: "finalhandler@npm:1.1.2" - dependencies: - debug: 2.6.9 - encodeurl: ~1.0.2 - escape-html: ~1.0.3 - on-finished: ~2.3.0 - parseurl: ~1.3.3 - statuses: ~1.5.0 - unpipe: ~1.0.0 - checksum: 617880460c5138dd7ccfd555cb5dde4d8f170f4b31b8bd51e4b646bb2946c30f7db716428a1f2882d730d2b72afb47d1f67cc487b874cb15426f95753a88965e - languageName: node - linkType: hard - "find-cache-dir@npm:^3.3.1": version: 3.3.1 resolution: "find-cache-dir@npm:3.3.1" @@ -6956,27 +6687,6 @@ __metadata: languageName: node linkType: hard -"fork-ts-checker-webpack-plugin@npm:^6.2.10": - version: 6.2.10 - resolution: "fork-ts-checker-webpack-plugin@npm:6.2.10" - dependencies: - "@babel/code-frame": ^7.8.3 - "@types/json-schema": ^7.0.5 - chalk: ^4.1.0 - chokidar: ^3.4.2 - cosmiconfig: ^6.0.0 - deepmerge: ^4.2.2 - fs-extra: ^9.0.0 - glob: ^7.1.6 - memfs: ^3.1.2 - minimatch: ^3.0.4 - schema-utils: 2.7.0 - semver: ^7.3.2 - tapable: ^1.0.0 - checksum: ac8c05b9467831fd7b6d964fa9abe04bcebf272bca538f781e88ff54b3d8b95e32a41ce76787433084985ede25825d5fceab29422fd135a94802ac2e739f595c - languageName: node - linkType: hard - "form-data@npm:^3.0.0": version: 3.0.1 resolution: "form-data@npm:3.0.1" @@ -6999,13 +6709,6 @@ __metadata: languageName: node linkType: hard -"forwarded@npm:~0.1.2": - version: 0.1.2 - resolution: "forwarded@npm:0.1.2" - checksum: 54695c574292f9bc6bfa52111844337bc2e61cfcc5ec82f16b816d721a67a0c76b4849a34b57e38e51d64ddbb81aef974f393579f610ed1b990470e75abad2e0 - languageName: node - linkType: hard - "fragment-cache@npm:^0.2.1": version: 0.2.1 resolution: "fragment-cache@npm:0.2.1" @@ -7015,13 +6718,6 @@ __metadata: languageName: node linkType: hard -"fresh@npm:0.5.2": - version: 0.5.2 - resolution: "fresh@npm:0.5.2" - checksum: 13ea8b08f91e669a64e3ba3a20eb79d7ca5379a81f1ff7f4310d54e2320645503cc0c78daedc93dfb6191287295f6479544a649c64d8e41a1c0fb0c221552346 - languageName: node - linkType: hard - "fs-constants@npm:^1.0.0": version: 1.0.0 resolution: "fs-constants@npm:1.0.0" @@ -7051,7 +6747,7 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:^9.0.0, fs-extra@npm:^9.1.0": +"fs-extra@npm:^9.1.0": version: 9.1.0 resolution: "fs-extra@npm:9.1.0" dependencies: @@ -7072,13 +6768,6 @@ __metadata: languageName: node linkType: hard -"fs-monkey@npm:1.0.1": - version: 1.0.1 - resolution: "fs-monkey@npm:1.0.1" - checksum: 6171a9f042fd3ccb72620fafeebd4e577a3174b52c4ec57c4bc93b622b94adba09efffc07afe762cf4395924d456a59661a1600ce7fbba19313ba230310c6655 - languageName: node - linkType: hard - "fs.realpath@npm:^1.0.0": version: 1.0.0 resolution: "fs.realpath@npm:1.0.0" @@ -7086,7 +6775,7 @@ __metadata: languageName: node linkType: hard -"fsevents@^2.1.2, fsevents@~2.3.1": +"fsevents@^2.1.2, fsevents@~2.3.2": version: 2.3.2 resolution: "fsevents@npm:2.3.2" dependencies: @@ -7095,7 +6784,7 @@ __metadata: languageName: node linkType: hard -"fsevents@patch:fsevents@^2.1.2#~builtin, fsevents@patch:fsevents@~2.3.1#~builtin": +"fsevents@patch:fsevents@^2.1.2#~builtin, fsevents@patch:fsevents@~2.3.2#~builtin": version: 2.3.2 resolution: "fsevents@patch:fsevents@npm%3A2.3.2#~builtin::version=2.3.2&hash=1cc4b2" dependencies: @@ -7223,7 +6912,7 @@ __metadata: languageName: node linkType: hard -"glob-parent@npm:^5.0.0, glob-parent@npm:^5.1.0, glob-parent@npm:~5.1.0": +"glob-parent@npm:^5.1.0, glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": version: 5.1.2 resolution: "glob-parent@npm:5.1.2" dependencies: @@ -7316,21 +7005,12 @@ __metadata: languageName: node linkType: hard -"globals@npm:^12.1.0": - version: 12.4.0 - resolution: "globals@npm:12.4.0" - dependencies: - type-fest: ^0.8.1 - checksum: 7ae5ee16a96f1e8d71065405f57da0e33267f6b070cd36a5444c7780dd28639b48b92413698ac64f04bf31594f9108878bd8cb158ecdf759c39e05634fefcca6 - languageName: node - linkType: hard - -"globals@npm:^13.6.0": - version: 13.7.0 - resolution: "globals@npm:13.7.0" +"globals@npm:^13.6.0, globals@npm:^13.9.0": + version: 13.11.0 + resolution: "globals@npm:13.11.0" dependencies: type-fest: ^0.20.2 - checksum: 27433ceaf57571ccadcd01e0497c2f3485ad2aea93985c9e3850ce54835d7ffce1eddcc210f412a327d855b77f6c25307efee7f448c01e11e3929d12544b820a + checksum: e9e5624154261a3e5344d2105a94886c5f2ca48028fa8258cd7b9119c5f00cf2909392817bb2d162c9a1a31b55d9b2c14e8f2271c45a22f77806f5b9322541cf languageName: node linkType: hard @@ -7371,12 +7051,22 @@ __metadata: languageName: node linkType: hard -"good-listener@npm:^1.2.2": - version: 1.2.2 - resolution: "good-listener@npm:1.2.2" +"got@npm:^11.8.2": + version: 11.8.2 + resolution: "got@npm:11.8.2" dependencies: - delegate: ^3.1.2 - checksum: f39fb82c4e41524f56104cfd2d7aef1a88e72f3f75139115fbdf98cc7d844e0c1b39218b2e83438c6188727bf904ed78c7f0f2feff67b32833bc3af7f0202b33 + "@sindresorhus/is": ^4.0.0 + "@szmarczak/http-timer": ^4.0.5 + "@types/cacheable-request": ^6.0.1 + "@types/responselike": ^1.0.0 + cacheable-lookup: ^5.0.3 + cacheable-request: ^7.0.1 + decompress-response: ^6.0.0 + http2-wrapper: ^1.0.0-beta.5.2 + lowercase-keys: ^2.0.0 + p-cancelable: ^2.0.0 + responselike: ^2.0.0 + checksum: 41ad7bf74f7ec18bca81997ea0a6c8b6b75405cc3ba76d49c5d9d4658cad200d5a9fa7b0a13058458d0df6bed217baabd122d5d351c6bc6996514a5e428744bb languageName: node linkType: hard @@ -7399,7 +7089,7 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.3, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6": +"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.3, graceful-fs@npm:^4.2.4": version: 4.2.6 resolution: "graceful-fs@npm:4.2.6" checksum: 792e64aafda05a151289f83eaa16aff34ef259658cefd65393883d959409f5a2389b0ec9ebf28f3d21f1b0ddc8f594a1162ae9b18e2b507a6799a70706ec573d @@ -7444,13 +7134,6 @@ __metadata: languageName: node linkType: hard -"handle-thing@npm:^2.0.0": - version: 2.0.1 - resolution: "handle-thing@npm:2.0.1" - checksum: 68071f313062315cd9dce55710e9496873945f1dd425107007058fc1629f93002a7649fcc3e464281ce02c7e809a35f5925504ab8105d972cf649f1f47cb7d6c - languageName: node - linkType: hard - "har-schema@npm:^2.0.0": version: 2.0.0 resolution: "har-schema@npm:2.0.0" @@ -7691,18 +7374,6 @@ __metadata: languageName: node linkType: hard -"hpack.js@npm:^2.1.6": - version: 2.1.6 - resolution: "hpack.js@npm:2.1.6" - dependencies: - inherits: ^2.0.1 - obuf: ^1.0.0 - readable-stream: ^2.0.1 - wbuf: ^1.1.0 - checksum: 2de144115197967ad6eeee33faf41096c6ba87078703c5cb011632dcfbffeb45784569e0cf02c317bd79c48375597c8ec88c30fff5bb0b023e8f654fb6e9c06e - languageName: node - linkType: hard - "html-encoding-sniffer@npm:^2.0.1": version: 2.0.1 resolution: "html-encoding-sniffer@npm:2.0.1" @@ -7712,13 +7383,6 @@ __metadata: languageName: node linkType: hard -"html-entities@npm:^2.3.2": - version: 2.3.2 - resolution: "html-entities@npm:2.3.2" - checksum: 522d8d202df301ff51b517a379e642023ed5c81ea9fb5674ffad88cff386165733d00b6089d5c2fcc644e44777d6072017b6216d8fa40f271d3610420d00a886 - languageName: node - linkType: hard - "html-escaper@npm:^2.0.0": version: 2.0.2 resolution: "html-escaper@npm:2.0.2" @@ -7786,58 +7450,6 @@ __metadata: languageName: node linkType: hard -"http-deceiver@npm:^1.2.7": - version: 1.2.7 - resolution: "http-deceiver@npm:1.2.7" - checksum: 64d7d1ae3a6933eb0e9a94e6f27be4af45a53a96c3c34e84ff57113787105a89fff9d1c3df263ef63add823df019b0e8f52f7121e32393bb5ce9a713bf100b41 - languageName: node - linkType: hard - -"http-errors@npm:1.7.2": - version: 1.7.2 - resolution: "http-errors@npm:1.7.2" - dependencies: - depd: ~1.1.2 - inherits: 2.0.3 - setprototypeof: 1.1.1 - statuses: ">= 1.5.0 < 2" - toidentifier: 1.0.0 - checksum: 5534b0ae08e77f5a45a2380f500e781f6580c4ff75b816cb1f09f99a290b57e78a518be6d866db1b48cca6b052c09da2c75fc91fb16a2fe3da3c44d9acbb9972 - languageName: node - linkType: hard - -"http-errors@npm:~1.6.2": - version: 1.6.3 - resolution: "http-errors@npm:1.6.3" - dependencies: - depd: ~1.1.2 - inherits: 2.0.3 - setprototypeof: 1.1.0 - statuses: ">= 1.4.0 < 2" - checksum: a9654ee027e3d5de305a56db1d1461f25709ac23267c6dc28cdab8323e3f96caa58a9a6a5e93ac15d7285cee0c2f019378c3ada9026e7fe19c872d695f27de7c - languageName: node - linkType: hard - -"http-errors@npm:~1.7.2": - version: 1.7.3 - resolution: "http-errors@npm:1.7.3" - dependencies: - depd: ~1.1.2 - inherits: 2.0.4 - setprototypeof: 1.1.1 - statuses: ">= 1.5.0 < 2" - toidentifier: 1.0.0 - checksum: a59f359473f4b3ea78305beee90d186268d6075432622a46fb7483059068a2dd4c854a20ac8cd438883127e06afb78c1309168bde6cdfeed1e3700eb42487d99 - languageName: node - linkType: hard - -"http-parser-js@npm:>=0.5.1": - version: 0.5.3 - resolution: "http-parser-js@npm:0.5.3" - checksum: 6f3142c5f60ad995a6895a1dc4f70f8cef0910745366e97cbcb99caa604590dbcc11006b00989ad306837d6b820e9bfc6e801c4060ed19a0e4df83caa8577cb5 - languageName: node - linkType: hard - "http-proxy-agent@npm:^4.0.1": version: 4.0.1 resolution: "http-proxy-agent@npm:4.0.1" @@ -7849,7 +7461,7 @@ __metadata: languageName: node linkType: hard -"http-proxy-middleware@npm:^1.0.0, http-proxy-middleware@npm:^1.3.1": +"http-proxy-middleware@npm:^1.0.0": version: 1.3.1 resolution: "http-proxy-middleware@npm:1.3.1" dependencies: @@ -7884,6 +7496,16 @@ __metadata: languageName: node linkType: hard +"http2-wrapper@npm:^1.0.0-beta.5.2": + version: 1.0.3 + resolution: "http2-wrapper@npm:1.0.3" + dependencies: + quick-lru: ^5.1.1 + resolve-alpn: ^1.0.0 + checksum: 74160b862ec699e3f859739101ff592d52ce1cb207b7950295bf7962e4aa1597ef709b4292c673bece9c9b300efad0559fc86c71b1409c7a1e02b7229456003e + languageName: node + linkType: hard + "https-proxy-agent@npm:5.0.0, https-proxy-agent@npm:^5.0.0": version: 5.0.0 resolution: "https-proxy-agent@npm:5.0.0" @@ -7908,12 +7530,12 @@ __metadata: languageName: node linkType: hard -"husky@npm:^6.0.0": - version: 6.0.0 - resolution: "husky@npm:6.0.0" +"husky@npm:^7.0.1": + version: 7.0.1 + resolution: "husky@npm:7.0.1" bin: husky: lib/bin.js - checksum: db6da76a670b2cd1e967990decfd291e6f35a5aee4d362208a51771474d3b4896d526acb4bf0413c2d7154716e42a4d8b6cc19f2bb108e48d1f554624c723a00 + checksum: b2ea1460f1126ed7161779b1b89f7ec8ae66fb6723e0e9fd47c522f454f4a2ea7e31a21d6ce2eb5d32e9837d232fb0245783425c109df0adab53668f8c8d8fc8 languageName: node linkType: hard @@ -7986,7 +7608,7 @@ __metadata: languageName: node linkType: hard -"import-fresh@npm:^3.0.0, import-fresh@npm:^3.1.0, import-fresh@npm:^3.2.1": +"import-fresh@npm:^3.0.0, import-fresh@npm:^3.2.1": version: 3.3.0 resolution: "import-fresh@npm:3.3.0" dependencies: @@ -8046,20 +7668,13 @@ __metadata: languageName: node linkType: hard -"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.0, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3": +"inherits@npm:2, inherits@npm:^2.0.0, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 languageName: node linkType: hard -"inherits@npm:2.0.3": - version: 2.0.3 - resolution: "inherits@npm:2.0.3" - checksum: 78cb8d7d850d20a5e9a7f3620db31483aa00ad5f722ce03a55b110e5a723539b3716a3b463e2b96ce3fe286f33afc7c131fa2f91407528ba80cea98a7545d4c0 - languageName: node - linkType: hard - "ini@npm:1.3.7": version: 1.3.7 resolution: "ini@npm:1.3.7" @@ -8074,65 +7689,6 @@ __metadata: languageName: node linkType: hard -"ink-testing-library@npm:^2.1.0": - version: 2.1.0 - resolution: "ink-testing-library@npm:2.1.0" - peerDependencies: - "@types/react": ">=16.8.0" - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 932bc3feed2d68e853f69c56b40610f50ea4366750400ee9597c0f5231acdfd29ac41d8c86924c7f85b7a0ab31cf0ad0726a9d29fdfe6ff82bc836177e7ff063 - languageName: node - linkType: hard - -"ink-use-stdout-dimensions@npm:^1.0.5": - version: 1.0.5 - resolution: "ink-use-stdout-dimensions@npm:1.0.5" - peerDependencies: - ink: ">=2.0.0" - react: ">=16.0.0" - checksum: 71fb471ed6195460a5562f8cf0b046c888f837a29c022f48f180df3fd78b8b37dc736c1b8a383552930ae7a0c754b0b1f85fe234e8aa71b227c5b8c82de22472 - languageName: node - linkType: hard - -"ink@npm:^3.0.8": - version: 3.0.8 - resolution: "ink@npm:3.0.8" - dependencies: - ansi-escapes: ^4.2.1 - auto-bind: 4.0.0 - chalk: ^4.1.0 - cli-boxes: ^2.2.0 - cli-cursor: ^3.1.0 - cli-truncate: ^2.1.0 - code-excerpt: ^3.0.0 - indent-string: ^4.0.0 - is-ci: ^2.0.0 - lodash: ^4.17.20 - patch-console: ^1.0.0 - react-devtools-core: ^4.6.0 - react-reconciler: ^0.24.0 - scheduler: ^0.18.0 - signal-exit: ^3.0.2 - slice-ansi: ^3.0.0 - stack-utils: ^2.0.2 - string-length: ^3.1.0 - type-fest: ^0.12.0 - widest-line: ^3.1.0 - wrap-ansi: ^6.2.0 - ws: ^7.2.5 - yoga-layout-prebuilt: ^1.9.6 - peerDependencies: - "@types/react": ">=16.8.0" - react: ">=16.8.0" - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 8ec8fac1893e82e1e65d6db4d81b130be631bc5f5fe74effb0a3fdf704ec4cd875cd826054262d78d15caf7ae55196739637257689f44ac274a5bf2ff6e7d61e - languageName: node - linkType: hard - "inline-style-parser@npm:0.1.1": version: 0.1.1 resolution: "inline-style-parser@npm:0.1.1" @@ -8140,18 +7696,6 @@ __metadata: languageName: node linkType: hard -"internal-ip@npm:^6.2.0": - version: 6.2.0 - resolution: "internal-ip@npm:6.2.0" - dependencies: - default-gateway: ^6.0.0 - ipaddr.js: ^1.9.1 - is-ip: ^3.1.0 - p-event: ^4.2.0 - checksum: 6d08299c052c4ec926fa4e3643049d81daacbc33d3ab90fc30cd59cd7f12902152107bc75778e1202a269eb82cab0c412ff04a78f0361e056de0c5c2628881fa - languageName: node - linkType: hard - "internal-slot@npm:^1.0.3": version: 1.0.3 resolution: "internal-slot@npm:1.0.3" @@ -8163,17 +7707,6 @@ __metadata: languageName: node linkType: hard -"intl-messageformat@npm:^9.6.17": - version: 9.6.17 - resolution: "intl-messageformat@npm:9.6.17" - dependencies: - "@formatjs/fast-memoize": 1.1.1 - "@formatjs/icu-messageformat-parser": 2.0.5 - tslib: ^2.1.0 - checksum: 2594d9d1382cac3daf6dc6df6e150a7aef8dd7e5b6618f8a4cd2fafbccdf74f6353b8cc0ae0db0e58a6a1c3a8a2da91ecf3f6ba4227cb981cdda1ee279360f4d - languageName: node - linkType: hard - "invariant@npm:2.2.2": version: 2.2.2 resolution: "invariant@npm:2.2.2" @@ -8192,41 +7725,6 @@ __metadata: languageName: node linkType: hard -"ip-regex@npm:^4.0.0": - version: 4.3.0 - resolution: "ip-regex@npm:4.3.0" - checksum: 7ff904b891221b1847f3fdf3dbb3e6a8660dc39bc283f79eb7ed88f5338e1a3d1104b779bc83759159be266249c59c2160e779ee39446d79d4ed0890dfd06f08 - languageName: node - linkType: hard - -"ip@npm:^1.1.0": - version: 1.1.5 - resolution: "ip@npm:1.1.5" - checksum: 30133981f082a060a32644f6a7746e9ba7ac9e2bc07ecc8bbdda3ee8ca9bec1190724c390e45a1ee7695e7edfd2a8f7dda2c104ec5f7ac5068c00648504c7e5a - languageName: node - linkType: hard - -"ipaddr.js@npm:1.9.1, ipaddr.js@npm:^1.9.1": - version: 1.9.1 - resolution: "ipaddr.js@npm:1.9.1" - checksum: f88d3825981486f5a1942414c8d77dd6674dd71c065adcfa46f578d677edcb99fda25af42675cb59db492fdf427b34a5abfcde3982da11a8fd83a500b41cfe77 - languageName: node - linkType: hard - -"ipaddr.js@npm:^2.0.0": - version: 2.0.0 - resolution: "ipaddr.js@npm:2.0.0" - checksum: e4556c121f762c680e88e1dbe4b716c686775b4b571fb4c589383e8b451817b1cb710ac486cd526c47a2e8100d5aa806c9ad15f0ac27a1ecdf70f26a1d6fb745 - languageName: node - linkType: hard - -"is-absolute-url@npm:^3.0.3": - version: 3.0.3 - resolution: "is-absolute-url@npm:3.0.3" - checksum: 5159b51d065d9ad29e16a2f78d6c0e41c43227caf90a45e659c54ea6fd50ef0595b1871ce392e84b1df7cfdcad9a8e66eec0813a029112188435abf115accb16 - languageName: node - linkType: hard - "is-accessor-descriptor@npm:^0.1.6": version: 0.1.6 resolution: "is-accessor-descriptor@npm:0.1.6" @@ -8262,15 +7760,6 @@ __metadata: languageName: node linkType: hard -"is-arguments@npm:^1.0.4": - version: 1.1.0 - resolution: "is-arguments@npm:1.1.0" - dependencies: - call-bind: ^1.0.0 - checksum: c32f8b5052061de83b2cd17e0e87ec914ac96e55bbd184e07f9b78b8360d80f7f9a34060d44ee8684249664609213f57447e0f63798e7c265ec811fd242b0077 - languageName: node - linkType: hard - "is-arrayish@npm:^0.2.1": version: 0.2.1 resolution: "is-arrayish@npm:0.2.1" @@ -8486,15 +7975,6 @@ __metadata: languageName: node linkType: hard -"is-ip@npm:^3.1.0": - version: 3.1.0 - resolution: "is-ip@npm:3.1.0" - dependencies: - ip-regex: ^4.0.0 - checksum: da2c2b282407194adf2320bade0bad94be9c9d0bdab85ff45b1b62d8185f31c65dff3884519d57bf270277e5ea2046c7916a6e5a6db22fe4b7ddcdd3760f23eb - languageName: node - linkType: hard - "is-negative-zero@npm:^2.0.1": version: 2.0.1 resolution: "is-negative-zero@npm:2.0.1" @@ -8546,14 +8026,7 @@ __metadata: languageName: node linkType: hard -"is-path-cwd@npm:^2.2.0": - version: 2.2.0 - resolution: "is-path-cwd@npm:2.2.0" - checksum: 46a840921bb8cc0dc7b5b423a14220e7db338072a4495743a8230533ce78812dc152548c86f4b828411fe98c5451959f07cf841c6a19f611e46600bd699e8048 - languageName: node - linkType: hard - -"is-path-inside@npm:^3.0.1, is-path-inside@npm:^3.0.2": +"is-path-inside@npm:^3.0.1": version: 3.0.3 resolution: "is-path-inside@npm:3.0.3" checksum: abd50f06186a052b349c15e55b182326f1936c89a78bf6c8f2b707412517c097ce04bc49a0ca221787bc44e1049f51f09a2ffb63d22899051988d3a618ba13e9 @@ -8590,7 +8063,7 @@ __metadata: languageName: node linkType: hard -"is-regex@npm:^1.0.4, is-regex@npm:^1.1.2": +"is-regex@npm:^1.1.2": version: 1.1.2 resolution: "is-regex@npm:1.1.2" dependencies: @@ -9231,6 +8704,17 @@ __metadata: languageName: node linkType: hard +"jest-worker@npm:^27.0.2": + version: 27.0.6 + resolution: "jest-worker@npm:27.0.6" + dependencies: + "@types/node": "*" + merge-stream: ^2.0.0 + supports-color: ^8.0.0 + checksum: cef42e551033839940ed26c121b7d19ff85316fb5e4b815e1fca28744c884173bb3a6be64729bc95c281902db5142685700fc0922628b646151b0f5dcabbeb37 + languageName: node + linkType: hard + "jest@npm:^26.6.3": version: 26.6.3 resolution: "jest@npm:26.6.3" @@ -9353,6 +8837,13 @@ __metadata: languageName: node linkType: hard +"json-buffer@npm:3.0.1": + version: 3.0.1 + resolution: "json-buffer@npm:3.0.1" + checksum: 9026b03edc2847eefa2e37646c579300a1f3a4586cfb62bf857832b60c852042d0d6ae55d1afb8926163fa54c2b01d83ae24705f34990348bdac6273a29d4581 + languageName: node + linkType: hard + "json-loader@npm:^0.5.7": version: 0.5.7 resolution: "json-loader@npm:0.5.7" @@ -9487,10 +8978,12 @@ __metadata: languageName: node linkType: hard -"killable@npm:^1.0.1": - version: 1.0.1 - resolution: "killable@npm:1.0.1" - checksum: 911a85c6e390c19d72c4e3149347cf44042cbd7d18c3c6c5e4f706fdde6e0ed532473392e282c7ef27f518407e6cb7d2a0e71a2ae8d8d8f8ffdb68891a29a68a +"keyv@npm:^4.0.0": + version: 4.0.3 + resolution: "keyv@npm:4.0.3" + dependencies: + json-buffer: 3.0.1 + checksum: 770134225c5320861748bf65f022e7ce100e465b85b28fe39036ef66f6190bb602aa8a57df365b9c745005d948fc1f0da99306062875a2f52700195e0b4d1033 languageName: node linkType: hard @@ -9565,15 +9058,15 @@ __metadata: languageName: node linkType: hard -"less-loader@npm:^9.0.0": - version: 9.0.0 - resolution: "less-loader@npm:9.0.0" +"less-loader@npm:^9.1.0": + version: 9.1.0 + resolution: "less-loader@npm:9.1.0" dependencies: klona: ^2.0.4 peerDependencies: less: ^3.5.0 || ^4.0.0 webpack: ^5.0.0 - checksum: 01c1f1079dada4fe877a428ef320f4fffd8779b4e5bbe4a7781205538e4cc6cadf6fb30ae5fbe815c0a5b9b43051faeae9f6e8e8d7e30414fbabdc08866efc71 + checksum: 0aabd66b20f695b94e4042dba99a8b70e1df7922b0e8d3b9ef421360b78327565d9d2d1f1791d6b23f7a036637cb5861d3f4589bf499ce522e947176307ab69f languageName: node linkType: hard @@ -9646,16 +9139,15 @@ __metadata: languageName: node linkType: hard -"lint-staged@npm:^11.0.0": - version: 11.0.0 - resolution: "lint-staged@npm:11.0.0" +"lint-staged@npm:^11.1.2": + version: 11.1.2 + resolution: "lint-staged@npm:11.1.2" dependencies: chalk: ^4.1.1 cli-truncate: ^2.1.0 commander: ^7.2.0 cosmiconfig: ^7.0.0 debug: ^4.3.1 - dedent: ^0.7.0 enquirer: ^2.3.6 execa: ^5.0.0 listr2: ^3.8.2 @@ -9667,7 +9159,7 @@ __metadata: stringify-object: ^3.3.0 bin: lint-staged: bin/lint-staged.js - checksum: 3be24b4a88799264bbb9baeedfc5be278d25aa85dc766c5328da23d5d92300c0a163563b455d530ca2a74510a161f17623e846e1aca81e44f389108274ad2acd + checksum: 0050d1836dda879c58561fa4efd100f5cd14fcbf8ee3fdeab7e89ec4219c019543bb5bf2442f760557ebe4bb8b7bfc56a9c98b9384acecfe0f8553f091723e36 languageName: node linkType: hard @@ -9981,15 +9473,6 @@ __metadata: languageName: node linkType: hard -"map-age-cleaner@npm:^0.1.3": - version: 0.1.3 - resolution: "map-age-cleaner@npm:0.1.3" - dependencies: - p-defer: ^1.0.0 - checksum: cb2804a5bcb3cbdfe4b59066ea6d19f5e7c8c196cd55795ea4c28f792b192e4c442426ae52524e5e1acbccf393d3bddacefc3d41f803e66453f6c4eda3650bc1 - languageName: node - linkType: hard - "map-cache@npm:^0.2.2": version: 0.2.2 resolution: "map-cache@npm:0.2.2" @@ -10111,39 +9594,6 @@ __metadata: languageName: node linkType: hard -"media-typer@npm:0.3.0": - version: 0.3.0 - resolution: "media-typer@npm:0.3.0" - checksum: af1b38516c28ec95d6b0826f6c8f276c58aec391f76be42aa07646b4e39d317723e869700933ca6995b056db4b09a78c92d5440dc23657e6764be5d28874bba1 - languageName: node - linkType: hard - -"mem@npm:^8.0.0": - version: 8.1.0 - resolution: "mem@npm:8.1.0" - dependencies: - map-age-cleaner: ^0.1.3 - mimic-fn: ^3.1.0 - checksum: 480cce77a4ad6874c803f06e4f3a21ca1d86717624a95f84a19c3cef974256b808473143407220dd3e26a6c8fa9c1d87ddc679365fbc84de09f81cc2d758449d - languageName: node - linkType: hard - -"memfs@npm:^3.1.2, memfs@npm:^3.2.0": - version: 3.2.0 - resolution: "memfs@npm:3.2.0" - dependencies: - fs-monkey: 1.0.1 - checksum: 53e50dfc5b3ef70404735cd88de4deebef327c4add6c2132714f5da828c05e0ec9c5fe82ed36745902c363c74c1b488bbf7d9ef7401a6a4735713482e49f0e73 - languageName: node - linkType: hard - -"merge-descriptors@npm:1.0.1": - version: 1.0.1 - resolution: "merge-descriptors@npm:1.0.1" - checksum: 5abc259d2ae25bb06d19ce2b94a21632583c74e2a9109ee1ba7fd147aa7362b380d971e0251069f8b3eb7d48c21ac839e21fa177b335e82c76ec172e30c31a26 - languageName: node - linkType: hard - "merge-source-map@npm:^1.1.0": version: 1.1.0 resolution: "merge-source-map@npm:1.1.0" @@ -10167,13 +9617,6 @@ __metadata: languageName: node linkType: hard -"methods@npm:~1.1.2": - version: 1.1.2 - resolution: "methods@npm:1.1.2" - checksum: 0917ff4041fa8e2f2fda5425a955fe16ca411591fbd123c0d722fcf02b73971ed6f764d85f0a6f547ce49ee0221ce2c19a5fa692157931cecb422984f1dcd13a - languageName: node - linkType: hard - "microevent.ts@npm:~0.1.1": version: 0.1.1 resolution: "microevent.ts@npm:0.1.1" @@ -10222,14 +9665,14 @@ __metadata: languageName: node linkType: hard -"mime-db@npm:1.46.0, mime-db@npm:>= 1.43.0 < 2": +"mime-db@npm:1.46.0": version: 1.46.0 resolution: "mime-db@npm:1.46.0" checksum: 4d2412c64c120af322a2c58f26319bc375a38238e233b819a5cead16aa7e24bea812c94ffe39b1caec9fc7acdf36d126feb7e9f87b5f8fae59a435ec78bd7397 languageName: node linkType: hard -"mime-types@npm:^2.1.12, mime-types@npm:^2.1.27, mime-types@npm:^2.1.28, mime-types@npm:~2.1.17, mime-types@npm:~2.1.19, mime-types@npm:~2.1.24": +"mime-types@npm:^2.1.12, mime-types@npm:^2.1.27, mime-types@npm:~2.1.19": version: 2.1.29 resolution: "mime-types@npm:2.1.29" dependencies: @@ -10238,7 +9681,7 @@ __metadata: languageName: node linkType: hard -"mime@npm:1.6.0, mime@npm:^1.4.1": +"mime@npm:^1.4.1": version: 1.6.0 resolution: "mime@npm:1.6.0" bin: @@ -10263,13 +9706,6 @@ __metadata: languageName: node linkType: hard -"mimic-fn@npm:^3.1.0": - version: 3.1.0 - resolution: "mimic-fn@npm:3.1.0" - checksum: f7b167f9115b8bbdf2c3ee55dce9149d14be9e54b237259c4bc1d8d0512ea60f25a1b323f814eb1fe8f5a541662804bcfcfff3202ca58df143edb986849d58db - languageName: node - linkType: hard - "mimic-response@npm:^1.0.0, mimic-response@npm:^1.0.1": version: 1.0.1 resolution: "mimic-response@npm:1.0.1" @@ -10277,6 +9713,13 @@ __metadata: languageName: node linkType: hard +"mimic-response@npm:^3.1.0": + version: 3.1.0 + resolution: "mimic-response@npm:3.1.0" + checksum: 25739fee32c17f433626bf19f016df9036b75b3d84a3046c7d156e72ec963dd29d7fc8a302f55a3d6c5a4ff24259676b15d915aad6480815a969ff2ec0836867 + languageName: node + linkType: hard + "mini-create-react-context@npm:^0.4.0": version: 0.4.1 resolution: "mini-create-react-context@npm:0.4.1" @@ -10290,16 +9733,16 @@ __metadata: languageName: node linkType: hard -"mini-css-extract-plugin@npm:^1.6.0": - version: 1.6.0 - resolution: "mini-css-extract-plugin@npm:1.6.0" +"mini-css-extract-plugin@npm:^1.6.2": + version: 1.6.2 + resolution: "mini-css-extract-plugin@npm:1.6.2" dependencies: loader-utils: ^2.0.0 schema-utils: ^3.0.0 webpack-sources: ^1.1.0 peerDependencies: webpack: ^4.4.0 || ^5.0.0 - checksum: 04f7c47c18aae7aab9a586ed99dc80255106448403c9c4f80c4b6e647cfc3ea09e2c4fe5cc15a3463be6a1281c2266158beab6a9b81c84f126714e1e995bf6d3 + checksum: c2c1f3d7e5bc206b5bece0f37b65467ee58e0bb0b61d5e031bb818682b02db2552b296f5018af9058b18eb7127e00f6462fb718712a3d4432079dfa848b510cc languageName: node linkType: hard @@ -10312,13 +9755,6 @@ __metadata: languageName: node linkType: hard -"minimalistic-assert@npm:^1.0.0": - version: 1.0.1 - resolution: "minimalistic-assert@npm:1.0.1" - checksum: cc7974a9268fbf130fb055aff76700d7e2d8be5f761fb5c60318d0ed010d839ab3661a533ad29a5d37653133385204c503bfac995aaa4236f4e847461ea32ba7 - languageName: node - linkType: hard - "minimatch@npm:3.0.4, minimatch@npm:^3.0.4": version: 3.0.4 resolution: "minimatch@npm:3.0.4" @@ -10391,13 +9827,6 @@ __metadata: languageName: node linkType: hard -"ms@npm:2.1.1": - version: 2.1.1 - resolution: "ms@npm:2.1.1" - checksum: 0078a23cd916a9a7435c413caa14c57d4b4f6e2470e0ab554b6964163c8a4436448ac7ae020e883685475da6b6796cc396b670f579cb275db288a21e3e57721e - languageName: node - linkType: hard - "ms@npm:2.1.2": version: 2.1.2 resolution: "ms@npm:2.1.2" @@ -10412,25 +9841,6 @@ __metadata: languageName: node linkType: hard -"multicast-dns-service-types@npm:^1.1.0": - version: 1.1.0 - resolution: "multicast-dns-service-types@npm:1.1.0" - checksum: 0979fca1cce85484d256e4db3af591d941b41a61f134da3607213d2624c12ed5b8a246565cb19a9b3cb542819e8fbc71a90b07e77023ee6a9515540fe1d371f7 - languageName: node - linkType: hard - -"multicast-dns@npm:^6.0.1": - version: 6.2.3 - resolution: "multicast-dns@npm:6.2.3" - dependencies: - dns-packet: ^1.3.1 - thunky: ^1.0.2 - bin: - multicast-dns: cli.js - checksum: f515b49ca964429ab48a4ac8041fcf969c927aeb49ab65288bd982e52c849a870fc3b03565780b0d194a1a02da8821f28b6425e48e95b8107bc9fcc92f571a6f - languageName: node - linkType: hard - "multimatch@npm:^5.0.0": version: 5.0.0 resolution: "multimatch@npm:5.0.0" @@ -10492,13 +9902,6 @@ __metadata: languageName: node linkType: hard -"negotiator@npm:0.6.2": - version: 0.6.2 - resolution: "negotiator@npm:0.6.2" - checksum: dfddaff6c06792f1c4c3809e29a427b8daef8cd437c83b08dd51d7ee11bbd1c29d9512d66b801144d6c98e910ffd8723f2432e0cbf8b18d41d2a09599c975ab3 - languageName: node - linkType: hard - "neo-async@npm:^2.6.2": version: 2.6.2 resolution: "neo-async@npm:2.6.2" @@ -10530,13 +9933,6 @@ __metadata: languageName: node linkType: hard -"node-forge@npm:^0.10.0": - version: 0.10.0 - resolution: "node-forge@npm:0.10.0" - checksum: 5aa6dc9922e424a20ef101d2f517418e2bc9cfc0255dd22e0701c0fad1568445f510ee67f6f3fcdf085812c4ca1b847b8ba45683b34776828e41f5c1794e42e1 - languageName: node - linkType: hard - "node-gyp@npm:latest": version: 7.1.2 resolution: "node-gyp@npm:7.1.2" @@ -10585,16 +9981,16 @@ __metadata: languageName: node linkType: hard -"node-releases@npm:^1.1.61, node-releases@npm:^1.1.71": - version: 1.1.72 - resolution: "node-releases@npm:1.1.72" - checksum: 84dacd44e6595c76e3097b69051b24bf5c3bdb374efc9bef343200ffa183fce10a31ba1c763af51d897ba0f6d00cd1e10eb34a03146688ce4cb051f1d80c402b +"node-releases@npm:^1.1.61, node-releases@npm:^1.1.75": + version: 1.1.75 + resolution: "node-releases@npm:1.1.75" + checksum: 74028e7d193c9c5986b2f6bb51f4f6405a3f144599bbb19751c81faece52af8eb3f5abac40cbcd11ead44be3f856be125aa71fbb8dd8bf0c7f90caa94179ee51 languageName: node linkType: hard -"nodemon@npm:^2.0.7": - version: 2.0.7 - resolution: "nodemon@npm:2.0.7" +"nodemon@npm:^2.0.12": + version: 2.0.12 + resolution: "nodemon@npm:2.0.12" dependencies: chokidar: ^3.2.2 debug: ^3.2.6 @@ -10608,7 +10004,7 @@ __metadata: update-notifier: ^4.1.0 bin: nodemon: bin/nodemon.js - checksum: d1af0b92e73f6cafb7477eb9d8932636205efeed4b06406a4c7b5b8fad5c00a026e703afcd07ec27c57d4285e38ea29f61c57e5c5e72ed503a79be3b02bbba38 + checksum: c73442ab99c7e614162e87214f0621502654fa571b663a2b4d1c5c2a5ecb610216c53822a228541a5f2bf72bf7bb4c9bfd90448eda500efd989199381ccfa15f languageName: node linkType: hard @@ -10676,6 +10072,13 @@ __metadata: languageName: node linkType: hard +"normalize-url@npm:^6.0.1": + version: 6.1.0 + resolution: "normalize-url@npm:6.1.0" + checksum: 4a4944631173e7d521d6b80e4c85ccaeceb2870f315584fa30121f505a6dfd86439c5e3fdd8cd9e0e291290c41d0c3599f0cb12ab356722ed242584c30348e50 + languageName: node + linkType: hard + "npm-conf@npm:^1.1.3": version: 1.1.3 resolution: "npm-conf@npm:1.1.3" @@ -10785,16 +10188,6 @@ __metadata: languageName: node linkType: hard -"object-is@npm:^1.0.1": - version: 1.1.5 - resolution: "object-is@npm:1.1.5" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - checksum: 989b18c4cba258a6b74dc1d74a41805c1a1425bce29f6cabb50dcb1a6a651ea9104a1b07046739a49a5bb1bc49727bcb00efd5c55f932f6ea04ec8927a7901fe - languageName: node - linkType: hard - "object-keys@npm:^1.0.12, object-keys@npm:^1.1.1": version: 1.1.1 resolution: "object-keys@npm:1.1.1" @@ -10879,29 +10272,6 @@ __metadata: languageName: node linkType: hard -"obuf@npm:^1.0.0, obuf@npm:^1.1.2": - version: 1.1.2 - resolution: "obuf@npm:1.1.2" - checksum: 41a2ba310e7b6f6c3b905af82c275bf8854896e2e4c5752966d64cbcd2f599cfffd5932006bcf3b8b419dfdacebb3a3912d5d94e10f1d0acab59876c8757f27f - languageName: node - linkType: hard - -"on-finished@npm:~2.3.0": - version: 2.3.0 - resolution: "on-finished@npm:2.3.0" - dependencies: - ee-first: 1.1.1 - checksum: 1db595bd963b0124d6fa261d18320422407b8f01dc65863840f3ddaaf7bcad5b28ff6847286703ca53f4ec19595bd67a2f1253db79fc4094911ec6aa8df1671b - languageName: node - linkType: hard - -"on-headers@npm:~1.0.2": - version: 1.0.2 - resolution: "on-headers@npm:1.0.2" - checksum: 2bf13467215d1e540a62a75021e8b318a6cfc5d4fc53af8e8f84ad98dbcea02d506c6d24180cd62e1d769c44721ba542f3154effc1f7579a8288c9f7873ed8e5 - languageName: node - linkType: hard - "once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": version: 1.4.0 resolution: "once@npm:1.4.0" @@ -10920,7 +10290,7 @@ __metadata: languageName: node linkType: hard -"open@npm:^7.0.2, open@npm:^7.4.2": +"open@npm:^7.0.2": version: 7.4.2 resolution: "open@npm:7.4.2" dependencies: @@ -10974,10 +10344,10 @@ __metadata: languageName: node linkType: hard -"p-defer@npm:^1.0.0": - version: 1.0.0 - resolution: "p-defer@npm:1.0.0" - checksum: 4271b935c27987e7b6f229e5de4cdd335d808465604644cb7b4c4c95bef266735859a93b16415af8a41fd663ee9e3b97a1a2023ca9def613dba1bad2a0da0c7b +"p-cancelable@npm:^2.0.0": + version: 2.1.1 + resolution: "p-cancelable@npm:2.1.1" + checksum: 3dba12b4fb4a1e3e34524535c7858fc82381bbbd0f247cc32dedc4018592a3950ce66b106d0880b4ec4c2d8d6576f98ca885dc1d7d0f274d1370be20e9523ddf languageName: node linkType: hard @@ -10988,15 +10358,6 @@ __metadata: languageName: node linkType: hard -"p-event@npm:^4.2.0": - version: 4.2.0 - resolution: "p-event@npm:4.2.0" - dependencies: - p-timeout: ^3.1.0 - checksum: 8a3588f7a816a20726a3262dfeee70a631e3997e4773d23219176333eda55cce9a76219e3d2b441b331eb746e14fdb381eb2694ab9ff2fcf87c846462696fe89 - languageName: node - linkType: hard - "p-finally@npm:^1.0.0": version: 1.0.0 resolution: "p-finally@npm:1.0.0" @@ -11067,25 +10428,6 @@ __metadata: languageName: node linkType: hard -"p-retry@npm:^4.5.0": - version: 4.5.0 - resolution: "p-retry@npm:4.5.0" - dependencies: - "@types/retry": ^0.12.0 - retry: ^0.12.0 - checksum: 129cbf070401b4b5fea7c959a85a62d26ac29593bcb59e34ce1544a0cace3674cd1f66c370ba8ec95184cf5745546ea2d5e31b75395cf40a4e34358684867b67 - languageName: node - linkType: hard - -"p-timeout@npm:^3.1.0": - version: 3.2.0 - resolution: "p-timeout@npm:3.2.0" - dependencies: - p-finally: ^1.0.0 - checksum: 3dd0eaa048780a6f23e5855df3dd45c7beacff1f820476c1d0d1bcd6648e3298752ba2c877aa1c92f6453c7dd23faaf13d9f5149fc14c0598a142e2c5e8d649c - languageName: node - linkType: hard - "p-try@npm:^1.0.0": version: 1.0.0 resolution: "p-try@npm:1.0.0" @@ -11112,99 +10454,107 @@ __metadata: languageName: node linkType: hard +"package-json@npm:^7.0.0": + version: 7.0.0 + resolution: "package-json@npm:7.0.0" + dependencies: + got: ^11.8.2 + registry-auth-token: ^4.0.0 + registry-url: ^5.0.0 + semver: ^7.3.5 + checksum: c03699b057f665c5bf2d6af76190b8fb32aaf69c70a78faf7c073c03c3d0d5e168d4a96f386739a4d179e925e66289bf0b93a446fbb3f97b05451a3cd2a3bd90 + languageName: node + linkType: hard + "packages@workspace:packages": version: 0.0.0-use.local resolution: "packages@workspace:packages" dependencies: - "@mapbox/rehype-prism": ^0.6.0 + "@babel/core": ^7.15.0 + "@mapbox/rehype-prism": ^0.7.0 "@mdx-js/loader": ^1.6.22 - "@ssen/jest-transform": ^2.5.1 - "@ssen/promised": ^2.5.1 - "@ssen/require-typescript": ^2.5.1 - "@ssen/tmp-directory": ^2.5.1 + "@ssen/jest-transform": ^3.0.0 + "@ssen/promised": ^3.0.0 + "@ssen/require-typescript": ^3.0.0 + "@ssen/tmp-directory": ^3.0.0 "@svgr/plugin-jsx": ^5.5.0 "@svgr/webpack": ^5.5.0 - "@testing-library/dom": ^7.31.0 - "@testing-library/react": ^11.2.7 - "@testing-library/react-hooks": ^7.0.0 + "@testing-library/dom": ^8.1.0 + "@testing-library/react": ^12.0.0 + "@testing-library/react-hooks": ^7.0.1 "@types/anymatch": ^3.0.0 + "@types/babel__core": ^7.1.15 "@types/browserslist": ^4.15.0 - "@types/eslint": ^7.2.13 - "@types/file-loader": ^5.0.0 - "@types/fs-extra": ^9.0.11 - "@types/glob": ^7.1.3 - "@types/jest": ^26.0.23 - "@types/js-yaml": ^4.0.1 - "@types/less": ^3.0.2 + "@types/eslint": ^7.28.0 + "@types/file-loader": ^5.0.1 + "@types/fs-extra": ^9.0.12 + "@types/glob": ^7.1.4 + "@types/jest": ^26.0.24 + "@types/js-yaml": ^4.0.3 + "@types/less": ^3.0.3 "@types/lodash.debounce": ^4.0.6 - "@types/mini-css-extract-plugin": ^1.4.3 - "@types/node": ^15.6.2 - "@types/node-fetch": ^2.5.10 - "@types/nodemon": ^1.19.0 - "@types/prompts": ^2.4.0 - "@types/ramda": ^0.27.40 - "@types/react": ^17.0.9 - "@types/react-dev-utils": ^9.0.6 - "@types/react-dom": ^17.0.6 - "@types/react-router-dom": ^5.1.7 + "@types/mini-css-extract-plugin": ^2.2.0 + "@types/node": ^16.7.1 + "@types/node-fetch": ^2.5.12 + "@types/nodemon": ^1.19.1 + "@types/prompts": ^2.0.14 + "@types/ramda": ^0.27.44 + "@types/react": ^17.0.19 + "@types/react-dev-utils": ^9.0.7 + "@types/react-dom": ^17.0.9 + "@types/react-router-dom": ^5.1.8 "@types/react-test-renderer": ^17.0.1 - "@types/resolve": ^1.20.0 - "@types/rimraf": ^3.0.0 - "@types/semver": ^7.3.6 - "@types/source-map-support": ^0.5.3 - "@types/stream-buffers": ^3.0.3 + "@types/resolve": ^1.20.1 + "@types/rimraf": ^3.0.2 + "@types/semver": ^7.3.8 + "@types/source-map-support": ^0.5.4 + "@types/stream-buffers": ^3.0.4 "@types/testing-library__react-hooks": ^4.0.0 - "@types/tmp": ^0.2.0 - "@types/webpack-bundle-analyzer": ^4.4.0 - "@types/webpack-dev-server": ^3.11.4 - "@types/webpack-env": ^1.16.0 + "@types/tmp": ^0.2.1 + "@types/webpack-bundle-analyzer": ^4.4.1 + "@types/webpack-env": ^1.16.2 "@types/webpack-merge": ^5.0.0 - "@types/webpack-node-externals": ^2.5.1 - "@types/yargs": ^17.0.0 + "@types/webpack-node-externals": ^2.5.2 + "@types/yargs": ^17.0.2 anymatch: ^3.1.2 - browserslist: ^4.16.6 - cfonts: ^2.9.2 - chalk: ^4.1.1 - chokidar: ^3.5.1 - css-loader: ^5.2.6 - date-fns: ^2.22.1 - electron: ^13.0.1 + browserslist: ^4.16.8 + cfonts: ^2.9.3 + chalk: ^4.1.2 + chokidar: ^3.5.2 + css-loader: ^5.2.7 + date-fns: ^2.23.0 + electron: ^13.2.1 esbuild-jest: ^0.5.0 - esbuild-loader: ^2.13.1 + esbuild-loader: ^2.15.1 escape-string-regexp: ^5.0.0 - eslint: ^7.27.0 + eslint: ^7.32.0 eslint-config-prettier: ^8.3.0 eslint-loader: ^4.0.2 file-loader: ^6.2.0 - fork-ts-checker-webpack-plugin: ^6.2.10 fs-extra: ^10.0.0 glob: ^7.1.7 gray-matter: ^4.0.3 html-webpack-plugin: "iamssen/html-webpack-plugin#5.3.1-fixed" - ink: ^3.0.8 - ink-testing-library: ^2.1.0 - ink-use-stdout-dimensions: ^1.0.5 - intl-messageformat: ^9.6.17 jest: ^26.6.3 js-yaml: ^4.1.0 json-loader: ^0.5.7 less: ^4.1.1 - less-loader: ^9.0.0 - lint-staged: ^11.0.0 + less-loader: ^9.1.0 + lint-staged: ^11.1.2 lodash.debounce: ^4.0.8 - mini-css-extract-plugin: ^1.6.0 + mini-css-extract-plugin: ^1.6.2 node-fetch: ^2.6.1 - nodemon: ^2.0.7 - package-json: ^6.5.0 + nodemon: ^2.0.12 + package-json: ^7.0.0 portfinder: ^1.0.28 - postcss: ^8.3.0 + postcss: ^8.3.6 postcss-flexbugs-fixes: ^5.0.2 - postcss-loader: ^5.3.0 + postcss-loader: ^6.1.1 postcss-normalize: ^10.0.0 postcss-preset-env: ^6.7.0 prompts: ^2.4.1 - puppeteer: ^10.0.0 - puppeteer-core: ^10.0.0 + puppeteer: ^10.2.0 + puppeteer-core: ^10.2.0 ramda: ^0.27.1 raw-loader: ^4.0.2 react: ^17.0.2 @@ -11215,28 +10565,27 @@ __metadata: react-test-renderer: ^17.0.2 resolve: ^1.20.0 rimraf: ^3.0.2 - rocket-punch: ^2.5.4 - rxjs: ^7.1.0 - sass-loader: ^12.0.0 + rocket-punch: ^3.0.1 + rxjs: ^7.3.0 + sass-loader: ^12.1.0 semver: ^7.3.5 source-map-support: ^0.5.19 stream-buffers: ^3.0.2 strip-ansi: ^7.0.0 style-loader: ^2.0.0 tmp: ^0.2.1 - ts-node: ^10.0.0 - tsconfig-paths: ^3.9.0 - type-fest: ^1.2.0 - typescript: ^4.3.2 + ts-node: ^10.2.1 + tsconfig-paths: ^3.10.1 + type-fest: ^2.0.0 + typescript: ^4.3.5 url-loader: ^4.1.1 - webpack: ^5.38.1 - webpack-bundle-analyzer: ^4.4.2 - webpack-dev-server: ^4.0.0-beta.3 - webpack-merge: ^5.7.3 + webpack: ^5.51.1 + webpack-bundle-analyzer: ^4.5.0 + webpack-merge: ^5.8.0 webpack-node-externals: ^3.0.0 worker-loader: ^3.0.8 yaml-loader: ^0.6.0 - yargs: ^17.0.1 + yargs: ^17.1.1 languageName: unknown linkType: soft @@ -11308,13 +10657,6 @@ __metadata: languageName: node linkType: hard -"parseurl@npm:~1.3.2, parseurl@npm:~1.3.3": - version: 1.3.3 - resolution: "parseurl@npm:1.3.3" - checksum: 407cee8e0a3a4c5cd472559bca8b6a45b82c124e9a4703302326e9ab60fc1081442ada4e02628efef1eb16197ddc7f8822f5a91fd7d7c86b51f530aedb17dfa2 - languageName: node - linkType: hard - "pascal-case@npm:^3.1.2": version: 3.1.2 resolution: "pascal-case@npm:3.1.2" @@ -11332,13 +10674,6 @@ __metadata: languageName: node linkType: hard -"patch-console@npm:^1.0.0": - version: 1.0.0 - resolution: "patch-console@npm:1.0.0" - checksum: 8cd738aa470f2e9463fca35da6a19403384ac555004f698ddd3dfdb69135ab60fe9bd2edd1dbdd8c09d92c0a2190fd0f7337fe48123013baf8ffec8532885a3a - languageName: node - linkType: hard - "path-exists@npm:^3.0.0": version: 3.0.0 resolution: "path-exists@npm:3.0.0" @@ -11381,13 +10716,6 @@ __metadata: languageName: node linkType: hard -"path-to-regexp@npm:0.1.7": - version: 0.1.7 - resolution: "path-to-regexp@npm:0.1.7" - checksum: 69a14ea24db543e8b0f4353305c5eac6907917031340e5a8b37df688e52accd09e3cebfe1660b70d76b6bd89152f52183f28c74813dbf454ba1a01c82a38abce - languageName: node - linkType: hard - "path-to-regexp@npm:^1.7.0": version: 1.8.0 resolution: "path-to-regexp@npm:1.8.0" @@ -11725,17 +11053,17 @@ __metadata: languageName: node linkType: hard -"postcss-loader@npm:^5.3.0": - version: 5.3.0 - resolution: "postcss-loader@npm:5.3.0" +"postcss-loader@npm:^6.1.1": + version: 6.1.1 + resolution: "postcss-loader@npm:6.1.1" dependencies: cosmiconfig: ^7.0.0 klona: ^2.0.4 - semver: ^7.3.4 + semver: ^7.3.5 peerDependencies: postcss: ^7.0.0 || ^8.0.1 webpack: ^5.0.0 - checksum: 15b8b79aca7b072c37836061b0a72fa0ab4a6a204f83352c28a039451190e73dd3aa6e9658c23e49868e2c0982b5f028ebd61f55b3d713fa2a9eada326544aa5 + checksum: 3c32d123813efeaede39cbd990a5c2275d0feeb3e3d2b9ad8f0bbf37e1e6d28f24d3174e4eebe9db4f563d57052dc9b5fb3f699f7527f639769d88e907a99490 languageName: node linkType: hard @@ -12006,14 +11334,14 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.1.10, postcss@npm:^8.2.15, postcss@npm:^8.3.0": - version: 8.3.0 - resolution: "postcss@npm:8.3.0" +"postcss@npm:^8.1.10, postcss@npm:^8.2.15, postcss@npm:^8.3.6": + version: 8.3.6 + resolution: "postcss@npm:8.3.6" dependencies: colorette: ^1.2.2 nanoid: ^3.1.23 source-map-js: ^0.6.2 - checksum: 7786df62a605e6fc9380c1ee1e5ed177fbcdb3f3427ac6096ee0dbd9d80bdb8627d2e528d38d6f0fe850bb5668d4d46923eaf65dfd146e9b51fe770bf140d0ef + checksum: ff55b91bea21f42c2a94d77fd05c3f66dd15889c68506cf1dbb9cdee8c3b9e9d0e219bcbc6e61a107bd63e3cac0670176486e2a5794c106a4e1b9babceb79317 languageName: node linkType: hard @@ -12038,12 +11366,12 @@ __metadata: languageName: node linkType: hard -"prettier@npm:^2.2.1, prettier@npm:^2.3.0": - version: 2.3.0 - resolution: "prettier@npm:2.3.0" +"prettier@npm:^2.2.1, prettier@npm:^2.3.2": + version: 2.3.2 + resolution: "prettier@npm:2.3.2" bin: prettier: bin-prettier.js - checksum: e8851a45f60f2994775f96e07964646c299b8a8f9c64da4fbd8efafc20db3458bdcedac79aed34e1d5477540b3aa04f6499adc4979cb7937f8ebd058a767d8ff + checksum: 17ce5784ac67621c292df58e2da60b2ee150c2d6aebea22a6ad9e52fcd6a5e66c349d0a8436ea3bd8ff9d778920a5f68000d7625b74f43558718a49755aa5259 languageName: node linkType: hard @@ -12069,15 +11397,22 @@ __metadata: languageName: node linkType: hard -"prismjs@npm:~1.23.0": - version: 1.23.0 - resolution: "prismjs@npm:1.23.0" +"pretty-format@npm:^27.0.2": + version: 27.0.6 + resolution: "pretty-format@npm:27.0.6" dependencies: - clipboard: ^2.0.0 - dependenciesMeta: - clipboard: - optional: true - checksum: 8c3cf69150418170aceb6d935e61a12e49802ca6c6abc98e3331921cac8cc992e0cd477bd77fdea1a06a3f16cd3d2615a3aadcefa0db3efb159f2c2ef403a2c4 + "@jest/types": ^27.0.6 + ansi-regex: ^5.0.0 + ansi-styles: ^5.0.0 + react-is: ^17.0.1 + checksum: 1584f7fe29da829e3cf5c9090b0a18300c4b7b81510047e1d4ba080f87e19b6ce07f191ecf2354d64c1cec4c331009bde255a272db2c8292657b6acc059e4864 + languageName: node + linkType: hard + +"prismjs@npm:~1.24.0": + version: 1.24.1 + resolution: "prismjs@npm:1.24.1" + checksum: e5d14a4ba56773122039295bd760c72106acc964e04cb9831b9ae7e7a58f67ccac6c053e77e21f1018a3684f31d35bb065c0c81fd4ff00b73b1570c3ace4aef0 languageName: node linkType: hard @@ -12149,16 +11484,6 @@ __metadata: languageName: node linkType: hard -"proxy-addr@npm:~2.0.5": - version: 2.0.6 - resolution: "proxy-addr@npm:2.0.6" - dependencies: - forwarded: ~0.1.2 - ipaddr.js: 1.9.1 - checksum: 2bad9b7a56b847faf606a19328aaaf5fca3e561ebb4e933969a580d94a20f77e74fb21196028a6e417851b3d9d95a0c704732a3362e3ef515d45d96859ac7eb9 - languageName: node - linkType: hard - "proxy-from-env@npm:1.1.0": version: 1.1.0 resolution: "proxy-from-env@npm:1.1.0" @@ -12197,13 +11522,6 @@ __metadata: languageName: node linkType: hard -"punycode@npm:1.3.2": - version: 1.3.2 - resolution: "punycode@npm:1.3.2" - checksum: b8807fd594b1db33335692d1f03e8beeddde6fda7fbb4a2e32925d88d20a3aa4cd8dcc0c109ccaccbd2ba761c208dfaaada83007087ea8bfb0129c9ef1b99ed6 - languageName: node - linkType: hard - "punycode@npm:^2.1.0, punycode@npm:^2.1.1": version: 2.1.1 resolution: "punycode@npm:2.1.1" @@ -12220,12 +11538,12 @@ __metadata: languageName: node linkType: hard -"puppeteer-core@npm:^10.0.0": - version: 10.0.0 - resolution: "puppeteer-core@npm:10.0.0" +"puppeteer-core@npm:^10.2.0": + version: 10.2.0 + resolution: "puppeteer-core@npm:10.2.0" dependencies: debug: 4.3.1 - devtools-protocol: 0.0.883894 + devtools-protocol: 0.0.901419 extract-zip: 2.0.1 https-proxy-agent: 5.0.0 node-fetch: 2.6.1 @@ -12236,16 +11554,16 @@ __metadata: tar-fs: 2.0.0 unbzip2-stream: 1.3.3 ws: 7.4.6 - checksum: dcb00d4597ab6d41bb4b728a99c9adad43fb08957551bfe0ea065d176d70c249553afc06449f8334aac68d80a2d78986c7039bddbaf30b6d234324d7ff0ab787 + checksum: 83091948f098444fc11b69d71860e4a0cea3be8ed71f792769e3a0e50e3621b9e7f7e0c1ead3b9db12ec376c12e95f0976f9fdff0b3ac5721b61dc66ac81aba0 languageName: node linkType: hard -"puppeteer@npm:^10.0.0": - version: 10.0.0 - resolution: "puppeteer@npm:10.0.0" +"puppeteer@npm:^10.2.0": + version: 10.2.0 + resolution: "puppeteer@npm:10.2.0" dependencies: debug: 4.3.1 - devtools-protocol: 0.0.883894 + devtools-protocol: 0.0.901419 extract-zip: 2.0.1 https-proxy-agent: 5.0.0 node-fetch: 2.6.1 @@ -12256,7 +11574,7 @@ __metadata: tar-fs: 2.0.0 unbzip2-stream: 1.3.3 ws: 7.4.6 - checksum: 10c01e42b01da798d634b4da87c0ab2f02f02fecbdeef033fd972007db2d6eb35657832f4cbfd5592d6a8549ba3005adc2d77d6e451fa72de459916234497aac + checksum: 2722adc087a01a3797948f9ec0bd98f4c6d5aaf8f5fed8c0407259ccfeaaa4c25c6bd27927aca3db58e6de03456f5556806a1cce322a7529a7624eafb87321ab languageName: node linkType: hard @@ -12267,13 +11585,6 @@ __metadata: languageName: node linkType: hard -"qs@npm:6.7.0": - version: 6.7.0 - resolution: "qs@npm:6.7.0" - checksum: dfd5f6adef50e36e908cfa70a6233871b5afe66fbaca37ecc1da352ba29eb2151a3797991948f158bb37fccde51bd57845cb619a8035287bfc24e4591172c347 - languageName: node - linkType: hard - "qs@npm:~6.5.2": version: 6.5.2 resolution: "qs@npm:6.5.2" @@ -12291,13 +11602,6 @@ __metadata: languageName: node linkType: hard -"querystring@npm:0.2.0": - version: 0.2.0 - resolution: "querystring@npm:0.2.0" - checksum: 8258d6734f19be27e93f601758858c299bdebe71147909e367101ba459b95446fbe5b975bf9beb76390156a592b6f4ac3a68b6087cea165c259705b8b4e56a69 - languageName: node - linkType: hard - "queue-microtask@npm:^1.2.2": version: 1.2.3 resolution: "queue-microtask@npm:1.2.3" @@ -12305,6 +11609,13 @@ __metadata: languageName: node linkType: hard +"quick-lru@npm:^5.1.1": + version: 5.1.1 + resolution: "quick-lru@npm:5.1.1" + checksum: a516faa25574be7947969883e6068dbe4aa19e8ef8e8e0fd96cddd6d36485e9106d85c0041a27153286b0770b381328f4072aa40d3b18a19f5f7d2b78b94b5ed + languageName: node + linkType: hard + "ramda@npm:^0.27.1": version: 0.27.1 resolution: "ramda@npm:0.27.1" @@ -12321,25 +11632,6 @@ __metadata: languageName: node linkType: hard -"range-parser@npm:^1.2.1, range-parser@npm:~1.2.1": - version: 1.2.1 - resolution: "range-parser@npm:1.2.1" - checksum: 0a268d4fea508661cf5743dfe3d5f47ce214fd6b7dec1de0da4d669dd4ef3d2144468ebe4179049eff253d9d27e719c88dae55be64f954e80135a0cada804ec9 - languageName: node - linkType: hard - -"raw-body@npm:2.4.0": - version: 2.4.0 - resolution: "raw-body@npm:2.4.0" - dependencies: - bytes: 3.1.0 - http-errors: 1.7.2 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - checksum: 6343906939e018c6e633a34a938a5d6d1e93ffcfa48646e00207d53b418e941953b521473950c079347220944dc75ba10e7b3c08bf97e3ac72c7624882db09bb - languageName: node - linkType: hard - "raw-loader@npm:^4.0.2": version: 4.0.2 resolution: "raw-loader@npm:4.0.2" @@ -12398,16 +11690,6 @@ __metadata: languageName: node linkType: hard -"react-devtools-core@npm:^4.6.0": - version: 4.10.1 - resolution: "react-devtools-core@npm:4.10.1" - dependencies: - shell-quote: ^1.6.1 - ws: ^7 - checksum: 9917e2913e7be5c2e9187d6cf2b1c2fcee6042f45040dd4351f69a279d62b6c79570890f553064f274bd1575ae83a87102e38457fb0b4df79309d64b48e48049 - languageName: node - linkType: hard - "react-dom@npm:^17.0.2": version: 17.0.2 resolution: "react-dom@npm:17.0.2" @@ -12453,20 +11735,6 @@ __metadata: languageName: node linkType: hard -"react-reconciler@npm:^0.24.0": - version: 0.24.0 - resolution: "react-reconciler@npm:0.24.0" - dependencies: - loose-envify: ^1.1.0 - object-assign: ^4.1.1 - prop-types: ^15.6.2 - scheduler: ^0.18.0 - peerDependencies: - react: ^16.0.0 - checksum: c9c74208325a940ca36e031b71499f6d8e62e96ee673d69e35cc9e6a661aa746a2b0750f2ffcd1bae0a29eaf3d127dc8197ab7e801e6a3a2ab7d45a71b464630 - languageName: node - linkType: hard - "react-router-dom@npm:^5.2.0": version: 5.2.0 resolution: "react-router-dom@npm:5.2.0" @@ -12609,7 +11877,7 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^2.0.1, readable-stream@npm:^2.0.6, readable-stream@npm:^2.2.2": +"readable-stream@npm:^2.0.6, readable-stream@npm:^2.2.2": version: 2.3.7 resolution: "readable-stream@npm:2.3.7" dependencies: @@ -12624,7 +11892,7 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^3.0.6, readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0": +"readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0": version: 3.6.0 resolution: "readable-stream@npm:3.6.0" dependencies: @@ -12635,7 +11903,7 @@ __metadata: languageName: node linkType: hard -"readdirp@npm:^3.5.0": +"readdirp@npm:^3.5.0, readdirp@npm:~3.6.0": version: 3.6.0 resolution: "readdirp@npm:3.6.0" dependencies: @@ -12644,15 +11912,6 @@ __metadata: languageName: node linkType: hard -"readdirp@npm:~3.5.0": - version: 3.5.0 - resolution: "readdirp@npm:3.5.0" - dependencies: - picomatch: ^2.2.1 - checksum: 6b1a9341e295e15d4fb40c010216cbcb6266587cd0b3ce7defabd66fa1b4e35f9fba3d64c2187fd38fadd01ccbfc5f1b33fdfb1da63b3cbf66224b7c6d75ce5a - languageName: node - linkType: hard - "recursive-readdir@npm:2.2.2": version: 2.2.2 resolution: "recursive-readdir@npm:2.2.2" @@ -12662,14 +11921,14 @@ __metadata: languageName: node linkType: hard -"refractor@npm:^3.3.1": - version: 3.3.1 - resolution: "refractor@npm:3.3.1" +"refractor@npm:^3.4.0": + version: 3.4.0 + resolution: "refractor@npm:3.4.0" dependencies: hastscript: ^6.0.0 parse-entities: ^2.0.0 - prismjs: ~1.23.0 - checksum: c42d53c3a1f32d31b878aabd2a4537d0d38ef08ddf962f548ffe077604c3c973fde03411dab327f9d338274373243fa131692fdd3ab0ac7bcdb4aeb66deaf5ef + prismjs: ~1.24.0 + checksum: 7f156bade4bc46703756c73d35b01ed571131d244c1767f8aae4fa7249bdee83b514754ea1522b4120e77f597ecc033c6324f391cfc504c81acf7d49a9ef2d13 languageName: node linkType: hard @@ -12715,7 +11974,7 @@ __metadata: languageName: node linkType: hard -"regexp.prototype.flags@npm:^1.2.0, regexp.prototype.flags@npm:^1.3.1": +"regexp.prototype.flags@npm:^1.3.1": version: 1.3.1 resolution: "regexp.prototype.flags@npm:1.3.1" dependencies: @@ -12960,6 +12219,13 @@ __metadata: languageName: node linkType: hard +"resolve-alpn@npm:^1.0.0": + version: 1.2.0 + resolution: "resolve-alpn@npm:1.2.0" + checksum: a38b5bf2084d384586fe15b31735396cff4640cbe137c87ffd1dcc94dcdc0c743e6875ec4baa7a9eed460355a46e3f9ebafa4cdbb8122264ed5f4e3260f69d0c + languageName: node + linkType: hard + "resolve-cwd@npm:^3.0.0": version: 3.0.0 resolution: "resolve-cwd@npm:3.0.0" @@ -13046,6 +12312,15 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard +"responselike@npm:^2.0.0": + version: 2.0.0 + resolution: "responselike@npm:2.0.0" + dependencies: + lowercase-keys: ^2.0.0 + checksum: 6a4d32c37d4e88678ae0a9d69fcc90aafa15b1a3eab455bd65c06af3c6c4976afc47d07a0e5a60d277ab041a465f43bf0a581e0d7ab33786e7a7741573f2e487 + languageName: node + linkType: hard + "restore-cursor@npm:^3.1.0": version: 3.1.0 resolution: "restore-cursor@npm:3.1.0" @@ -13063,13 +12338,6 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"retry@npm:^0.12.0": - version: 0.12.0 - resolution: "retry@npm:0.12.0" - checksum: 623bd7d2e5119467ba66202d733ec3c2e2e26568074923bc0585b6b99db14f357e79bdedb63cab56cec47491c4a0da7e6021a7465ca6dc4f481d3898fdd3158c - languageName: node - linkType: hard - "reusify@npm:^1.0.4": version: 1.0.4 resolution: "reusify@npm:1.0.4" @@ -13102,20 +12370,21 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"rocket-punch@npm:^2.5.4": - version: 2.5.4 - resolution: "rocket-punch@npm:2.5.4" - dependencies: - "@ssen/collect-dependencies": ^2.5.1 - "@ssen/extended-compiler-host": ^2.5.1 - "@ssen/flat-package-name": ^2.5.1 - "@ssen/import-path-rewrite-compiler-host": ^2.5.1 - "@ssen/jest-transform": ^2.5.1 - "@ssen/promised": ^2.5.1 - "@ssen/publish-packages": ^2.5.1 - "@ssen/read-last-argv": ^2.5.1 - "@ssen/read-tsconfig": ^2.5.1 - "@ssen/rewrite-src-path": ^2.5.1 +"rocket-punch@npm:^3.0.1": + version: 3.0.1 + resolution: "rocket-punch@npm:3.0.1" + dependencies: + "@ssen/bundle-import-rewrite": ^3.0.0 + "@ssen/collect-dependencies": ^3.0.0 + "@ssen/extended-compiler-host": ^3.0.0 + "@ssen/flat-package-name": ^3.0.0 + "@ssen/import-path-rewrite-compiler-host": ^3.0.0 + "@ssen/jest-transform": ^3.0.0 + "@ssen/promised": ^3.0.0 + "@ssen/publish-packages": ^3.0.0 + "@ssen/read-last-argv": ^3.0.0 + "@ssen/read-tsconfig": ^3.0.0 + "@ssen/rewrite-src-path": ^3.0.0 chalk: ^4.1.1 depcheck: ^1.4.1 fs-extra: ^10.0.0 @@ -13123,11 +12392,12 @@ resolve@^2.0.0-next.3: package-json: ^6.5.0 ts-jest: ^26.5.6 type-fest: ^1.2.0 - typescript: ^4.3.2 yargs: ^17.0.1 + peerDependencies: + typescript: ^3.9.0 || ^4.0.0 bin: rocket-punch: bin/rocket-punch.js - checksum: c87cb1eda772dba903a2c4e3ff410489d31e752108e27d364f264d3be29365ad273fd81de03fbb414919b8746d51a39c1fc58719f4056ce798beeb965178eb83 + checksum: c73aa8a6f5cc08ee170d6aca2a28b60f114c64f958eb40fe6625b38b67698eac4eeb88b234db10b361782cdd96558af95457de699b3d0fbd1016d9b40614085b languageName: node linkType: hard @@ -13138,10 +12408,10 @@ resolve@^2.0.0-next.3: "@handbook/markdown-source-import": ^1.1.0 "@ssen/eslint-config": ^2.0.1 "@ssen/prettier-config": ^2.0.1 - eslint: ^7.27.0 - husky: ^6.0.0 - lint-staged: ^11.0.0 - prettier: ^2.3.0 + eslint: ^7.32.0 + husky: ^7.0.1 + lint-staged: ^11.1.2 + prettier: ^2.3.2 languageName: unknown linkType: soft @@ -13170,29 +12440,29 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"rxjs@npm:^7.1.0": - version: 7.1.0 - resolution: "rxjs@npm:7.1.0" +"rxjs@npm:^7.3.0": + version: 7.3.0 + resolution: "rxjs@npm:7.3.0" dependencies: tslib: ~2.1.0 - checksum: 9ac2b78968782a15253c98a154ff97794db230a26ed450a9d0441a991618b41e4441ef4835b0b27303d363d8556c86c3f3ca0b7f90eb40d3b84a9a14325101b3 + checksum: e63adb8808ea6c299a020d56d2af92bcf71efe641adf838499932e29b8f5fd5ff00873653ad48ba3ecf6c9fc11c3c595acf995e8d456f9d8cb85c7d37a1fd72e languageName: node linkType: hard -"safe-buffer@npm:5.1.2, safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": - version: 5.1.2 - resolution: "safe-buffer@npm:5.1.2" - checksum: f2f1f7943ca44a594893a852894055cf619c1fbcb611237fc39e461ae751187e7baf4dc391a72125e0ac4fb2d8c5c0b3c71529622e6a58f46b960211e704903c - languageName: node - linkType: hard - -"safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.2, safe-buffer@npm:~5.2.0": +"safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.2, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 languageName: node linkType: hard +"safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": + version: 5.1.2 + resolution: "safe-buffer@npm:5.1.2" + checksum: f2f1f7943ca44a594893a852894055cf619c1fbcb611237fc39e461ae751187e7baf4dc391a72125e0ac4fb2d8c5c0b3c71529622e6a58f46b960211e704903c + languageName: node + linkType: hard + "safe-regex@npm:^1.1.0": version: 1.1.0 resolution: "safe-regex@npm:1.1.0" @@ -13235,9 +12505,9 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"sass-loader@npm:^12.0.0": - version: 12.0.0 - resolution: "sass-loader@npm:12.0.0" +"sass-loader@npm:^12.1.0": + version: 12.1.0 + resolution: "sass-loader@npm:12.1.0" dependencies: klona: ^2.0.4 neo-async: ^2.6.2 @@ -13253,7 +12523,7 @@ resolve@^2.0.0-next.3: optional: true sass: optional: true - checksum: 7816ec282797f683c23a677bf180480544f6bba78074693a8184b41291fd9cd5d795a7598790f252fb3294a415a1c817a3c7b393fddfb53c334097d3c6240c14 + checksum: 69c66ea3482922064f1e907fc204283e5e9cc02eb20b7ab1761d478922f77b3e2c47c8e3c585f771d75ce57bb088b226ae2eb4c736849b29c8727e921a6e0d41 languageName: node linkType: hard @@ -13284,16 +12554,6 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"scheduler@npm:^0.18.0": - version: 0.18.0 - resolution: "scheduler@npm:0.18.0" - dependencies: - loose-envify: ^1.1.0 - object-assign: ^4.1.1 - checksum: b6e0b9e0086b200b114f1ef7f9fcac966ad5d84cd3b1867174be0549d3ff713d1fd22d5574cb024b7d3eadf3307f2afc1cb5bfbf28b0d3bc34b200183800fcae - languageName: node - linkType: hard - "scheduler@npm:^0.20.2": version: 0.20.2 resolution: "scheduler@npm:0.20.2" @@ -13304,17 +12564,6 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"schema-utils@npm:2.7.0": - version: 2.7.0 - resolution: "schema-utils@npm:2.7.0" - dependencies: - "@types/json-schema": ^7.0.4 - ajv: ^6.12.2 - ajv-keywords: ^3.4.1 - checksum: 8889325b0ee1ae6a8f5d6aaa855c71e136ebbb7fd731b01a9d3ec8225dcb245f644c47c50104db4c741983b528cdff8558570021257d4d397ec6aaecd9172a8e - languageName: node - linkType: hard - "schema-utils@npm:^2.6.5": version: 2.7.1 resolution: "schema-utils@npm:2.7.1" @@ -13326,14 +12575,14 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"schema-utils@npm:^3.0.0": - version: 3.0.0 - resolution: "schema-utils@npm:3.0.0" +"schema-utils@npm:^3.0.0, schema-utils@npm:^3.1.0": + version: 3.1.1 + resolution: "schema-utils@npm:3.1.1" dependencies: - "@types/json-schema": ^7.0.6 + "@types/json-schema": ^7.0.8 ajv: ^6.12.5 ajv-keywords: ^3.5.2 - checksum: 56dc93b4f6abe91aa2b76b2c656610cc6d491297f4e6866340bc7b6b226b521a2969ab2498cd9e6c59eda670b730a9c8695404ca56c08643c3b95c5e174588c8 + checksum: fb73f3d759d43ba033c877628fe9751620a26879f6301d3dbeeb48cf2a65baec5cdf99da65d1bf3b4ff5444b2e59cbe4f81c2456b5e0d2ba7d7fd4aed5da29ce languageName: node linkType: hard @@ -13357,29 +12606,6 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"select-hose@npm:^2.0.0": - version: 2.0.0 - resolution: "select-hose@npm:2.0.0" - checksum: d7e5fcc695a4804209d232a1b18624a5134be334d4e1114b0721f7a5e72bd73da483dcf41528c1af4f4f4892ad7cfd6a1e55c8ffb83f9c9fe723b738db609dbb - languageName: node - linkType: hard - -"select@npm:^1.1.2": - version: 1.1.2 - resolution: "select@npm:1.1.2" - checksum: 4346151e94f226ea6131e44e68e6d837f3fdee64831b756dd657cc0b02f4cb5107f867cb34a1d1216ab7737d0bf0645d44546afb030bbd8d64e891f5e4c4814e - languageName: node - linkType: hard - -"selfsigned@npm:^1.10.11": - version: 1.10.11 - resolution: "selfsigned@npm:1.10.11" - dependencies: - node-forge: ^0.10.0 - checksum: 1fd8fd317dc0b7d713d12d828131ac03c53abf41c4538b263fecd37bbc15688526c631654049ff00806b757ccb85492de6a13d6fefcad5cb54926631e48a76e1 - languageName: node - linkType: hard - "semver-compare@npm:^1.0.0": version: 1.0.0 resolution: "semver-compare@npm:1.0.0" @@ -13414,7 +12640,7 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"semver@npm:7.x, semver@npm:^7.2.1, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5": +"semver@npm:7.x, semver@npm:^7.2.1, semver@npm:^7.3.2, semver@npm:^7.3.5": version: 7.3.5 resolution: "semver@npm:7.3.5" dependencies: @@ -13434,27 +12660,6 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"send@npm:0.17.1": - version: 0.17.1 - resolution: "send@npm:0.17.1" - dependencies: - debug: 2.6.9 - depd: ~1.1.2 - destroy: ~1.0.4 - encodeurl: ~1.0.2 - escape-html: ~1.0.3 - etag: ~1.8.1 - fresh: 0.5.2 - http-errors: ~1.7.2 - mime: 1.6.0 - ms: 2.1.1 - on-finished: ~2.3.0 - range-parser: ~1.2.1 - statuses: ~1.5.0 - checksum: d214c2fa42e7fae3f8fc1aa3931eeb3e6b78c2cf141574e09dbe159915c1e3a337269fc6b7512e7dfddcd7d6ff5974cb62f7c3637ba86a55bde20a92c18bdca0 - languageName: node - linkType: hard - "serialize-error@npm:^7.0.1": version: 7.0.1 resolution: "serialize-error@npm:7.0.1" @@ -13464,39 +12669,12 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"serialize-javascript@npm:^5.0.1": - version: 5.0.1 - resolution: "serialize-javascript@npm:5.0.1" +"serialize-javascript@npm:^6.0.0": + version: 6.0.0 + resolution: "serialize-javascript@npm:6.0.0" dependencies: randombytes: ^2.1.0 - checksum: bb45a427690c3d2711e28499de0fbf25036af1e23c63c6a9237ed0aa572fd0941fcdefe50a2dccf26d9df8c8b86ae38659e19d8ba7afd3fbc1f1c7539a2a48d2 - languageName: node - linkType: hard - -"serve-index@npm:^1.9.1": - version: 1.9.1 - resolution: "serve-index@npm:1.9.1" - dependencies: - accepts: ~1.3.4 - batch: 0.6.1 - debug: 2.6.9 - escape-html: ~1.0.3 - http-errors: ~1.6.2 - mime-types: ~2.1.17 - parseurl: ~1.3.2 - checksum: e2647ce13379485b98a53ba2ea3fbad4d44b57540d00663b02b976e426e6194d62ac465c0d862cb7057f65e0de8ab8a684aa095427a4b8612412eca0d300d22f - languageName: node - linkType: hard - -"serve-static@npm:1.14.1": - version: 1.14.1 - resolution: "serve-static@npm:1.14.1" - dependencies: - encodeurl: ~1.0.2 - escape-html: ~1.0.3 - parseurl: ~1.3.3 - send: 0.17.1 - checksum: c6b268e8486d39ecd54b86c7f2d0ee4a38cd7514ddd9c92c8d5793bb005afde5e908b12395898ae206782306ccc848193d93daa15b86afb3cbe5a8414806abe8 + checksum: 56f90b562a1bdc92e55afb3e657c6397c01a902c588c0fe3d4c490efdcc97dcd2a3074ba12df9e94630f33a5ce5b76a74784a7041294628a6f4306e0ec84bf93 languageName: node linkType: hard @@ -13519,20 +12697,6 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"setprototypeof@npm:1.1.0": - version: 1.1.0 - resolution: "setprototypeof@npm:1.1.0" - checksum: 27cb44304d6c9e1a23bc6c706af4acaae1a7aa1054d4ec13c05f01a99fd4887109a83a8042b67ad90dbfcd100d43efc171ee036eb080667172079213242ca36e - languageName: node - linkType: hard - -"setprototypeof@npm:1.1.1": - version: 1.1.1 - resolution: "setprototypeof@npm:1.1.1" - checksum: a8bee29c1c64c245d460ce53f7460af8cbd0aceac68d66e5215153992cc8b3a7a123416353e0c642060e85cc5fd4241c92d1190eec97eda0dcb97436e8fcca3b - languageName: node - linkType: hard - "shallow-clone@npm:^3.0.0": version: 3.0.1 resolution: "shallow-clone@npm:3.0.1" @@ -13574,7 +12738,7 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"shell-quote@npm:1.7.2, shell-quote@npm:^1.6.1": +"shell-quote@npm:1.7.2": version: 1.7.2 resolution: "shell-quote@npm:1.7.2" checksum: efad426fb25d8a54d06363f1f45774aa9e195f62f14fa696d542b44bfe418ab41206448b63af18d726c62e099e66d9a3f4f44858b9ea2ce4b794b41b802672d1 @@ -13618,13 +12782,13 @@ resolve@^2.0.0-next.3: linkType: hard "sirv@npm:^1.0.7": - version: 1.0.11 - resolution: "sirv@npm:1.0.11" + version: 1.0.18 + resolution: "sirv@npm:1.0.18" dependencies: - "@polka/url": ^1.0.0-next.9 + "@polka/url": ^1.0.0-next.20 mime: ^2.3.1 totalist: ^1.0.0 - checksum: 148e28fada4fb817673a6da60d0aba609a7eae853c8f337fa17e01ceea3498703fbcbf36be44edd433920d86047f1aa8535e30f1124472a72fc489d4a7ced377 + checksum: 0839036255d121a6396f9496fb7d285628e4986f3c1febca7b7c6d675fc15305050e3278ab249213c5af332be6178f992aaf42573d9d583ef3ae203b6d1fff2a languageName: node linkType: hard @@ -13700,17 +12864,6 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"sockjs@npm:^0.3.21": - version: 0.3.21 - resolution: "sockjs@npm:0.3.21" - dependencies: - faye-websocket: ^0.11.3 - uuid: ^3.4.0 - websocket-driver: ^0.7.4 - checksum: 9614e5dded95d38c08c42bba3505638801d0e88d9fec03dc1ae37296286ad5c31dff503b8c81a11e573bd0bea76b295db93d4f00cc336e749bc89f9f7cc7e6c9 - languageName: node - linkType: hard - "source-list-map@npm:^2.0.0, source-list-map@npm:^2.0.1": version: 2.0.1 resolution: "source-list-map@npm:2.0.1" @@ -13738,7 +12891,7 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"source-map-support@npm:^0.5.17, source-map-support@npm:^0.5.19, source-map-support@npm:^0.5.6, source-map-support@npm:~0.5.12, source-map-support@npm:~0.5.19": +"source-map-support@npm:^0.5.19, source-map-support@npm:^0.5.6, source-map-support@npm:~0.5.12, source-map-support@npm:~0.5.19": version: 0.5.19 resolution: "source-map-support@npm:0.5.19" dependencies: @@ -13824,33 +12977,6 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"spdy-transport@npm:^3.0.0": - version: 3.0.0 - resolution: "spdy-transport@npm:3.0.0" - dependencies: - debug: ^4.1.0 - detect-node: ^2.0.4 - hpack.js: ^2.1.6 - obuf: ^1.1.2 - readable-stream: ^3.0.6 - wbuf: ^1.7.3 - checksum: 0fcaad3b836fb1ec0bdd39fa7008b9a7a84a553f12be6b736a2512613b323207ffc924b9551cef0378f7233c85916cff1118652e03a730bdb97c0e042243d56c - languageName: node - linkType: hard - -"spdy@npm:^4.0.2": - version: 4.0.2 - resolution: "spdy@npm:4.0.2" - dependencies: - debug: ^4.1.0 - handle-thing: ^2.0.0 - http-deceiver: ^1.2.7 - select-hose: ^2.0.0 - spdy-transport: ^3.0.0 - checksum: 2c739d0ff6f56ad36d2d754d0261d5ec358457bea7cbf77b1b05b0c6464f2ce65b85f196305f50b7bd9120723eb94bae9933466f28e67e5cd8cde4e27f1d75f8 - languageName: node - linkType: hard - "split-string@npm:^3.0.1, split-string@npm:^3.0.2": version: 3.1.0 resolution: "split-string@npm:3.1.0" @@ -13928,13 +13054,6 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"statuses@npm:>= 1.4.0 < 2, statuses@npm:>= 1.5.0 < 2, statuses@npm:~1.5.0": - version: 1.5.0 - resolution: "statuses@npm:1.5.0" - checksum: c469b9519de16a4bb19600205cffb39ee471a5f17b82589757ca7bd40a8d92ebb6ed9f98b5a540c5d302ccbc78f15dc03cc0280dd6e00df1335568a5d5758a5c - languageName: node - linkType: hard - "stream-buffers@npm:^3.0.2": version: 3.0.2 resolution: "stream-buffers@npm:3.0.2" @@ -13956,16 +13075,6 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"string-length@npm:^3.1.0": - version: 3.1.0 - resolution: "string-length@npm:3.1.0" - dependencies: - astral-regex: ^1.0.0 - strip-ansi: ^5.2.0 - checksum: b09ccacc2f96ba3ade9f2b3163901e05f668a2b14bc353853165c1f3b19185421ac004e9957b62827083d163e049c41a1b15170e252eaf44fdd686553c372714 - languageName: node - linkType: hard - "string-length@npm:^4.0.1": version: 4.0.2 resolution: "string-length@npm:4.0.2" @@ -14117,7 +13226,7 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"strip-ansi@npm:^5.1.0, strip-ansi@npm:^5.2.0": +"strip-ansi@npm:^5.1.0": version: 5.2.0 resolution: "strip-ansi@npm:5.2.0" dependencies: @@ -14241,6 +13350,15 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard +"supports-color@npm:^8.0.0": + version: 8.1.1 + resolution: "supports-color@npm:8.1.1" + dependencies: + has-flag: ^4.0.0 + checksum: c052193a7e43c6cdc741eb7f378df605636e01ad434badf7324f17fb60c69a880d8d8fcdcb562cf94c2350e57b937d7425ab5b8326c67c2adc48f7c87c1db406 + languageName: node + linkType: hard + "supports-hyperlinks@npm:^2.0.0": version: 2.1.0 resolution: "supports-hyperlinks@npm:2.1.0" @@ -14372,19 +13490,19 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"terser-webpack-plugin@npm:^5.1.1": - version: 5.1.1 - resolution: "terser-webpack-plugin@npm:5.1.1" +"terser-webpack-plugin@npm:^5.1.3": + version: 5.1.4 + resolution: "terser-webpack-plugin@npm:5.1.4" dependencies: - jest-worker: ^26.6.2 + jest-worker: ^27.0.2 p-limit: ^3.1.0 schema-utils: ^3.0.0 - serialize-javascript: ^5.0.1 + serialize-javascript: ^6.0.0 source-map: ^0.6.1 - terser: ^5.5.1 + terser: ^5.7.0 peerDependencies: webpack: ^5.1.0 - checksum: 4b3dbd353022400dba04a5c695f2746dc513f22a4673fee22945821e209948c8cfc6068d2bffc06f3159a1b86cf7f5bd9e4df6d581feebde0bfbd24d2f813d32 + checksum: 7e5f97ac1944aaff12460201496314ab75d842f4f088e0344ca5143caf85a340d7b0294ed6b4e32b52bbd1bea71648d6417034e889872c582c1be4840e9bd0e7 languageName: node linkType: hard @@ -14401,16 +13519,16 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"terser@npm:^5.5.1": - version: 5.6.1 - resolution: "terser@npm:5.6.1" +"terser@npm:^5.7.0": + version: 5.7.1 + resolution: "terser@npm:5.7.1" dependencies: commander: ^2.20.0 source-map: ~0.7.2 source-map-support: ~0.5.19 bin: terser: bin/terser - checksum: b15c655c941ccb930665b2ce0054460d2e94a92b31d7ebf82ae3ccd30b747e1d3bdc252ee870ab6f1ab6713f68b2888347919cd681e3e4dd88b6b76b149fd666 + checksum: 9354af5c22ade95004c103893606968cbd5390824c9d89df540f9e578c6e6559a5e9c56a1bf23ed055cdb61c60defdbc2c29e773514f9f2fbc7fd7ed335f1f58 languageName: node linkType: hard @@ -14446,20 +13564,6 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"thunky@npm:^1.0.2": - version: 1.1.0 - resolution: "thunky@npm:1.1.0" - checksum: 993096c472b6b8f30e29dc777a8d17720e4cab448375041f20c0cb802a09a7fb2217f2a3e8cdc11851faa71c957e2db309357367fc9d7af3cb7a4d00f4b66034 - languageName: node - linkType: hard - -"tiny-emitter@npm:^2.0.0": - version: 2.1.0 - resolution: "tiny-emitter@npm:2.1.0" - checksum: fbcfb5145751a0e3b109507a828eb6d6d4501352ab7bb33eccef46e22e9d9ad3953158870a6966a59e57ab7c3f9cfac7cab8521db4de6a5e757012f4677df2dd - languageName: node - linkType: hard - "tiny-invariant@npm:^1.0.2": version: 1.1.0 resolution: "tiny-invariant@npm:1.1.0" @@ -14544,10 +13648,10 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"toidentifier@npm:1.0.0": - version: 1.0.0 - resolution: "toidentifier@npm:1.0.0" - checksum: 199e6bfca1531d49b3506cff02353d53ec987c9ee10ee272ca6484ed97f1fc10fb77c6c009079ca16d5c5be4a10378178c3cacdb41ce9ec954c3297c74c6053e +"toposort@npm:^2.0.2": + version: 2.0.2 + resolution: "toposort@npm:2.0.2" + checksum: d64c74b570391c9432873f48e231b439ee56bc49f7cb9780b505cfdf5cb832f808d0bae072515d93834dd6bceca5bb34448b5b4b408335e4d4716eaf68195dcb languageName: node linkType: hard @@ -14643,23 +13747,25 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"ts-node@npm:^10.0.0": - version: 10.0.0 - resolution: "ts-node@npm:10.0.0" +"ts-node@npm:^10.2.1": + version: 10.2.1 + resolution: "ts-node@npm:10.2.1" dependencies: + "@cspotcode/source-map-support": 0.6.1 "@tsconfig/node10": ^1.0.7 "@tsconfig/node12": ^1.0.7 "@tsconfig/node14": ^1.0.0 - "@tsconfig/node16": ^1.0.1 + "@tsconfig/node16": ^1.0.2 + acorn: ^8.4.1 + acorn-walk: ^8.1.1 arg: ^4.1.0 create-require: ^1.1.0 diff: ^4.0.1 make-error: ^1.1.1 - source-map-support: ^0.5.17 yn: 3.1.1 peerDependencies: - "@swc/core": ">=1.2.45" - "@swc/wasm": ">=1.2.45" + "@swc/core": ">=1.2.50" + "@swc/wasm": ">=1.2.50" "@types/node": "*" typescript: ">=2.7" peerDependenciesMeta: @@ -14673,7 +13779,7 @@ resolve@^2.0.0-next.3: ts-node-script: dist/bin-script.js ts-node-transpile-only: dist/bin-transpile.js ts-script: dist/bin-script-deprecated.js - checksum: 96d633774e13eb90ad49d644f397e99f5da72818e36040bf5b6bd66d0ab369dbb4348e499193c0fa45071f8e9559bb7724174139389e56bb562db36a3842484e + checksum: f37d2827a583c51d012cdd3d9b96629fba7a5b5dfad2c26ca48c7c89f904118924689ca56f4b9b2136217194870a76f26aae06e3490ee613b0e960f02dc96bbe languageName: node linkType: hard @@ -14684,15 +13790,14 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"tsconfig-paths@npm:^3.9.0": - version: 3.9.0 - resolution: "tsconfig-paths@npm:3.9.0" +"tsconfig-paths@npm:^3.10.1, tsconfig-paths@npm:^3.9.0": + version: 3.10.1 + resolution: "tsconfig-paths@npm:3.10.1" dependencies: - "@types/json5": ^0.0.29 - json5: ^1.0.1 + json5: ^2.2.0 minimist: ^1.2.0 strip-bom: ^3.0.0 - checksum: 243b3b098c76a4ca90ea0431683f3755a4ff175c6123bcba5f7b4bd80fe2ef8fa9bdc8f4d525148a1e71ade7f3e037e7c0313ae177fd12398ab68f05c2c7f25d + checksum: 014ec869276114031d3bd6d2d9ce07c32c96ca6912f32285f46eeb4ca5270bd4c5e4de1353b838c66282157f089dedc8c3377c4e72e2f3d910e706c7b9ac5e6d languageName: node linkType: hard @@ -14703,7 +13808,7 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"tslib@npm:^2.0.3, tslib@npm:^2.1.0": +"tslib@npm:^2.0.3": version: 2.2.0 resolution: "tslib@npm:2.2.0" checksum: a48c9639f7496fa701ea8ffe0561070fcb44c104a59632f7f845c0af00825c99b6373575ec59b2b5cdbfd7505875086dbe5dc83312304d8979f22ce571218ca3 @@ -14783,13 +13888,6 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"type-fest@npm:^0.12.0": - version: 0.12.0 - resolution: "type-fest@npm:0.12.0" - checksum: 407d6c1a6fcc907f6124c37e977ba4966205014787a32a27579da6e47c3b1bd210b68cc1c7764d904c8aa55fb4efa6945586f9b4fae742c63ed026a4559da07d - languageName: node - linkType: hard - "type-fest@npm:^0.13.1": version: 0.13.1 resolution: "type-fest@npm:0.13.1" @@ -14818,20 +13916,17 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"type-fest@npm:^1.0.1, type-fest@npm:^1.2.0": - version: 1.2.0 - resolution: "type-fest@npm:1.2.0" - checksum: 72c7be3e8643bf7841d3474b0ddc37f4cdff65d38dd71bb91d9618d9625238a4cd010459c33f5a34afba0e77be5921a77e8eb75bda37060a936baaebd256705d +"type-fest@npm:^1.2.0, type-fest@npm:^1.4.0": + version: 1.4.0 + resolution: "type-fest@npm:1.4.0" + checksum: b011c3388665b097ae6a109a437a04d6f61d81b7357f74cbcb02246f2f5bd72b888ae33631b99871388122ba0a87f4ff1c94078e7119ff22c70e52c0ff828201 languageName: node linkType: hard -"type-is@npm:~1.6.17, type-is@npm:~1.6.18": - version: 1.6.18 - resolution: "type-is@npm:1.6.18" - dependencies: - media-typer: 0.3.0 - mime-types: ~2.1.24 - checksum: 2c8e47675d55f8b4e404bcf529abdf5036c537a04c2b20177bcf78c9e3c1da69da3942b1346e6edb09e823228c0ee656ef0e033765ec39a70d496ef601a0c657 +"type-fest@npm:^2.0.0": + version: 2.0.0 + resolution: "type-fest@npm:2.0.0" + checksum: 9c7ab00b0b594426710233b6d3d112e2bb5b23a523fed4b3272e76dde36b1b78a5691ea20a40332490d3bd46455d0ad67a51ce2271f90c0ae2309861ca01e20d languageName: node linkType: hard @@ -14851,23 +13946,23 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"typescript@>=4, typescript@^4.1.3, typescript@^4.3.2": - version: 4.3.2 - resolution: "typescript@npm:4.3.2" +"typescript@>=4, typescript@^4.1.3, typescript@^4.3.5": + version: 4.3.5 + resolution: "typescript@npm:4.3.5" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: c2a86fa03ce03b255adc13ccd70a55173ca6539ae12114feca59f34a4e9bb69f14fb7cd5adc6c2416e568cff05c870b89d1366768ec55fce04fbdffb429a1cee + checksum: bab033b5e2b0790dd35b77fd005df976ef80b8d84fd2c6e63cc31808151875beae9216e5a315fe7068e8499905c3c354248fe83272cdfc13b7705635f0c66c97 languageName: node linkType: hard -"typescript@patch:typescript@>=4#~builtin, typescript@patch:typescript@^4.1.3#~builtin, typescript@patch:typescript@^4.3.2#~builtin": - version: 4.3.2 - resolution: "typescript@patch:typescript@npm%3A4.3.2#~builtin::version=4.3.2&hash=d8b4e7" +"typescript@patch:typescript@>=4#~builtin, typescript@patch:typescript@^4.1.3#~builtin, typescript@patch:typescript@^4.3.5#~builtin": + version: 4.3.5 + resolution: "typescript@patch:typescript@npm%3A4.3.5#~builtin::version=4.3.5&hash=d8b4e7" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 3d3dec06ba6e5b05caa292355712ed9db813fa1c2377630b1f24b42e5ee8957f0bcdd5efd1500c970a11a6f684897f5728f5542ac822932227159a0611499a5e + checksum: bc2c4fdf0f1557fdafe4ef74848c72ebd9c8c60829568248f869121aea2bb20e16649a252431d0acb185ec118143be22bed73d08f64379557810d82756afedde languageName: node linkType: hard @@ -15089,13 +14184,6 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"unpipe@npm:1.0.0, unpipe@npm:~1.0.0": - version: 1.0.0 - resolution: "unpipe@npm:1.0.0" - checksum: 4fa18d8d8d977c55cb09715385c203197105e10a6d220087ec819f50cb68870f02942244f1017565484237f1f8c5d3cd413631b1ae104d3096f24fdfde1b4aa2 - languageName: node - linkType: hard - "unquote@npm:~1.1.1": version: 1.1.1 resolution: "unquote@npm:1.1.1" @@ -15176,16 +14264,6 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"url@npm:^0.11.0": - version: 0.11.0 - resolution: "url@npm:0.11.0" - dependencies: - punycode: 1.3.2 - querystring: 0.2.0 - checksum: 50d100d3dd2d98b9fe3ada48cadb0b08aa6be6d3ac64112b867b56b19be4bfcba03c2a9a0d7922bfd7ac17d4834e88537749fe182430dfd9b68e520175900d90 - languageName: node - linkType: hard - "use@npm:^3.1.0": version: 3.1.1 resolution: "use@npm:3.1.1" @@ -15219,14 +14297,7 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"utils-merge@npm:1.0.1": - version: 1.0.1 - resolution: "utils-merge@npm:1.0.1" - checksum: c81095493225ecfc28add49c106ca4f09cdf56bc66731aa8dabc2edbbccb1e1bfe2de6a115e5c6a380d3ea166d1636410b62ef216bb07b3feb1cfde1d95d5080 - languageName: node - linkType: hard - -"uuid@npm:^3.3.2, uuid@npm:^3.4.0": +"uuid@npm:^3.3.2": version: 3.4.0 resolution: "uuid@npm:3.4.0" bin: @@ -15279,13 +14350,6 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"vary@npm:~1.1.2": - version: 1.1.2 - resolution: "vary@npm:1.1.2" - checksum: ae0123222c6df65b437669d63dfa8c36cee20a504101b2fcd97b8bf76f91259c17f9f2b4d70a1e3c6bbcee7f51b28392833adb6b2770b23b01abec84e369660b - languageName: node - linkType: hard - "verror@npm:1.10.0": version: 1.10.0 resolution: "verror@npm:1.10.0" @@ -15363,15 +14427,6 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"wbuf@npm:^1.1.0, wbuf@npm:^1.7.3": - version: 1.7.3 - resolution: "wbuf@npm:1.7.3" - dependencies: - minimalistic-assert: ^1.0.0 - checksum: 2abc306c96930b757972a1c4650eb6b25b5d99f24088714957f88629e137db569368c5de0e57986c89ea70db2f1df9bba11a87cb6d0c8694b6f53a0159fab3bf - languageName: node - linkType: hard - "web-namespaces@npm:^1.0.0": version: 1.1.4 resolution: "web-namespaces@npm:1.1.4" @@ -15393,14 +14448,14 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"webpack-bundle-analyzer@npm:^4.4.2": - version: 4.4.2 - resolution: "webpack-bundle-analyzer@npm:4.4.2" +"webpack-bundle-analyzer@npm:^4.5.0": + version: 4.5.0 + resolution: "webpack-bundle-analyzer@npm:4.5.0" dependencies: acorn: ^8.0.4 acorn-walk: ^8.0.0 chalk: ^4.1.0 - commander: ^6.2.0 + commander: ^7.2.0 gzip-size: ^6.0.0 lodash: ^4.17.20 opener: ^1.5.2 @@ -15408,75 +14463,17 @@ resolve@^2.0.0-next.3: ws: ^7.3.1 bin: webpack-bundle-analyzer: lib/bin/analyzer.js - checksum: 6d7957a87ee16f6b87e65f85e8b9a40998aefcddf3e15215fd4bc1ddf8c332ab4706f2f4deb0b3a0483eb27d0dae381db1b82b2ec34136e2ad0e651714b260fb - languageName: node - linkType: hard - -"webpack-dev-middleware@npm:^4.1.0": - version: 4.1.0 - resolution: "webpack-dev-middleware@npm:4.1.0" - dependencies: - colorette: ^1.2.1 - mem: ^8.0.0 - memfs: ^3.2.0 - mime-types: ^2.1.28 - range-parser: ^1.2.1 - schema-utils: ^3.0.0 - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - checksum: ef4fda265e3e9e073be738d141079086e318c67626358f8962ac50cfccc7cd6515ee60a4166a923f4af717a16f28eef4cb762ea7fefcdcd16255ff47b1c16a47 - languageName: node - linkType: hard - -"webpack-dev-server@npm:^4.0.0-beta.3": - version: 4.0.0-beta.3 - resolution: "webpack-dev-server@npm:4.0.0-beta.3" - dependencies: - ansi-html: ^0.0.7 - bonjour: ^3.5.0 - chokidar: ^3.5.1 - compression: ^1.7.4 - connect-history-api-fallback: ^1.6.0 - del: ^6.0.0 - express: ^4.17.1 - find-cache-dir: ^3.3.1 - graceful-fs: ^4.2.6 - html-entities: ^2.3.2 - http-proxy-middleware: ^1.3.1 - internal-ip: ^6.2.0 - ipaddr.js: ^2.0.0 - is-absolute-url: ^3.0.3 - killable: ^1.0.1 - open: ^7.4.2 - p-retry: ^4.5.0 - portfinder: ^1.0.28 - schema-utils: ^3.0.0 - selfsigned: ^1.10.11 - serve-index: ^1.9.1 - sockjs: ^0.3.21 - spdy: ^4.0.2 - strip-ansi: ^6.0.0 - url: ^0.11.0 - webpack-dev-middleware: ^4.1.0 - ws: ^7.4.5 - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - peerDependenciesMeta: - webpack-cli: - optional: true - bin: - webpack-dev-server: bin/webpack-dev-server.js - checksum: 9902a5a314b12990a71063c10c6d82969610911db8387031f2a8f9ee6200201e7ff3fdc44da171b860b22f41dc0100652eb1d094db64dd77e8499361517d8da2 + checksum: 158e96810ec213d5665ca1c0b257097db44e1f11c4befefab8352b9e5b10890fcb3e3fc1f7bb400dd58762a8edce5621c92afeca86eb4687d2eb64e93186bfcb languageName: node linkType: hard -"webpack-merge@npm:*, webpack-merge@npm:^5.7.3": - version: 5.7.3 - resolution: "webpack-merge@npm:5.7.3" +"webpack-merge@npm:*, webpack-merge@npm:^5.8.0": + version: 5.8.0 + resolution: "webpack-merge@npm:5.8.0" dependencies: clone-deep: ^4.0.1 wildcard: ^2.0.0 - checksum: 09608c3a4928246e9c1c09c22b5f867c38d0ab0fb027ebcc3b15d42659f06a10cfa7f7e2cf2a0ace6f2d571c1cd744ec23e7b2069d34a70378e163e8e035c290 + checksum: 88786ab91013f1bd2a683834ff381be81c245a4b0f63304a5103e90f6653f44dab496a0768287f8531761f8ad957d1f9f3ccb2cb55df0de1bd9ee343e079da26 languageName: node linkType: hard @@ -15497,7 +14494,7 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"webpack-sources@npm:^2.2.0, webpack-sources@npm:^2.3.0": +"webpack-sources@npm:^2.2.0": version: 2.3.0 resolution: "webpack-sources@npm:2.3.0" dependencies: @@ -15507,20 +14504,28 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"webpack@npm:^5, webpack@npm:^5.38.1": - version: 5.38.1 - resolution: "webpack@npm:5.38.1" +"webpack-sources@npm:^3.2.0": + version: 3.2.0 + resolution: "webpack-sources@npm:3.2.0" + checksum: 8f1d686bd6aab2eda330579a07e14803cb2e01415f5a603697402aea3c36e98c1d2731167c3e97e50170cf1b0214cf8ef945fc639b100d1e3b67c023feb35716 + languageName: node + linkType: hard + +"webpack@npm:^5, webpack@npm:^5.51.1": + version: 5.51.1 + resolution: "webpack@npm:5.51.1" dependencies: "@types/eslint-scope": ^3.7.0 - "@types/estree": ^0.0.47 - "@webassemblyjs/ast": 1.11.0 - "@webassemblyjs/wasm-edit": 1.11.0 - "@webassemblyjs/wasm-parser": 1.11.0 - acorn: ^8.2.1 + "@types/estree": ^0.0.50 + "@webassemblyjs/ast": 1.11.1 + "@webassemblyjs/wasm-edit": 1.11.1 + "@webassemblyjs/wasm-parser": 1.11.1 + acorn: ^8.4.1 + acorn-import-assertions: ^1.7.6 browserslist: ^4.14.5 chrome-trace-event: ^1.0.2 enhanced-resolve: ^5.8.0 - es-module-lexer: ^0.4.0 + es-module-lexer: ^0.7.1 eslint-scope: 5.1.1 events: ^3.2.0 glob-to-regexp: ^0.4.1 @@ -15529,35 +14534,17 @@ resolve@^2.0.0-next.3: loader-runner: ^4.2.0 mime-types: ^2.1.27 neo-async: ^2.6.2 - schema-utils: ^3.0.0 + schema-utils: ^3.1.0 tapable: ^2.1.1 - terser-webpack-plugin: ^5.1.1 + terser-webpack-plugin: ^5.1.3 watchpack: ^2.2.0 - webpack-sources: ^2.3.0 + webpack-sources: ^3.2.0 peerDependenciesMeta: webpack-cli: optional: true bin: webpack: bin/webpack.js - checksum: 631f0e838dd83f2f735f047a161daba2dd58b1550af5bcbe2df4ad25cfc3d836a48d038cf2ded3669ff2e1f6db58fa38866abe8c537b8fea32bda86e1223cb4f - languageName: node - linkType: hard - -"websocket-driver@npm:>=0.5.1, websocket-driver@npm:^0.7.4": - version: 0.7.4 - resolution: "websocket-driver@npm:0.7.4" - dependencies: - http-parser-js: ">=0.5.1" - safe-buffer: ">=5.1.0" - websocket-extensions: ">=0.1.1" - checksum: fffe5a33fe8eceafd21d2a065661d09e38b93877eae1de6ab5d7d2734c6ed243973beae10ae48c6613cfd675f200e5a058d1e3531bc9e6c5d4f1396ff1f0bfb9 - languageName: node - linkType: hard - -"websocket-extensions@npm:>=0.1.1": - version: 0.1.4 - resolution: "websocket-extensions@npm:0.1.4" - checksum: 5976835e68a86afcd64c7a9762ed85f2f27d48c488c707e67ba85e717b90fa066b98ab33c744d64255c9622d349eedecf728e65a5f921da71b58d0e9591b9038 + checksum: 20060bc197a5e690f12e453e86bd89da5b91626a2032efa907122fe541fedc688b1d573e9f92f7b66f15c609808653e158408ebf7c94783723dfbf4ac894a4a7 languageName: node linkType: hard @@ -15736,7 +14723,7 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"ws@npm:7.4.6, ws@npm:^7, ws@npm:^7.2.5, ws@npm:^7.3.1, ws@npm:^7.4.5": +"ws@npm:7.4.6": version: 7.4.6 resolution: "ws@npm:7.4.6" peerDependencies: @@ -15751,6 +14738,21 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard +"ws@npm:^7.3.1, ws@npm:^7.4.5": + version: 7.5.5 + resolution: "ws@npm:7.5.5" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: bd2b437256012af526c69c03d6670a132e7ab0fe5853f3b7092826acea4203fad4ee2a8d0d9bd44834b2b968e747bf34f753ab535f4a3edf40d262da4b1d0805 + languageName: node + linkType: hard + "xdg-basedir@npm:^4.0.0": version: 4.0.0 resolution: "xdg-basedir@npm:4.0.0" @@ -15817,7 +14819,7 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"yaml@npm:^1.10.0, yaml@npm:^1.7.2, yaml@npm:^1.8.3": +"yaml@npm:^1.10.0, yaml@npm:^1.8.3": version: 1.10.2 resolution: "yaml@npm:1.10.2" checksum: ce4ada136e8a78a0b08dc10b4b900936912d15de59905b2bf415b4d33c63df1d555d23acb2a41b23cf9fb5da41c256441afca3d6509de7247daa062fd2c5ea5f @@ -15875,9 +14877,9 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"yargs@npm:^17.0.1": - version: 17.0.1 - resolution: "yargs@npm:17.0.1" +"yargs@npm:^17.0.1, yargs@npm:^17.1.1": + version: 17.1.1 + resolution: "yargs@npm:17.1.1" dependencies: cliui: ^7.0.2 escalade: ^3.1.1 @@ -15886,7 +14888,7 @@ resolve@^2.0.0-next.3: string-width: ^4.2.0 y18n: ^5.0.5 yargs-parser: ^20.2.2 - checksum: 4ffffa5a82647e5d07840b64bed88c365b901d3d4a4c51745dddb10d177902d85014026d7224aae18c42df9ca3f75a41c5aff556e5342e2f8ffc5177d149cd17 + checksum: b05a9467937172e01a4af7a7ad4361a22ee510cd12d1d5a3ad3b4c2e57eb8c35ca94ee22e4bdfbb40fe693fbf8000771e41824f77f6b224f1496c57f20f192b6 languageName: node linkType: hard @@ -15914,15 +14916,6 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"yoga-layout-prebuilt@npm:^1.9.6": - version: 1.10.0 - resolution: "yoga-layout-prebuilt@npm:1.10.0" - dependencies: - "@types/yoga-layout": 1.9.2 - checksum: 6954c7c7b04c585a1c974391bea4734611adb85702b5e9131549a1d3dc5b94e69bcfea34121cdaeb5e702663bf290fcce5374910128e54d1031503a57c062865 - languageName: node - linkType: hard - "zwitch@npm:^1.0.0": version: 1.0.5 resolution: "zwitch@npm:1.0.5"