@charcoal-ui/icons-cli 1.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +78 -0
- package/dist/FigmaFileClient.d.ts +23 -0
- package/dist/FigmaFileClient.d.ts.map +1 -0
- package/dist/GitHubClient.d.ts +1173 -0
- package/dist/GitHubClient.d.ts.map +1 -0
- package/dist/GitlabClient.d.ts +19 -0
- package/dist/GitlabClient.d.ts.map +1 -0
- package/dist/concurrently.d.ts +2 -0
- package/dist/concurrently.d.ts.map +1 -0
- package/dist/getChangedFiles.d.ts +10 -0
- package/dist/getChangedFiles.d.ts.map +1 -0
- package/dist/index.cjs +899 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.modern.js +891 -0
- package/dist/index.modern.js.map +1 -0
- package/dist/index.module.js +889 -0
- package/dist/index.module.js.map +1 -0
- package/dist/optimizeSvg.d.ts +3 -0
- package/dist/optimizeSvg.d.ts.map +1 -0
- package/dist/utils.d.ts +6 -0
- package/dist/utils.d.ts.map +1 -0
- package/package.json +54 -0
- package/src/FigmaFileClient.ts +228 -0
- package/src/GitHubClient.ts +161 -0
- package/src/GitlabClient.ts +95 -0
- package/src/concurrently.ts +10 -0
- package/src/getChangedFiles.ts +65 -0
- package/src/index.ts +115 -0
- package/src/optimizeSvg.ts +101 -0
- package/src/utils.ts +24 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.modern.js","sources":["../src/concurrently.ts","../src/FigmaFileClient.ts","../src/utils.ts","../src/getChangedFiles.ts","../src/GitHubClient.ts","../src/GitlabClient.ts","../src/optimizeSvg.ts","../src/index.ts"],"sourcesContent":["import PQueue from 'p-queue'\n\nexport function concurrently(tasks: (() => Promise<any>)[]) {\n const queue = new PQueue({ concurrency: 3 })\n for (const task of tasks) {\n void queue.add(task)\n }\n queue.start()\n return queue.onIdle()\n}\n","import path from 'path'\nimport camelCase from 'camelcase'\nimport Figma from 'figma-js'\nimport { ensureDir, ensureFile, remove, writeFile } from 'fs-extra'\nimport got from 'got'\nimport { match } from 'path-to-regexp'\nimport { concurrently } from './concurrently'\n\nconst extracter = match<{ file: string; name: string }>('/file/:file/:name')\n\nfunction extractFileId(url: string) {\n const result = extracter(new URL(url).pathname)\n if (result === false) {\n throw new Error('no :file in url')\n }\n\n return result.params.file\n}\n\nfunction extractNodeId(url: string) {\n if (!url.includes('?')) {\n return undefined\n }\n\n const [, query] = url.split('?')\n const params = new URLSearchParams(query)\n const nodeId = params.get('node-id')\n if (nodeId === null) {\n return undefined\n }\n\n return decodeURIComponent(nodeId)\n}\n\nfunction filenamify(name: string) {\n return camelCase(name, { pascalCase: true }).replace(' ', '')\n}\n\n// eslint-disable-next-line prefer-named-capture-group\nconst iconName = /^(\\d|Inline)+\\s*\\/\\s*/u\n\nfunction isIconNode(node: Figma.Node) {\n return iconName.test(node.name)\n}\n\ntype ExportFormat = 'svg' | 'pdf'\n\nfunction getContentType(exportFormat: ExportFormat) {\n switch (exportFormat) {\n case 'svg':\n return 'image/svg+xml'\n case 'pdf':\n return 'application/pdf'\n }\n}\n\ninterface Component {\n id: string\n name: string\n image?: string\n}\n\nexport class FigmaFileClient {\n private readonly fileId: string\n private readonly nodeId?: string\n private readonly exportFormat: ExportFormat\n private readonly client: Figma.ClientInterface\n\n private components: Record<string, Component> = {}\n private targets: Figma.Node[] = []\n\n static async runFromCli(\n url: string,\n token: string,\n outputRootDir: string,\n exportFormat: ExportFormat\n ) {\n const client = new this(url, token, exportFormat)\n\n const root = process.cwd()\n\n const outputDir = path.join(root, outputRootDir, exportFormat)\n\n console.log(`Exporting ${url} components`)\n await client.loadSvg(outputDir)\n\n console.log(`Exporting components type`)\n const typedefDir = path.join(root, outputRootDir, 'src')\n await client.writeTypeDef(typedefDir)\n\n console.log('success!')\n }\n\n constructor(\n url: string,\n personalAccessToken: string,\n exportFormat: ExportFormat\n ) {\n this.client = Figma.Client({\n personalAccessToken,\n })\n\n this.fileId = extractFileId(url)\n this.nodeId = extractNodeId(url)\n this.exportFormat = exportFormat\n }\n\n async loadSvg(outputDir: string) {\n await remove(outputDir)\n await ensureDir(outputDir)\n\n await this.loadComponents()\n await this.loadImageUrls()\n await this.downloadImages(outputDir)\n }\n\n /**\n * Generate union of file names for typing\n */\n async writeTypeDef(outputDir: string) {\n const fullname = path.resolve(outputDir, 'filenames.ts')\n const KNOWN_ICON_FILES = Object.values(this.components).map(({ name }) =>\n filenamify(name)\n )\n\n console.log(`writing to ${outputDir}`)\n\n await ensureFile(fullname)\n await writeFile(\n fullname,\n `/** This file is auto generated. DO NOT EDIT BY HAND. */\n\n/* eslint-disable */\n\n// prettier-ignore\nexport const KNOWN_ICON_FILES = ${JSON.stringify(KNOWN_ICON_FILES)} as const;\n\nexport type KnownIconFile = typeof KNOWN_ICON_FILES[number];\n\n/* eslint-enable */\n`,\n { encoding: 'utf8' }\n )\n }\n\n private async loadComponents() {\n const { document } = await this.getFile()\n\n this.targets = document.children.filter((node) => {\n if (this.nodeId !== undefined) {\n return node.id === this.nodeId\n }\n\n return false\n })\n\n this.targets.forEach((child) => this.findComponentsRecursively(child))\n\n if (Object.values(this.targets).length === 0) {\n throw new Error('No components found!')\n }\n }\n\n private async loadImageUrls() {\n console.log('Getting export urls')\n\n const { data } = await this.client.fileImages(this.fileId, {\n format: this.exportFormat,\n ids: Object.keys(this.components),\n scale: 1,\n })\n\n for (const [id, image] of Object.entries(data.images)) {\n this.components[id].image = image\n }\n }\n\n private async downloadImages(outputDir: string) {\n return concurrently(\n Object.values(this.components).map((component) => async () => {\n if (component.image === undefined) {\n return\n }\n\n const response = await got.get(component.image, {\n headers: {\n 'Content-Type': getContentType(this.exportFormat),\n },\n encoding: 'utf8',\n })\n\n const filename = `${filenamify(component.name)}.${this.exportFormat}`\n const fullname = path.join(outputDir, filename)\n const dirname = path.dirname(fullname)\n\n await ensureDir(dirname)\n\n console.log(`found: ${filename} => ✅ writing...`)\n await writeFile(fullname, response.body, 'utf8')\n })\n )\n }\n\n private async getFile() {\n console.log('Processing response')\n\n const { data } = await this.client.file(this.fileId.toString())\n\n return data\n }\n\n private findComponentsRecursively(child: Figma.Node) {\n if (child.type === 'COMPONENT') {\n const { name, id } = child\n\n if (isIconNode(child)) {\n this.components[id] = {\n name,\n id,\n }\n }\n } else if ('children' in child) {\n child.children.forEach((grandChild) =>\n this.findComponentsRecursively(grandChild)\n )\n }\n }\n}\n","import { exec } from 'child_process'\n\n/**\n * FIXME: util.promisify を使うと node-libs-browser に入っている方が使われてしまい、壊れる\n */\nexport const execp = (command: string) =>\n new Promise<string>((resolve, reject) => {\n exec(command, (err, stdout) => {\n if (err) {\n return reject(err)\n }\n\n return resolve(stdout)\n })\n })\n\nexport function mustBeDefined<T>(\n value: T,\n name: string\n): asserts value is NonNullable<T> {\n if (typeof value === 'undefined') {\n throw new TypeError(`${name} must be defined.`)\n }\n}\n","import { promises as fs } from 'fs'\nimport path from 'path'\nimport { execp } from './utils'\n\nexport const targetDir = path.resolve(process.cwd(), 'packages', 'icons', 'svg')\n\n/**\n * dir 内で変更があったファイル情報を for await で回せるようにするやつ\n */\nexport async function* getChangedFiles(dir = targetDir) {\n const directories = await fs.readdir(dir)\n const gitStatus = await collectGitStatus()\n\n for (const dir of directories) {\n const directory = path.resolve(targetDir, dir)\n\n // eslint-disable-next-line no-await-in-loop\n const stat = await fs.stat(directory)\n if (!stat.isDirectory()) {\n continue\n }\n\n // eslint-disable-next-line no-await-in-loop\n const files = await fs.readdir(directory)\n\n for (const file of files) {\n const fullpath = path.resolve(targetDir, dir, file)\n const relativePath = path.relative(process.cwd(), fullpath)\n\n const status = gitStatus[relativePath]\n if (status == null) {\n // Already up-to-date\n continue\n }\n\n // eslint-disable-next-line no-await-in-loop\n const content = await fs.readFile(fullpath, { encoding: 'utf-8' })\n\n yield { relativePath, content, status }\n }\n }\n}\n\nasync function collectGitStatus() {\n return Object.fromEntries(\n /**\n * @see https://git-scm.com/docs/git-status#_porcelain_format_version_1\n */\n (await execp(`git status --porcelain`))\n .split('\\n')\n .map(\n (s) =>\n [\n s.slice(3),\n s.startsWith(' M')\n ? 'modified'\n : s.startsWith('??')\n ? 'untracked'\n : s.startsWith(' D')\n ? 'deleted'\n : null,\n ] as const\n )\n )\n}\n","import { Octokit } from '@octokit/rest'\nimport { getChangedFiles } from './getChangedFiles'\n\ntype RefResponse = ReturnType<GithubClient['createBranch']> extends Promise<\n infer R\n>\n ? R\n : never\n\ninterface TreeItem {\n path?: string\n mode?: '100644' | '100755' | '040000' | '160000' | '120000'\n type?: 'blob' | 'commit' | 'tree'\n sha?: string | null\n content?: string\n}\n\nexport class GithubClient {\n private readonly api: Octokit\n private readonly now: Date\n\n static async runFromCli(\n repoOwner: string,\n repoName: string,\n token: string,\n defaultBranch: string\n ) {\n const client = new this(repoOwner, repoName, token, defaultBranch)\n\n const diff = await client.createTreeFromDiff()\n console.log(`${diff.length} files are changed`)\n if (diff.length === 0) {\n console.log('no changes. aborting')\n return\n }\n\n const newBranch = await client.createBranch()\n\n await client.createCommit(diff, newBranch)\n return client.createPullRequest(newBranch)\n }\n\n constructor(\n private readonly repoOwner: string,\n private readonly repoName: string,\n token: string,\n private readonly defaultBranch: string,\n now = new Date()\n ) {\n this.api = new Octokit({\n auth: token,\n })\n\n this.now = now\n }\n\n get branch() {\n return `icons/update/${this.now.getTime()}`\n }\n\n /**\n * both used for commit message or pull request title\n */\n get message() {\n return `[icons-cli] Update icons ${this.now.toDateString()}`\n }\n\n async createTreeFromDiff(): Promise<TreeItem[]> {\n const tree: TreeItem[] = []\n\n for await (const file of getChangedFiles()) {\n const item = {\n path: file.relativePath,\n // 100 はファイル 644 は実行不可なファイルであるという意味\n // @see https://octokit.github.io/rest.js/v18#git-create-tree\n mode: '100644' as const,\n content: file.content,\n }\n\n if (file.status === 'deleted') {\n // https://stackoverflow.com/questions/23637961/how-do-i-mark-a-file-as-deleted-in-a-tree-using-the-github-api\n tree.push({\n ...item,\n sha: null,\n })\n } else {\n tree.push(item)\n }\n }\n\n return tree\n }\n\n async createCommit(tree: TreeItem[], targetBranch: RefResponse) {\n const parentCommit = await this.api.git.getCommit({\n owner: this.repoOwner,\n repo: this.repoName,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n commit_sha: targetBranch.data.object.sha,\n })\n\n const newTree = await this.api.git.createTree({\n owner: this.repoOwner,\n repo: this.repoName,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n base_tree: parentCommit.data.tree.sha,\n tree,\n })\n\n // この時点ではどのブランチにも属さないコミットができる\n const commit = await this.api.git.createCommit({\n owner: this.repoOwner,\n repo: this.repoName,\n message: this.message,\n tree: newTree.data.sha,\n parents: [parentCommit.data.sha],\n })\n\n // ref を更新することで、commit が targetBranch に属するようになる\n await this.api.git.updateRef({\n owner: this.repoOwner,\n repo: this.repoName,\n ref: `heads/${this.branch}`,\n sha: commit.data.sha,\n })\n\n return commit\n }\n\n async createPullRequest(targetBranch: RefResponse) {\n const defaultBranch = await this.getDefaultBranchRef()\n\n return this.api.pulls.create({\n owner: this.repoOwner,\n repo: this.repoName,\n head: targetBranch.data.ref,\n base: defaultBranch.data.ref,\n title: this.message,\n body: '',\n })\n }\n\n private getDefaultBranchRef() {\n return this.api.git.getRef({\n owner: this.repoOwner,\n repo: this.repoName,\n ref: `heads/${this.defaultBranch}`,\n })\n }\n\n async createBranch() {\n const defaultBranch = await this.getDefaultBranchRef()\n\n return this.api.git.createRef({\n owner: this.repoOwner,\n repo: this.repoName,\n ref: `refs/heads/${this.branch}`,\n sha: defaultBranch.data.object.sha,\n })\n }\n}\n","import type { CommitAction } from '@gitbeaker/core/dist/types/services/Commits'\nimport { Gitlab } from '@gitbeaker/node'\nimport { getChangedFiles } from './getChangedFiles'\n\ntype GitlabApi = InstanceType<typeof Gitlab>\n\nexport class GitlabClient {\n private readonly api: GitlabApi\n private readonly now: Date\n\n static async runFromCli(\n host: string,\n projectId: number,\n privateToken: string,\n defaultBranch: string\n ) {\n const client = new this(host, projectId, privateToken, defaultBranch)\n\n const diff = await client.createActionsFromDiff()\n console.log(`${diff.length} files are changed`)\n if (diff.length === 0) {\n console.log('no changes. aborting')\n return\n }\n\n await client.createCommit(diff)\n return client.createMergeRequest()\n }\n\n constructor(\n private readonly host: string,\n private readonly projectId: number,\n privateToken: string,\n private readonly defaultBranch: string,\n now = new Date()\n ) {\n this.api = new Gitlab({\n host: this.host,\n token: privateToken,\n })\n this.now = now\n }\n\n get branch() {\n return `icons/update/${this.now.getTime()}`\n }\n\n /**\n * both used for commit message or merge request title\n */\n get message() {\n return `[icons-cli] Update icons ${this.now.toDateString()}`\n }\n\n async createActionsFromDiff(): Promise<CommitAction[]> {\n const actions: CommitAction[] = []\n\n for await (const file of getChangedFiles()) {\n actions.push({\n action:\n file.status === 'untracked'\n ? 'create'\n : file.status === 'deleted'\n ? 'delete'\n : 'update',\n filePath: file.relativePath,\n content: file.content,\n })\n }\n\n return actions\n }\n\n async createCommit(diff: CommitAction[]) {\n return this.api.Commits.create(\n this.projectId,\n this.branch,\n this.message,\n diff,\n {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n start_branch: this.defaultBranch,\n }\n )\n }\n\n createMergeRequest() {\n return this.api.MergeRequests.create(\n this.projectId,\n this.branch,\n this.defaultBranch,\n this.message\n )\n }\n}\n","import { JSDOM } from 'jsdom'\nimport { parseToRgb } from 'polished'\nimport type { RgbColor, RgbaColor } from 'polished/lib/types/color'\nimport Svgo from 'svgo'\n\nexport const DEFAULT_CURRENT_COLOR_TARGET = '#858585'\n\nconst svgo = new Svgo({\n plugins: [\n // NOTICE: SVGO は「svg 内のすべての fill を currentColor に変える」機能しかない\n // icons-cli に必要なのは「特定の黒っぽい色だけ currentColor に変える」機能\n // なので、convertColors plugin は使わない\n // { convertColors: { currentColor: true } },\n { removeViewBox: true },\n { removeAttrs: { attrs: ['stroke-opacity', 'fill-opacity'] } },\n ],\n})\n\nexport async function optimizeSvg(input: string, convertedColor: string) {\n const { data } = await svgo.optimize(input)\n\n const { document } = new JSDOM(data).window\n const svg = document.querySelector('svg')\n if (!svg) {\n throw new Error('optimizeSvg: input string seems not to have <svg>')\n }\n\n addViewboxToRootSvg(svg)\n convertToCurrentColor(svg, convertedColor)\n\n return svg.outerHTML\n}\n\nconst TARGET_ATTRS = ['fill', 'stroke']\n\nfunction convertToCurrentColor(svg: SVGSVGElement, convertedColor: string) {\n const targetColor = parseColor(convertedColor)\n if (!targetColor) {\n throw new Error(`${convertedColor} is not a valid color`)\n }\n\n for (const attr of TARGET_ATTRS) {\n const targets = Array.from(svg.querySelectorAll<SVGElement>(`[${attr}]`))\n\n for (const el of targets) {\n const value = parseColor(el.getAttribute(attr))\n if (!value) {\n continue\n }\n\n if (!colorEquals(value, targetColor)) {\n continue\n }\n\n el.setAttribute(attr, 'currentColor')\n }\n }\n}\n\nfunction parseColor(value: string | null) {\n if (value == null) {\n return null\n }\n\n try {\n return parseToRgb(value)\n } catch {\n return null\n }\n}\n\nfunction colorEquals(self: RgbColor | RgbaColor, other: RgbColor | RgbaColor) {\n if (self.red !== other.red) {\n return false\n }\n\n if (self.blue !== other.blue) {\n return false\n }\n\n if (self.green !== other.green) {\n return false\n }\n\n if ('alpha' in self) {\n if ('alpha' in other) {\n if (self.alpha !== other.alpha) {\n return false\n }\n }\n }\n\n return true\n}\n\nfunction addViewboxToRootSvg(svg: SVGSVGElement) {\n const width = svg.getAttribute('width')!\n const height = svg.getAttribute('height')!\n\n svg.setAttribute('viewBox', `0 0 ${width} ${height}`)\n}\n","import { readFile, writeFile } from 'fs-extra'\nimport yargs from 'yargs'\nimport { FigmaFileClient } from './FigmaFileClient'\nimport { GithubClient } from './GitHubClient'\nimport { GitlabClient } from './GitlabClient'\nimport { DEFAULT_CURRENT_COLOR_TARGET, optimizeSvg } from './optimizeSvg'\nimport { mustBeDefined } from './utils'\n\n/**\n * Figma\n */\nconst FIGMA_TOKEN = process.env.FIGMA_TOKEN\nconst FIGMA_FILE_URL = process.env.FIGMA_FILE_URL\nconst OUTPUT_ROOT_DIR = process.env.OUTPUT_ROOT_DIR\n\n/**\n * GitLab\n */\nconst GITLAB_ACCESS_TOKEN = process.env.GITLAB_ACCESS_TOKEN\nconst GITLAB_DEFAULT_BRANCH = process.env.GITLAB_DEFAULT_BRANCH\nconst GITLAB_HOST = process.env.GITLAB_HOST\nconst GITLAB_PROJECT_ID = process.env.GITLAB_PROJECT_ID\n\n/**\n * GitHub\n */\nconst GITHUB_ACCESS_TOKEN = process.env.GITHUB_ACCESS_TOKEN\nconst GITHUB_REPO_OWNER = process.env.GITHUB_REPO_OWNER\nconst GITHUB_REPO_NAME = process.env.GITHUB_REPO_NAME\nconst GITHUB_DEFAULT_BRANCH = process.env.GITHUB_DEFAULT_BRANCH\n\nvoid yargs\n .scriptName('icons-cli')\n .command(\n 'figma:export',\n 'Load all icons from Figma and save to files',\n () => yargs.option('format', { default: 'svg', choices: ['svg', 'pdf'] }),\n ({ format }) => {\n mustBeDefined(FIGMA_FILE_URL, 'FIGMA_FILE_URL')\n mustBeDefined(FIGMA_TOKEN, 'FIGMA_TOKEN')\n mustBeDefined(OUTPUT_ROOT_DIR, 'OUTPUT_ROOT_DIR')\n\n void FigmaFileClient.runFromCli(\n FIGMA_FILE_URL,\n FIGMA_TOKEN,\n OUTPUT_ROOT_DIR,\n format as 'svg' | 'pdf'\n ).catch((e) => {\n console.error(e)\n process.exit(1)\n })\n }\n )\n .command(\n 'svg:optimize',\n 'Optimize given .svg files and overwrite it',\n () =>\n yargs\n .option('file', { demandOption: true, type: 'string' })\n .option('color', {\n default: DEFAULT_CURRENT_COLOR_TARGET,\n type: 'string',\n defaultDescription:\n 'Color code that should be converted into `currentColor`',\n }),\n ({ file, color }) => {\n void readFile(file, { encoding: 'utf-8' })\n .then((content) => optimizeSvg(content, color))\n .then((optimized) => writeFile(file, optimized))\n .catch((e) => {\n console.error(e)\n process.exit(1)\n })\n }\n )\n .command(\n 'gitlab:mr',\n 'Create a merge request in the name of icons-cli',\n {},\n () => {\n mustBeDefined(GITLAB_PROJECT_ID, 'GITLAB_PROJECT_ID')\n mustBeDefined(GITLAB_ACCESS_TOKEN, 'GITLAB_ACCESS_TOKEN')\n\n void GitlabClient.runFromCli(\n GITLAB_HOST ?? 'https://gitlab.com',\n Number(GITLAB_PROJECT_ID),\n GITLAB_ACCESS_TOKEN,\n GITLAB_DEFAULT_BRANCH ?? 'main'\n ).catch((e) => {\n console.error(e)\n process.exit(1)\n })\n }\n )\n .command(\n 'github:pr',\n 'Create a pull request in the name of icons-cli',\n {},\n () => {\n mustBeDefined(GITHUB_ACCESS_TOKEN, 'GITHUB_ACCESS_TOKEN')\n\n void GithubClient.runFromCli(\n GITHUB_REPO_OWNER ?? 'pixiv',\n GITHUB_REPO_NAME ?? 'charcoal',\n GITHUB_ACCESS_TOKEN,\n GITHUB_DEFAULT_BRANCH ?? 'main'\n ).catch((e) => {\n console.error(e)\n process.exit(1)\n })\n }\n )\n .demandCommand()\n .help()\n .parse()\n"],"names":["concurrently","tasks","queue","PQueue","concurrency","task","add","start","onIdle","extracter","match","extractFileId","url","result","URL","pathname","Error","params","file","extractNodeId","includes","undefined","query","split","URLSearchParams","nodeId","get","decodeURIComponent","filenamify","name","camelCase","pascalCase","replace","iconName","isIconNode","node","test","getContentType","exportFormat","FigmaFileClient","runFromCli","token","outputRootDir","client","root","process","cwd","outputDir","path","join","console","log","loadSvg","typedefDir","writeTypeDef","constructor","personalAccessToken","fileId","components","targets","Figma","Client","remove","ensureDir","loadComponents","loadImageUrls","downloadImages","fullname","resolve","KNOWN_ICON_FILES","Object","values","map","ensureFile","writeFile","JSON","stringify","encoding","document","getFile","children","filter","id","forEach","child","findComponentsRecursively","length","data","fileImages","format","ids","keys","scale","image","entries","images","component","response","got","headers","filename","dirname","body","toString","type","grandChild","execp","command","Promise","reject","exec","err","stdout","mustBeDefined","value","TypeError","targetDir","getChangedFiles","dir","directories","fs","readdir","gitStatus","collectGitStatus","directory","stat","isDirectory","files","fullpath","relativePath","relative","status","content","readFile","fromEntries","s","slice","startsWith","GithubClient","repoOwner","repoName","defaultBranch","diff","createTreeFromDiff","newBranch","createBranch","createCommit","createPullRequest","now","Date","api","Octokit","auth","branch","getTime","message","toDateString","tree","item","mode","push","sha","targetBranch","parentCommit","git","getCommit","owner","repo","commit_sha","object","newTree","createTree","base_tree","commit","parents","updateRef","ref","getDefaultBranchRef","pulls","create","head","base","title","getRef","createRef","GitlabClient","host","projectId","privateToken","createActionsFromDiff","createMergeRequest","Gitlab","actions","action","filePath","Commits","start_branch","MergeRequests","DEFAULT_CURRENT_COLOR_TARGET","svgo","Svgo","plugins","removeViewBox","removeAttrs","attrs","optimizeSvg","input","convertedColor","optimize","JSDOM","window","svg","querySelector","addViewboxToRootSvg","convertToCurrentColor","outerHTML","TARGET_ATTRS","targetColor","parseColor","attr","Array","from","querySelectorAll","el","getAttribute","colorEquals","setAttribute","parseToRgb","self","other","red","blue","green","alpha","width","height","FIGMA_TOKEN","env","FIGMA_FILE_URL","OUTPUT_ROOT_DIR","GITLAB_ACCESS_TOKEN","GITLAB_DEFAULT_BRANCH","GITLAB_HOST","GITLAB_PROJECT_ID","GITHUB_ACCESS_TOKEN","GITHUB_REPO_OWNER","GITHUB_REPO_NAME","GITHUB_DEFAULT_BRANCH","yargs","scriptName","option","default","choices","catch","e","error","exit","demandOption","defaultDescription","color","then","optimized","Number","demandCommand","help","parse"],"mappings":"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"}
|