@charcoal-ui/icons-cli 2.0.0-rc.1 → 2.0.0

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.
@@ -12,7 +12,7 @@ export declare class GithubClient {
12
12
  private readonly defaultBranch;
13
13
  private readonly api;
14
14
  private readonly now;
15
- static runFromCli(repoOwner: string, repoName: string, token: string, defaultBranch: string): Promise<import("@octokit/types").OctokitResponse<{
15
+ static runFromCli(repoOwner: string, repoName: string, token: string, defaultBranch: string, outputDir: string): Promise<import("@octokit/types").OctokitResponse<{
16
16
  url: string;
17
17
  id: number;
18
18
  node_id: string;
@@ -571,7 +571,7 @@ export declare class GithubClient {
571
571
  * both used for commit message or pull request title
572
572
  */
573
573
  get message(): string;
574
- createTreeFromDiff(): Promise<TreeItem[]>;
574
+ createTreeFromDiff(outputDir: string): Promise<TreeItem[]>;
575
575
  createCommit(tree: TreeItem[], targetBranch: RefResponse): Promise<import("@octokit/types").OctokitResponse<{
576
576
  sha: string;
577
577
  node_id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"GitHubClient.d.ts","sourceRoot":"","sources":["../src/GitHubClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GitHubClient.d.ts","sourceRoot":"","sources":["../src/GitHubClient.ts"],"names":[],"mappings":"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"}
@@ -5,14 +5,14 @@ export declare class GitlabClient {
5
5
  private readonly defaultBranch;
6
6
  private readonly api;
7
7
  private readonly now;
8
- static runFromCli(host: string, projectId: number, privateToken: string, defaultBranch: string): Promise<Record<string, unknown> | undefined>;
8
+ static runFromCli(host: string, projectId: number, privateToken: string, defaultBranch: string, outputDir: string): Promise<Record<string, unknown> | undefined>;
9
9
  constructor(host: string, projectId: number, privateToken: string, defaultBranch: string, now?: Date);
10
10
  get branch(): string;
11
11
  /**
12
12
  * both used for commit message or merge request title
13
13
  */
14
14
  get message(): string;
15
- createActionsFromDiff(): Promise<CommitAction[]>;
15
+ createActionsFromDiff(outputDir: string): Promise<CommitAction[]>;
16
16
  createCommit(diff: CommitAction[]): Promise<Record<string, unknown>>;
17
17
  createMergeRequest(): Promise<Record<string, unknown>>;
18
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GitlabClient.d.ts","sourceRoot":"","sources":["../src/GitlabClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAA;AAM/E,qBAAa,YAAY;IA0BrB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAE1B,OAAO,CAAC,QAAQ,CAAC,aAAa;IA5BhC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAW;IAC/B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAM;WAEb,UAAU,CACrB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM;gBAkBJ,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EAClC,YAAY,EAAE,MAAM,EACH,aAAa,EAAE,MAAM,EACtC,GAAG,OAAa;IASlB,IAAI,MAAM,WAET;IAED;;OAEG;IACH,IAAI,OAAO,WAEV;IAEK,qBAAqB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAmBhD,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE;IAavC,kBAAkB;CAQnB"}
1
+ {"version":3,"file":"GitlabClient.d.ts","sourceRoot":"","sources":["../src/GitlabClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAA;AAO/E,qBAAa,YAAY;IA2BrB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAE1B,OAAO,CAAC,QAAQ,CAAC,aAAa;IA7BhC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAW;IAC/B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAM;WAEb,UAAU,CACrB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM;gBAkBA,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EAClC,YAAY,EAAE,MAAM,EACH,aAAa,EAAE,MAAM,EACtC,GAAG,OAAa;IASlB,IAAI,MAAM,WAET;IAED;;OAEG;IACH,IAAI,OAAO,WAEV;IAEK,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAmBjE,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE;IAavC,kBAAkB;CAQnB"}
@@ -1,8 +1,7 @@
1
- export declare const targetDir: string;
2
1
  /**
3
2
  * dir 内で変更があったファイル情報を for await で回せるようにするやつ
4
3
  */
5
- export declare function getChangedFiles(dir?: string): AsyncGenerator<{
4
+ export declare function getChangedFiles(dir: string): AsyncGenerator<{
6
5
  relativePath: string;
7
6
  content: string;
8
7
  status: "modified" | "untracked" | "deleted" | null;
@@ -1 +1 @@
1
- {"version":3,"file":"getChangedFiles.d.ts","sourceRoot":"","sources":["../src/getChangedFiles.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,SAAS,QAAmD,CAAA;AAEzE;;GAEG;AACH,wBAAuB,eAAe,CAAC,GAAG,SAAY;;;;kBAcrD"}
1
+ {"version":3,"file":"getChangedFiles.d.ts","sourceRoot":"","sources":["../src/getChangedFiles.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAuB,eAAe,CAAC,GAAG,EAAE,MAAM;;;;kBAcjD"}
package/dist/index.cjs CHANGED
@@ -383,17 +383,16 @@ function mustBeDefined(value, name) {
383
383
  }
384
384
  }
385
385
 
386
- const targetDir = path__default["default"].resolve(process.cwd(), 'packages', 'icons');
387
386
  /**
388
387
  * dir 内で変更があったファイル情報を for await で回せるようにするやつ
389
388
  */
390
389
 
391
- function getChangedFiles() {
390
+ function getChangedFiles(_x) {
392
391
  return _getChangedFiles.apply(this, arguments);
393
392
  }
394
393
 
395
394
  function _getChangedFiles() {
396
- _getChangedFiles = _wrapAsyncGenerator(function* (dir = targetDir) {
395
+ _getChangedFiles = _wrapAsyncGenerator(function* (dir) {
397
396
  if (!fs$1.existsSync(dir)) throw new Error(`icons-cli: target directory not found (${dir})`);
398
397
  const gitStatus = yield _awaitAsyncGenerator(collectGitStatus());
399
398
 
@@ -429,9 +428,10 @@ async function collectGitStatus() {
429
428
  }
430
429
 
431
430
  class GithubClient {
432
- static async runFromCli(repoOwner, repoName, token, defaultBranch) {
431
+ static async runFromCli(repoOwner, repoName, token, defaultBranch, outputDir) {
433
432
  const client = new this(repoOwner, repoName, token, defaultBranch);
434
- const diff = await client.createTreeFromDiff(); // eslint-disable-next-line no-console
433
+ const outputDirFullPath = path__default["default"].resolve(process.cwd(), outputDir);
434
+ const diff = await client.createTreeFromDiff(outputDirFullPath); // eslint-disable-next-line no-console
435
435
 
436
436
  console.log(`${diff.length} files are changed`);
437
437
 
@@ -473,7 +473,7 @@ class GithubClient {
473
473
  return `[icons-cli] Update icons ${this.now.toDateString()}`;
474
474
  }
475
475
 
476
- async createTreeFromDiff() {
476
+ async createTreeFromDiff(outputDir) {
477
477
  const tree = [];
478
478
  var _iteratorAbruptCompletion = false;
479
479
  var _didIteratorError = false;
@@ -481,7 +481,7 @@ class GithubClient {
481
481
  var _iteratorError;
482
482
 
483
483
  try {
484
- for (var _iterator = _asyncIterator(getChangedFiles()), _step; _iteratorAbruptCompletion = !(_step = await _iterator.next()).done; _iteratorAbruptCompletion = false) {
484
+ for (var _iterator = _asyncIterator(getChangedFiles(outputDir)), _step; _iteratorAbruptCompletion = !(_step = await _iterator.next()).done; _iteratorAbruptCompletion = false) {
485
485
  const file = _step.value;
486
486
  const item = {
487
487
  path: file.relativePath,
@@ -583,9 +583,10 @@ class GithubClient {
583
583
  }
584
584
 
585
585
  class GitlabClient {
586
- static async runFromCli(host, projectId, privateToken, defaultBranch) {
586
+ static async runFromCli(host, projectId, privateToken, defaultBranch, outputDir) {
587
587
  const client = new this(host, projectId, privateToken, defaultBranch);
588
- const diff = await client.createActionsFromDiff(); // eslint-disable-next-line no-console
588
+ const outputDirFullPath = path__default["default"].resolve(process.cwd(), outputDir);
589
+ const diff = await client.createActionsFromDiff(outputDirFullPath); // eslint-disable-next-line no-console
589
590
 
590
591
  console.log(`${diff.length} files are changed`);
591
592
 
@@ -627,7 +628,7 @@ class GitlabClient {
627
628
  return `[icons-cli] Update icons ${this.now.toDateString()}`;
628
629
  }
629
630
 
630
- async createActionsFromDiff() {
631
+ async createActionsFromDiff(outputDir) {
631
632
  const actions = [];
632
633
  var _iteratorAbruptCompletion = false;
633
634
  var _didIteratorError = false;
@@ -635,7 +636,7 @@ class GitlabClient {
635
636
  var _iteratorError;
636
637
 
637
638
  try {
638
- for (var _iterator = _asyncIterator(getChangedFiles()), _step; _iteratorAbruptCompletion = !(_step = await _iterator.next()).done; _iteratorAbruptCompletion = false) {
639
+ for (var _iterator = _asyncIterator(getChangedFiles(outputDir)), _step; _iteratorAbruptCompletion = !(_step = await _iterator.next()).done; _iteratorAbruptCompletion = false) {
639
640
  const file = _step.value;
640
641
  actions.push({
641
642
  action: file.status === 'untracked' ? 'create' : file.status === 'deleted' ? 'delete' : 'update',
@@ -920,9 +921,11 @@ void yargs__default["default"].scriptName('icons-cli').command('figma:export', '
920
921
  }).command('gitlab:mr', 'Create a merge request in the name of icons-cli', {}, async () => {
921
922
  mustBeDefined(GITLAB_PROJECT_ID, 'GITLAB_PROJECT_ID');
922
923
  mustBeDefined(GITLAB_ACCESS_TOKEN, 'GITLAB_ACCESS_TOKEN');
923
- await GitlabClient.runFromCli(GITLAB_HOST != null ? GITLAB_HOST : 'https://gitlab.com', Number(GITLAB_PROJECT_ID), GITLAB_ACCESS_TOKEN, GITLAB_DEFAULT_BRANCH != null ? GITLAB_DEFAULT_BRANCH : 'main');
924
+ mustBeDefined(OUTPUT_ROOT_DIR, 'OUTPUT_ROOT_DIR');
925
+ await GitlabClient.runFromCli(GITLAB_HOST != null ? GITLAB_HOST : 'https://gitlab.com', Number(GITLAB_PROJECT_ID), GITLAB_ACCESS_TOKEN, GITLAB_DEFAULT_BRANCH != null ? GITLAB_DEFAULT_BRANCH : 'main', OUTPUT_ROOT_DIR);
924
926
  }).command('github:pr', 'Create a pull request in the name of icons-cli', {}, async () => {
925
927
  mustBeDefined(GITHUB_ACCESS_TOKEN, 'GITHUB_ACCESS_TOKEN');
926
- await GithubClient.runFromCli(GITHUB_REPO_OWNER != null ? GITHUB_REPO_OWNER : 'pixiv', GITHUB_REPO_NAME != null ? GITHUB_REPO_NAME : 'charcoal', GITHUB_ACCESS_TOKEN, GITHUB_DEFAULT_BRANCH != null ? GITHUB_DEFAULT_BRANCH : 'main');
928
+ mustBeDefined(OUTPUT_ROOT_DIR, 'OUTPUT_ROOT_DIR');
929
+ await GithubClient.runFromCli(GITHUB_REPO_OWNER != null ? GITHUB_REPO_OWNER : 'pixiv', GITHUB_REPO_NAME != null ? GITHUB_REPO_NAME : 'charcoal', GITHUB_ACCESS_TOKEN, GITHUB_DEFAULT_BRANCH != null ? GITHUB_DEFAULT_BRANCH : 'main', OUTPUT_ROOT_DIR);
927
930
  }).demandCommand().strict().help().parse();
928
931
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/concurrently.ts","../src/figma/FigmaFileClient.ts","../src/utils.ts","../src/getChangedFiles.ts","../src/GitHubClient.ts","../src/GitlabClient.ts","../src/svg/optimizeSvg.ts","../src/svg/optimizeSvgInDirectory.ts","../src/generateSource.ts","../src/index.ts"],"sourcesContent":["import PQueue from 'p-queue'\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\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, remove, writeFile } from 'fs-extra'\nimport got from 'got'\nimport { match } from 'path-to-regexp'\nimport { concurrently } from '../concurrently'\n\nconst matchPath = match<{ fileId: string; name: string }>('/file/:fileId/:name')\n\nfunction extractParams(url: string): { fileId: string; nodeId?: string } {\n const { pathname, searchParams } = new URL(url)\n\n const result = matchPath(pathname)\n if (result === false) {\n throw new Error('No fileId found in url')\n }\n\n return {\n fileId: result.params.fileId,\n nodeId: searchParams.get('node-id') ?? undefined,\n }\n}\n\nfunction filenamify(name: string) {\n return camelCase(name, { pascalCase: true }).replace(' ', '')\n}\n\nconst iconName = /^(?:\\d+|Inline)\\s*\\//u\n\nfunction isIconNode(node: Figma.Node) {\n return iconName.test(node.name)\n}\n\ntype ExportFormat = 'svg' | 'pdf'\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\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 outputDir = path.join(process.cwd(), outputRootDir, exportFormat)\n\n // eslint-disable-next-line no-console\n console.log(`Exporting components from ${url}`)\n await client.loadSvg(outputDir)\n\n // eslint-disable-next-line no-console\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 const { fileId, nodeId } = extractParams(url)\n this.fileId = fileId\n this.nodeId = nodeId\n\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 private async loadComponents() {\n const { document } = await this.getFile()\n\n // nodeIdが指定されている場合は、IDが一致するノードのみを探索対象にする\n // 指定されていない場合はドキュメント全体が探索対象\n const targets =\n this.nodeId !== undefined\n ? document.children.filter((node) => node.id === this.nodeId)\n : document.children\n\n // 対象ノードの子孫を探索してアイコンのコンポーネントを見つける\n targets.forEach((child) => this.findComponentsRecursively(child))\n\n if (Object.keys(this.components).length === 0) {\n throw new Error('No components found!')\n }\n }\n\n private async loadImageUrls() {\n // eslint-disable-next-line no-console\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 svg = await got(component.image).text()\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 // eslint-disable-next-line no-console\n console.log(`found: ${filename} => ✅ writing...`)\n await writeFile(fullname, svg, 'utf8')\n })\n )\n }\n\n private async getFile() {\n // eslint-disable-next-line no-console\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, existsSync } from 'fs'\nimport path from 'path'\nimport { execp } from './utils'\n\nexport const targetDir = path.resolve(process.cwd(), 'packages', 'icons')\n\n/**\n * dir 内で変更があったファイル情報を for await で回せるようにするやつ\n */\nexport async function* getChangedFiles(dir = targetDir) {\n if (!existsSync(dir))\n throw new Error(`icons-cli: target directory not found (${dir})`)\n const gitStatus = await collectGitStatus()\n for (const [relativePath, status] of gitStatus) {\n const fullpath = path.resolve(process.cwd(), relativePath)\n if (!fullpath.startsWith(`${dir}/`)) {\n continue\n }\n if (!existsSync(fullpath))\n throw new Error(`icons-cli: could not load svg (${fullpath})`)\n const content = await fs.readFile(fullpath, { encoding: 'utf-8' })\n yield { relativePath, content, status }\n }\n}\n\nasync function collectGitStatus() {\n return new Map(\n /**\n * @see https://git-scm.com/docs/git-status#_porcelain_format_version_1\n */\n (await execp(`git status --porcelain`)).split('\\n').map((s) => {\n return [\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 // eslint-disable-next-line no-console\n console.log(`${diff.length} files are changed`)\n if (diff.length === 0) {\n // eslint-disable-next-line no-console\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 // eslint-disable-next-line no-console\n console.log(`${diff.length} files are changed`)\n if (diff.length === 0) {\n // eslint-disable-next-line no-console\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: false },\n { removeAttrs: { attrs: ['stroke-opacity', 'fill-opacity'] } },\n ],\n})\n\n/**\n * SVGを最適化するオプション\n */\ninterface Options {\n /**\n * currentColorに置換する色 #ffffff\n */\n convertedColor: string\n /**\n * svgoによる最適化を行わない\n */\n withoutOptimizeBySVGO?: boolean\n}\n\nexport async function optimizeSvg(input: string, options: Options) {\n const { document } = new JSDOM(input).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, options.convertedColor)\n\n if (options.withoutOptimizeBySVGO === true) {\n return svg.outerHTML\n } else {\n return (await svgo.optimize(svg.outerHTML)).data\n }\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 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const width = svg.getAttribute('width')!\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const height = svg.getAttribute('height')!\n\n svg.setAttribute('viewBox', `0 0 ${width} ${height}`)\n}\n","import path from 'path'\nimport glob from 'fast-glob'\nimport fs from 'fs-extra'\nimport { concurrently } from '../concurrently'\nimport { optimizeSvg } from './optimizeSvg'\n\n/* eslint-disable no-console */\n\nexport const optimizeSvgInDirectory = async (\n outputDir: string,\n replaceColor: string,\n ignoreFile?: string\n) => {\n const rootDir = path.join(outputDir, 'svg')\n\n const ignorePatterns =\n ignoreFile !== undefined\n ? (await fs.readFile(ignoreFile, 'utf8')).trim().split(/\\r?\\n/u)\n : []\n\n const files = await glob('**/*.svg', {\n cwd: rootDir,\n })\n\n await concurrently(\n files.map((file) => async () => {\n console.log(`Optimizing ${file}...`)\n const fullPath = path.join(rootDir, file)\n\n const originalSvg = await fs.readFile(fullPath, 'utf8')\n const optimizedSvg = await optimizeSvg(originalSvg, {\n convertedColor: replaceColor,\n withoutOptimizeBySVGO: ignorePatterns.includes(file),\n })\n await fs.writeFile(fullPath, optimizedSvg)\n })\n )\n}\n","import path from 'path'\nimport glob from 'fast-glob'\nimport fs from 'fs-extra'\n\nconst generateIconSvgEmbededSource = (svgString: string) => {\n const str = svgString.replace(/\\r?\\n/g, '')\n\n return `/** This file is auto generated. DO NOT EDIT BY HAND. */\nexport default '${str}'\n`\n}\n\nconst generateMjsEntrypoint = (\n icons: string[]\n) => `/** This file is auto generated. DO NOT EDIT BY HAND. */\n\nexport default {\n${icons\n .map((it) => ` '${it}': () => import('./${it}.js').then(m => m.default)`)\n .join(',\\n')}\n}\n`\n\nconst generateCjsEntrypoint = (\n icons: string[]\n) => `/** This file is auto generated. DO NOT EDIT BY HAND. */\n\nmodule.exports = {\n${icons\n .map((it) => ` '${it}': () => import('./${it}.js').then(m => m.default)`)\n .join(',\\n')}\n}\n`\n\nconst generateTypeDefinitionEntrypoint = (\n icons: string[]\n) => `/** This file is auto generated. DO NOt EDIT BY HAND. */\n\ndeclare var _default: {\n${icons.map((it) => ` '${it}': () => Promise<string>`).join(';\\n')}\n};\nexport default _default;\n`\n\nexport const generateEntrypoint = async (\n outputDir: string,\n icons: string[]\n) => {\n const srcRoot = path.join(outputDir, 'src')\n const mjsPath = path.join(srcRoot, 'index.js')\n await fs.ensureFile(mjsPath)\n await fs.writeFile(mjsPath, generateMjsEntrypoint(icons))\n\n const cjsPath = path.join(srcRoot, 'index.cjs')\n await fs.ensureFile(cjsPath)\n await fs.writeFile(cjsPath, generateCjsEntrypoint(icons))\n\n const dtsPath = path.join(srcRoot, 'index.d.ts')\n await fs.ensureFile(dtsPath)\n await fs.writeFile(dtsPath, generateTypeDefinitionEntrypoint(icons))\n}\n\nexport const generateIconSource = async (outputDir: string) => {\n const svgRoot = path.join(outputDir, 'svg')\n const srcRoot = path.join(outputDir, 'src')\n const icons = (await glob('**/*.svg', { cwd: svgRoot }))\n .map(\n (path) => path.slice(0, -4) // e.g. '16/Add.svg' -> '16/Add'\n )\n .sort()\n\n for (const it of icons) {\n const data = await fs.readFile(path.join(svgRoot, `${it}.svg`))\n const outputPath = path.join(srcRoot, `${it}.js`)\n await fs.ensureFile(outputPath)\n await fs.writeFile(\n outputPath,\n generateIconSvgEmbededSource(data.toString())\n )\n }\n\n await generateEntrypoint(outputDir, icons)\n}\n","#!/usr/bin/env node\n\nimport yargs from 'yargs'\nimport { FigmaFileClient } from './figma/FigmaFileClient'\nimport { GithubClient } from './GitHubClient'\nimport { GitlabClient } from './GitlabClient'\nimport { DEFAULT_CURRENT_COLOR_TARGET } from './svg/optimizeSvg'\nimport { optimizeSvgInDirectory } from './svg/optimizeSvgInDirectory'\nimport { generateIconSource } from './generateSource'\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 {\n format: {\n default: 'svg',\n choices: ['svg', 'pdf'],\n describe: 'Output format',\n },\n },\n async ({ 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 await FigmaFileClient.runFromCli(\n FIGMA_FILE_URL,\n FIGMA_TOKEN,\n OUTPUT_ROOT_DIR,\n format as 'svg' | 'pdf'\n )\n }\n )\n .command(\n 'svg:optimize',\n 'Optimize svg files in output directory',\n {\n color: {\n default: DEFAULT_CURRENT_COLOR_TARGET,\n type: 'string',\n describe: 'Color code that should be converted into `currentColor`',\n },\n ignoreFile: {\n type: 'string',\n describe:\n 'A file that contains the list of path to SVG files that should not be optimized',\n },\n },\n async ({ color, ignoreFile }) => {\n mustBeDefined(OUTPUT_ROOT_DIR, 'OUTPUT_ROOT_DIR')\n\n await optimizeSvgInDirectory(OUTPUT_ROOT_DIR, color, ignoreFile)\n }\n )\n .command(\n 'files:generate',\n 'Enumerate svg files in output directory and generate icon files',\n {},\n () => {\n mustBeDefined(OUTPUT_ROOT_DIR, 'OUTPUT_ROOT_DIR')\n\n void generateIconSource(OUTPUT_ROOT_DIR).catch((e) => {\n // eslint-disable-next-line no-console\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 async () => {\n mustBeDefined(GITLAB_PROJECT_ID, 'GITLAB_PROJECT_ID')\n mustBeDefined(GITLAB_ACCESS_TOKEN, 'GITLAB_ACCESS_TOKEN')\n\n await GitlabClient.runFromCli(\n GITLAB_HOST ?? 'https://gitlab.com',\n Number(GITLAB_PROJECT_ID),\n GITLAB_ACCESS_TOKEN,\n GITLAB_DEFAULT_BRANCH ?? 'main'\n )\n }\n )\n .command(\n 'github:pr',\n 'Create a pull request in the name of icons-cli',\n {},\n async () => {\n mustBeDefined(GITHUB_ACCESS_TOKEN, 'GITHUB_ACCESS_TOKEN')\n\n await GithubClient.runFromCli(\n GITHUB_REPO_OWNER ?? 'pixiv',\n GITHUB_REPO_NAME ?? 'charcoal',\n GITHUB_ACCESS_TOKEN,\n GITHUB_DEFAULT_BRANCH ?? 'main'\n )\n }\n )\n .demandCommand()\n .strict()\n .help()\n .parse()\n"],"names":["concurrently","tasks","queue","PQueue","concurrency","task","add","start","onIdle","matchPath","match","extractParams","url","pathname","searchParams","URL","result","Error","fileId","params","nodeId","get","undefined","filenamify","name","camelCase","pascalCase","replace","iconName","isIconNode","node","test","FigmaFileClient","runFromCli","token","outputRootDir","exportFormat","client","outputDir","path","join","process","cwd","console","log","loadSvg","constructor","personalAccessToken","components","Figma","Client","remove","ensureDir","loadComponents","loadImageUrls","downloadImages","document","getFile","targets","children","filter","id","forEach","child","findComponentsRecursively","Object","keys","length","data","fileImages","format","ids","scale","image","entries","images","values","map","component","svg","got","text","filename","fullname","dirname","writeFile","file","toString","type","grandChild","execp","command","Promise","resolve","reject","exec","err","stdout","mustBeDefined","value","TypeError","targetDir","getChangedFiles","dir","existsSync","gitStatus","collectGitStatus","relativePath","status","fullpath","startsWith","content","fs","readFile","encoding","Map","split","s","slice","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","body","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","options","JSDOM","window","querySelector","addViewboxToRootSvg","convertToCurrentColor","convertedColor","withoutOptimizeBySVGO","outerHTML","optimize","TARGET_ATTRS","targetColor","parseColor","attr","Array","from","querySelectorAll","el","getAttribute","colorEquals","setAttribute","parseToRgb","self","other","red","blue","green","alpha","width","height","optimizeSvgInDirectory","replaceColor","ignoreFile","rootDir","ignorePatterns","trim","files","glob","fullPath","originalSvg","optimizedSvg","includes","generateIconSvgEmbededSource","svgString","str","generateMjsEntrypoint","icons","it","generateCjsEntrypoint","generateTypeDefinitionEntrypoint","generateEntrypoint","srcRoot","mjsPath","ensureFile","cjsPath","dtsPath","generateIconSource","svgRoot","sort","outputPath","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","default","choices","describe","color","catch","e","error","exit","Number","demandCommand","strict","help","parse"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/concurrently.ts","../src/figma/FigmaFileClient.ts","../src/utils.ts","../src/getChangedFiles.ts","../src/GitHubClient.ts","../src/GitlabClient.ts","../src/svg/optimizeSvg.ts","../src/svg/optimizeSvgInDirectory.ts","../src/generateSource.ts","../src/index.ts"],"sourcesContent":["import PQueue from 'p-queue'\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\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, remove, writeFile } from 'fs-extra'\nimport got from 'got'\nimport { match } from 'path-to-regexp'\nimport { concurrently } from '../concurrently'\n\nconst matchPath = match<{ fileId: string; name: string }>('/file/:fileId/:name')\n\nfunction extractParams(url: string): { fileId: string; nodeId?: string } {\n const { pathname, searchParams } = new URL(url)\n\n const result = matchPath(pathname)\n if (result === false) {\n throw new Error('No fileId found in url')\n }\n\n return {\n fileId: result.params.fileId,\n nodeId: searchParams.get('node-id') ?? undefined,\n }\n}\n\nfunction filenamify(name: string) {\n return camelCase(name, { pascalCase: true }).replace(' ', '')\n}\n\nconst iconName = /^(?:\\d+|Inline)\\s*\\//u\n\nfunction isIconNode(node: Figma.Node) {\n return iconName.test(node.name)\n}\n\ntype ExportFormat = 'svg' | 'pdf'\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\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 outputDir = path.join(process.cwd(), outputRootDir, exportFormat)\n\n // eslint-disable-next-line no-console\n console.log(`Exporting components from ${url}`)\n await client.loadSvg(outputDir)\n\n // eslint-disable-next-line no-console\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 const { fileId, nodeId } = extractParams(url)\n this.fileId = fileId\n this.nodeId = nodeId\n\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 private async loadComponents() {\n const { document } = await this.getFile()\n\n // nodeIdが指定されている場合は、IDが一致するノードのみを探索対象にする\n // 指定されていない場合はドキュメント全体が探索対象\n const targets =\n this.nodeId !== undefined\n ? document.children.filter((node) => node.id === this.nodeId)\n : document.children\n\n // 対象ノードの子孫を探索してアイコンのコンポーネントを見つける\n targets.forEach((child) => this.findComponentsRecursively(child))\n\n if (Object.keys(this.components).length === 0) {\n throw new Error('No components found!')\n }\n }\n\n private async loadImageUrls() {\n // eslint-disable-next-line no-console\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 svg = await got(component.image).text()\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 // eslint-disable-next-line no-console\n console.log(`found: ${filename} => ✅ writing...`)\n await writeFile(fullname, svg, 'utf8')\n })\n )\n }\n\n private async getFile() {\n // eslint-disable-next-line no-console\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, existsSync } from 'fs'\nimport path from 'path'\nimport { execp } from './utils'\n\n/**\n * dir 内で変更があったファイル情報を for await で回せるようにするやつ\n */\nexport async function* getChangedFiles(dir: string) {\n if (!existsSync(dir))\n throw new Error(`icons-cli: target directory not found (${dir})`)\n const gitStatus = await collectGitStatus()\n for (const [relativePath, status] of gitStatus) {\n const fullpath = path.resolve(process.cwd(), relativePath)\n if (!fullpath.startsWith(`${dir}/`)) {\n continue\n }\n if (!existsSync(fullpath))\n throw new Error(`icons-cli: could not load svg (${fullpath})`)\n const content = await fs.readFile(fullpath, { encoding: 'utf-8' })\n yield { relativePath, content, status }\n }\n}\n\nasync function collectGitStatus() {\n return new Map(\n /**\n * @see https://git-scm.com/docs/git-status#_porcelain_format_version_1\n */\n (await execp(`git status --porcelain`)).split('\\n').map((s) => {\n return [\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 path from 'path'\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 outputDir: string\n ) {\n const client = new this(repoOwner, repoName, token, defaultBranch)\n const outputDirFullPath = path.resolve(process.cwd(), outputDir)\n const diff = await client.createTreeFromDiff(outputDirFullPath)\n // eslint-disable-next-line no-console\n console.log(`${diff.length} files are changed`)\n if (diff.length === 0) {\n // eslint-disable-next-line no-console\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(outputDir: string): Promise<TreeItem[]> {\n const tree: TreeItem[] = []\n\n for await (const file of getChangedFiles(outputDir)) {\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 path from 'path'\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 outputDir: string\n ) {\n const client = new this(host, projectId, privateToken, defaultBranch)\n const outputDirFullPath = path.resolve(process.cwd(), outputDir)\n const diff = await client.createActionsFromDiff(outputDirFullPath)\n // eslint-disable-next-line no-console\n console.log(`${diff.length} files are changed`)\n if (diff.length === 0) {\n // eslint-disable-next-line no-console\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(outputDir: string): Promise<CommitAction[]> {\n const actions: CommitAction[] = []\n\n for await (const file of getChangedFiles(outputDir)) {\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: false },\n { removeAttrs: { attrs: ['stroke-opacity', 'fill-opacity'] } },\n ],\n})\n\n/**\n * SVGを最適化するオプション\n */\ninterface Options {\n /**\n * currentColorに置換する色 #ffffff\n */\n convertedColor: string\n /**\n * svgoによる最適化を行わない\n */\n withoutOptimizeBySVGO?: boolean\n}\n\nexport async function optimizeSvg(input: string, options: Options) {\n const { document } = new JSDOM(input).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, options.convertedColor)\n\n if (options.withoutOptimizeBySVGO === true) {\n return svg.outerHTML\n } else {\n return (await svgo.optimize(svg.outerHTML)).data\n }\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 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const width = svg.getAttribute('width')!\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const height = svg.getAttribute('height')!\n\n svg.setAttribute('viewBox', `0 0 ${width} ${height}`)\n}\n","import path from 'path'\nimport glob from 'fast-glob'\nimport fs from 'fs-extra'\nimport { concurrently } from '../concurrently'\nimport { optimizeSvg } from './optimizeSvg'\n\n/* eslint-disable no-console */\n\nexport const optimizeSvgInDirectory = async (\n outputDir: string,\n replaceColor: string,\n ignoreFile?: string\n) => {\n const rootDir = path.join(outputDir, 'svg')\n\n const ignorePatterns =\n ignoreFile !== undefined\n ? (await fs.readFile(ignoreFile, 'utf8')).trim().split(/\\r?\\n/u)\n : []\n\n const files = await glob('**/*.svg', {\n cwd: rootDir,\n })\n\n await concurrently(\n files.map((file) => async () => {\n console.log(`Optimizing ${file}...`)\n const fullPath = path.join(rootDir, file)\n\n const originalSvg = await fs.readFile(fullPath, 'utf8')\n const optimizedSvg = await optimizeSvg(originalSvg, {\n convertedColor: replaceColor,\n withoutOptimizeBySVGO: ignorePatterns.includes(file),\n })\n await fs.writeFile(fullPath, optimizedSvg)\n })\n )\n}\n","import path from 'path'\nimport glob from 'fast-glob'\nimport fs from 'fs-extra'\n\nconst generateIconSvgEmbededSource = (svgString: string) => {\n const str = svgString.replace(/\\r?\\n/g, '')\n\n return `/** This file is auto generated. DO NOT EDIT BY HAND. */\nexport default '${str}'\n`\n}\n\nconst generateMjsEntrypoint = (\n icons: string[]\n) => `/** This file is auto generated. DO NOT EDIT BY HAND. */\n\nexport default {\n${icons\n .map((it) => ` '${it}': () => import('./${it}.js').then(m => m.default)`)\n .join(',\\n')}\n}\n`\n\nconst generateCjsEntrypoint = (\n icons: string[]\n) => `/** This file is auto generated. DO NOT EDIT BY HAND. */\n\nmodule.exports = {\n${icons\n .map((it) => ` '${it}': () => import('./${it}.js').then(m => m.default)`)\n .join(',\\n')}\n}\n`\n\nconst generateTypeDefinitionEntrypoint = (\n icons: string[]\n) => `/** This file is auto generated. DO NOt EDIT BY HAND. */\n\ndeclare var _default: {\n${icons.map((it) => ` '${it}': () => Promise<string>`).join(';\\n')}\n};\nexport default _default;\n`\n\nexport const generateEntrypoint = async (\n outputDir: string,\n icons: string[]\n) => {\n const srcRoot = path.join(outputDir, 'src')\n const mjsPath = path.join(srcRoot, 'index.js')\n await fs.ensureFile(mjsPath)\n await fs.writeFile(mjsPath, generateMjsEntrypoint(icons))\n\n const cjsPath = path.join(srcRoot, 'index.cjs')\n await fs.ensureFile(cjsPath)\n await fs.writeFile(cjsPath, generateCjsEntrypoint(icons))\n\n const dtsPath = path.join(srcRoot, 'index.d.ts')\n await fs.ensureFile(dtsPath)\n await fs.writeFile(dtsPath, generateTypeDefinitionEntrypoint(icons))\n}\n\nexport const generateIconSource = async (outputDir: string) => {\n const svgRoot = path.join(outputDir, 'svg')\n const srcRoot = path.join(outputDir, 'src')\n const icons = (await glob('**/*.svg', { cwd: svgRoot }))\n .map(\n (path) => path.slice(0, -4) // e.g. '16/Add.svg' -> '16/Add'\n )\n .sort()\n\n for (const it of icons) {\n const data = await fs.readFile(path.join(svgRoot, `${it}.svg`))\n const outputPath = path.join(srcRoot, `${it}.js`)\n await fs.ensureFile(outputPath)\n await fs.writeFile(\n outputPath,\n generateIconSvgEmbededSource(data.toString())\n )\n }\n\n await generateEntrypoint(outputDir, icons)\n}\n","#!/usr/bin/env node\n\nimport yargs from 'yargs'\nimport { FigmaFileClient } from './figma/FigmaFileClient'\nimport { GithubClient } from './GitHubClient'\nimport { GitlabClient } from './GitlabClient'\nimport { DEFAULT_CURRENT_COLOR_TARGET } from './svg/optimizeSvg'\nimport { optimizeSvgInDirectory } from './svg/optimizeSvgInDirectory'\nimport { generateIconSource } from './generateSource'\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 {\n format: {\n default: 'svg',\n choices: ['svg', 'pdf'],\n describe: 'Output format',\n },\n },\n async ({ 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 await FigmaFileClient.runFromCli(\n FIGMA_FILE_URL,\n FIGMA_TOKEN,\n OUTPUT_ROOT_DIR,\n format as 'svg' | 'pdf'\n )\n }\n )\n .command(\n 'svg:optimize',\n 'Optimize svg files in output directory',\n {\n color: {\n default: DEFAULT_CURRENT_COLOR_TARGET,\n type: 'string',\n describe: 'Color code that should be converted into `currentColor`',\n },\n ignoreFile: {\n type: 'string',\n describe:\n 'A file that contains the list of path to SVG files that should not be optimized',\n },\n },\n async ({ color, ignoreFile }) => {\n mustBeDefined(OUTPUT_ROOT_DIR, 'OUTPUT_ROOT_DIR')\n\n await optimizeSvgInDirectory(OUTPUT_ROOT_DIR, color, ignoreFile)\n }\n )\n .command(\n 'files:generate',\n 'Enumerate svg files in output directory and generate icon files',\n {},\n () => {\n mustBeDefined(OUTPUT_ROOT_DIR, 'OUTPUT_ROOT_DIR')\n\n void generateIconSource(OUTPUT_ROOT_DIR).catch((e) => {\n // eslint-disable-next-line no-console\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 async () => {\n mustBeDefined(GITLAB_PROJECT_ID, 'GITLAB_PROJECT_ID')\n mustBeDefined(GITLAB_ACCESS_TOKEN, 'GITLAB_ACCESS_TOKEN')\n mustBeDefined(OUTPUT_ROOT_DIR, 'OUTPUT_ROOT_DIR')\n\n await GitlabClient.runFromCli(\n GITLAB_HOST ?? 'https://gitlab.com',\n Number(GITLAB_PROJECT_ID),\n GITLAB_ACCESS_TOKEN,\n GITLAB_DEFAULT_BRANCH ?? 'main',\n OUTPUT_ROOT_DIR\n )\n }\n )\n .command(\n 'github:pr',\n 'Create a pull request in the name of icons-cli',\n {},\n async () => {\n mustBeDefined(GITHUB_ACCESS_TOKEN, 'GITHUB_ACCESS_TOKEN')\n mustBeDefined(OUTPUT_ROOT_DIR, 'OUTPUT_ROOT_DIR')\n\n await GithubClient.runFromCli(\n GITHUB_REPO_OWNER ?? 'pixiv',\n GITHUB_REPO_NAME ?? 'charcoal',\n GITHUB_ACCESS_TOKEN,\n GITHUB_DEFAULT_BRANCH ?? 'main',\n OUTPUT_ROOT_DIR\n )\n }\n )\n .demandCommand()\n .strict()\n .help()\n .parse()\n"],"names":["concurrently","tasks","queue","PQueue","concurrency","task","add","start","onIdle","matchPath","match","extractParams","url","pathname","searchParams","URL","result","Error","fileId","params","nodeId","get","undefined","filenamify","name","camelCase","pascalCase","replace","iconName","isIconNode","node","test","FigmaFileClient","runFromCli","token","outputRootDir","exportFormat","client","outputDir","path","join","process","cwd","console","log","loadSvg","constructor","personalAccessToken","components","Figma","Client","remove","ensureDir","loadComponents","loadImageUrls","downloadImages","document","getFile","targets","children","filter","id","forEach","child","findComponentsRecursively","Object","keys","length","data","fileImages","format","ids","scale","image","entries","images","values","map","component","svg","got","text","filename","fullname","dirname","writeFile","file","toString","type","grandChild","execp","command","Promise","resolve","reject","exec","err","stdout","mustBeDefined","value","TypeError","getChangedFiles","dir","existsSync","gitStatus","collectGitStatus","relativePath","status","fullpath","startsWith","content","fs","readFile","encoding","Map","split","s","slice","GithubClient","repoOwner","repoName","defaultBranch","outputDirFullPath","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","body","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","options","JSDOM","window","querySelector","addViewboxToRootSvg","convertToCurrentColor","convertedColor","withoutOptimizeBySVGO","outerHTML","optimize","TARGET_ATTRS","targetColor","parseColor","attr","Array","from","querySelectorAll","el","getAttribute","colorEquals","setAttribute","parseToRgb","self","other","red","blue","green","alpha","width","height","optimizeSvgInDirectory","replaceColor","ignoreFile","rootDir","ignorePatterns","trim","files","glob","fullPath","originalSvg","optimizedSvg","includes","generateIconSvgEmbededSource","svgString","str","generateMjsEntrypoint","icons","it","generateCjsEntrypoint","generateTypeDefinitionEntrypoint","generateEntrypoint","srcRoot","mjsPath","ensureFile","cjsPath","dtsPath","generateIconSource","svgRoot","sort","outputPath","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","default","choices","describe","color","catch","e","error","exit","Number","demandCommand","strict","help","parse"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAGgBA,aAAaC;AAC3B,QAAMC,KAAK,GAAG,IAAIC,0BAAJ,CAAW;AAAEC,IAAAA,WAAW,EAAE;AAAf,GAAX,CAAd;;AACA,OAAK,MAAMC,IAAX,IAAmBJ,KAAnB,EAA0B;AACxB,SAAKC,KAAK,CAACI,GAAN,CAAUD,IAAV,CAAL;AACD;;AACDH,EAAAA,KAAK,CAACK,KAAN;AACA,SAAOL,KAAK,CAACM,MAAN,EAAP;AACD;;ACFD,MAAMC,SAAS,GAAGC,kBAAK,CAAmC,qBAAnC,CAAvB;;AAEA,SAASC,aAAT,CAAuBC,GAAvB;;;AACE,QAAM;AAAEC,IAAAA,QAAF;AAAYC,IAAAA;AAAZ,MAA6B,IAAIC,GAAJ,CAAQH,GAAR,CAAnC;AAEA,QAAMI,MAAM,GAAGP,SAAS,CAACI,QAAD,CAAxB;;AACA,MAAIG,MAAM,KAAK,KAAf,EAAsB;AACpB,UAAM,IAAIC,KAAJ,CAAU,wBAAV,CAAN;AACD;;AAED,SAAO;AACLC,IAAAA,MAAM,EAAEF,MAAM,CAACG,MAAP,CAAcD,MADjB;AAELE,IAAAA,MAAM,uBAAEN,YAAY,CAACO,GAAb,CAAiB,SAAjB,CAAF,gCAAiCC;AAFlC,GAAP;AAID;;AAED,SAASC,UAAT,CAAoBC,IAApB;AACE,SAAOC,6BAAS,CAACD,IAAD,EAAO;AAAEE,IAAAA,UAAU,EAAE;AAAd,GAAP,CAAT,CAAsCC,OAAtC,CAA8C,GAA9C,EAAmD,EAAnD,CAAP;AACD;;AAED,MAAMC,QAAQ,GAAG,uBAAjB;;AAEA,SAASC,UAAT,CAAoBC,IAApB;AACE,SAAOF,QAAQ,CAACG,IAAT,CAAcD,IAAI,CAACN,IAAnB,CAAP;AACD;;MAUYQ;AAQY,eAAVC,UAAU,CACrBrB,GADqB,EAErBsB,KAFqB,EAGrBC,aAHqB,EAIrBC,YAJqB;AAMrB,UAAMC,MAAM,GAAG,IAAI,IAAJ,CAASzB,GAAT,EAAcsB,KAAd,EAAqBE,YAArB,CAAf;AAEA,UAAME,SAAS,GAAGC,wBAAI,CAACC,IAAL,CAAUC,OAAO,CAACC,GAAR,EAAV,EAAyBP,aAAzB,EAAwCC,YAAxC,CAAlB;;AAGAO,IAAAA,OAAO,CAACC,GAAR,8BAAyChC,KAAzC;AACA,UAAMyB,MAAM,CAACQ,OAAP,CAAeP,SAAf,CAAN;;AAGAK,IAAAA,OAAO,CAACC,GAAR,CAAY,UAAZ;AACD;;AAEDE,EAAAA,YACElC,KACAmC,qBACAX;SA5BelB;SACAE;SACAgB;SACAC;SAETW,aAAwC;AAyB9C,SAAKX,MAAL,GAAcY,yBAAK,CAACC,MAAN,CAAa;AACzBH,MAAAA;AADyB,KAAb,CAAd;AAIA,UAAM;AAAE7B,MAAAA,MAAF;AAAUE,MAAAA;AAAV,QAAqBT,aAAa,CAACC,GAAD,CAAxC;AACA,SAAKM,MAAL,GAAcA,MAAd;AACA,SAAKE,MAAL,GAAcA,MAAd;AAEA,SAAKgB,YAAL,GAAoBA,YAApB;AACD;;AAEY,QAAPS,OAAO,CAACP,SAAD;AACX,UAAMa,SAAM,CAACb,SAAD,CAAZ;AACA,UAAMc,YAAS,CAACd,SAAD,CAAf;AAEA,UAAM,KAAKe,cAAL,EAAN;AACA,UAAM,KAAKC,aAAL,EAAN;AACA,UAAM,KAAKC,cAAL,CAAoBjB,SAApB,CAAN;AACD;;AAE2B,QAAde,cAAc;AAC1B,UAAM;AAAEG,MAAAA;AAAF,QAAe,MAAM,KAAKC,OAAL,EAA3B;AAGA;;AACA,UAAMC,OAAO,GACX,KAAKtC,MAAL,KAAgBE,SAAhB,GACIkC,QAAQ,CAACG,QAAT,CAAkBC,MAAlB,CAA0B9B,IAAD,IAAUA,IAAI,CAAC+B,EAAL,KAAY,KAAKzC,MAApD,CADJ,GAEIoC,QAAQ,CAACG,QAHf;;AAMAD,IAAAA,OAAO,CAACI,OAAR,CAAiBC,KAAD,IAAW,KAAKC,yBAAL,CAA+BD,KAA/B,CAA3B;;AAEA,QAAIE,MAAM,CAACC,IAAP,CAAY,KAAKlB,UAAjB,EAA6BmB,MAA7B,KAAwC,CAA5C,EAA+C;AAC7C,YAAM,IAAIlD,KAAJ,CAAU,sBAAV,CAAN;AACD;AACF;;AAE0B,QAAbqC,aAAa;AACzB;AACAX,IAAAA,OAAO,CAACC,GAAR,CAAY,qBAAZ;AAEA,UAAM;AAAEwB,MAAAA;AAAF,QAAW,MAAM,KAAK/B,MAAL,CAAYgC,UAAZ,CAAuB,KAAKnD,MAA5B,EAAoC;AACzDoD,MAAAA,MAAM,EAAE,KAAKlC,YAD4C;AAEzDmC,MAAAA,GAAG,EAAEN,MAAM,CAACC,IAAP,CAAY,KAAKlB,UAAjB,CAFoD;AAGzDwB,MAAAA,KAAK,EAAE;AAHkD,KAApC,CAAvB;;AAMA,SAAK,MAAM,CAACX,EAAD,EAAKY,KAAL,CAAX,IAA0BR,MAAM,CAACS,OAAP,CAAeN,IAAI,CAACO,MAApB,CAA1B,EAAuD;AACrD,WAAK3B,UAAL,CAAgBa,EAAhB,EAAoBY,KAApB,GAA4BA,KAA5B;AACD;AACF;;AAE2B,QAAdlB,cAAc,CAACjB,SAAD;AAC1B,WAAOtC,YAAY,CACjBiE,MAAM,CAACW,MAAP,CAAc,KAAK5B,UAAnB,EAA+B6B,GAA/B,CAAoCC,SAAD,IAAe;AAChD,UAAIA,SAAS,CAACL,KAAV,KAAoBnD,SAAxB,EAAmC;AACjC;AACD;;AAED,YAAMyD,GAAG,GAAG,MAAMC,uBAAG,CAACF,SAAS,CAACL,KAAX,CAAH,CAAqBQ,IAArB,EAAlB;AAEA,YAAMC,QAAQ,MAAM3D,UAAU,CAACuD,SAAS,CAACtD,IAAX,KAAoB,KAAKY,cAAvD;AACA,YAAM+C,QAAQ,GAAG5C,wBAAI,CAACC,IAAL,CAAUF,SAAV,EAAqB4C,QAArB,CAAjB;AACA,YAAME,OAAO,GAAG7C,wBAAI,CAAC6C,OAAL,CAAaD,QAAb,CAAhB;AAEA,YAAM/B,YAAS,CAACgC,OAAD,CAAf;;AAGAzC,MAAAA,OAAO,CAACC,GAAR,WAAsBsC,0BAAtB;AACA,YAAMG,YAAS,CAACF,QAAD,EAAWJ,GAAX,EAAgB,MAAhB,CAAf;AACD,KAhBD,CADiB,CAAnB;AAmBD;;AAEoB,QAAPtB,OAAO;AACnB;AACAd,IAAAA,OAAO,CAACC,GAAR,CAAY,qBAAZ;AAEA,UAAM;AAAEwB,MAAAA;AAAF,QAAW,MAAM,KAAK/B,MAAL,CAAYiD,IAAZ,CAAiB,KAAKpE,MAAL,CAAYqE,QAAZ,EAAjB,CAAvB;AAEA,WAAOnB,IAAP;AACD;;AAEOJ,EAAAA,yBAAyB,CAACD,KAAD;AAC/B,QAAIA,KAAK,CAACyB,IAAN,KAAe,WAAnB,EAAgC;AAC9B,YAAM;AAAEhE,QAAAA,IAAF;AAAQqC,QAAAA;AAAR,UAAeE,KAArB;;AAEA,UAAIlC,UAAU,CAACkC,KAAD,CAAd,EAAuB;AACrB,aAAKf,UAAL,CAAgBa,EAAhB,IAAsB;AACpBrC,UAAAA,IADoB;AAEpBqC,UAAAA;AAFoB,SAAtB;AAID;AACF,KATD,MASO,IAAI,cAAcE,KAAlB,EAAyB;AAC9BA,MAAAA,KAAK,CAACJ,QAAN,CAAeG,OAAf,CAAwB2B,UAAD,IACrB,KAAKzB,yBAAL,CAA+ByB,UAA/B,CADF;AAGD;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1KH;;;;AAGO,MAAMC,KAAK,GAAIC,OAAD,IACnB,IAAIC,OAAJ,CAAoB,CAACC,OAAD,EAAUC,MAAV;AAClBC,EAAAA,kBAAI,CAACJ,OAAD,EAAU,CAACK,GAAD,EAAMC,MAAN;AACZ,QAAID,GAAJ,EAAS;AACP,aAAOF,MAAM,CAACE,GAAD,CAAb;AACD;;AAED,WAAOH,OAAO,CAACI,MAAD,CAAd;AACD,GANG,CAAJ;AAOD,CARD,CADK;SAWSC,cACdC,OACA3E;AAEA,MAAI,OAAO2E,KAAP,KAAiB,WAArB,EAAkC;AAChC,UAAM,IAAIC,SAAJ,IAAiB5E,uBAAjB,CAAN;AACD;AACF;;ACnBD;;;;SAGuB6E,eAAvB;AAAA;AAAA;;;yCAAO,WAAgCC,GAAhC;AACL,QAAI,CAACC,eAAU,CAACD,GAAD,CAAf,EACE,MAAM,IAAIrF,KAAJ,2CAAoDqF,MAApD,CAAN;AACF,UAAME,SAAS,8BAASC,gBAAgB,EAAzB,CAAf;;AACA,SAAK,MAAM,CAACC,YAAD,EAAeC,MAAf,CAAX,IAAqCH,SAArC,EAAgD;AAC9C,YAAMI,QAAQ,GAAGrE,wBAAI,CAACsD,OAAL,CAAapD,OAAO,CAACC,GAAR,EAAb,EAA4BgE,YAA5B,CAAjB;;AACA,UAAI,CAACE,QAAQ,CAACC,UAAT,IAAuBP,MAAvB,CAAL,EAAqC;AACnC;AACD;;AACD,UAAI,CAACC,eAAU,CAACK,QAAD,CAAf,EACE,MAAM,IAAI3F,KAAJ,mCAA4C2F,WAA5C,CAAN;AACF,YAAME,OAAO,8BAASC,aAAE,CAACC,QAAH,CAAYJ,QAAZ,EAAsB;AAAEK,QAAAA,QAAQ,EAAE;AAAZ,OAAtB,CAAT,CAAb;AACA,YAAM;AAAEP,QAAAA,YAAF;AAAgBI,QAAAA,OAAhB;AAAyBH,QAAAA;AAAzB,OAAN;AACD;AACF;;;;AAED,eAAeF,gBAAf;AACE,SAAO,IAAIS,GAAJ;AACL;;;AAGA,GAAC,MAAMxB,KAAK,yBAAA,CAAZ,EAAwCyB,KAAxC,CAA8C,IAA9C,EAAoDtC,GAApD,CAAyDuC,CAAD;AACtD,WAAO,CACLA,CAAC,CAACC,KAAF,CAAQ,CAAR,CADK,EAELD,CAAC,CAACP,UAAF,CAAa,IAAb,IACI,UADJ,GAEIO,CAAC,CAACP,UAAF,CAAa,IAAb,IACA,WADA,GAEAO,CAAC,CAACP,UAAF,CAAa,IAAb,IACA,SADA,GAEA,IARC,CAAP;AAUD,GAXD,CAJK,CAAP;AAiBD;;MCvBYS;AAIY,eAAVrF,UAAU,CACrBsF,SADqB,EAErBC,QAFqB,EAGrBtF,KAHqB,EAIrBuF,aAJqB,EAKrBnF,SALqB;AAOrB,UAAMD,MAAM,GAAG,IAAI,IAAJ,CAASkF,SAAT,EAAoBC,QAApB,EAA8BtF,KAA9B,EAAqCuF,aAArC,CAAf;AACA,UAAMC,iBAAiB,GAAGnF,wBAAI,CAACsD,OAAL,CAAapD,OAAO,CAACC,GAAR,EAAb,EAA4BJ,SAA5B,CAA1B;AACA,UAAMqF,IAAI,GAAG,MAAMtF,MAAM,CAACuF,kBAAP,CAA0BF,iBAA1B,CAAnB;;AAEA/E,IAAAA,OAAO,CAACC,GAAR,IAAe+E,IAAI,CAACxD,0BAApB;;AACA,QAAIwD,IAAI,CAACxD,MAAL,KAAgB,CAApB,EAAuB;AACrB;AACAxB,MAAAA,OAAO,CAACC,GAAR,CAAY,sBAAZ;AACA;AACD;;AAED,UAAMiF,SAAS,GAAG,MAAMxF,MAAM,CAACyF,YAAP,EAAxB;AAEA,UAAMzF,MAAM,CAAC0F,YAAP,CAAoBJ,IAApB,EAA0BE,SAA1B,CAAN;AACA,WAAOxF,MAAM,CAAC2F,iBAAP,CAAyBH,SAAzB,CAAP;AACD;;AAED/E,EAAAA,YACmByE,WACAC,UACjBtF,OACiBuF,eACjBQ,GAAG,GAAG,IAAIC,IAAJ;SAJWX;SACAC;SAEAC;SA/BFU;SACAF;AA2BE,kBAAA,GAAAV,SAAA;AACA,iBAAA,GAAAC,QAAA;AAEA,sBAAA,GAAAC,aAAA;AAGjB,SAAKU,GAAL,GAAW,IAAIC,YAAJ,CAAY;AACrBC,MAAAA,IAAI,EAAEnG;AADe,KAAZ,CAAX;AAIA,SAAK+F,GAAL,GAAWA,GAAX;AACD;;AAES,MAANK,MAAM;AACR,2BAAuB,KAAKL,GAAL,CAASM,OAAT,IAAvB;AACD;AAED;;;;;AAGW,MAAPC,OAAO;AACT,uCAAmC,KAAKP,GAAL,CAASQ,YAAT,IAAnC;AACD;;AAEuB,QAAlBb,kBAAkB,CAACtF,SAAD;AACtB,UAAMoG,IAAI,GAAe,EAAzB;;;;;;;AAEA,0CAAyBrC,eAAe,CAAC/D,SAAD,CAAxC,iHAAqD;AAAA,cAApCgD,IAAoC;AACnD,cAAMqD,IAAI,GAAG;AACXpG,UAAAA,IAAI,EAAE+C,IAAI,CAACoB,YADA;AAEX;AACA;AACAkC,UAAAA,IAAI,EAAE,QAJK;AAKX9B,UAAAA,OAAO,EAAExB,IAAI,CAACwB;AALH,SAAb;;AAQA,YAAIxB,IAAI,CAACqB,MAAL,KAAgB,SAApB,EAA+B;AAC7B;AACA+B,UAAAA,IAAI,CAACG,IAAL,cACKF,IADL;AAEEG,YAAAA,GAAG,EAAE;AAFP;AAID,SAND,MAMO;AACLJ,UAAAA,IAAI,CAACG,IAAL,CAAUF,IAAV;AACD;AACF;;;;;;;;;;;;;;;;AAED,WAAOD,IAAP;AACD;;AAEiB,QAAZX,YAAY,CAACW,IAAD,EAAmBK,YAAnB;AAChB,UAAMC,YAAY,GAAG,MAAM,KAAKb,GAAL,CAASc,GAAT,CAAaC,SAAb,CAAuB;AAChDC,MAAAA,KAAK,EAAE,KAAK5B,SADoC;AAEhD6B,MAAAA,IAAI,EAAE,KAAK5B,QAFqC;AAGhD;AACA6B,MAAAA,UAAU,EAAEN,YAAY,CAAC3E,IAAb,CAAkBkF,MAAlB,CAAyBR;AAJW,KAAvB,CAA3B;AAOA,UAAMS,OAAO,GAAG,MAAM,KAAKpB,GAAL,CAASc,GAAT,CAAaO,UAAb,CAAwB;AAC5CL,MAAAA,KAAK,EAAE,KAAK5B,SADgC;AAE5C6B,MAAAA,IAAI,EAAE,KAAK5B,QAFiC;AAG5C;AACAiC,MAAAA,SAAS,EAAET,YAAY,CAAC5E,IAAb,CAAkBsE,IAAlB,CAAuBI,GAJU;AAK5CJ,MAAAA;AAL4C,KAAxB,CAAtB;;AASA,UAAMgB,MAAM,GAAG,MAAM,KAAKvB,GAAL,CAASc,GAAT,CAAalB,YAAb,CAA0B;AAC7CoB,MAAAA,KAAK,EAAE,KAAK5B,SADiC;AAE7C6B,MAAAA,IAAI,EAAE,KAAK5B,QAFkC;AAG7CgB,MAAAA,OAAO,EAAE,KAAKA,OAH+B;AAI7CE,MAAAA,IAAI,EAAEa,OAAO,CAACnF,IAAR,CAAa0E,GAJ0B;AAK7Ca,MAAAA,OAAO,EAAE,CAACX,YAAY,CAAC5E,IAAb,CAAkB0E,GAAnB;AALoC,KAA1B,CAArB;;AASA,UAAM,KAAKX,GAAL,CAASc,GAAT,CAAaW,SAAb,CAAuB;AAC3BT,MAAAA,KAAK,EAAE,KAAK5B,SADe;AAE3B6B,MAAAA,IAAI,EAAE,KAAK5B,QAFgB;AAG3BqC,MAAAA,GAAG,WAAW,KAAKvB,QAHQ;AAI3BQ,MAAAA,GAAG,EAAEY,MAAM,CAACtF,IAAP,CAAY0E;AAJU,KAAvB,CAAN;AAOA,WAAOY,MAAP;AACD;;AAEsB,QAAjB1B,iBAAiB,CAACe,YAAD;AACrB,UAAMtB,aAAa,GAAG,MAAM,KAAKqC,mBAAL,EAA5B;AAEA,WAAO,KAAK3B,GAAL,CAAS4B,KAAT,CAAeC,MAAf,CAAsB;AAC3Bb,MAAAA,KAAK,EAAE,KAAK5B,SADe;AAE3B6B,MAAAA,IAAI,EAAE,KAAK5B,QAFgB;AAG3ByC,MAAAA,IAAI,EAAElB,YAAY,CAAC3E,IAAb,CAAkByF,GAHG;AAI3BK,MAAAA,IAAI,EAAEzC,aAAa,CAACrD,IAAd,CAAmByF,GAJE;AAK3BM,MAAAA,KAAK,EAAE,KAAK3B,OALe;AAM3B4B,MAAAA,IAAI,EAAE;AANqB,KAAtB,CAAP;AAQD;;AAEON,EAAAA,mBAAmB;AACzB,WAAO,KAAK3B,GAAL,CAASc,GAAT,CAAaoB,MAAb,CAAoB;AACzBlB,MAAAA,KAAK,EAAE,KAAK5B,SADa;AAEzB6B,MAAAA,IAAI,EAAE,KAAK5B,QAFc;AAGzBqC,MAAAA,GAAG,WAAW,KAAKpC;AAHM,KAApB,CAAP;AAKD;;AAEiB,QAAZK,YAAY;AAChB,UAAML,aAAa,GAAG,MAAM,KAAKqC,mBAAL,EAA5B;AAEA,WAAO,KAAK3B,GAAL,CAASc,GAAT,CAAaqB,SAAb,CAAuB;AAC5BnB,MAAAA,KAAK,EAAE,KAAK5B,SADgB;AAE5B6B,MAAAA,IAAI,EAAE,KAAK5B,QAFiB;AAG5BqC,MAAAA,GAAG,gBAAgB,KAAKvB,QAHI;AAI5BQ,MAAAA,GAAG,EAAErB,aAAa,CAACrD,IAAd,CAAmBkF,MAAnB,CAA0BR;AAJH,KAAvB,CAAP;AAMD;;;;MC5JUyB;AAIY,eAAVtI,UAAU,CACrBuI,IADqB,EAErBC,SAFqB,EAGrBC,YAHqB,EAIrBjD,aAJqB,EAKrBnF,SALqB;AAOrB,UAAMD,MAAM,GAAG,IAAI,IAAJ,CAASmI,IAAT,EAAeC,SAAf,EAA0BC,YAA1B,EAAwCjD,aAAxC,CAAf;AACA,UAAMC,iBAAiB,GAAGnF,wBAAI,CAACsD,OAAL,CAAapD,OAAO,CAACC,GAAR,EAAb,EAA4BJ,SAA5B,CAA1B;AACA,UAAMqF,IAAI,GAAG,MAAMtF,MAAM,CAACsI,qBAAP,CAA6BjD,iBAA7B,CAAnB;;AAEA/E,IAAAA,OAAO,CAACC,GAAR,IAAe+E,IAAI,CAACxD,0BAApB;;AACA,QAAIwD,IAAI,CAACxD,MAAL,KAAgB,CAApB,EAAuB;AACrB;AACAxB,MAAAA,OAAO,CAACC,GAAR,CAAY,sBAAZ;AACA;AACD;;AAED,UAAMP,MAAM,CAAC0F,YAAP,CAAoBJ,IAApB,CAAN;AACA,WAAOtF,MAAM,CAACuI,kBAAP,EAAP;AACD;;AAED9H,EAAAA,YACmB0H,MACAC,WACjBC,cACiBjD,eACjBQ,GAAG,GAAG,IAAIC,IAAJ;SAJWsC;SACAC;SAEAhD;SA7BFU;SACAF;AAyBE,aAAA,GAAAuC,IAAA;AACA,kBAAA,GAAAC,SAAA;AAEA,sBAAA,GAAAhD,aAAA;AAGjB,SAAKU,GAAL,GAAW,IAAI0C,WAAJ,CAAW;AACpBL,MAAAA,IAAI,EAAE,KAAKA,IADS;AAEpBtI,MAAAA,KAAK,EAAEwI;AAFa,KAAX,CAAX;AAIA,SAAKzC,GAAL,GAAWA,GAAX;AACD;;AAES,MAANK,MAAM;AACR,2BAAuB,KAAKL,GAAL,CAASM,OAAT,IAAvB;AACD;AAED;;;;;AAGW,MAAPC,OAAO;AACT,uCAAmC,KAAKP,GAAL,CAASQ,YAAT,IAAnC;AACD;;AAE0B,QAArBkC,qBAAqB,CAACrI,SAAD;AACzB,UAAMwI,OAAO,GAAmB,EAAhC;;;;;;;AAEA,0CAAyBzE,eAAe,CAAC/D,SAAD,CAAxC,iHAAqD;AAAA,cAApCgD,IAAoC;AACnDwF,QAAAA,OAAO,CAACjC,IAAR,CAAa;AACXkC,UAAAA,MAAM,EACJzF,IAAI,CAACqB,MAAL,KAAgB,WAAhB,GACI,QADJ,GAEIrB,IAAI,CAACqB,MAAL,KAAgB,SAAhB,GACA,QADA,GAEA,QANK;AAOXqE,UAAAA,QAAQ,EAAE1F,IAAI,CAACoB,YAPJ;AAQXI,UAAAA,OAAO,EAAExB,IAAI,CAACwB;AARH,SAAb;AAUD;;;;;;;;;;;;;;;;AAED,WAAOgE,OAAP;AACD;;AAEiB,QAAZ/C,YAAY,CAACJ,IAAD;AAChB,WAAO,KAAKQ,GAAL,CAAS8C,OAAT,CAAiBjB,MAAjB,CACL,KAAKS,SADA,EAEL,KAAKnC,MAFA,EAGL,KAAKE,OAHA,EAILb,IAJK,EAKL;AACE;AACAuD,MAAAA,YAAY,EAAE,KAAKzD;AAFrB,KALK,CAAP;AAUD;;AAEDmD,EAAAA,kBAAkB;AAChB,WAAO,KAAKzC,GAAL,CAASgD,aAAT,CAAuBnB,MAAvB,CACL,KAAKS,SADA,EAEL,KAAKnC,MAFA,EAGL,KAAKb,aAHA,EAIL,KAAKe,OAJA,CAAP;AAMD;;;;AC5FI,MAAM4C,4BAA4B,GAAG,SAArC;AAEP,MAAMC,IAAI,GAAG,IAAIC,wBAAJ,CAAS;AACpBC,EAAAA,OAAO,EAAE;AAEP;AACA;AACA;AACA;AAAEC,IAAAA,aAAa,EAAE;AAAjB,GALO,EAMP;AAAEC,IAAAA,WAAW,EAAE;AAAEC,MAAAA,KAAK,EAAE,CAAC,gBAAD,EAAmB,cAAnB;AAAT;AAAf,GANO;AADW,CAAT,CAAb;AAyBO,eAAeC,WAAf,CAA2BC,KAA3B,EAA0CC,OAA1C;AACL,QAAM;AAAErI,IAAAA;AAAF,MAAe,IAAIsI,WAAJ,CAAUF,KAAV,EAAiBG,MAAtC;AACA,QAAMhH,GAAG,GAAGvB,QAAQ,CAACwI,aAAT,CAAuB,KAAvB,CAAZ;;AACA,MAAI,CAACjH,GAAL,EAAU;AACR,UAAM,IAAI9D,KAAJ,CAAU,mDAAV,CAAN;AACD;;AAEDgL,EAAAA,mBAAmB,CAAClH,GAAD,CAAnB;AACAmH,EAAAA,qBAAqB,CAACnH,GAAD,EAAM8G,OAAO,CAACM,cAAd,CAArB;;AAEA,MAAIN,OAAO,CAACO,qBAAR,KAAkC,IAAtC,EAA4C;AAC1C,WAAOrH,GAAG,CAACsH,SAAX;AACD,GAFD,MAEO;AACL,WAAO,CAAC,MAAMhB,IAAI,CAACiB,QAAL,CAAcvH,GAAG,CAACsH,SAAlB,CAAP,EAAqCjI,IAA5C;AACD;AACF;AAED,MAAMmI,YAAY,GAAG,CAAC,MAAD,EAAS,QAAT,CAArB;;AAEA,SAASL,qBAAT,CAA+BnH,GAA/B,EAAmDoH,cAAnD;AACE,QAAMK,WAAW,GAAGC,UAAU,CAACN,cAAD,CAA9B;;AACA,MAAI,CAACK,WAAL,EAAkB;AAChB,UAAM,IAAIvL,KAAJ,IAAakL,qCAAb,CAAN;AACD;;AAED,OAAK,MAAMO,IAAX,IAAmBH,YAAnB,EAAiC;AAC/B,UAAM7I,OAAO,GAAGiJ,KAAK,CAACC,IAAN,CAAW7H,GAAG,CAAC8H,gBAAJ,KAAqCH,OAArC,CAAX,CAAhB;;AAEA,SAAK,MAAMI,EAAX,IAAiBpJ,OAAjB,EAA0B;AACxB,YAAMyC,KAAK,GAAGsG,UAAU,CAACK,EAAE,CAACC,YAAH,CAAgBL,IAAhB,CAAD,CAAxB;;AACA,UAAI,CAACvG,KAAL,EAAY;AACV;AACD;;AAED,UAAI,CAAC6G,WAAW,CAAC7G,KAAD,EAAQqG,WAAR,CAAhB,EAAsC;AACpC;AACD;;AAEDM,MAAAA,EAAE,CAACG,YAAH,CAAgBP,IAAhB,EAAsB,cAAtB;AACD;AACF;AACF;;AAED,SAASD,UAAT,CAAoBtG,KAApB;AACE,MAAIA,KAAK,IAAI,IAAb,EAAmB;AACjB,WAAO,IAAP;AACD;;AAED,MAAI;AACF,WAAO+G,mBAAU,CAAC/G,KAAD,CAAjB;AACD,GAFD,CAEE,gBAAM;AACN,WAAO,IAAP;AACD;AACF;;AAED,SAAS6G,WAAT,CAAqBG,IAArB,EAAiDC,KAAjD;AACE,MAAID,IAAI,CAACE,GAAL,KAAaD,KAAK,CAACC,GAAvB,EAA4B;AAC1B,WAAO,KAAP;AACD;;AAED,MAAIF,IAAI,CAACG,IAAL,KAAcF,KAAK,CAACE,IAAxB,EAA8B;AAC5B,WAAO,KAAP;AACD;;AAED,MAAIH,IAAI,CAACI,KAAL,KAAeH,KAAK,CAACG,KAAzB,EAAgC;AAC9B,WAAO,KAAP;AACD;;AAED,MAAI,WAAWJ,IAAf,EAAqB;AACnB,QAAI,WAAWC,KAAf,EAAsB;AACpB,UAAID,IAAI,CAACK,KAAL,KAAeJ,KAAK,CAACI,KAAzB,EAAgC;AAC9B,eAAO,KAAP;AACD;AACF;AACF;;AAED,SAAO,IAAP;AACD;;AAED,SAASvB,mBAAT,CAA6BlH,GAA7B;AACE;AACA,QAAM0I,KAAK,GAAG1I,GAAG,CAACgI,YAAJ,CAAiB,OAAjB,CAAd;;AAEA,QAAMW,MAAM,GAAG3I,GAAG,CAACgI,YAAJ,CAAiB,QAAjB,CAAf;AAEAhI,EAAAA,GAAG,CAACkI,YAAJ,CAAiB,SAAjB,SAAmCQ,SAASC,QAA5C;AACD;;AChHD;;AAEO,MAAMC,sBAAsB,GAAG,OACpCrL,SADoC,EAEpCsL,YAFoC,EAGpCC,UAHoC;AAKpC,QAAMC,OAAO,GAAGvL,wBAAI,CAACC,IAAL,CAAUF,SAAV,EAAqB,KAArB,CAAhB;AAEA,QAAMyL,cAAc,GAClBF,UAAU,KAAKvM,SAAf,GACI,CAAC,MAAMyF,sBAAE,CAACC,QAAH,CAAY6G,UAAZ,EAAwB,MAAxB,CAAP,EAAwCG,IAAxC,GAA+C7G,KAA/C,CAAqD,QAArD,CADJ,GAEI,EAHN;AAKA,QAAM8G,KAAK,GAAG,MAAMC,wBAAI,CAAC,UAAD,EAAa;AACnCxL,IAAAA,GAAG,EAAEoL;AAD8B,GAAb,CAAxB;AAIA,QAAM9N,YAAY,CAChBiO,KAAK,CAACpJ,GAAN,CAAWS,IAAD,IAAU;AAClB3C,IAAAA,OAAO,CAACC,GAAR,eAA0B0C,SAA1B;AACA,UAAM6I,QAAQ,GAAG5L,wBAAI,CAACC,IAAL,CAAUsL,OAAV,EAAmBxI,IAAnB,CAAjB;AAEA,UAAM8I,WAAW,GAAG,MAAMrH,sBAAE,CAACC,QAAH,CAAYmH,QAAZ,EAAsB,MAAtB,CAA1B;AACA,UAAME,YAAY,GAAG,MAAM1C,WAAW,CAACyC,WAAD,EAAc;AAClDjC,MAAAA,cAAc,EAAEyB,YADkC;AAElDxB,MAAAA,qBAAqB,EAAE2B,cAAc,CAACO,QAAf,CAAwBhJ,IAAxB;AAF2B,KAAd,CAAtC;AAIA,UAAMyB,sBAAE,CAAC1B,SAAH,CAAa8I,QAAb,EAAuBE,YAAvB,CAAN;AACD,GAVD,CADgB,CAAlB;AAaD,CA7BM;;ACJP,MAAME,4BAA4B,GAAIC,SAAD;AACnC,QAAMC,GAAG,GAAGD,SAAS,CAAC7M,OAAV,CAAkB,QAAlB,EAA4B,EAA5B,CAAZ;AAEA;kBACgB8M;CADhB;AAGD,CAND;;AAQA,MAAMC,qBAAqB,GACzBC,KAD4B;;;EAK5BA,KAAK,CACJ9J,GADD,CACM+J,EAAD,UAAcA,wBAAwBA,8BAD3C,EAECpM,IAFD,CAEM,KAFN;;CALF;;AAWA,MAAMqM,qBAAqB,GACzBF,KAD4B;;;EAK5BA,KAAK,CACJ9J,GADD,CACM+J,EAAD,UAAcA,wBAAwBA,8BAD3C,EAECpM,IAFD,CAEM,KAFN;;CALF;;AAWA,MAAMsM,gCAAgC,GACpCH,KADuC;;;EAKvCA,KAAK,CAAC9J,GAAN,CAAW+J,EAAD,UAAcA,4BAAxB,EAAsDpM,IAAtD,CAA2D,KAA3D;;;CALF;;AAUO,MAAMuM,kBAAkB,GAAG,OAChCzM,SADgC,EAEhCqM,KAFgC;AAIhC,QAAMK,OAAO,GAAGzM,wBAAI,CAACC,IAAL,CAAUF,SAAV,EAAqB,KAArB,CAAhB;AACA,QAAM2M,OAAO,GAAG1M,wBAAI,CAACC,IAAL,CAAUwM,OAAV,EAAmB,UAAnB,CAAhB;AACA,QAAMjI,sBAAE,CAACmI,UAAH,CAAcD,OAAd,CAAN;AACA,QAAMlI,sBAAE,CAAC1B,SAAH,CAAa4J,OAAb,EAAsBP,qBAAqB,CAACC,KAAD,CAA3C,CAAN;AAEA,QAAMQ,OAAO,GAAG5M,wBAAI,CAACC,IAAL,CAAUwM,OAAV,EAAmB,WAAnB,CAAhB;AACA,QAAMjI,sBAAE,CAACmI,UAAH,CAAcC,OAAd,CAAN;AACA,QAAMpI,sBAAE,CAAC1B,SAAH,CAAa8J,OAAb,EAAsBN,qBAAqB,CAACF,KAAD,CAA3C,CAAN;AAEA,QAAMS,OAAO,GAAG7M,wBAAI,CAACC,IAAL,CAAUwM,OAAV,EAAmB,YAAnB,CAAhB;AACA,QAAMjI,sBAAE,CAACmI,UAAH,CAAcE,OAAd,CAAN;AACA,QAAMrI,sBAAE,CAAC1B,SAAH,CAAa+J,OAAb,EAAsBN,gCAAgC,CAACH,KAAD,CAAtD,CAAN;AACD,CAhBM;AAkBA,MAAMU,kBAAkB,GAAG,MAAO/M,SAAP;AAChC,QAAMgN,OAAO,GAAG/M,wBAAI,CAACC,IAAL,CAAUF,SAAV,EAAqB,KAArB,CAAhB;AACA,QAAM0M,OAAO,GAAGzM,wBAAI,CAACC,IAAL,CAAUF,SAAV,EAAqB,KAArB,CAAhB;AACA,QAAMqM,KAAK,GAAG,CAAC,MAAMT,wBAAI,CAAC,UAAD,EAAa;AAAExL,IAAAA,GAAG,EAAE4M;AAAP,GAAb,CAAX,EACXzK,GADW,CAETtC,IAAD,IAAUA,IAAI,CAAC8E,KAAL,CAAW,CAAX,EAAc,CAAC,CAAf,CAFA;AAAA,IAIXkI,IAJW,EAAd;;AAMA,OAAK,MAAMX,EAAX,IAAiBD,KAAjB,EAAwB;AACtB,UAAMvK,IAAI,GAAG,MAAM2C,sBAAE,CAACC,QAAH,CAAYzE,wBAAI,CAACC,IAAL,CAAU8M,OAAV,KAAsBV,QAAtB,CAAZ,CAAnB;AACA,UAAMY,UAAU,GAAGjN,wBAAI,CAACC,IAAL,CAAUwM,OAAV,KAAsBJ,OAAtB,CAAnB;AACA,UAAM7H,sBAAE,CAACmI,UAAH,CAAcM,UAAd,CAAN;AACA,UAAMzI,sBAAE,CAAC1B,SAAH,CACJmK,UADI,EAEJjB,4BAA4B,CAACnK,IAAI,CAACmB,QAAL,EAAD,CAFxB,CAAN;AAID;;AAED,QAAMwJ,kBAAkB,CAACzM,SAAD,EAAYqM,KAAZ,CAAxB;AACD,CApBM;;ACnDP;;;;AAGA,MAAMc,WAAW,GAAGhN,OAAO,CAACiN,GAAR,CAAYD,WAAhC;AACA,MAAME,cAAc,GAAGlN,OAAO,CAACiN,GAAR,CAAYC,cAAnC;AACA,MAAMC,eAAe,GAAGnN,OAAO,CAACiN,GAAR,CAAYE,eAApC;AAEA;;;;AAGA,MAAMC,mBAAmB,GAAGpN,OAAO,CAACiN,GAAR,CAAYG,mBAAxC;AACA,MAAMC,qBAAqB,GAAGrN,OAAO,CAACiN,GAAR,CAAYI,qBAA1C;AACA,MAAMC,WAAW,GAAGtN,OAAO,CAACiN,GAAR,CAAYK,WAAhC;AACA,MAAMC,iBAAiB,GAAGvN,OAAO,CAACiN,GAAR,CAAYM,iBAAtC;AAEA;;;;AAGA,MAAMC,mBAAmB,GAAGxN,OAAO,CAACiN,GAAR,CAAYO,mBAAxC;AACA,MAAMC,iBAAiB,GAAGzN,OAAO,CAACiN,GAAR,CAAYQ,iBAAtC;AACA,MAAMC,gBAAgB,GAAG1N,OAAO,CAACiN,GAAR,CAAYS,gBAArC;AACA,MAAMC,qBAAqB,GAAG3N,OAAO,CAACiN,GAAR,CAAYU,qBAA1C;AAEA,KAAKC,yBAAK,CACPC,UADE,CACS,WADT,EAEF3K,OAFE,CAGD,cAHC,EAID,6CAJC,EAKD;AACErB,EAAAA,MAAM,EAAE;AACNiM,IAAAA,OAAO,EAAE,KADH;AAENC,IAAAA,OAAO,EAAE,CAAC,KAAD,EAAQ,KAAR,CAFH;AAGNC,IAAAA,QAAQ,EAAE;AAHJ;AADV,CALC,EAYD,OAAO;AAAEnM,EAAAA;AAAF,CAAP;AACE4B,EAAAA,aAAa,CAACyJ,cAAD,EAAiB,gBAAjB,CAAb;AACAzJ,EAAAA,aAAa,CAACuJ,WAAD,EAAc,aAAd,CAAb;AACAvJ,EAAAA,aAAa,CAAC0J,eAAD,EAAkB,iBAAlB,CAAb;AAEA,QAAM5N,eAAe,CAACC,UAAhB,CACJ0N,cADI,EAEJF,WAFI,EAGJG,eAHI,EAIJtL,MAJI,CAAN;AAMD,CAvBA,EAyBFqB,OAzBE,CA0BD,cA1BC,EA2BD,wCA3BC,EA4BD;AACE+K,EAAAA,KAAK,EAAE;AACLH,IAAAA,OAAO,EAAEnF,4BADJ;AAEL5F,IAAAA,IAAI,EAAE,QAFD;AAGLiL,IAAAA,QAAQ,EAAE;AAHL,GADT;AAME5C,EAAAA,UAAU,EAAE;AACVrI,IAAAA,IAAI,EAAE,QADI;AAEViL,IAAAA,QAAQ,EACN;AAHQ;AANd,CA5BC,EAwCD,OAAO;AAAEC,EAAAA,KAAF;AAAS7C,EAAAA;AAAT,CAAP;AACE3H,EAAAA,aAAa,CAAC0J,eAAD,EAAkB,iBAAlB,CAAb;AAEA,QAAMjC,sBAAsB,CAACiC,eAAD,EAAkBc,KAAlB,EAAyB7C,UAAzB,CAA5B;AACD,CA5CA,EA8CFlI,OA9CE,CA+CD,gBA/CC,EAgDD,iEAhDC,EAiDD,EAjDC,EAkDD;AACEO,EAAAA,aAAa,CAAC0J,eAAD,EAAkB,iBAAlB,CAAb;AAEA,OAAKP,kBAAkB,CAACO,eAAD,CAAlB,CAAoCe,KAApC,CAA2CC,CAAD;AAC7C;AACAjO,IAAAA,OAAO,CAACkO,KAAR,CAAcD,CAAd;AACAnO,IAAAA,OAAO,CAACqO,IAAR,CAAa,CAAb;AACD,GAJI,CAAL;AAKD,CA1DA,EA4DFnL,OA5DE,CA6DD,WA7DC,EA8DD,iDA9DC,EA+DD,EA/DC,EAgED;AACEO,EAAAA,aAAa,CAAC8J,iBAAD,EAAoB,mBAApB,CAAb;AACA9J,EAAAA,aAAa,CAAC2J,mBAAD,EAAsB,qBAAtB,CAAb;AACA3J,EAAAA,aAAa,CAAC0J,eAAD,EAAkB,iBAAlB,CAAb;AAEA,QAAMrF,YAAY,CAACtI,UAAb,CACJ8N,WADI,WACJA,WADI,GACW,oBADX,EAEJgB,MAAM,CAACf,iBAAD,CAFF,EAGJH,mBAHI,EAIJC,qBAJI,WAIJA,qBAJI,GAIqB,MAJrB,EAKJF,eALI,CAAN;AAOD,CA5EA,EA8EFjK,OA9EE,CA+ED,WA/EC,EAgFD,gDAhFC,EAiFD,EAjFC,EAkFD;AACEO,EAAAA,aAAa,CAAC+J,mBAAD,EAAsB,qBAAtB,CAAb;AACA/J,EAAAA,aAAa,CAAC0J,eAAD,EAAkB,iBAAlB,CAAb;AAEA,QAAMtI,YAAY,CAACrF,UAAb,CACJiO,iBADI,WACJA,iBADI,GACiB,OADjB,EAEJC,gBAFI,WAEJA,gBAFI,GAEgB,UAFhB,EAGJF,mBAHI,EAIJG,qBAJI,WAIJA,qBAJI,GAIqB,MAJrB,EAKJR,eALI,CAAN;AAOD,CA7FA,EA+FFoB,aA/FE,GAgGFC,MAhGE,GAiGFC,IAjGE,GAkGFC,KAlGE,EAAL;;"}
@@ -373,17 +373,16 @@ function mustBeDefined(value, name) {
373
373
  }
374
374
  }
375
375
 
376
- const targetDir = path.resolve(process.cwd(), 'packages', 'icons');
377
376
  /**
378
377
  * dir 内で変更があったファイル情報を for await で回せるようにするやつ
379
378
  */
380
379
 
381
- function getChangedFiles() {
380
+ function getChangedFiles(_x) {
382
381
  return _getChangedFiles.apply(this, arguments);
383
382
  }
384
383
 
385
384
  function _getChangedFiles() {
386
- _getChangedFiles = _wrapAsyncGenerator(function* (dir = targetDir) {
385
+ _getChangedFiles = _wrapAsyncGenerator(function* (dir) {
387
386
  if (!existsSync(dir)) throw new Error(`icons-cli: target directory not found (${dir})`);
388
387
  const gitStatus = yield _awaitAsyncGenerator(collectGitStatus());
389
388
 
@@ -419,9 +418,10 @@ async function collectGitStatus() {
419
418
  }
420
419
 
421
420
  class GithubClient {
422
- static async runFromCli(repoOwner, repoName, token, defaultBranch) {
421
+ static async runFromCli(repoOwner, repoName, token, defaultBranch, outputDir) {
423
422
  const client = new this(repoOwner, repoName, token, defaultBranch);
424
- const diff = await client.createTreeFromDiff(); // eslint-disable-next-line no-console
423
+ const outputDirFullPath = path.resolve(process.cwd(), outputDir);
424
+ const diff = await client.createTreeFromDiff(outputDirFullPath); // eslint-disable-next-line no-console
425
425
 
426
426
  console.log(`${diff.length} files are changed`);
427
427
 
@@ -463,7 +463,7 @@ class GithubClient {
463
463
  return `[icons-cli] Update icons ${this.now.toDateString()}`;
464
464
  }
465
465
 
466
- async createTreeFromDiff() {
466
+ async createTreeFromDiff(outputDir) {
467
467
  const tree = [];
468
468
  var _iteratorAbruptCompletion = false;
469
469
  var _didIteratorError = false;
@@ -471,7 +471,7 @@ class GithubClient {
471
471
  var _iteratorError;
472
472
 
473
473
  try {
474
- for (var _iterator = _asyncIterator(getChangedFiles()), _step; _iteratorAbruptCompletion = !(_step = await _iterator.next()).done; _iteratorAbruptCompletion = false) {
474
+ for (var _iterator = _asyncIterator(getChangedFiles(outputDir)), _step; _iteratorAbruptCompletion = !(_step = await _iterator.next()).done; _iteratorAbruptCompletion = false) {
475
475
  const file = _step.value;
476
476
  const item = {
477
477
  path: file.relativePath,
@@ -573,9 +573,10 @@ class GithubClient {
573
573
  }
574
574
 
575
575
  class GitlabClient {
576
- static async runFromCli(host, projectId, privateToken, defaultBranch) {
576
+ static async runFromCli(host, projectId, privateToken, defaultBranch, outputDir) {
577
577
  const client = new this(host, projectId, privateToken, defaultBranch);
578
- const diff = await client.createActionsFromDiff(); // eslint-disable-next-line no-console
578
+ const outputDirFullPath = path.resolve(process.cwd(), outputDir);
579
+ const diff = await client.createActionsFromDiff(outputDirFullPath); // eslint-disable-next-line no-console
579
580
 
580
581
  console.log(`${diff.length} files are changed`);
581
582
 
@@ -617,7 +618,7 @@ class GitlabClient {
617
618
  return `[icons-cli] Update icons ${this.now.toDateString()}`;
618
619
  }
619
620
 
620
- async createActionsFromDiff() {
621
+ async createActionsFromDiff(outputDir) {
621
622
  const actions = [];
622
623
  var _iteratorAbruptCompletion = false;
623
624
  var _didIteratorError = false;
@@ -625,7 +626,7 @@ class GitlabClient {
625
626
  var _iteratorError;
626
627
 
627
628
  try {
628
- for (var _iterator = _asyncIterator(getChangedFiles()), _step; _iteratorAbruptCompletion = !(_step = await _iterator.next()).done; _iteratorAbruptCompletion = false) {
629
+ for (var _iterator = _asyncIterator(getChangedFiles(outputDir)), _step; _iteratorAbruptCompletion = !(_step = await _iterator.next()).done; _iteratorAbruptCompletion = false) {
629
630
  const file = _step.value;
630
631
  actions.push({
631
632
  action: file.status === 'untracked' ? 'create' : file.status === 'deleted' ? 'delete' : 'update',
@@ -910,9 +911,11 @@ void yargs.scriptName('icons-cli').command('figma:export', 'Load all icons from
910
911
  }).command('gitlab:mr', 'Create a merge request in the name of icons-cli', {}, async () => {
911
912
  mustBeDefined(GITLAB_PROJECT_ID, 'GITLAB_PROJECT_ID');
912
913
  mustBeDefined(GITLAB_ACCESS_TOKEN, 'GITLAB_ACCESS_TOKEN');
913
- await GitlabClient.runFromCli(GITLAB_HOST != null ? GITLAB_HOST : 'https://gitlab.com', Number(GITLAB_PROJECT_ID), GITLAB_ACCESS_TOKEN, GITLAB_DEFAULT_BRANCH != null ? GITLAB_DEFAULT_BRANCH : 'main');
914
+ mustBeDefined(OUTPUT_ROOT_DIR, 'OUTPUT_ROOT_DIR');
915
+ await GitlabClient.runFromCli(GITLAB_HOST != null ? GITLAB_HOST : 'https://gitlab.com', Number(GITLAB_PROJECT_ID), GITLAB_ACCESS_TOKEN, GITLAB_DEFAULT_BRANCH != null ? GITLAB_DEFAULT_BRANCH : 'main', OUTPUT_ROOT_DIR);
914
916
  }).command('github:pr', 'Create a pull request in the name of icons-cli', {}, async () => {
915
917
  mustBeDefined(GITHUB_ACCESS_TOKEN, 'GITHUB_ACCESS_TOKEN');
916
- await GithubClient.runFromCli(GITHUB_REPO_OWNER != null ? GITHUB_REPO_OWNER : 'pixiv', GITHUB_REPO_NAME != null ? GITHUB_REPO_NAME : 'charcoal', GITHUB_ACCESS_TOKEN, GITHUB_DEFAULT_BRANCH != null ? GITHUB_DEFAULT_BRANCH : 'main');
918
+ mustBeDefined(OUTPUT_ROOT_DIR, 'OUTPUT_ROOT_DIR');
919
+ await GithubClient.runFromCli(GITHUB_REPO_OWNER != null ? GITHUB_REPO_OWNER : 'pixiv', GITHUB_REPO_NAME != null ? GITHUB_REPO_NAME : 'charcoal', GITHUB_ACCESS_TOKEN, GITHUB_DEFAULT_BRANCH != null ? GITHUB_DEFAULT_BRANCH : 'main', OUTPUT_ROOT_DIR);
917
920
  }).demandCommand().strict().help().parse();
918
921
  //# sourceMappingURL=index.modern.js.map