diff --git a/CHANGELOG.md b/CHANGELOG.md index 01bed231..b433b7c7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [unreleased] +### Changed + +- refactor: bitmapper moved to individual project [cbmp](https://github.com/ful1e5/cbmp) + ## [Bibata v2.0.1] - 03 October 2022 ### Changed diff --git a/README.md b/README.md index dd2876fc..decb465c 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,25 @@ Bibata is one of the most popular cursors set in the Linux community so far and for freely with multiple colors and size options for Windows as well. The aim of this project is to provide the personalized cursors to users. +## Bibata needs your Input + +Until 2021 my cursors projects were well funded by [pling.com](https://www.pling.com) but since the +[pling-factor](https://www.pling.com/terms/payout) on the website has decreased and monthly payments +are <500$, It is now dependent on community funding and sponsorships. If you want to help me to maintain +Bibata and my other open source projects actively, consider sponsoring my work on [GitHub Sponsor](https://github.com/sponsors/ful1e5) +or DM me on [Twitter](https://twitter.com/ful1e5) if your company would like to support my projects, +I will gladly look into it and post your avatar in the project's README. + +I appreciate all the wonderful people who patronize and sponsoring my work. + +## Sponsors + + + +N/A + +--- + ![Bibata Amber](https://i.imgur.com/2DEYWDC.png) ![Bibata Classic](https://i.imgur.com/C8mMQ3j.png) ![Bibata Ice](https://i.imgur.com/ovzTw6u.png) @@ -258,37 +277,21 @@ ctgen build.toml -s 16 24 32 -p x11 -d 'bitmaps/Bibata-Modern-Ice' -n 'Bibata-Mo #### Customize Colors -To customize bibata's color you have to compile the bibata-bitmapper with `yarn compile` command. -After compiling bibata-bitmapper form source code you can customize the colors via `cli.js` node script, -Which you will find in the `dist` directory. - -##### `cli.js` Help - -``` -Usage: bibata-bitmapper [OPTIONS]... - -Options: - -V, --version output the version number - -d, --dir Specifies the directory for placement of SVG files. - -o, --out Specifies the output directory. (default './bitmaps') - -n, --themeName Specifies the name of output directory. - -bc, --baseColor Specifies the Hexadecimal color for inner part of cursor. - -oc, --outlineColor Specifies the Hexadecimal color for cursor's ouline. - -wc, --watchBackgroundColor Specifies the Hexadecimal color for animation background. - -h, --help display help for command -``` +To customize bibata's color you have to install node dependencies with `yarn install` command. +After installing dependencies you can customize the colors via `npx cbmp` Node CLI App which packed with +[cbmp](https://github.com/ful1e5/cbmp) node package. ##### `yarn render` aberration Here are the default commands we used for generating the Bibata's bitmaps and packed them into `yarn render`: ```bash -node dist/cli.js -d 'svg/modern' -n 'Bibata-Modern-Amber' -bc '#FF8300' -oc '#FFFFFF' -wc '#001524' -node dist/cli.js -d 'svg/modern' -n 'Bibata-Modern-Classic' -bc '#000000' -oc '#FFFFFF' -node dist/cli.js -d 'svg/modern' -n 'Bibata-Modern-Ice' -bc '#FFFFFF' -oc '#000000' -node dist/cli.js -d 'svg/original' -n 'Bibata-Original-Amber' -bc '#FF8300' -oc '#FFFFFF' -wc '#001524' -node dist/cli.js -d 'svg/original' -n 'Bibata-Original-Classic' -bc '#000000' -oc '#FFFFFF' -node dist/cli.js -d 'svg/original' -n 'Bibata-Original-Ice' -bc '#FFFFFF' -oc '#000000' +npx cbmp -d 'svg/modern' -n 'Bibata-Modern-Amber' -bc '#FF8300' -oc '#FFFFFF' -wc '#001524' +npx cbmp -d 'svg/modern' -n 'Bibata-Modern-Classic' -bc '#000000' -oc '#FFFFFF' +npx cbmp -d 'svg/modern' -n 'Bibata-Modern-Ice' -bc '#FFFFFF' -oc '#000000' +npx cbmp -d 'svg/original' -n 'Bibata-Original-Amber' -bc '#FF8300' -oc '#FFFFFF' -wc '#001524' +npx cbmp -d 'svg/original' -n 'Bibata-Original-Classic' -bc '#000000' -oc '#FFFFFF' +npx cbmp -d 'svg/original' -n 'Bibata-Original-Ice' -bc '#FFFFFF' -oc '#000000' ``` #### Examples @@ -296,7 +299,7 @@ node dist/cli.js -d 'svg/original' -n 'Bibata-Original-Ice' -bc '#FFFFFF' -oc '# Lets generate modern Bibata with green base color and black outline: ```bash -node dist/cli.js -d 'svg/modern' -n 'Bibata-Hacker' -bc '#00FE00' -oc '#000000' -wc '#001524' +npx cbmp -d 'svg/modern' -n 'Bibata-Hacker' -bc '#00FE00' -oc '#000000' -wc '#001524' ``` After rendering custom color you have to build cursor through `ctgen`: @@ -310,46 +313,31 @@ Afterwards, Generated theme can be found in the `themes` directory. ###### Bibata Gruvbox ```bash -node dist/cli.js -d 'svg/original' -n 'Bibata-Gruvbox' -bc '#282828' -oc '#EBDBB2' -wc '#000000' +npx cbmp -d 'svg/original' -n 'Bibata-Gruvbox' -bc '#282828' -oc '#EBDBB2' -wc '#000000' ctgen build.toml -d 'bitmaps/Bibata-Gruvbox' -n 'Bibata-Gruvbox' -c 'Groovy Bibata cursors.' ``` ###### Bibata Solarized Dark ```bash -node dist/cli.js -d 'svg/original' -n 'Bibata-Solarized-Dark' -bc '#002b36' -oc '#839496' -wc '#000000' +npx cbmp -d 'svg/original' -n 'Bibata-Solarized-Dark' -bc '#002b36' -oc '#839496' -wc '#000000' ctgen build.toml -d 'bitmaps/Bibata-Solarized-Dark' -n 'Bibata-Solarized-Dark' -c 'Solarized Dark Bibata cursors.' ``` ###### Bibata Solarized Light ```bash -node dist/cli.js -d 'svg/original' -n 'Bibata-Solarized-Light' -bc '#839496' -oc '#002b36' +npx cbmp -d 'svg/original' -n 'Bibata-Solarized-Light' -bc '#839496' -oc '#002b36' ctgen build.toml -d 'bitmaps/Bibata-Solarized-Light' -n 'Bibata-Solarized-Light' -c 'Solarized Light Bibata cursors.' ``` ###### Bibata Dracula ```bash -node dist/cli.js -d 'svg/original' -n 'Bibata-Dracula' -bc '#282a36' -oc '#f8f8f2' +npx cbmp -d 'svg/original' -n 'Bibata-Dracula' -bc '#282a36' -oc '#f8f8f2' ctgen build.toml -d 'bitmaps/Bibata-Dracula' -n 'Bibata-Dracula' -c 'Dracula Bibata cursors.' ``` -## Consider Sponsoring my work - -Until 2021 my cursors projects were well funded by [pling.com](https://www.pling.com) but since the -[pling-factor](https://www.pling.com/terms/payout) on the website has decreased and monthly payments -are <500$, It is now dependent on community funding and sponsorships. If you want to help me to maintain -Bibata and my other open source projects actively, consider sponsoring my work on [GitHub Sponsor](https://github.com/sponsors/ful1e5) -or DM me on [Twitter](https://twitter.com/ful1e5) if your company would like to support this project, -I will gladly look into it and post your avatar in the README. - -I appreciate all the wonderful people who patronize and sponsoring my work. - - - -_Be you first._ - ## You may also like... - [**Bibata Adapta**](https://gitlab.com/cscs/Bibata_AdaptaBreath_Cursors) - Bibata Based Cursor Made for AdaptaBreath and Manjaro. diff --git a/package.json b/package.json index 500dcc89..f320b3d1 100644 --- a/package.json +++ b/package.json @@ -1,27 +1,15 @@ { - "name": "bibata-bitmapper", - "description": "This package generate '.png' file from '.svg'", - "author": "Abdulkaiz Khatri", - "version": "2.0.0", - "private": false, - "license": "GPL-3.0", - "main": "dist/cli.js", - "bin": { - "bibata-bitmapper": "dist/cli.js" - }, - "repository": { - "type": "git", - "url": "git+https://github.com:ful1e5/Bibata_Cursor.git" + "dependencies": { + "cbmp": "ful1e5/cbmp" }, "scripts": { - "compile": "tsc -p .", - "render:bibata-modern-amber": "yarn compile && node dist/cli.js -d 'svg/modern' -n 'Bibata-Modern-Amber' -bc '#FF8300' -oc '#FFFFFF' -wc '#001524'", - "render:bibata-modern-classic": "yarn compile && node dist/cli.js -d 'svg/modern' -n 'Bibata-Modern-Classic' -bc '#000000' -oc '#FFFFFF'", - "render:bibata-modern-ice": "yarn compile && node dist/cli.js -d 'svg/modern' -n 'Bibata-Modern-Ice' -bc '#FFFFFF' -oc '#000000'", + "render:bibata-modern-amber": "npx cbmp -d 'svg/modern' -n 'Bibata-Modern-Amber' -bc '#FF8300' -oc '#FFFFFF' -wc '#001524'", + "render:bibata-modern-classic": "npx cbmp -d 'svg/modern' -n 'Bibata-Modern-Classic' -bc '#000000' -oc '#FFFFFF'", + "render:bibata-modern-ice": "npx cbmp -d 'svg/modern' -n 'Bibata-Modern-Ice' -bc '#FFFFFF' -oc '#000000'", "render:bibata-modern": "yarn render:bibata-modern-amber && yarn render:bibata-modern-classic && yarn render:bibata-modern-ice", - "render:bibata-original-amber": "yarn compile && node dist/cli.js -d 'svg/original' -n 'Bibata-Original-Amber' -bc '#FF8300' -oc '#FFFFFF' -wc '#001524'", - "render:bibata-original-classic": "yarn compile && node dist/cli.js -d 'svg/original' -n 'Bibata-Original-Classic' -bc '#000000' -oc '#FFFFFF'", - "render:bibata-original-ice": "yarn compile && node dist/cli.js -d 'svg/original' -n 'Bibata-Original-Ice' -bc '#FFFFFF' -oc '#000000'", + "render:bibata-original-amber": "npx cbmp -d 'svg/original' -n 'Bibata-Original-Amber' -bc '#FF8300' -oc '#FFFFFF' -wc '#001524'", + "render:bibata-original-classic": "npx cbmp -d 'svg/original' -n 'Bibata-Original-Classic' -bc '#000000' -oc '#FFFFFF'", + "render:bibata-original-ice": "npx cbmp -d 'svg/original' -n 'Bibata-Original-Ice' -bc '#FFFFFF' -oc '#000000'", "render:bibata-original": "yarn render:bibata-original-amber && yarn render:bibata-original-classic && yarn render:bibata-original-ice", "render": "yarn render:bibata-modern && yarn render:bibata-original", "build:bibata-modern-amber": "ctgen build.toml -d 'bitmaps/Bibata-Modern-Amber' -n 'Bibata-Modern-Amber' -c 'Yellowish and rounded edge Bibata cursors.'", @@ -33,23 +21,5 @@ "build:bibata-original-ice": "ctgen build.toml -d 'bitmaps/Bibata-Original-Ice' -n 'Bibata-Original-Ice' -c 'White and sharp edge bibata cursors.'", "build:bibata-original": "yarn build:bibata-original-amber && yarn build:bibata-original-classic && yarn build:bibata-original-ice", "build": "yarn build:bibata-modern && yarn build:bibata-original" - }, - "dependencies": { - "commander": "^9.0.0", - "module-alias": "^2.2.2", - "pixelmatch": "^5.2.1", - "pngjs": "^6.0.0", - "puppeteer": "^13.4.1" - }, - "devDependencies": { - "@types/module-alias": "^2.0.1", - "@types/pixelmatch": "^5.2.4", - "@types/pngjs": "^6.0.1", - "@types/puppeteer": "^5.4.5", - "ts-node": "^10.6.0", - "typescript": "^4.6.2" - }, - "_moduleAliases": { - "#root": "dist/" } } diff --git a/src/cli.ts b/src/cli.ts deleted file mode 100644 index 50dc5de5..00000000 --- a/src/cli.ts +++ /dev/null @@ -1,118 +0,0 @@ -#!/usr/bin/env node -require("module-alias/register"); -import path from "path"; - -import { Command, Option } from "commander"; - -import { builder } from "#root/modules"; - -import { exitWithError } from "#root/utils/exitWithError"; - -interface ProgramOptions { - dir: string; - out: string; - themeName: string; - baseColor: string; - outlineColor: string; - watchBackgroundColor?: string; -} - -const cliApp = async () => { - const program = new Command(); - - program - .name("bibata-bitmapper") - .version("2.0.0") - .usage("[OPTIONS]...") - - .addOption( - new Option( - "-d, --dir ", - "Specifies the directory for placement of SVG files." - ) - ) - .addOption( - new Option( - "-o, --out ", - "Specifies the output directory. (default './bitmaps')" - ) - ) - .addOption( - new Option( - "-n, --themeName ", - "Specifies the name of output directory." - ) - ) - - .addOption( - new Option( - "-bc, --baseColor ", - "Specifies the Hexadecimal color for inner part of cursor." - ) - ) - .addOption( - new Option( - "-oc, --outlineColor ", - "Specifies the Hexadecimal color for cursor's ouline." - ) - ) - .addOption( - new Option( - "-wc, --watchBackgroundColor ", - "Specifies the Hexadecimal color for animation background." - ) - ); - - if (!process.argv.slice(2).length) { - program.outputHelp(); - process.exit(1); - } - - // Parsing arguments - program.parse(process.argv); - const options: ProgramOptions = program.opts(); - - if (!options.dir) { - exitWithError(" error: option '-d, --dir ' missing"); - } - if (!options.out) { - console.log(" info: setting output directory to './bitmaps'"); - options.out = path.resolve("./bitmaps"); - } - if (!options.themeName) { - exitWithError(" error: option '-n, --themeName ' missing"); - } - if (!options.baseColor) { - exitWithError(" error: option '-bc, --baseColor ' missing"); - } - if (!options.outlineColor) { - exitWithError(" error: option '-oc, --outlineColor ' missing"); - } - - const colors = { - base: options.baseColor, - outline: options.outlineColor, - watch: { - background: options.watchBackgroundColor ?? options.baseColor, - }, - }; - const bitmapsDir = path.resolve(options.out, options.themeName); - - // Logging arguments - console.log("---"); - console.log(`SVG directory: '${options.dir}'`); - console.log(`Output directory: '${bitmapsDir}'`); - console.log(`Base color: '${colors.base}'`); - console.log(`Outline color: '${colors.outline}'`); - console.log(`Watch Background color: '${colors.watch.background}'`); - console.log("---\n"); - - builder.buildBitmaps({ - dir: options.dir, - out: options.out, - themeName: options.themeName, - colors: colors, - }); -}; - -cliApp(); diff --git a/src/modules/BitmapsGenerator.ts b/src/modules/BitmapsGenerator.ts deleted file mode 100644 index 3803f661..00000000 --- a/src/modules/BitmapsGenerator.ts +++ /dev/null @@ -1,160 +0,0 @@ -import fs from "fs"; -import path from "path"; - -import puppeteer, { Browser, ElementHandle, Page } from "puppeteer"; - -import { frameNumber } from "#root/utils/frameNumber"; -import { matchImages } from "#root/utils/matchImages"; -import { toHTML } from "#root/utils/toHTML"; - -class BitmapsGenerator { - /** - * Generate Png files from svg code. - * @param bitmapsDir `absolute` or `relative` path, Where `.png` files will store. - */ - constructor(private bitmapsDir: string) { - this.bitmapsDir = path.resolve(bitmapsDir); - this.createDir(this.bitmapsDir); - } - - /** - * Create directory if it doesn't exists. - * @param dirPath directory `absolute` path. - */ - private createDir(dirPath: string) { - if (!fs.existsSync(dirPath)) { - fs.mkdirSync(dirPath, { recursive: true }); - } - } - - /** - * Prepare headless browser. - */ - public async getBrowser(): Promise { - return puppeteer.launch({ - ignoreDefaultArgs: ["--no-sandbox"], - headless: true, - }); - } - - private async getSvgElement( - page: Page, - content: string - ): Promise> { - if (!content) { - throw new Error(`${content} File Read error`); - } - - const html = toHTML(content); - await page.setContent(html, { timeout: 0 }); - - const svg = await page.$("#container svg"); - - if (!svg) { - throw new Error("svg element not found!"); - } - return svg; - } - - public async generateStatic(browser: Browser, content: string, key: string) { - const page = await browser.newPage(); - const svg = await this.getSvgElement(page, content); - - const out = path.resolve(this.bitmapsDir, `${key}.png`); - - await svg.screenshot({ omitBackground: true, path: out }); - await page.close(); - } - - private async screenshot( - element: ElementHandle - ): Promise { - const buffer = await element.screenshot({ - encoding: "binary", - omitBackground: true, - }); - - if (!buffer) { - throw new Error("SVG element screenshot not working"); - } - return buffer; - } - - private async stopAnimation(page: Page) { - const client = await page.target().createCDPSession(); - await client.send("Animation.setPlaybackRate", { - playbackRate: 0, - }); - } - - private async resumeAnimation(page: Page, playbackRate: number) { - const client = await page.target().createCDPSession(); - await client.send("Animation.setPlaybackRate", { - playbackRate, - }); - } - - private async saveFrameImage(key: string, frame: Buffer | string) { - const out_path = path.resolve(this.bitmapsDir, key); - fs.writeFileSync(out_path, frame); - } - - public async generateAnimated( - browser: Browser, - content: string, - key: string, - options?: { - playbackRate?: number; - diff?: number; - frameLimit?: number; - framePadding?: number; - } - ) { - const opt = Object.assign( - { - playbackRate: 0.3, - diff: 0, - frameLimit: 300, - framePadding: 4, - }, - options - ); - - const page = await browser.newPage(); - const svg = await this.getSvgElement(page, content); - await this.stopAnimation(page); - - let index = 1; - let breakRendering = false; - let prevImg: Buffer | string; - - // Rendering frames till `imgN` matched to `imgN-1` (When Animation is done) - while (!breakRendering) { - if (index > opt.frameLimit) { - throw new Error("Reached the frame limit."); - } - - await this.resumeAnimation(page, opt.playbackRate); - const img: string | Buffer = await this.screenshot(svg); - await this.stopAnimation(page); - - if (index > 1) { - // @ts-ignore - const diff = matchImages(prevImg, img); - if (diff <= opt.diff) { - breakRendering = !breakRendering; - } - } - const number = frameNumber(index, opt.framePadding); - const frame = `${key}-${number}.png`; - - this.saveFrameImage(frame, img); - - prevImg = img; - ++index; - } - await page.close(); - } -} - -export { BitmapsGenerator }; diff --git a/src/modules/SVGHandler/SvgDirectoryParser.ts b/src/modules/SVGHandler/SvgDirectoryParser.ts deleted file mode 100644 index 516c69b6..00000000 --- a/src/modules/SVGHandler/SvgDirectoryParser.ts +++ /dev/null @@ -1,77 +0,0 @@ -import fs from "fs"; -import path from "path"; - -interface Svg { - key: string; - content: string; -} - -class SvgDirectoryParser { - /** - * Manage and Parse SVG file path in `absolute` fashion. - * This Parser look svg files as below fashion: - * ` - * <@svgDir>/static - * <@svgDir>/animated - * ` - * @param svgDir is relative/absolute path, Where `SVG` files are stored. - */ - semiAnimated: boolean = false; - constructor(private svgDir: string) { - if (!fs.existsSync(this.svgDir)) { - throw new Error(`SVG files not found in ${this.svgDir}`); - } - } - - private readData(f: string): Svg { - const content = fs.readFileSync(f, "utf-8"); - const key = path.basename(f, ".svg"); - return { content, key }; - } - - /** - * Return absolute paths array of SVG files data located inside '@svgDir/static' - */ - public getStatic(): Svg[] { - const staticDir = path.resolve(this.svgDir, "static"); - - if (!fs.existsSync(staticDir)) { - console.log(`${this.svgDir} contains semi-animated .svg files`); - this.semiAnimated = true; - return []; - } else { - const svgs = fs - .readdirSync(staticDir) - .map((f) => this.readData(path.resolve(staticDir, f))); - - if (svgs.length == 0) { - throw new Error("Static Cursors directory is empty"); - } - return svgs; - } - } - /** - * Return absolute paths array of SVG files data located inside '@svgDir/animated' - */ - public getAnimated(): Svg[] { - const animatedDir = path.resolve(this.svgDir, "animated"); - - if (!fs.existsSync(animatedDir)) { - throw new Error("Animated Cursors directory not found"); - } - - const svgs = fs - .readdirSync(animatedDir) - .map((f) => this.readData(path.resolve(animatedDir, f))); - - if (svgs.length == 0 && this.semiAnimated) { - throw new Error( - `Can't parse svg directory ${this.svgDir} as semi-animated theme` - ); - } - - return svgs; - } -} - -export { SvgDirectoryParser }; diff --git a/src/modules/SVGHandler/colorSvg.ts b/src/modules/SVGHandler/colorSvg.ts deleted file mode 100644 index e5d773dd..00000000 --- a/src/modules/SVGHandler/colorSvg.ts +++ /dev/null @@ -1,69 +0,0 @@ -/** - * Hex Colors in string Format. - * - * `Example: `"#FFFFFF" - */ -type HexColor = string; - -/** - * @Colors expect `base`, `outline` & `watch-background` colors in **HexColor** Format. - * @default background is `base` color. - */ -type Colors = { - base: HexColor; - outline: HexColor; - watch?: { - background: HexColor; - }; -}; - -/** - * Default Key Colors for generating colored svg. - * base="#00FF00" (Green) - * outline="#0000FF" (Blue) - * watch.background="#FF0000" (Red) - * */ -const defaultKeyColors: Colors = { - base: "#00FF00", - outline: "#0000FF", - watch: { - background: "#FF0000", - }, -}; - -/** - * Customize colors of svg code. - * @param {string} content SVG code. - * @param {Colors} colors Customize colors. - * @param {Colors} [keys] Colors Key, That was written SVG code. - * @returns {string} SVG code with colors. - */ -const colorSvg = ( - content: string, - colors: Colors, - keys: Colors = defaultKeyColors -): string => { - content = content - .replace(new RegExp(keys.base, "ig"), colors.base) - .replace(new RegExp(keys.outline, "ig"), colors.outline); - - try { - // === trying to replace `watch` color === - - if (!colors.watch?.background) { - throw new Error(""); - } - const { background: b } = colors.watch; - content = content.replace(new RegExp(keys.watch!.background, "ig"), b); // Watch Background - } catch (error) { - // === on error => replace `watch` color as `base` === - - content = content.replace( - new RegExp(keys.watch!.background, "ig"), - colors.base - ); - } - return content; -}; - -export { Colors, colorSvg }; diff --git a/src/modules/SVGHandler/index.ts b/src/modules/SVGHandler/index.ts deleted file mode 100644 index be301f5a..00000000 --- a/src/modules/SVGHandler/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { Colors, colorSvg } from "./colorSvg"; -import { SvgDirectoryParser } from "./SvgDirectoryParser"; - -export { Colors, colorSvg, SvgDirectoryParser }; diff --git a/src/modules/builder.ts b/src/modules/builder.ts deleted file mode 100644 index 5d9ded71..00000000 --- a/src/modules/builder.ts +++ /dev/null @@ -1,35 +0,0 @@ -import path from "path"; -import { SVGHandler, BitmapsGenerator } from "#root/modules"; - -interface BuildBitmapsArgs { - dir: string; - out: string; - themeName: string; - colors: SVGHandler.Colors; -} - -const buildBitmaps = async (args: BuildBitmapsArgs) => { - console.log("Generating bitmaps for", args.themeName); - - const svg = new SVGHandler.SvgDirectoryParser(args.dir); - const bitmapsDir = path.resolve(args.out, args.themeName); - - const png = new BitmapsGenerator(bitmapsDir); - const browser = await png.getBrowser(); - - for (let { key, content } of svg.getStatic()) { - console.log(" ==> Saving", key, "..."); - content = SVGHandler.colorSvg(content, args.colors); - await png.generateStatic(browser, content, key); - } - - for (let { key, content } of svg.getAnimated()) { - console.log(" ==> Saving", key, "..."); - content = SVGHandler.colorSvg(content, args.colors); - await png.generateAnimated(browser, content, key); - } - - await browser.close(); -}; - -export { BuildBitmapsArgs, buildBitmaps }; diff --git a/src/modules/index.ts b/src/modules/index.ts deleted file mode 100644 index 392aaf84..00000000 --- a/src/modules/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -import * as SVGHandler from "./SVGHandler"; -import { BitmapsGenerator } from "./BitmapsGenerator"; -import * as builder from "./builder"; - -export { SVGHandler, BitmapsGenerator, builder }; diff --git a/src/utils/exitWithError.ts b/src/utils/exitWithError.ts deleted file mode 100644 index 0e66cbd5..00000000 --- a/src/utils/exitWithError.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const exitWithError = (msg: string) => { - console.error(msg); - process.exit(1); -}; diff --git a/src/utils/frameNumber.ts b/src/utils/frameNumber.ts deleted file mode 100644 index 6afbdc46..00000000 --- a/src/utils/frameNumber.ts +++ /dev/null @@ -1,7 +0,0 @@ -export const frameNumber = (index: number, padding: number) => { - let result = "" + index; - while (result.length < padding) { - result = "0" + result; - } - return result; -}; diff --git a/src/utils/matchImages.ts b/src/utils/matchImages.ts deleted file mode 100644 index 351c76c1..00000000 --- a/src/utils/matchImages.ts +++ /dev/null @@ -1,11 +0,0 @@ -import Pixelmatch from "pixelmatch"; -import { PNG } from "pngjs"; - -export const matchImages = (img1: Buffer, img2: Buffer): number => { - const { data: img1Data, width, height } = PNG.sync.read(img1); - const { data: imgNData } = PNG.sync.read(img2); - - return Pixelmatch(img1Data, imgNData, null, width, height, { - threshold: 0.1, - }); -}; diff --git a/src/utils/toHTML.ts b/src/utils/toHTML.ts deleted file mode 100644 index effe8eef..00000000 --- a/src/utils/toHTML.ts +++ /dev/null @@ -1,19 +0,0 @@ -export const template = ` - - - - - - Render Template - - - -
- -
- - -`; - -export const toHTML = (svgData: string): string => - template.replace("", svgData); diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index 5d6645c9..00000000 --- a/yarn.lock +++ /dev/null @@ -1,554 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@cspotcode/source-map-support@^0.8.0": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" - integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== - dependencies: - "@jridgewell/trace-mapping" "0.3.9" - -"@jridgewell/resolve-uri@^3.0.3": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== - -"@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== - -"@jridgewell/trace-mapping@0.3.9": - version "0.3.9" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@tsconfig/node10@^1.0.7": - version "1.0.9" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" - integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== - -"@tsconfig/node12@^1.0.7": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" - integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== - -"@tsconfig/node14@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" - integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== - -"@tsconfig/node16@^1.0.2": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" - integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== - -"@types/module-alias@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/module-alias/-/module-alias-2.0.1.tgz#e5893236ce922152d57c5f3f978f764f4deeb45f" - integrity sha512-DN/CCT1HQG6HquBNJdLkvV+4v5l/oEuwOHUPLxI+Eub0NED+lk0YUfba04WGH90EINiUrNgClkNnwGmbICeWMQ== - -"@types/node@*": - version "18.8.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.8.2.tgz#17d42c6322d917764dd3d2d3a10d7884925de067" - integrity sha512-cRMwIgdDN43GO4xMWAfJAecYn8wV4JbsOGHNfNUIDiuYkUYAR5ec4Rj7IO2SAhFPEfpPtLtUTbbny/TCT7aDwA== - -"@types/pixelmatch@^5.2.4": - version "5.2.4" - resolved "https://registry.yarnpkg.com/@types/pixelmatch/-/pixelmatch-5.2.4.tgz#ca145cc5ede1388c71c68edf2d1f5190e5ddd0f6" - integrity sha512-HDaSHIAv9kwpMN7zlmwfTv6gax0PiporJOipcrGsVNF3Ba+kryOZc0Pio5pn6NhisgWr7TaajlPEKTbTAypIBQ== - dependencies: - "@types/node" "*" - -"@types/pngjs@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@types/pngjs/-/pngjs-6.0.1.tgz#c711ec3fbbf077fed274ecccaf85dd4673130072" - integrity sha512-J39njbdW1U/6YyVXvC9+1iflZghP8jgRf2ndYghdJb5xL49LYDB+1EuAxfbuJ2IBbWIL3AjHPQhgaTxT3YaYeg== - dependencies: - "@types/node" "*" - -"@types/puppeteer@^5.4.5": - version "5.4.6" - resolved "https://registry.yarnpkg.com/@types/puppeteer/-/puppeteer-5.4.6.tgz#afc438e41dcbc27ca1ba0235ea464a372db2b21c" - integrity sha512-98Kghehs7+/GD9b56qryhqdqVCXUTbetTv3PlvDnmFRTHQH0j9DIp1f7rkAW3BAj4U3yoeSEQnKgdW8bDq0Y0Q== - dependencies: - "@types/node" "*" - -"@types/yauzl@^2.9.1": - version "2.10.0" - resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.0.tgz#b3248295276cf8c6f153ebe6a9aba0c988cb2599" - integrity sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw== - dependencies: - "@types/node" "*" - -acorn-walk@^8.1.1: - version "8.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" - integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== - -acorn@^8.4.1: - version "8.8.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" - integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== - -agent-base@6: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -bl@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -buffer-crc32@~0.2.3: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== - -buffer@^5.2.1, buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -commander@^9.0.0: - version "9.4.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-9.4.1.tgz#d1dd8f2ce6faf93147295c0df13c7c21141cfbdd" - integrity sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - -cross-fetch@3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" - integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== - dependencies: - node-fetch "2.6.7" - -debug@4, debug@4.3.4, debug@^4.1.1: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -devtools-protocol@0.0.981744: - version "0.0.981744" - resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.981744.tgz#9960da0370284577d46c28979a0b32651022bacf" - integrity sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg== - -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - -end-of-stream@^1.1.0, end-of-stream@^1.4.1: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -extract-zip@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" - integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== - dependencies: - debug "^4.1.1" - get-stream "^5.1.0" - yauzl "^2.10.0" - optionalDependencies: - "@types/yauzl" "^2.9.1" - -fd-slicer@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" - integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== - dependencies: - pend "~1.2.0" - -find-up@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -get-stream@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - -glob@^7.1.3: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -https-proxy-agent@5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== - dependencies: - agent-base "6" - debug "4" - -ieee754@^1.1.13: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.3, inherits@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - -minimatch@^3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -mkdirp-classic@^0.5.2: - version "0.5.3" - resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" - integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== - -module-alias@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/module-alias/-/module-alias-2.2.2.tgz#151cdcecc24e25739ff0aa6e51e1c5716974c0e0" - integrity sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -node-fetch@2.6.7: - version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== - dependencies: - whatwg-url "^5.0.0" - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -pend@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== - -pixelmatch@^5.2.1: - version "5.3.0" - resolved "https://registry.yarnpkg.com/pixelmatch/-/pixelmatch-5.3.0.tgz#5e5321a7abedfb7962d60dbf345deda87cb9560a" - integrity sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q== - dependencies: - pngjs "^6.0.0" - -pkg-dir@4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -pngjs@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-6.0.0.tgz#ca9e5d2aa48db0228a52c419c3308e87720da821" - integrity sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg== - -progress@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -proxy-from-env@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -puppeteer@^13.4.1: - version "13.7.0" - resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-13.7.0.tgz#18e16f83e397cf02f7a0804c67c1603d381cfb0b" - integrity sha512-U1uufzBjz3+PkpCxFrWzh4OrMIdIb2ztzCu0YEPfRHjHswcSwHZswnK+WdsOQJsRV8WeTg3jLhJR4D867+fjsA== - dependencies: - cross-fetch "3.1.5" - debug "4.3.4" - devtools-protocol "0.0.981744" - extract-zip "2.0.1" - https-proxy-agent "5.0.1" - pkg-dir "4.2.0" - progress "2.0.3" - proxy-from-env "1.1.0" - rimraf "3.0.2" - tar-fs "2.1.1" - unbzip2-stream "1.4.3" - ws "8.5.0" - -readable-stream@^3.1.1, readable-stream@^3.4.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -rimraf@3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -tar-fs@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" - integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== - dependencies: - chownr "^1.1.1" - mkdirp-classic "^0.5.2" - pump "^3.0.0" - tar-stream "^2.1.4" - -tar-stream@^2.1.4: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" - integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== - dependencies: - bl "^4.0.3" - end-of-stream "^1.4.1" - fs-constants "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.1.1" - -through@^2.3.8: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - -ts-node@^10.6.0: - version "10.9.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" - integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== - dependencies: - "@cspotcode/source-map-support" "^0.8.0" - "@tsconfig/node10" "^1.0.7" - "@tsconfig/node12" "^1.0.7" - "@tsconfig/node14" "^1.0.0" - "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - v8-compile-cache-lib "^3.0.1" - yn "3.1.1" - -typescript@^4.6.2: - version "4.8.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6" - integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ== - -unbzip2-stream@1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" - integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== - dependencies: - buffer "^5.2.1" - through "^2.3.8" - -util-deprecate@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -v8-compile-cache-lib@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" - integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -ws@8.5.0: - version "8.5.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" - integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== - -yauzl@^2.10.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" - integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== - dependencies: - buffer-crc32 "~0.2.3" - fd-slicer "~1.1.0" - -yn@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==