From 873a0550db1ed334a041f4a4fc3f7da27cf25888 Mon Sep 17 00:00:00 2001 From: Calvin Wilkinson Date: Thu, 27 Jun 2024 09:36:41 +0100 Subject: [PATCH 1/7] Start work for issue #31 From 0b49a5d19968bed51813108d4b844ddcedf8aa13 Mon Sep 17 00:00:00 2001 From: Calvin Wilkinson Date: Thu, 27 Jun 2024 09:50:12 +0100 Subject: [PATCH 2/7] enhance: catch json parsing errors and print friendly error msg --- src/json-version-updater.ts | 26 ++++++++++++++++---------- src/pr-creator.ts | 9 ++++++++- src/release-prepper.ts | 20 ++++++++++++++++++-- 3 files changed, 42 insertions(+), 13 deletions(-) diff --git a/src/json-version-updater.ts b/src/json-version-updater.ts index 3a5a157..b02f052 100644 --- a/src/json-version-updater.ts +++ b/src/json-version-updater.ts @@ -12,7 +12,7 @@ export class JsonVersionUpdater { * @param newVersion The new version. * @throws {Error} Thrown if the version file does not exist or the version file does not contain a 'version' property. */ - public updateVersion(settings: PrepareReleaseSettings, newVersion: string) { + public updateVersion(settings: PrepareReleaseSettings, newVersion: string): void { ParamGuards.isNothing(newVersion, "newVersion null, empty, or undefined."); const versionFilePath = settings.versionFilePath ?? ""; @@ -22,18 +22,24 @@ export class JsonVersionUpdater { } const versionFileContent = Deno.readTextFileSync(versionFilePath); - const versionConfig = JSON.parse(versionFileContent); - const propChain = settings.versionJSONKeyPath?.split(".").map((i) => i.trim()) ?? ["version"]; - - const result = this.setPropertyValue(versionConfig, propChain, newVersion); - - if (result[0] === false) { - console.log(`%c${result[1]}`, "color: red;"); + try { + const versionConfig = JSON.parse(versionFileContent); + const propChain = settings.versionJSONKeyPath?.split(".").map((i) => i.trim()) ?? ["version"]; + + const result = this.setPropertyValue(versionConfig, propChain, newVersion); + + if (result[0] === false) { + console.log(`%c${result[1]}`, "color: red;"); + Deno.exit(1); + } + + Deno.writeTextFileSync(versionFilePath, `${JSON.stringify(versionConfig, null, 4)}\n`); + } catch (error) { + const errorMsg = `There was a problem parsing the file '${versionFilePath}'.\n${error.message}`; + console.log(`%c${errorMsg}`, "color: red;"); Deno.exit(1); } - - Deno.writeTextFileSync(versionFilePath, `${JSON.stringify(versionConfig, null, 4)}\n`); } /** diff --git a/src/pr-creator.ts b/src/pr-creator.ts index 387ca13..de84da0 100644 --- a/src/pr-creator.ts +++ b/src/pr-creator.ts @@ -150,8 +150,15 @@ export class PrCreator { } const settingJsonData = Deno.readTextFileSync(settingsFilePath); + let settings: CreatePrSettings; - const settings = JSON.parse(settingJsonData); + try { + settings = JSON.parse(settingJsonData); + } catch (error) { + const errorMsg = `There was a problem parsing the file '${settingsFileName}'.\n${error.message}`; + console.log(crayon.red(`${errorMsg}`)); + Deno.exit(1); + } if (!this.validSettingsObj(settings)) { const errorMsg = `The settings file '${settingsFileName}' does not have the correct properties.` + diff --git a/src/release-prepper.ts b/src/release-prepper.ts index 640ed6f..0771e44 100644 --- a/src/release-prepper.ts +++ b/src/release-prepper.ts @@ -251,8 +251,15 @@ export class ReleasePrepper { } const settingJsonData = Deno.readTextFileSync(settingsFilePath); + let settings: PrepareReleaseSettings; - const settings = JSON.parse(settingJsonData); + try { + settings = JSON.parse(settingJsonData); + } catch (error) { + const errorMsg = `There was a problem parsing the file '${settingsFileName}'.\n${error.message}`; + console.log(crayon.red(`${errorMsg}`)); + Deno.exit(1); + } if (!this.validSettingsObj(settings)) { const errorMsg = `The settings file '${settingsFileName}' does not have the correct properties.` + @@ -500,7 +507,16 @@ export class ReleasePrepper { const settingJsonData = Deno.readTextFileSync(releaseType.genReleaseSettingsFilePath); - const settings = JSON.parse(settingJsonData) as GeneratorSettings; + let settings: GeneratorSettings; + + try { + settings = JSON.parse(settingJsonData); + } catch (error) { + const errorMsg = `There was a problem parsing the file '${releaseType.genReleaseSettingsFilePath}'.\n${error.message}`; + console.log(crayon.red(`${errorMsg}`)); + Deno.exit(1); + } + settings.version = version; settings.githubTokenEnvVarName = tokenEnvVarName; From 5494a31d2e02acfaf9e955ab8d402ff067782b84 Mon Sep 17 00:00:00 2001 From: Calvin Wilkinson Date: Thu, 27 Jun 2024 09:50:35 +0100 Subject: [PATCH 3/7] ci: catch json parse errors --- .github/cicd/core/VersionPuller.ts | 23 +++++++++++++++-------- .github/cicd/scripts/deno-build.ts | 12 +++++++++--- 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/.github/cicd/core/VersionPuller.ts b/.github/cicd/core/VersionPuller.ts index 7214268..a757c5f 100644 --- a/.github/cicd/core/VersionPuller.ts +++ b/.github/cicd/core/VersionPuller.ts @@ -24,7 +24,7 @@ export class VersionPuller { const configFiles = [...entries].map((entry) => entry); if (configFiles.length === 0) { - const errorMsg = `No '${this.denoConfig}' files found.`; + const errorMsg = `::error::No '${this.denoConfig}' files found.`; Utils.printNotice(errorMsg); Deno.exit(1); } @@ -33,15 +33,22 @@ export class VersionPuller { const filePath = configFiles[0].path; const fileData = Deno.readTextFileSync(filePath); - const jsonObj = JSON.parse(fileData); - // If the object contains a property with the name version - if (jsonObj.version === undefined) { - const errorMsg = `The file '${fileName}' does not contain a version property.`; - Utils.printError(errorMsg); + try { + const jsonObj = JSON.parse(fileData); + + // If the object contains a property with the name version + if (jsonObj.version === undefined) { + const errorMsg = `::error::The file '${fileName}' does not contain a version property.`; + Utils.printError(errorMsg); + Deno.exit(1); + } + + return jsonObj.version; + } catch (error) { + const errorMsg = `There was a problem parsing the file '${fileName}'.\n${error.message}`; + console.log(`::error::${errorMsg}`); Deno.exit(1); } - - return jsonObj.version; } } diff --git a/.github/cicd/scripts/deno-build.ts b/.github/cicd/scripts/deno-build.ts index bcc9514..ef3d567 100644 --- a/.github/cicd/scripts/deno-build.ts +++ b/.github/cicd/scripts/deno-build.ts @@ -23,9 +23,15 @@ const getSettings = (settingsFilePath: string): DenoBuildSettings | undefined=> const settingJsonData = Deno.readTextFileSync(settingsFilePath); - const settings = JSON.parse(settingJsonData); - - return validSettingsObj(settings) ? settings : undefined; + try { + const settings = JSON.parse(settingJsonData); + + return validSettingsObj(settings) ? settings : undefined; + } catch (error) { + const errorMsg = `There was a problem parsing the file '${settingsFilePath}'.\n${error.message}`; + console.log(errorMsg); + Deno.exit(1); + } } const validSettingsObj = (settingsObj: unknown): settingsObj is DenoBuildSettings => { From 7e2d7a98d529430a8d5024ff7583977c0be167fd Mon Sep 17 00:00:00 2001 From: Calvin Wilkinson Date: Thu, 27 Jun 2024 10:15:14 +0100 Subject: [PATCH 4/7] deps,refactor: replace crayon dependency with built in deno log colors --- .github/cicd/scripts/deno-build.ts | 4 +- deps.ts | 2 - src/core/Utils.ts | 5 +- src/core/console-log-color.ts | 52 ++++++++++++++ src/pr-creator.ts | 49 ++++++------- src/release-prepper.ts | 111 +++++++++++++++-------------- 6 files changed, 137 insertions(+), 86 deletions(-) create mode 100644 src/core/console-log-color.ts diff --git a/.github/cicd/scripts/deno-build.ts b/.github/cicd/scripts/deno-build.ts index ef3d567..3e9caec 100644 --- a/.github/cicd/scripts/deno-build.ts +++ b/.github/cicd/scripts/deno-build.ts @@ -4,7 +4,7 @@ import { existsSync } from "https://deno.land/std@0.224.0/fs/exists.ts"; import { Guards } from "../../../src/core/guards.ts"; import { DenoBuildSettings } from "./deno-build-settings.ts"; import { checkAll } from "./deno-check.ts"; -import { crayon } from "https://deno.land/x/crayon@3.3.3/mod.ts"; +import { ConsoleLogColor } from "../../../src/core/console-log-color.ts"; let arg = (Deno.args[0] ?? "").trim(); @@ -54,7 +54,7 @@ const settings = getSettings(settingsFilePath); const ignores = settings?.ignoreExpressions.map((expression) => new RegExp(expression)); -console.log(crayon.cyan(`Checking all files in '${Deno.cwd()}' . . .\n`)); +ConsoleLogColor.cyan(`Checking all files in '${Deno.cwd()}' . . .\n`); const results = await checkAll(Deno.cwd(), { noNpm: false, diff --git a/deps.ts b/deps.ts index a69b88b..e803eac 100644 --- a/deps.ts +++ b/deps.ts @@ -15,7 +15,6 @@ import { IssueModel, PullRequestModel } from "https://deno.land/x/kd_clients@v1. import { IssueOrPRRequestData } from "https://deno.land/x/kd_clients@v1.0.0-preview.13/core/IssueOrPRRequestData.ts"; import { Confirm, Input, Secret, Select } from "https://deno.land/x/cliffy@v1.0.0-rc.4/prompt/mod.ts"; import { Command } from "https://deno.land/x/cliffy@v1.0.0-rc.4/command/mod.ts"; -import { crayon } from "https://deno.land/x/crayon@3.3.3/mod.ts"; // ----EXPORTS---- @@ -34,4 +33,3 @@ export type { IssueModel, PullRequestModel }; export type { IssueOrPRRequestData }; export { Confirm, Input, Secret, Select }; export { Command }; -export { crayon }; diff --git a/src/core/Utils.ts b/src/core/Utils.ts index 3a4c8e6..c39a4e6 100644 --- a/src/core/Utils.ts +++ b/src/core/Utils.ts @@ -1,5 +1,4 @@ import { ParamGuards } from "./param-guards.ts"; -import { crayon } from "../../deps.ts"; /** * Provides utility functions. @@ -144,7 +143,7 @@ export class Utils { */ public static printError(message: string): void { Utils.printEmptyLine(); - console.log(crayon.red(`::error::${message}`)); + console.log(`::error::${message}`); Utils.printEmptyLine(); } @@ -154,7 +153,7 @@ export class Utils { */ public static printNotice(message: string): void { Utils.printEmptyLine(); - console.log(crayon.red(`::notice::${message}`)); + console.log(`::notice::${message}`); Utils.printEmptyLine(); } diff --git a/src/core/console-log-color.ts b/src/core/console-log-color.ts new file mode 100644 index 0000000..95279b4 --- /dev/null +++ b/src/core/console-log-color.ts @@ -0,0 +1,52 @@ +/** + * Provides a simple way to log colored messages to the console. + */ +export class ConsoleLogColor { + /** + * Logs the given {@link msg} to the console in red text. + * @param msg The message to log. + */ + public static red(msg: string): void { + console.log(`%c${msg}`, "color: red;"); + } + + /** + * Logs the given {@link msg} to the console in green text. + * @param msg The message to log. + */ + public static green(msg: string): void { + console.log(`%c${msg}`, "color: green;"); + } + + /** + * Logs the given {@link msg} to the console in blue text. + * @param msg The message to log. + */ + public static blue(msg: string): void { + console.log(`%c${msg}`, "color: blue;"); + } + + /** + * Logs the given {@link msg} to the console in yellow text. + * @param msg The message to log. + */ + public static yellow(msg: string): void { + console.log(`%c${msg}`, "color: yellow;"); + } + + /** + * Logs the given {@link msg} to the console in cyan text. + * @param msg The message to log. + */ + public static cyan(msg: string): void { + console.log(`%c${msg}`, "color: cyan;"); + } + + /** + * Logs the given {@link msg} to the console in gray text. + * @param msg The message to log. + */ + public static gray(msg: string): void { + console.log(`%c${msg}`, "color: gray;"); + } +} diff --git a/src/pr-creator.ts b/src/pr-creator.ts index de84da0..fad40a0 100644 --- a/src/pr-creator.ts +++ b/src/pr-creator.ts @@ -1,9 +1,10 @@ -import { crayon, existsSync } from "../deps.ts"; +import { existsSync } from "../deps.ts"; import { GitClient, IssueClient, PullRequestClient } from "../deps.ts"; import { Input, Select } from "../deps.ts"; import runAsync from "./core/run-async.ts"; import { CreatePrSettings } from "./create-pr-settings.ts"; import { Guards } from "./core/guards.ts"; +import { ConsoleLogColor } from "./core/console-log-color.ts"; /** * Creates pull requests for a project based on settings. @@ -43,7 +44,7 @@ export class PrCreator { // Issue number validation const issueClient = new IssueClient(ownerName, repoName, githubToken); - console.log(crayon.lightBlack(`Checking if issue '#${issueNumber}' exists . . .`)); + ConsoleLogColor.gray(`Checking if issue '#${issueNumber}' exists . . .`); const issueExists = await issueClient.issueExists(issueNumber); @@ -52,16 +53,16 @@ export class PrCreator { if (issue.state === "closed") { const errorMsg = `The issue with number '${issueNumber}' is closed.\nPlease choose another open issue.`; - console.error(crayon.red(errorMsg)); + ConsoleLogColor.red(errorMsg); Deno.exit(1); } } else { const errorMsg = `An issue with number '${issueNumber}' does not exist.`; - console.error(crayon.red(errorMsg)); + ConsoleLogColor.red(errorMsg); Deno.exit(1); } - console.log(crayon.lightBlack(`Issue '#${issueNumber}' exists.`)); + ConsoleLogColor.gray(`Issue '#${issueNumber}' exists.`); const chosenHeadBranch = await Input.prompt({ message: "Enter a head branch name", @@ -77,17 +78,17 @@ export class PrCreator { }); // Head branch validation - console.log(crayon.lightBlack(`Checking that the head branch '${chosenHeadBranch}' does not already exist . . .`)); + ConsoleLogColor.gray(`Checking that the head branch '${chosenHeadBranch}' does not already exist . . .`); const branchRegex = /^feature\/([1-9][0-9]*)-(?!-)[a-z-]+$/gm; if (!branchRegex.test(chosenHeadBranch)) { const errorMsg = `The head branch name '${chosenHeadBranch}' is invalid. It should match the pattern: 'feature/-'`; - console.error(crayon.red(errorMsg)); + ConsoleLogColor.red(errorMsg); Deno.exit(1); } - console.log(crayon.lightBlack(`Head branch name '${chosenHeadBranch}' does not exist.`)); + ConsoleLogColor.gray(`Head branch name '${chosenHeadBranch}' does not exist.`); const gitClient = new GitClient(ownerName, repoName, githubToken); @@ -95,7 +96,7 @@ export class PrCreator { if (headBranchExists) { const errorMsg = `The head branch '${chosenHeadBranch}' exists in the remote repository.`; - console.error(crayon.red(errorMsg)); + ConsoleLogColor.red(errorMsg); Deno.exit(1); } @@ -106,33 +107,33 @@ export class PrCreator { validate: (branch) => baseBranches.includes(branch), }); - console.log(crayon.lightBlack(`Checking that the base branch '${chosenBaseBranch}' exists . . .`)); + ConsoleLogColor.gray(`Checking that the base branch '${chosenBaseBranch}' exists . . .`); const branchExists = await gitClient.branchExists(chosenBaseBranch); if (!branchExists) { const errorMsg = `The branch '${chosenBaseBranch}' does not exist in the remote repository.`; - console.error(crayon.red(errorMsg)); + ConsoleLogColor.red(errorMsg); Deno.exit(1); } - console.log(crayon.lightBlack(`Base branch '${chosenBaseBranch}' exists.`)); + ConsoleLogColor.gray(`Base branch '${chosenBaseBranch}' exists.`); - console.log(crayon.lightBlack(`Creating the new head branch '${chosenHeadBranch}' . . .`)); + ConsoleLogColor.gray(`Creating the new head branch '${chosenHeadBranch}' . . .`); await runAsync("git", ["checkout", "-B", chosenHeadBranch]); - console.log(crayon.lightBlack(`Creating empty commit . . .`)); + ConsoleLogColor.gray(`Creating empty commit . . .`); await runAsync("git", ["commit", "--allow-empty", "-m", `Start work for issue #${issueNumber}`]); - console.log(crayon.lightBlack(`Pushing the new head branch '${chosenHeadBranch}' to remote . . .`)); + ConsoleLogColor.gray(`Pushing the new head branch '${chosenHeadBranch}' to remote . . .`); await runAsync("git", ["push", "--set-upstream", "origin", chosenHeadBranch]); - console.log(crayon.lightBlack(`Creating pull request . . .`)); + ConsoleLogColor.gray(`Creating pull request . . .`); const prClient = new PullRequestClient(ownerName, repoName, githubToken); const newPr = await prClient.createPullRequest("new pr", chosenHeadBranch, chosenBaseBranch, "", true, true); const successMsg = `Pull request created successfully!\nPR: ${newPr.html_url}`; - console.log(crayon.lightGreen(successMsg)); + ConsoleLogColor.green(successMsg); } /** @@ -145,7 +146,7 @@ export class PrCreator { if (!existsSync(settingsFilePath, { isFile: true })) { const errorMsg = `The settings file '${settingsFileName}' does not exist in the current working directory.`; - console.log(crayon.red(`❌${errorMsg}`)); + ConsoleLogColor.red(`${errorMsg}`); Deno.exit(1); } @@ -156,7 +157,7 @@ export class PrCreator { settings = JSON.parse(settingJsonData); } catch (error) { const errorMsg = `There was a problem parsing the file '${settingsFileName}'.\n${error.message}`; - console.log(crayon.red(`${errorMsg}`)); + ConsoleLogColor.red(`${errorMsg}`); Deno.exit(1); } @@ -168,32 +169,32 @@ export class PrCreator { "\n\t- baseBranches: string[]" + "\n\t- githubTokenEnvVarName: string"; - console.log(crayon.red(`❌${errorMsg}`)); + ConsoleLogColor.red(`${errorMsg}`); Deno.exit(1); } const githubToken = (Deno.env.get(settings.githubTokenEnvVarName) ?? "").trim(); if (githubToken === "") { - console.log(crayon.red(`❌The environment variable '${settings.githubTokenEnvVarName}' is not set.`)); + ConsoleLogColor.red(`The environment variable '${settings.githubTokenEnvVarName}' is not set.`); Deno.exit(1); } if (Guards.isNothing(settings.ownerName)) { const errorMsg = "The owner name is not set."; - console.log(crayon.red(`❌${errorMsg}`)); + ConsoleLogColor.red(`${errorMsg}`); Deno.exit(1); } if (Guards.isNothing(settings.repoName)) { const errorMsg = "The repo name is not set."; - console.log(crayon.red(`❌${errorMsg}`)); + ConsoleLogColor.red(`${errorMsg}`); Deno.exit(1); } if (Guards.isNothing(settings.baseBranches)) { const errorMsg = "The base branches are not set."; - console.log(crayon.red(`❌${errorMsg}`)); + ConsoleLogColor.red(`${errorMsg}`); Deno.exit(1); } diff --git a/src/release-prepper.ts b/src/release-prepper.ts index 0771e44..01dc2c8 100644 --- a/src/release-prepper.ts +++ b/src/release-prepper.ts @@ -10,7 +10,7 @@ import { TagClient, } from "../deps.ts"; import { Input, Select } from "../deps.ts"; -import { crayon } from "../deps.ts"; +import { ConsoleLogColor } from "./core/console-log-color.ts"; import { IssueOrPRRequestData } from "../deps.ts"; import runAsync from "./core/run-async.ts"; import { Guards } from "./core/guards.ts"; @@ -76,7 +76,7 @@ export class ReleasePrepper { if (chosenReleaseType === undefined) { const errorMsg = `There was a problem choosing a release type.`; - console.log(crayon.lightRed(errorMsg)); + ConsoleLogColor.red(errorMsg); Deno.exit(1); } @@ -86,7 +86,7 @@ export class ReleasePrepper { if (repoDoesNotExist) { const errorMsg = `The repository '${ownerName}/${repoName}' does not exist.`; - console.log(crayon.lightRed(errorMsg)); + ConsoleLogColor.red(errorMsg); Deno.exit(1); } @@ -105,7 +105,7 @@ export class ReleasePrepper { invalidLabels.map((label) => ` - ${label}`).join("\n") + "\nThe pr labels will be left empty.⚠️"; - console.log(crayon.lightRed(errorMsg)); + ConsoleLogColor.red(errorMsg); Deno.exit(1); } @@ -117,20 +117,20 @@ export class ReleasePrepper { if (milestoneDoesNotExist) { const warning = `A milestone with the name '${chosenVersion}' does not exist.`; - console.log(crayon.lightRed(warning)); + ConsoleLogColor.red(warning); Deno.exit(1); } if (Guards.isNothing(settings.versionFilePath)) { const warningMsg = "The 'versionFilePath' setting is not set. The version will not be updated."; - console.log(crayon.lightYellow(warningMsg)); + ConsoleLogColor.yellow(warningMsg); } else { // Validate version file exists const versionFileExists = existsSync(settings.versionFilePath, { isFile: true }); if (!versionFileExists) { const errorMsg = `The version file '${settings.versionFilePath}' does not exist.`; - console.log(crayon.lightRed(errorMsg)); + ConsoleLogColor.red(errorMsg); Deno.exit(1); } } @@ -141,15 +141,15 @@ export class ReleasePrepper { try { this.updateVersion(settings, chosenVersion); } catch (error) { - console.log(crayon.lightRed(error.message)); + ConsoleLogColor.red(error.message); } // Stage version update - console.log(crayon.lightBlack(" ⏳Staging version update.")); + ConsoleLogColor.gray(" ⏳Staging version update."); await this.stageFile(resolve(Deno.cwd(), settings.versionFilePath)); // Commit version update - console.log(crayon.lightBlack(" ⏳Creating version update commit.")); + ConsoleLogColor.gray(" ⏳Creating version update commit."); await this.createCommit(`release: update version to ${chosenVersion}`); } @@ -158,10 +158,10 @@ export class ReleasePrepper { // If release notes were generated, stage and commit them. if (newNotesFilePath !== undefined) { - console.log(crayon.lightBlack(" ⏳Staging release notes.")); + ConsoleLogColor.gray(" ⏳Staging release notes."); await this.stageFile(newNotesFilePath); - console.log(crayon.lightBlack(" ⏳Creating release notes commit.")); + ConsoleLogColor.gray(" ⏳Creating release notes commit."); await this.createCommit(`release: create release notes for version ${chosenVersion}`); } @@ -171,11 +171,11 @@ export class ReleasePrepper { // If a reviewer was selected, assign the pr to the selected reviewer if (prReviewer !== undefined) { - console.log(crayon.lightBlack(` ⏳Setting pr reviewer to '${prReviewer}'.`)); + ConsoleLogColor.gray(` ⏳Setting pr reviewer to '${prReviewer}'.`); await this.prClient.requestReviewers(prNumber, prReviewer); } else { const errorMsg = `A reviewer has not been chosen. The pr will be left unassigned.`; - console.log(crayon.lightYellow(`⚠️${errorMsg}⚠️`)); + ConsoleLogColor.yellow(`⚠️${errorMsg}⚠️`); } // If an assignee was selected, assign the pr to the selected assignee @@ -190,7 +190,7 @@ export class ReleasePrepper { await this.assignToProject(prNumber, orgProject); } else { const errorMsg = `The project '${orgProject}' does not exist. The pr will not be assigned to a project.`; - console.log(crayon.lightYellow(`⚠️${errorMsg}⚠️`)); + ConsoleLogColor.yellow(`⚠️${errorMsg}⚠️`); } // Assignee milestone to the pr @@ -199,11 +199,11 @@ export class ReleasePrepper { milestone: milestone.number, }; - console.log(crayon.lightBlack(` ⏳Assigning pr to milestone '${chosenVersion}'.`)); + ConsoleLogColor.gray(` ⏳Assigning pr to milestone '${chosenVersion}'.`); await this.prClient.updatePullRequest(prNumber, prData); const prUrl = `https://github.com/${ownerName}/${repoName}/pull/${prNumber}`; - console.log(crayon.lightGreen(`\nPull Request: ${prUrl}`)); + ConsoleLogColor.green(`\nPull Request: ${prUrl}`); } /** @@ -230,7 +230,7 @@ export class ReleasePrepper { } default: { const errorMsg = `The file extension '${extension}' is not supported.`; - console.log(crayon.lightRed(errorMsg)); + ConsoleLogColor.red(errorMsg); Deno.exit(1); } } @@ -246,7 +246,7 @@ export class ReleasePrepper { if (!existsSync(settingsFilePath, { isFile: true })) { const errorMsg = `The settings file '${settingsFileName}' does not exist in the current working directory.`; - console.log(crayon.red(`❌${errorMsg}`)); + ConsoleLogColor.red(`${errorMsg}`); Deno.exit(1); } @@ -257,7 +257,7 @@ export class ReleasePrepper { settings = JSON.parse(settingJsonData); } catch (error) { const errorMsg = `There was a problem parsing the file '${settingsFileName}'.\n${error.message}`; - console.log(crayon.red(`${errorMsg}`)); + ConsoleLogColor.red(`${errorMsg}`); Deno.exit(1); } @@ -269,26 +269,26 @@ export class ReleasePrepper { "\n\t- releaseTypes: { name: string, headBranch: string, baseBranch: string }[]" + "\n\t- githubTokenEnvVarName: string"; - console.log(crayon.red(`❌${errorMsg}`)); + ConsoleLogColor.red(`${errorMsg}`); Deno.exit(1); } const githubToken = (Deno.env.get(settings.githubTokenEnvVarName) ?? "").trim(); if (githubToken === "") { - console.log(crayon.red(`❌The environment variable '${settings.githubTokenEnvVarName}' is not set.`)); + ConsoleLogColor.red(`The environment variable '${settings.githubTokenEnvVarName}' is not set.`); Deno.exit(1); } if (Guards.isNothing(settings.ownerName)) { const errorMsg = "The owner name is not set."; - console.log(crayon.red(`❌${errorMsg}`)); + ConsoleLogColor.red(`${errorMsg}`); Deno.exit(1); } if (Guards.isNothing(settings.repoName)) { const errorMsg = "The repo name is not set."; - console.log(crayon.red(`❌${errorMsg}`)); + ConsoleLogColor.red(`${errorMsg}`); Deno.exit(1); } @@ -416,7 +416,7 @@ export class ReleasePrepper { if (!isValid) { const errorMsg = `The version '${value}' does not meet the required syntax requirements.`; - console.log(crayon.lightRed(errorMsg)); + ConsoleLogColor.red(errorMsg); } return isValid; @@ -428,7 +428,7 @@ export class ReleasePrepper { if (tags.includes(chosenVersion)) { const errorMsg = `The version '${chosenVersion}' already exists.`; - console.log(crayon.lightRed(errorMsg)); + ConsoleLogColor.red(errorMsg); versionExists = true; } else { versionExists = false; @@ -442,7 +442,7 @@ export class ReleasePrepper { const createBranchResult = await runAsync("git", ["checkout", "-B", releaseType.headBranch]); if (createBranchResult instanceof Error) { - console.log(crayon.lightRed(createBranchResult.message)); + ConsoleLogColor.red(createBranchResult.message); Deno.exit(1); } } @@ -452,7 +452,7 @@ export class ReleasePrepper { chosenVersion: string, tokenEnvVarName: string, ): Promise { - console.log(crayon.lightBlack(" ⏳Creating release notes.")); + ConsoleLogColor.gray(" ⏳Creating release notes."); // Trim the notes dir path and replace all '\' with '/' let notesDirPath = releaseType.releaseNotesDirPath.trim() @@ -491,7 +491,7 @@ export class ReleasePrepper { const warningMsg = `The 'genReleaseSettingsFilePath' setting for release type '${releaseType.name}' is not set` + "\nand the 'generate release notes' process will be skipped." + "\nPlease set the 'genReleaseSettingsFilePath' property in the release type settings."; - console.log(crayon.lightYellow(warningMsg)); + ConsoleLogColor.yellow(warningMsg); return undefined; } @@ -500,7 +500,7 @@ export class ReleasePrepper { const warningMsg = `The release notes settings file '${releaseType.genReleaseSettingsFilePath}' does not exist.` + "\nand the 'generate release notes' process will be skipped." + "\nPlease set the 'genReleaseSettingsFilePath' property in the release type settings."; - console.log(crayon.lightYellow(warningMsg)); + ConsoleLogColor.yellow(warningMsg); return undefined; } @@ -512,8 +512,9 @@ export class ReleasePrepper { try { settings = JSON.parse(settingJsonData); } catch (error) { - const errorMsg = `There was a problem parsing the file '${releaseType.genReleaseSettingsFilePath}'.\n${error.message}`; - console.log(crayon.red(`${errorMsg}`)); + const errorMsg = + `There was a problem parsing the file '${releaseType.genReleaseSettingsFilePath}'.\n${error.message}`; + ConsoleLogColor.red(`${errorMsg}`); Deno.exit(1); } @@ -532,7 +533,7 @@ export class ReleasePrepper { if (stageResult instanceof Error) { const errorMsg = `There was an error staging the release notes file '${newNotesFilePath}'\n${stageResult.message}.`; - console.log(crayon.lightRed(errorMsg)); + ConsoleLogColor.red(errorMsg); Deno.exit(1); } } @@ -552,17 +553,17 @@ export class ReleasePrepper { if (createCommitResult instanceof Error) { const errorMsg = `There was an error creating the commit with the message '${commitMsg}'\n${createCommitResult.message}.`; - console.log(crayon.lightRed(errorMsg)); + ConsoleLogColor.red(errorMsg); Deno.exit(1); } } private async pushToRemote(branch: string): Promise { - console.log(crayon.lightBlack(" ⏳Pushing to remote.")); + ConsoleLogColor.gray(" ⏳Pushing to remote."); const pushToOriginResult = await runAsync("git", ["push", "--set-upstream", "origin", branch]); if (pushToOriginResult instanceof Error) { - console.log(crayon.lightRed(pushToOriginResult.message)); + ConsoleLogColor.red(pushToOriginResult.message); Deno.exit(1); } } @@ -578,7 +579,7 @@ export class ReleasePrepper { let selectedAssignee = ""; - console.log(crayon.lightBlack(" ⏳Fetching org members")); + ConsoleLogColor.gray(" ⏳Fetching org members"); const allOrgMembers = await this.orgClient.getAllOrgMembers(); if (selectedAssignType === "org members only") { @@ -592,7 +593,7 @@ export class ReleasePrepper { const memberExists = allOrgMembers.find((member) => member.login === loginName); if (memberExists === undefined) { - console.log(crayon.lightRed("The assignee (github login) does not exist.")); + ConsoleLogColor.red("The assignee (github login) does not exist."); return false; } @@ -606,14 +607,14 @@ export class ReleasePrepper { loginName = loginName.trim(); if (loginName.length <= 0) { - console.log(crayon.lightRed("The assignee cannot be empty.")); + ConsoleLogColor.red("The assignee cannot be empty."); return false; } const memberExists = allOrgMembers.find((member) => member.login === loginName); if (memberExists === undefined) { - console.log(crayon.lightRed("The assignee (github login) does not exist.")); + ConsoleLogColor.red("The assignee (github login) does not exist."); return false; } @@ -639,7 +640,7 @@ export class ReleasePrepper { let selectedAssignee = ""; - console.log(crayon.lightBlack(" ⏳Fetching org members")); + ConsoleLogColor.gray(" ⏳Fetching org members"); const allOrgMembers = await this.orgClient.getAllOrgMembers(); if (selectedAssignType === "org members only") { @@ -653,7 +654,7 @@ export class ReleasePrepper { const memberExists = allOrgMembers.find((member) => member.login === loginName); if (memberExists === undefined) { - console.log(crayon.lightRed("The assignee (github login) does not exist.")); + ConsoleLogColor.red("The assignee (github login) does not exist."); return false; } @@ -667,14 +668,14 @@ export class ReleasePrepper { loginName = loginName.trim(); if (loginName.length <= 0) { - console.log(crayon.lightRed("The assignee cannot be empty.")); + ConsoleLogColor.red("The assignee cannot be empty."); return false; } const memberExists = allOrgMembers.find((member) => member.login === loginName); if (memberExists === undefined) { - console.log(crayon.lightRed("The assignee (github login) does not exist.")); + ConsoleLogColor.red("The assignee (github login) does not exist."); return false; } @@ -691,7 +692,7 @@ export class ReleasePrepper { private async getValidateLabels(labels: string[]): Promise<[boolean, string[]]> { // Validate that the label exists - console.log(crayon.lightBlack(" ⏳Validating labels.")); + ConsoleLogColor.gray(" ⏳Validating labels."); const prLabels = labels; return await this.allLabelsExist(prLabels); @@ -720,13 +721,13 @@ export class ReleasePrepper { } private async projectExists(orgProject: string): Promise { - console.log(crayon.lightBlack(` ⏳Validating project '${orgProject}'.`)); + ConsoleLogColor.gray(` ⏳Validating project '${orgProject}'.`); return (await this.projectClient.getOrgProjects()).find((p) => p.title === orgProject) !== undefined; } private async milestoneExists(chosenVersion: string): Promise { - console.log(crayon.lightBlack(` ⏳Validating milestone '${chosenVersion}'.`)); + ConsoleLogColor.gray(` ⏳Validating milestone '${chosenVersion}'.`); return await this.milestoneClient.milestoneExists(chosenVersion); } @@ -736,20 +737,20 @@ export class ReleasePrepper { * @param chosenEnv The type of environment. Either 'preview' or 'production'. */ private validatePrTemplate(releaseType: ReleaseType): void { - console.log(crayon.lightBlack(" ⏳Creating pr.")); + ConsoleLogColor.gray(" ⏳Creating pr."); const templateDoesNotExist = !existsSync(releaseType.releasePrTemplateFilePath, { isFile: true }); if (templateDoesNotExist) { const errorMsg = `The pr template file '${releaseType.releasePrTemplateFilePath}' does not exist.` + `\nCreate a template file in the working directory.`; - console.log(crayon.lightRed(errorMsg)); + ConsoleLogColor.red(errorMsg); Deno.exit(0); } } private async createPullRequest(releaseType: ReleaseType, chosenVersion: string): Promise { - console.log(crayon.lightBlack(" ⏳Creating pr.")); + ConsoleLogColor.gray(" ⏳Creating pr."); // Trim the template file path and replace all '\' with '/' let templateFilePath = releaseType.releasePrTemplateFilePath.trim() @@ -761,7 +762,7 @@ export class ReleasePrepper { if (templateDoesNotExist) { const errorMsg = `The release notes template file '${templateFilePath}' does not exist.`; - console.log(crayon.lightRed(`${errorMsg}`)); + ConsoleLogColor.red(`${errorMsg}`); Deno.exit(1); } @@ -784,7 +785,7 @@ export class ReleasePrepper { assignees: [assignee], }; - console.log(crayon.lightBlack(` ⏳Setting pr assignee.`)); + ConsoleLogColor.gray(` ⏳Setting pr assignee.`); await this.prClient.updatePullRequest(prNumber, prData); } @@ -794,7 +795,7 @@ export class ReleasePrepper { labels: labels, }; - console.log(crayon.lightBlack(` ⏳Setting pr labels.`)); + ConsoleLogColor.gray(` ⏳Setting pr labels.`); await this.prClient.updatePullRequest(prNumber, prData); } @@ -807,7 +808,7 @@ export class ReleasePrepper { options: orgProjects, validate: (value) => { if (value.length <= 0) { - console.log(crayon.lightRed("The project name cannot be empty.")); + ConsoleLogColor.red("The project name cannot be empty."); return false; } @@ -819,7 +820,7 @@ export class ReleasePrepper { } private async assignToProject(prNumber: number, project: string): Promise { - console.log(crayon.lightBlack(` ⏳Assigning pr to project '${project}'.`)); + ConsoleLogColor.gray(` ⏳Assigning pr to project '${project}'.`); await this.projectClient.addPullRequestToProject(prNumber, project); } From ebf5e1ec3fa0a9a27176967581ac42b0eb649b55 Mon Sep 17 00:00:00 2001 From: Calvin Wilkinson Date: Thu, 27 Jun 2024 10:16:01 +0100 Subject: [PATCH 5/7] refactor: change name of github console log functions --- .github/cicd/core/VersionPuller.ts | 4 ++-- .github/cicd/scripts/check-release-notes.ts | 12 +++++------ .github/cicd/scripts/get-version.ts | 2 +- .github/cicd/scripts/version-checker.ts | 22 ++++++++++----------- src/core/Utils.ts | 4 ++-- src/json-version-updater.ts | 6 +++--- 6 files changed, 25 insertions(+), 25 deletions(-) diff --git a/.github/cicd/core/VersionPuller.ts b/.github/cicd/core/VersionPuller.ts index a757c5f..34f812d 100644 --- a/.github/cicd/core/VersionPuller.ts +++ b/.github/cicd/core/VersionPuller.ts @@ -25,7 +25,7 @@ export class VersionPuller { if (configFiles.length === 0) { const errorMsg = `::error::No '${this.denoConfig}' files found.`; - Utils.printNotice(errorMsg); + Utils.printGitHubNotice(errorMsg); Deno.exit(1); } @@ -40,7 +40,7 @@ export class VersionPuller { // If the object contains a property with the name version if (jsonObj.version === undefined) { const errorMsg = `::error::The file '${fileName}' does not contain a version property.`; - Utils.printError(errorMsg); + Utils.printGitHubError(errorMsg); Deno.exit(1); } diff --git a/.github/cicd/scripts/check-release-notes.ts b/.github/cicd/scripts/check-release-notes.ts index ba86397..93d6956 100644 --- a/.github/cicd/scripts/check-release-notes.ts +++ b/.github/cicd/scripts/check-release-notes.ts @@ -6,19 +6,19 @@ const scriptFileName = new URL(import.meta.url).pathname.split("/").pop(); const versionType = (Deno.env.get("RELEASE_TYPE") ?? "").trim().toLowerCase(); if (versionType === "") { - Utils.printError(`The 'RELEASE_TYPE' environment variable is require.\n\tFileName: ${scriptFileName}`); + Utils.printGitHubError(`The 'RELEASE_TYPE' environment variable is require.\n\tFileName: ${scriptFileName}`); Deno.exit(1); } let version = (Deno.env.get("VERSION") ?? "").trim().toLowerCase(); if (version === "") { - Utils.printError(`The 'VERSION' environment variable is require.\n\tFileName: ${scriptFileName}`); + Utils.printGitHubError(`The 'VERSION' environment variable is require.\n\tFileName: ${scriptFileName}`); Deno.exit(2); } if (versionType != "production" && versionType != "preview") { - Utils.printError(`The version type must be either 'preview' or 'release' but received '${versionType}'.`); + Utils.printGitHubError(`The version type must be either 'preview' or 'release' but received '${versionType}'.`); Deno.exit(200); } @@ -28,14 +28,14 @@ let releaseNotesDirName = ""; if (versionType === "preview") { if (Utils.isNotValidPreviewVersion(version)) { - Utils.printError(`The preview version '${version}' is not valid.`); + Utils.printGitHubError(`The preview version '${version}' is not valid.`); Deno.exit(300); } releaseNotesDirName = "preview-releases"; } else if (versionType === "production") { if (Utils.isNotValidProdVersion(version)) { - Utils.printError(`The production version '${version}' is not valid.`); + Utils.printGitHubError(`The production version '${version}' is not valid.`); Deno.exit(400); } @@ -63,6 +63,6 @@ const configFiles = [...entries] if (configFiles.length === 0) { const errorMsg = `The release notes '${releaseNotesFileName}' file could not be found.`; - Utils.printError(errorMsg); + Utils.printGitHubError(errorMsg); Deno.exit(1); } diff --git a/.github/cicd/scripts/get-version.ts b/.github/cicd/scripts/get-version.ts index 4243991..7e9e23f 100644 --- a/.github/cicd/scripts/get-version.ts +++ b/.github/cicd/scripts/get-version.ts @@ -9,7 +9,7 @@ const outputFilePath = Deno.env.get("GITHUB_OUTPUT") ?? ""; if (outputFilePath === "") { const errorMsg = `The environment variable 'GITHUB_OUTPUT' does not exist.`; - Utils.printError(errorMsg); + Utils.printGitHubError(errorMsg); Deno.exit(1); } diff --git a/.github/cicd/scripts/version-checker.ts b/.github/cicd/scripts/version-checker.ts index 1237ba5..1caa2ab 100644 --- a/.github/cicd/scripts/version-checker.ts +++ b/.github/cicd/scripts/version-checker.ts @@ -5,7 +5,7 @@ const ownerName = (Deno.env.get("OWNER_NAME") ?? "").trim(); if (ownerName === "") { const errorMsg = `The 'OWNER_NAME' environment variable is required.`; - Utils.printError(errorMsg); + Utils.printGitHubError(errorMsg); Deno.exit(1); } @@ -13,7 +13,7 @@ const repoName = (Deno.env.get("REPO_NAME") ?? "").trim(); if (repoName === "") { const errorMsg = `The 'REPO_NAME' environment variable is required.`; - Utils.printError(errorMsg); + Utils.printGitHubError(errorMsg); Deno.exit(1); } @@ -21,7 +21,7 @@ const versionType = (Deno.env.get("VERSION_TYPE") ?? "").trim().toLowerCase(); if (versionType === "") { const errorMsg = `The 'VERSION_TYPE' environment variable is required.`; - Utils.printError(errorMsg); + Utils.printGitHubError(errorMsg); Deno.exit(1); } @@ -29,7 +29,7 @@ let version = (Deno.env.get("VERSION") ?? "").trim().toLowerCase(); if (version === "") { const errorMsg = `The 'VERSION' environment variable is required.`; - Utils.printError(errorMsg); + Utils.printGitHubError(errorMsg); Deno.exit(1); } @@ -41,7 +41,7 @@ const userCLient: UsersClient = new UsersClient(ownerName, repoName, token); if (!await userCLient.userExists(ownerName)) { const errorMsg = `The user '${ownerName}' does not exist.`; - Utils.printError(errorMsg); + Utils.printGitHubError(errorMsg); Deno.exit(1); } @@ -49,8 +49,8 @@ const repoClient: RepoClient = new RepoClient(ownerName, repoName, token); if (!await repoClient.exists()) { const errorMsg = `The repository '${repoName}' does not exist.`; - Utils.printError(errorMsg); - Utils.printError(errorMsg); + Utils.printGitHubError(errorMsg); + Utils.printGitHubError(errorMsg); Deno.exit(1); } @@ -58,13 +58,13 @@ const tagClient: TagClient = new TagClient(ownerName, repoName, token); if (await tagClient.tagExists(version)) { const errorMsg = `The tag '${version}' already exists.`; - Utils.printError(errorMsg); + Utils.printGitHubError(errorMsg); Deno.exit(1); } if (versionType != "preview" && versionType != "production") { const errorMsg = `The version type '${versionType}' is not valid. Valid values are 'preview' or 'production' version type.`; - Utils.printError(errorMsg); + Utils.printGitHubError(errorMsg); Deno.exit(1); } @@ -72,13 +72,13 @@ if (versionType != "preview" && versionType != "production") { if (versionType === "preview") { if (Utils.isNotValidPreviewVersion(version)) { const errorMsg = `The version '${version}' is not valid. Please provide a valid preview version.`; - Utils.printError(errorMsg); + Utils.printGitHubError(errorMsg); Deno.exit(1); } } else if (versionType === "production") { if (Utils.isNotValidProdVersion(version)) { const errorMsg = `The version '${version}' is not valid. Please provide a valid production version.`; - Utils.printError(errorMsg); + Utils.printGitHubError(errorMsg); Deno.exit(1); } } diff --git a/src/core/Utils.ts b/src/core/Utils.ts index c39a4e6..72722f7 100644 --- a/src/core/Utils.ts +++ b/src/core/Utils.ts @@ -141,7 +141,7 @@ export class Utils { * Prints the given {@link message} as a GitHub error. * @param message The message to print. */ - public static printError(message: string): void { + public static printGitHubError(message: string): void { Utils.printEmptyLine(); console.log(`::error::${message}`); Utils.printEmptyLine(); @@ -151,7 +151,7 @@ export class Utils { * Prints the given {@link message} as a GitHub notice. * @param message The message to print. */ - public static printNotice(message: string): void { + public static printGitHubNotice(message: string): void { Utils.printEmptyLine(); console.log(`::notice::${message}`); Utils.printEmptyLine(); diff --git a/src/json-version-updater.ts b/src/json-version-updater.ts index b02f052..2b52fec 100644 --- a/src/json-version-updater.ts +++ b/src/json-version-updater.ts @@ -26,14 +26,14 @@ export class JsonVersionUpdater { try { const versionConfig = JSON.parse(versionFileContent); const propChain = settings.versionJSONKeyPath?.split(".").map((i) => i.trim()) ?? ["version"]; - + const result = this.setPropertyValue(versionConfig, propChain, newVersion); - + if (result[0] === false) { console.log(`%c${result[1]}`, "color: red;"); Deno.exit(1); } - + Deno.writeTextFileSync(versionFilePath, `${JSON.stringify(versionConfig, null, 4)}\n`); } catch (error) { const errorMsg = `There was a problem parsing the file '${versionFilePath}'.\n${error.message}`; From 7000ebe693a6ba15918810953ac67f918c0e896b Mon Sep 17 00:00:00 2001 From: Calvin Wilkinson Date: Thu, 27 Jun 2024 10:17:22 +0100 Subject: [PATCH 6/7] config: add deno task to reload cache --- deno.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/deno.json b/deno.json index 4d6c0f9..511206a 100644 --- a/deno.json +++ b/deno.json @@ -2,7 +2,8 @@ "version": "v1.0.0-preview.3", "tasks": { "build": "./.github/cicd/scripts/deno-build.ts", - "tests": "deno test ./Tests/*Tests.ts" + "tests": "deno test ./Tests/*Tests.ts", + "reload-cache": "deno cache --reload --lock=deno.lock --lock-write \"./deps.ts\"" }, "lint": { "include": [ From 2eee5d29a8c7b0d504400aa06bff2a093bb8f264 Mon Sep 17 00:00:00 2001 From: Calvin Wilkinson Date: Thu, 27 Jun 2024 10:17:32 +0100 Subject: [PATCH 7/7] deps: update deno lock --- deno.lock | 440 +----------------------------------------------------- 1 file changed, 2 insertions(+), 438 deletions(-) diff --git a/deno.lock b/deno.lock index 77ada3b..02972d3 100644 --- a/deno.lock +++ b/deno.lock @@ -3,10 +3,7 @@ "packages": { "specifiers": { "jsr:@nexterias/twitter-api-fetch@3.0.1": "jsr:@nexterias/twitter-api-fetch@3.0.1", - "jsr:@std/encoding@^0.219.1": "jsr:@std/encoding@0.219.1", - "npm:chalk@4.1.1": "npm:chalk@4.1.1", - "npm:superjson@1.13.3": "npm:superjson@1.13.3", - "npm:twitter-api-v2@1.15.0": "npm:twitter-api-v2@1.15.0" + "jsr:@std/encoding@^0.219.1": "jsr:@std/encoding@0.219.1" }, "jsr": { "@nexterias/twitter-api-fetch@3.0.1": { @@ -18,323 +15,9 @@ "@std/encoding@0.219.1": { "integrity": "77b30e481a596cfb2a8f2f38c3165e6035a4f76a7259bf89b6a622ceaf57d575" } - }, - "npm": { - "ansi-styles@4.3.0": { - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "color-convert@2.0.1" - } - }, - "chalk@4.1.1": { - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dependencies": { - "ansi-styles": "ansi-styles@4.3.0", - "supports-color": "supports-color@7.2.0" - } - }, - "color-convert@2.0.1": { - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "color-name@1.1.4" - } - }, - "color-name@1.1.4": { - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dependencies": {} - }, - "copy-anything@3.0.5": { - "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==", - "dependencies": { - "is-what": "is-what@4.1.16" - } - }, - "has-flag@4.0.0": { - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dependencies": {} - }, - "is-what@4.1.16": { - "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==", - "dependencies": {} - }, - "superjson@1.13.3": { - "integrity": "sha512-mJiVjfd2vokfDxsQPOwJ/PtanO87LhpYY88ubI5dUB1Ab58Txbyje3+jpm+/83R/fevaq/107NNhtYBLuoTrFg==", - "dependencies": { - "copy-anything": "copy-anything@3.0.5" - } - }, - "supports-color@7.2.0": { - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "has-flag@4.0.0" - } - }, - "twitter-api-v2@1.15.0": { - "integrity": "sha512-Cqg3pIGhSwPyFBndpBrucdeNXecNFnYcXy3ixQ4brJHd/3k1CAtBVcX0e3s6jRYl/QIx5BmyGXS/SHEGtYZ3gw==", - "dependencies": {} - } } }, - "redirects": { - "https://deno.land/std/testing/asserts.ts": "https://deno.land/std@0.224.0/testing/asserts.ts", - "https://deno.land/x/cliffy": "https://deno.land/x/cliffy@v1.0.0-rc.4", - "https://deno.land/x/cliffy@v1.0.0-rc.4/": "https://deno.land/x/cliffy@v1.0.0-rc.4", - "https://deno.land/x/kd_clients": "https://deno.land/x/kd_clients@v1.0.0-preview.13", - "https://deno.land/x/kd_clients/": "https://deno.land/x/kd_clients", - "https://deno.land/x/kd_clients/mod.ts": "https://deno.land/x/kd_clients@v1.0.0-preview.13/mod.ts" - }, "remote": { - "https://deno.land/std@0.133.0/_deno_unstable.ts": "23a1a36928f1b6d3b0170aaa67de09af12aa998525f608ff7331b9fb364cbde6", - "https://deno.land/std@0.133.0/_util/assert.ts": "e94f2eb37cebd7f199952e242c77654e43333c1ac4c5c700e929ea3aa5489f74", - "https://deno.land/std@0.133.0/_util/os.ts": "49b92edea1e82ba295ec946de8ffd956ed123e2948d9bd1d3e901b04e4307617", - "https://deno.land/std@0.133.0/fs/_util.ts": "0fb24eb4bfebc2c194fb1afdb42b9c3dda12e368f43e8f2321f84fc77d42cb0f", - "https://deno.land/std@0.133.0/fs/copy.ts": "9248d1492599957af8c693ceb10a432b09f0b0b61c60a4d6aff29b0c7d3a17b3", - "https://deno.land/std@0.133.0/fs/empty_dir.ts": "7274d87160de34cbed0531e284df383045cf43543bbeadeb97feac598bd8f3c5", - "https://deno.land/std@0.133.0/fs/ensure_dir.ts": "9dc109c27df4098b9fc12d949612ae5c9c7169507660dcf9ad90631833209d9d", - "https://deno.land/std@0.133.0/fs/ensure_file.ts": "7d353e64fee3d4d1e7c6b6726a2a5e987ba402c15fb49566309042887349c545", - "https://deno.land/std@0.133.0/fs/ensure_link.ts": "489e23df9fe3e6636048b5830ddf0f111eb29621eb85719255ad9bd645f3471b", - "https://deno.land/std@0.133.0/fs/ensure_symlink.ts": "88dc83de1bc90ed883dd458c2d2eae3d5834a4617d12925734836e1f0803b274", - "https://deno.land/std@0.133.0/fs/eol.ts": "b92f0b88036de507e7e6fbedbe8f666835ea9dcbf5ac85917fa1fadc919f83a5", - "https://deno.land/std@0.133.0/fs/exists.ts": "cb734d872f8554ea40b8bff77ad33d4143c1187eac621a55bf37781a43c56f6d", - "https://deno.land/std@0.133.0/fs/expand_glob.ts": "0c10130d67c9b02164b03df8e43c6d6defbf8e395cb69d09e84a8586e6d72ac3", - "https://deno.land/std@0.133.0/fs/mod.ts": "4dc052c461c171abb5c25f6e0f218ab838a716230930b534ba351745864b7d6d", - "https://deno.land/std@0.133.0/fs/move.ts": "0573cedcf583f09a9494f2dfccbf67de68a93629942d6b5e6e74a9e45d4e8a2e", - "https://deno.land/std@0.133.0/fs/walk.ts": "117403ccd21fd322febe56ba06053b1ad5064c802170f19b1ea43214088fe95f", - "https://deno.land/std@0.133.0/path/_constants.ts": "df1db3ffa6dd6d1252cc9617e5d72165cd2483df90e93833e13580687b6083c3", - "https://deno.land/std@0.133.0/path/_interface.ts": "ee3b431a336b80cf445441109d089b70d87d5e248f4f90ff906820889ecf8d09", - "https://deno.land/std@0.133.0/path/_util.ts": "c1e9686d0164e29f7d880b2158971d805b6e0efc3110d0b3e24e4b8af2190d2b", - "https://deno.land/std@0.133.0/path/common.ts": "bee563630abd2d97f99d83c96c2fa0cca7cee103e8cb4e7699ec4d5db7bd2633", - "https://deno.land/std@0.133.0/path/glob.ts": "cb5255638de1048973c3e69e420c77dc04f75755524cb3b2e160fe9277d939ee", - "https://deno.land/std@0.133.0/path/mod.ts": "4275129bb766f0e475ecc5246aa35689eeade419d72a48355203f31802640be7", - "https://deno.land/std@0.133.0/path/posix.ts": "663e4a6fe30a145f56aa41a22d95114c4c5582d8b57d2d7c9ed27ad2c47636bb", - "https://deno.land/std@0.133.0/path/separator.ts": "fe1816cb765a8068afb3e8f13ad272351c85cbc739af56dacfc7d93d710fe0f9", - "https://deno.land/std@0.133.0/path/win32.ts": "e7bdf63e8d9982b4d8a01ef5689425c93310ece950e517476e22af10f41a136e", - "https://deno.land/std@0.162.0/_util/assert.ts": "e94f2eb37cebd7f199952e242c77654e43333c1ac4c5c700e929ea3aa5489f74", - "https://deno.land/std@0.162.0/bytes/bytes_list.ts": "aba5e2369e77d426b10af1de0dcc4531acecec27f9b9056f4f7bfbf8ac147ab4", - "https://deno.land/std@0.162.0/bytes/equals.ts": "3c3558c3ae85526f84510aa2b48ab2ad7bdd899e2e0f5b7a8ffc85acb3a6043a", - "https://deno.land/std@0.162.0/bytes/mod.ts": "b2e342fd3669176a27a4e15061e9d588b89c1aaf5008ab71766e23669565d179", - "https://deno.land/std@0.162.0/fmt/colors.ts": "9e36a716611dcd2e4865adea9c4bec916b5c60caad4cdcdc630d4974e6bb8bd4", - "https://deno.land/std@0.162.0/io/buffer.ts": "fae02290f52301c4e0188670e730cd902f9307fb732d79c4aa14ebdc82497289", - "https://deno.land/std@0.162.0/streams/conversion.ts": "555c6c249f3acf85655f2d0af52d1cb3168e40b1c1fa26beefea501b333abe28", - "https://deno.land/std@0.196.0/_util/os.ts": "d932f56d41e4f6a6093d56044e29ce637f8dcc43c5a90af43504a889cf1775e3", - "https://deno.land/std@0.196.0/assert/assert.ts": "9a97dad6d98c238938e7540736b826440ad8c1c1e54430ca4c4e623e585607ee", - "https://deno.land/std@0.196.0/assert/assertion_error.ts": "4d0bde9b374dfbcbe8ac23f54f567b77024fb67dbb1906a852d67fe050d42f56", - "https://deno.land/std@0.196.0/encoding/base64.ts": "144ae6234c1fbe5b68666c711dc15b1e9ee2aef6d42b3b4345bf9a6c91d70d0d", - "https://deno.land/std@0.196.0/fmt/colors.ts": "a7eecffdf3d1d54db890723b303847b6e0a1ab4b528ba6958b8f2e754cf1b3bc", - "https://deno.land/std@0.196.0/path/_constants.ts": "e49961f6f4f48039c0dfed3c3f93e963ca3d92791c9d478ac5b43183413136e0", - "https://deno.land/std@0.196.0/path/_interface.ts": "6471159dfbbc357e03882c2266d21ef9afdb1e4aa771b0545e90db58a0ba314b", - "https://deno.land/std@0.196.0/path/_util.ts": "d7abb1e0dea065f427b89156e28cdeb32b045870acdf865833ba808a73b576d0", - "https://deno.land/std@0.196.0/path/common.ts": "ee7505ab01fd22de3963b64e46cff31f40de34f9f8de1fff6a1bd2fe79380000", - "https://deno.land/std@0.196.0/path/glob.ts": "d479e0a695621c94d3fd7fe7abd4f9499caf32a8de13f25073451c6ef420a4e1", - "https://deno.land/std@0.196.0/path/mod.ts": "f065032a7189404fdac3ad1a1551a9ac84751d2f25c431e101787846c86c79ef", - "https://deno.land/std@0.196.0/path/posix.ts": "8b7c67ac338714b30c816079303d0285dd24af6b284f7ad63da5b27372a2c94d", - "https://deno.land/std@0.196.0/path/separator.ts": "0fb679739d0d1d7bf45b68dacfb4ec7563597a902edbaf3c59b50d5bcadd93b1", - "https://deno.land/std@0.196.0/path/win32.ts": "4fca292f8d116fd6d62f243b8a61bd3d6835a9f0ede762ba5c01afe7c3c0aa12", - "https://deno.land/std@0.203.0/dotenv/load.ts": "0636983549b98f29ab75c9a22a42d9723f0a389ece5498fe971e7bb2556a12e2", - "https://deno.land/std@0.203.0/dotenv/mod.ts": "1da8c6d0e7f7d8a5c2b19400b763bc11739df24acec235dda7ea2cfd3d300057", - "https://deno.land/std@0.203.0/encoding/_util.ts": "f368920189c4fe6592ab2e93bd7ded8f3065b84f95cd3e036a4a10a75649dcba", - "https://deno.land/std@0.203.0/encoding/base64.ts": "cc03110d6518170aeaa68ec97f89c6d6e2276294b30807e7332591d7ce2e4b72", - "https://deno.land/std@0.203.0/fs/exists.ts": "cb59a853d84871d87acab0e7936a4dac11282957f8e195102c5a7acb42546bb8", - "https://deno.land/std@0.204.0/assert/_constants.ts": "8a9da298c26750b28b326b297316cdde860bc237533b07e1337c021379e6b2a9", - "https://deno.land/std@0.204.0/assert/_diff.ts": "58e1461cc61d8eb1eacbf2a010932bf6a05b79344b02ca38095f9b805795dc48", - "https://deno.land/std@0.204.0/assert/_format.ts": "a69126e8a469009adf4cf2a50af889aca364c349797e63174884a52ff75cf4c7", - "https://deno.land/std@0.204.0/assert/assert.ts": "9a97dad6d98c238938e7540736b826440ad8c1c1e54430ca4c4e623e585607ee", - "https://deno.land/std@0.204.0/assert/assert_almost_equals.ts": "e15ca1f34d0d5e0afae63b3f5d975cbd18335a132e42b0c747d282f62ad2cd6c", - "https://deno.land/std@0.204.0/assert/assert_array_includes.ts": "6856d7f2c3544bc6e62fb4646dfefa3d1df5ff14744d1bca19f0cbaf3b0d66c9", - "https://deno.land/std@0.204.0/assert/assert_equals.ts": "d8ec8a22447fbaf2fc9d7c3ed2e66790fdb74beae3e482855d75782218d68227", - "https://deno.land/std@0.204.0/assert/assert_exists.ts": "407cb6b9fb23a835cd8d5ad804e2e2edbbbf3870e322d53f79e1c7a512e2efd7", - "https://deno.land/std@0.204.0/assert/assert_false.ts": "0ccbcaae910f52c857192ff16ea08bda40fdc79de80846c206bfc061e8c851c6", - "https://deno.land/std@0.204.0/assert/assert_greater.ts": "ae2158a2d19313bf675bf7251d31c6dc52973edb12ac64ac8fc7064152af3e63", - "https://deno.land/std@0.204.0/assert/assert_greater_or_equal.ts": "1439da5ebbe20855446cac50097ac78b9742abe8e9a43e7de1ce1426d556e89c", - "https://deno.land/std@0.204.0/assert/assert_instance_of.ts": "3aedb3d8186e120812d2b3a5dea66a6e42bf8c57a8bd927645770bd21eea554c", - "https://deno.land/std@0.204.0/assert/assert_is_error.ts": "c21113094a51a296ffaf036767d616a78a2ae5f9f7bbd464cd0197476498b94b", - "https://deno.land/std@0.204.0/assert/assert_less.ts": "aec695db57db42ec3e2b62e97e1e93db0063f5a6ec133326cc290ff4b71b47e4", - "https://deno.land/std@0.204.0/assert/assert_less_or_equal.ts": "5fa8b6a3ffa20fd0a05032fe7257bf985d207b85685fdbcd23651b70f928c848", - "https://deno.land/std@0.204.0/assert/assert_match.ts": "c4083f80600bc190309903c95e397a7c9257ff8b5ae5c7ef91e834704e672e9b", - "https://deno.land/std@0.204.0/assert/assert_not_equals.ts": "9f1acab95bd1f5fc9a1b17b8027d894509a745d91bac1718fdab51dc76831754", - "https://deno.land/std@0.204.0/assert/assert_not_instance_of.ts": "0c14d3dfd9ab7a5276ed8ed0b18c703d79a3d106102077ec437bfe7ed912bd22", - "https://deno.land/std@0.204.0/assert/assert_not_match.ts": "3796a5b0c57a1ce6c1c57883dd4286be13a26f715ea662318ab43a8491a13ab0", - "https://deno.land/std@0.204.0/assert/assert_not_strict_equals.ts": "ca6c6d645e95fbc873d25320efeb8c4c6089a9a5e09f92d7c1c4b6e935c2a6ad", - "https://deno.land/std@0.204.0/assert/assert_object_match.ts": "d8fc2867cfd92eeacf9cea621e10336b666de1874a6767b5ec48988838370b54", - "https://deno.land/std@0.204.0/assert/assert_rejects.ts": "45c59724de2701e3b1f67c391d6c71c392363635aad3f68a1b3408f9efca0057", - "https://deno.land/std@0.204.0/assert/assert_strict_equals.ts": "b1f538a7ea5f8348aeca261d4f9ca603127c665e0f2bbfeb91fa272787c87265", - "https://deno.land/std@0.204.0/assert/assert_string_includes.ts": "b821d39ebf5cb0200a348863c86d8c4c4b398e02012ce74ad15666fc4b631b0c", - "https://deno.land/std@0.204.0/assert/assert_throws.ts": "63784e951475cb7bdfd59878cd25a0931e18f6dc32a6077c454b2cd94f4f4bcd", - "https://deno.land/std@0.204.0/assert/assertion_error.ts": "4d0bde9b374dfbcbe8ac23f54f567b77024fb67dbb1906a852d67fe050d42f56", - "https://deno.land/std@0.204.0/assert/equal.ts": "9f1a46d5993966d2596c44e5858eec821859b45f783a5ee2f7a695dfc12d8ece", - "https://deno.land/std@0.204.0/assert/fail.ts": "c36353d7ae6e1f7933d45f8ea51e358c8c4b67d7e7502028598fe1fea062e278", - "https://deno.land/std@0.204.0/assert/mod.ts": "37c49a26aae2b254bbe25723434dc28cd7532e444cf0b481a97c045d110ec085", - "https://deno.land/std@0.204.0/assert/unimplemented.ts": "d56fbeecb1f108331a380f72e3e010a1f161baa6956fd0f7cf3e095ae1a4c75a", - "https://deno.land/std@0.204.0/assert/unreachable.ts": "4600dc0baf7d9c15a7f7d234f00c23bca8f3eba8b140286aaca7aa998cf9a536", - "https://deno.land/std@0.204.0/fmt/colors.ts": "c51c4642678eb690dcf5ffee5918b675bf01a33fba82acf303701ae1a4f8c8d9", - "https://deno.land/std@0.204.0/testing/mock.ts": "6576b4aa55ee20b1990d656a78fff83599e190948c00e9f25a7f3ac5e9d6492d", - "https://deno.land/std@0.208.0/assert/_constants.ts": "8a9da298c26750b28b326b297316cdde860bc237533b07e1337c021379e6b2a9", - "https://deno.land/std@0.208.0/assert/_diff.ts": "58e1461cc61d8eb1eacbf2a010932bf6a05b79344b02ca38095f9b805795dc48", - "https://deno.land/std@0.208.0/assert/_format.ts": "a69126e8a469009adf4cf2a50af889aca364c349797e63174884a52ff75cf4c7", - "https://deno.land/std@0.208.0/assert/assert.ts": "9a97dad6d98c238938e7540736b826440ad8c1c1e54430ca4c4e623e585607ee", - "https://deno.land/std@0.208.0/assert/assert_almost_equals.ts": "e15ca1f34d0d5e0afae63b3f5d975cbd18335a132e42b0c747d282f62ad2cd6c", - "https://deno.land/std@0.208.0/assert/assert_array_includes.ts": "6856d7f2c3544bc6e62fb4646dfefa3d1df5ff14744d1bca19f0cbaf3b0d66c9", - "https://deno.land/std@0.208.0/assert/assert_equals.ts": "d8ec8a22447fbaf2fc9d7c3ed2e66790fdb74beae3e482855d75782218d68227", - "https://deno.land/std@0.208.0/assert/assert_exists.ts": "407cb6b9fb23a835cd8d5ad804e2e2edbbbf3870e322d53f79e1c7a512e2efd7", - "https://deno.land/std@0.208.0/assert/assert_false.ts": "0ccbcaae910f52c857192ff16ea08bda40fdc79de80846c206bfc061e8c851c6", - "https://deno.land/std@0.208.0/assert/assert_greater.ts": "ae2158a2d19313bf675bf7251d31c6dc52973edb12ac64ac8fc7064152af3e63", - "https://deno.land/std@0.208.0/assert/assert_greater_or_equal.ts": "1439da5ebbe20855446cac50097ac78b9742abe8e9a43e7de1ce1426d556e89c", - "https://deno.land/std@0.208.0/assert/assert_instance_of.ts": "3aedb3d8186e120812d2b3a5dea66a6e42bf8c57a8bd927645770bd21eea554c", - "https://deno.land/std@0.208.0/assert/assert_is_error.ts": "c21113094a51a296ffaf036767d616a78a2ae5f9f7bbd464cd0197476498b94b", - "https://deno.land/std@0.208.0/assert/assert_less.ts": "aec695db57db42ec3e2b62e97e1e93db0063f5a6ec133326cc290ff4b71b47e4", - "https://deno.land/std@0.208.0/assert/assert_less_or_equal.ts": "5fa8b6a3ffa20fd0a05032fe7257bf985d207b85685fdbcd23651b70f928c848", - "https://deno.land/std@0.208.0/assert/assert_match.ts": "c4083f80600bc190309903c95e397a7c9257ff8b5ae5c7ef91e834704e672e9b", - "https://deno.land/std@0.208.0/assert/assert_not_equals.ts": "9f1acab95bd1f5fc9a1b17b8027d894509a745d91bac1718fdab51dc76831754", - "https://deno.land/std@0.208.0/assert/assert_not_instance_of.ts": "0c14d3dfd9ab7a5276ed8ed0b18c703d79a3d106102077ec437bfe7ed912bd22", - "https://deno.land/std@0.208.0/assert/assert_not_match.ts": "3796a5b0c57a1ce6c1c57883dd4286be13a26f715ea662318ab43a8491a13ab0", - "https://deno.land/std@0.208.0/assert/assert_not_strict_equals.ts": "4cdef83df17488df555c8aac1f7f5ec2b84ad161b6d0645ccdbcc17654e80c99", - "https://deno.land/std@0.208.0/assert/assert_object_match.ts": "d8fc2867cfd92eeacf9cea621e10336b666de1874a6767b5ec48988838370b54", - "https://deno.land/std@0.208.0/assert/assert_rejects.ts": "45c59724de2701e3b1f67c391d6c71c392363635aad3f68a1b3408f9efca0057", - "https://deno.land/std@0.208.0/assert/assert_strict_equals.ts": "b1f538a7ea5f8348aeca261d4f9ca603127c665e0f2bbfeb91fa272787c87265", - "https://deno.land/std@0.208.0/assert/assert_string_includes.ts": "b821d39ebf5cb0200a348863c86d8c4c4b398e02012ce74ad15666fc4b631b0c", - "https://deno.land/std@0.208.0/assert/assert_throws.ts": "63784e951475cb7bdfd59878cd25a0931e18f6dc32a6077c454b2cd94f4f4bcd", - "https://deno.land/std@0.208.0/assert/assertion_error.ts": "4d0bde9b374dfbcbe8ac23f54f567b77024fb67dbb1906a852d67fe050d42f56", - "https://deno.land/std@0.208.0/assert/equal.ts": "9f1a46d5993966d2596c44e5858eec821859b45f783a5ee2f7a695dfc12d8ece", - "https://deno.land/std@0.208.0/assert/fail.ts": "c36353d7ae6e1f7933d45f8ea51e358c8c4b67d7e7502028598fe1fea062e278", - "https://deno.land/std@0.208.0/assert/mod.ts": "37c49a26aae2b254bbe25723434dc28cd7532e444cf0b481a97c045d110ec085", - "https://deno.land/std@0.208.0/assert/unimplemented.ts": "d56fbeecb1f108331a380f72e3e010a1f161baa6956fd0f7cf3e095ae1a4c75a", - "https://deno.land/std@0.208.0/assert/unreachable.ts": "4600dc0baf7d9c15a7f7d234f00c23bca8f3eba8b140286aaca7aa998cf9a536", - "https://deno.land/std@0.208.0/async/delay.ts": "a6142eb44cdd856b645086af2b811b1fcce08ec06bb7d50969e6a872ee9b8659", - "https://deno.land/std@0.208.0/bytes/concat.ts": "d3d420badeb4f26a0f2f3ce343725f937326aff1b4634b25341b12b27353aac4", - "https://deno.land/std@0.208.0/crypto/_fnv/fnv32.ts": "e4649dfdefc5c987ed53c3c25db62db771a06d9d1b9c36d2b5cf0853b8e82153", - "https://deno.land/std@0.208.0/crypto/_fnv/fnv64.ts": "bfa0e4702061fdb490a14e6bf5f9168a22fb022b307c5723499469bfefca555e", - "https://deno.land/std@0.208.0/crypto/_fnv/mod.ts": "f956a95f58910f223e420340b7404702ecd429603acd4491fa77af84f746040c", - "https://deno.land/std@0.208.0/crypto/_fnv/util.ts": "accba12bfd80a352e32a872f87df2a195e75561f1b1304a4cb4f5a4648d288f9", - "https://deno.land/std@0.208.0/crypto/_wasm/lib/deno_std_wasm_crypto.generated.mjs": "c41c4676a3ea2a92e8fdff55434533474131e4dfac2262a6a6c81631069808d8", - "https://deno.land/std@0.208.0/crypto/_wasm/mod.ts": "d7b7dc54bbd6b02c16cd08e8e3d30fa9aa9692efb112a7ab5d8595827b9a0234", - "https://deno.land/std@0.208.0/crypto/crypto.ts": "91c67764abb640b3e2a0b46867704d02077c0b1f978f5c711e4408e5d856717d", - "https://deno.land/std@0.208.0/fmt/colors.ts": "34b3f77432925eb72cf0bfb351616949746768620b8e5ead66da532f93d10ba2", - "https://deno.land/std@0.208.0/fs/_util.ts": "fbf57dcdc9f7bc8128d60301eece608246971a7836a3bb1e78da75314f08b978", - "https://deno.land/std@0.208.0/fs/copy.ts": "ca19e4837965914471df38fbd61e16f9e8adfe89f9cffb0c83615c83ea3fc2bf", - "https://deno.land/std@0.208.0/fs/empty_dir.ts": "7fba29ef2d03f3503cd512616efc0535984cf1bbe7ca9d098e8b4d0d88910120", - "https://deno.land/std@0.208.0/fs/ensure_dir.ts": "dc64c4c75c64721d4e3fb681f1382f803ff3d2868f08563ff923fdd20d071c40", - "https://deno.land/std@0.208.0/fs/ensure_file.ts": "39ac83cc283a20ec2735e956adf5de3e8a3334e0b6820547b5772f71c49ae083", - "https://deno.land/std@0.208.0/fs/ensure_link.ts": "c15e69c48556d78aae31b83e0c0ece04b7b8bc0951412f5b759aceb6fde7f0ac", - "https://deno.land/std@0.208.0/fs/ensure_symlink.ts": "b389c8568f0656d145ac7ece472afe710815cccbb2ebfd19da7978379ae143fe", - "https://deno.land/std@0.208.0/fs/eol.ts": "8565e1e076c5baced170236617150a7833668658e000205d896fc54084309ce1", - "https://deno.land/std@0.208.0/fs/exists.ts": "cb59a853d84871d87acab0e7936a4dac11282957f8e195102c5a7acb42546bb8", - "https://deno.land/std@0.208.0/fs/expand_glob.ts": "4f98c508fc9e40d6311d2f7fd88aaad05235cc506388c22dda315e095305811d", - "https://deno.land/std@0.208.0/fs/mod.ts": "bc3d0acd488cc7b42627044caf47d72019846d459279544e1934418955ba4898", - "https://deno.land/std@0.208.0/fs/move.ts": "b4f8f46730b40c32ea3c0bc8eb0fd0e8139249a698883c7b3756424cf19785c9", - "https://deno.land/std@0.208.0/fs/walk.ts": "c1e6b43f72a46e89b630140308bd51a4795d416a416b4cfb7cd4bd1e25946723", - "https://deno.land/std@0.208.0/path/_common/assert_path.ts": "061e4d093d4ba5aebceb2c4da3318bfe3289e868570e9d3a8e327d91c2958946", - "https://deno.land/std@0.208.0/path/_common/basename.ts": "0d978ff818f339cd3b1d09dc914881f4d15617432ae519c1b8fdc09ff8d3789a", - "https://deno.land/std@0.208.0/path/_common/common.ts": "9e4233b2eeb50f8b2ae10ecc2108f58583aea6fd3e8907827020282dc2b76143", - "https://deno.land/std@0.208.0/path/_common/constants.ts": "e49961f6f4f48039c0dfed3c3f93e963ca3d92791c9d478ac5b43183413136e0", - "https://deno.land/std@0.208.0/path/_common/dirname.ts": "2ba7fb4cc9fafb0f38028f434179579ce61d4d9e51296fad22b701c3d3cd7397", - "https://deno.land/std@0.208.0/path/_common/format.ts": "11aa62e316dfbf22c126917f5e03ea5fe2ee707386555a8f513d27ad5756cf96", - "https://deno.land/std@0.208.0/path/_common/from_file_url.ts": "ef1bf3197d2efbf0297a2bdbf3a61d804b18f2bcce45548ae112313ec5be3c22", - "https://deno.land/std@0.208.0/path/_common/glob_to_reg_exp.ts": "5c3c2b79fc2294ec803d102bd9855c451c150021f452046312819fbb6d4dc156", - "https://deno.land/std@0.208.0/path/_common/normalize.ts": "2ba7fb4cc9fafb0f38028f434179579ce61d4d9e51296fad22b701c3d3cd7397", - "https://deno.land/std@0.208.0/path/_common/normalize_string.ts": "88c472f28ae49525f9fe82de8c8816d93442d46a30d6bb5063b07ff8a89ff589", - "https://deno.land/std@0.208.0/path/_common/relative.ts": "1af19d787a2a84b8c534cc487424fe101f614982ae4851382c978ab2216186b4", - "https://deno.land/std@0.208.0/path/_common/strip_trailing_separators.ts": "7ffc7c287e97bdeeee31b155828686967f222cd73f9e5780bfe7dfb1b58c6c65", - "https://deno.land/std@0.208.0/path/_common/to_file_url.ts": "a8cdd1633bc9175b7eebd3613266d7c0b6ae0fb0cff24120b6092ac31662f9ae", - "https://deno.land/std@0.208.0/path/_interface.ts": "6471159dfbbc357e03882c2266d21ef9afdb1e4aa771b0545e90db58a0ba314b", - "https://deno.land/std@0.208.0/path/_os.ts": "30b0c2875f360c9296dbe6b7f2d528f0f9c741cecad2e97f803f5219e91b40a2", - "https://deno.land/std@0.208.0/path/basename.ts": "04bb5ef3e86bba8a35603b8f3b69537112cdd19ce64b77f2522006da2977a5f3", - "https://deno.land/std@0.208.0/path/common.ts": "f4d061c7d0b95a65c2a1a52439edec393e906b40f1caf4604c389fae7caa80f5", - "https://deno.land/std@0.208.0/path/dirname.ts": "88a0a71c21debafc4da7a4cd44fd32e899462df458fbca152390887d41c40361", - "https://deno.land/std@0.208.0/path/extname.ts": "2da4e2490f3b48b7121d19fb4c91681a5e11bd6bd99df4f6f47d7a71bb6ecdf2", - "https://deno.land/std@0.208.0/path/format.ts": "3457530cc85d1b4bab175f9ae73998b34fd456c830d01883169af0681b8894fb", - "https://deno.land/std@0.208.0/path/from_file_url.ts": "e7fa233ea1dff9641e8d566153a24d95010110185a6f418dd2e32320926043f8", - "https://deno.land/std@0.208.0/path/glob.ts": "a00a81a55c02bbe074ab21a50b6495c6f7795f54cd718c824adaa92c6c9b7419", - "https://deno.land/std@0.208.0/path/glob_to_regexp.ts": "74d7448c471e293d03f05ccb968df4365fed6aaa508506b6325a8efdc01d8271", - "https://deno.land/std@0.208.0/path/is_absolute.ts": "67232b41b860571c5b7537f4954c88d86ae2ba45e883ee37d3dec27b74909d13", - "https://deno.land/std@0.208.0/path/is_glob.ts": "567dce5c6656bdedfc6b3ee6c0833e1e4db2b8dff6e62148e94a917f289c06ad", - "https://deno.land/std@0.208.0/path/join.ts": "98d3d76c819af4a11a81d5ba2dbb319f1ce9d63fc2b615597d4bcfddd4a89a09", - "https://deno.land/std@0.208.0/path/join_globs.ts": "9b84d5103b63d3dbed4b2cf8b12477b2ad415c7d343f1488505162dc0e5f4db8", - "https://deno.land/std@0.208.0/path/mod.ts": "3defabebc98279e62b392fee7a6937adc932a8f4dcd2471441e36c15b97b00e0", - "https://deno.land/std@0.208.0/path/normalize.ts": "aa95be9a92c7bd4f9dc0ba51e942a1973e2b93d266cd74f5ca751c136d520b66", - "https://deno.land/std@0.208.0/path/normalize_glob.ts": "674baa82e1c00b6cb153bbca36e06f8e0337cb8062db6d905ab5de16076ca46b", - "https://deno.land/std@0.208.0/path/parse.ts": "d87ff0deef3fb495bc0d862278ff96da5a06acf0625ca27769fc52ac0d3d6ece", - "https://deno.land/std@0.208.0/path/posix/_util.ts": "ecf49560fedd7dd376c6156cc5565cad97c1abe9824f4417adebc7acc36c93e5", - "https://deno.land/std@0.208.0/path/posix/basename.ts": "a630aeb8fd8e27356b1823b9dedd505e30085015407caa3396332752f6b8406a", - "https://deno.land/std@0.208.0/path/posix/common.ts": "e781d395dc76f6282e3f7dd8de13194abb8b04a82d109593141abc6e95755c8b", - "https://deno.land/std@0.208.0/path/posix/dirname.ts": "f48c9c42cc670803b505478b7ef162c7cfa9d8e751b59d278b2ec59470531472", - "https://deno.land/std@0.208.0/path/posix/extname.ts": "ee7f6571a9c0a37f9218fbf510c440d1685a7c13082c348d701396cc795e0be0", - "https://deno.land/std@0.208.0/path/posix/format.ts": "b94876f77e61bfe1f147d5ccb46a920636cd3cef8be43df330f0052b03875968", - "https://deno.land/std@0.208.0/path/posix/from_file_url.ts": "b97287a83e6407ac27bdf3ab621db3fccbf1c27df0a1b1f20e1e1b5acf38a379", - "https://deno.land/std@0.208.0/path/posix/glob_to_regexp.ts": "6ed00c71fbfe0ccc35977c35444f94e82200b721905a60bd1278b1b768d68b1a", - "https://deno.land/std@0.208.0/path/posix/is_absolute.ts": "159900a3422d11069d48395568217eb7fc105ceda2683d03d9b7c0f0769e01b8", - "https://deno.land/std@0.208.0/path/posix/is_glob.ts": "ec4fbc604b9db8487f7b56ab0e759b24a971ab6a45f7b0b698bc39b8b9f9680f", - "https://deno.land/std@0.208.0/path/posix/join.ts": "0c0d84bdc344876930126640011ec1b888e6facf74153ffad9ef26813aa2a076", - "https://deno.land/std@0.208.0/path/posix/join_globs.ts": "f4838d54b1f60a34a40625a3293f6e583135348be1b2974341ac04743cb26121", - "https://deno.land/std@0.208.0/path/posix/mod.ts": "f1b08a7f64294b7de87fc37190d63b6ce5b02889af9290c9703afe01951360ae", - "https://deno.land/std@0.208.0/path/posix/normalize.ts": "11de90a94ab7148cc46e5a288f7d732aade1d616bc8c862f5560fa18ff987b4b", - "https://deno.land/std@0.208.0/path/posix/normalize_glob.ts": "10a1840c628ebbab679254d5fa1c20e59106102354fb648a1765aed72eb9f3f9", - "https://deno.land/std@0.208.0/path/posix/parse.ts": "199208f373dd93a792e9c585352bfc73a6293411bed6da6d3bc4f4ef90b04c8e", - "https://deno.land/std@0.208.0/path/posix/relative.ts": "e2f230608b0f083e6deaa06e063943e5accb3320c28aef8d87528fbb7fe6504c", - "https://deno.land/std@0.208.0/path/posix/resolve.ts": "51579d83159d5c719518c9ae50812a63959bbcb7561d79acbdb2c3682236e285", - "https://deno.land/std@0.208.0/path/posix/separator.ts": "0b6573b5f3269a3164d8edc9cefc33a02dd51003731c561008c8bb60220ebac1", - "https://deno.land/std@0.208.0/path/posix/to_file_url.ts": "08d43ea839ee75e9b8b1538376cfe95911070a655cd312bc9a00f88ef14967b6", - "https://deno.land/std@0.208.0/path/posix/to_namespaced_path.ts": "c9228a0e74fd37e76622cd7b142b8416663a9b87db643302fa0926b5a5c83bdc", - "https://deno.land/std@0.208.0/path/relative.ts": "23d45ede8b7ac464a8299663a43488aad6b561414e7cbbe4790775590db6349c", - "https://deno.land/std@0.208.0/path/resolve.ts": "5b184efc87155a0af9fa305ff68a109e28de9aee81fc3e77cd01380f19daf867", - "https://deno.land/std@0.208.0/path/separator.ts": "40a3e9a4ad10bef23bc2cd6c610291b6c502a06237c2c4cd034a15ca78dedc1f", - "https://deno.land/std@0.208.0/path/to_file_url.ts": "edaafa089e0bce386e1b2d47afe7c72e379ff93b28a5829a5885e4b6c626d864", - "https://deno.land/std@0.208.0/path/to_namespaced_path.ts": "cf8734848aac3c7527d1689d2adf82132b1618eff3cc523a775068847416b22a", - "https://deno.land/std@0.208.0/path/windows/_util.ts": "f32b9444554c8863b9b4814025c700492a2b57ff2369d015360970a1b1099d54", - "https://deno.land/std@0.208.0/path/windows/basename.ts": "8a9dbf7353d50afbc5b221af36c02a72c2d1b2b5b9f7c65bf6a5a2a0baf88ad3", - "https://deno.land/std@0.208.0/path/windows/common.ts": "e781d395dc76f6282e3f7dd8de13194abb8b04a82d109593141abc6e95755c8b", - "https://deno.land/std@0.208.0/path/windows/dirname.ts": "5c2aa541384bf0bd9aca821275d2a8690e8238fa846198ef5c7515ce31a01a94", - "https://deno.land/std@0.208.0/path/windows/extname.ts": "07f4fa1b40d06a827446b3e3bcc8d619c5546b079b8ed0c77040bbef716c7614", - "https://deno.land/std@0.208.0/path/windows/format.ts": "343019130d78f172a5c49fdc7e64686a7faf41553268961e7b6c92a6d6548edf", - "https://deno.land/std@0.208.0/path/windows/from_file_url.ts": "d53335c12b0725893d768be3ac6bf0112cc5b639d2deb0171b35988493b46199", - "https://deno.land/std@0.208.0/path/windows/glob_to_regexp.ts": "290755e18ec6c1a4f4d711c3390537358e8e3179581e66261a0cf348b1a13395", - "https://deno.land/std@0.208.0/path/windows/is_absolute.ts": "245b56b5f355ede8664bd7f080c910a97e2169972d23075554ae14d73722c53c", - "https://deno.land/std@0.208.0/path/windows/is_glob.ts": "ec4fbc604b9db8487f7b56ab0e759b24a971ab6a45f7b0b698bc39b8b9f9680f", - "https://deno.land/std@0.208.0/path/windows/join.ts": "e6600bf88edeeef4e2276e155b8de1d5dec0435fd526ba2dc4d37986b2882f16", - "https://deno.land/std@0.208.0/path/windows/join_globs.ts": "f4838d54b1f60a34a40625a3293f6e583135348be1b2974341ac04743cb26121", - "https://deno.land/std@0.208.0/path/windows/mod.ts": "d7040f461465c2c21c1c68fc988ef0bdddd499912138cde3abf6ad60c7fb3814", - "https://deno.land/std@0.208.0/path/windows/normalize.ts": "9deebbf40c81ef540b7b945d4ccd7a6a2c5a5992f791e6d3377043031e164e69", - "https://deno.land/std@0.208.0/path/windows/normalize_glob.ts": "344ff5ed45430495b9a3d695567291e50e00b1b3b04ea56712a2acf07ab5c128", - "https://deno.land/std@0.208.0/path/windows/parse.ts": "120faf778fe1f22056f33ded069b68e12447668fcfa19540c0129561428d3ae5", - "https://deno.land/std@0.208.0/path/windows/relative.ts": "026855cd2c36c8f28f1df3c6fbd8f2449a2aa21f48797a74700c5d872b86d649", - "https://deno.land/std@0.208.0/path/windows/resolve.ts": "5ff441ab18a2346abadf778121128ee71bda4d0898513d4639a6ca04edca366b", - "https://deno.land/std@0.208.0/path/windows/separator.ts": "ae21f27015f10510ed1ac4a0ba9c4c9c967cbdd9d9e776a3e4967553c397bd5d", - "https://deno.land/std@0.208.0/path/windows/to_file_url.ts": "8e9ea9e1ff364aa06fa72999204229952d0a279dbb876b7b838b2b2fea55cce3", - "https://deno.land/std@0.208.0/path/windows/to_namespaced_path.ts": "e0f4d4a5e77f28a5708c1a33ff24360f35637ba6d8f103d19661255ef7bfd50d", - "https://deno.land/std@0.208.0/testing/mock.ts": "3f23573411caf1eacd48d62c5f9a606970648a694ce55132c76b0d2365baa03d", - "https://deno.land/std@0.208.0/uuid/_common.ts": "cb1441f4df460571fc0919e1c5c217f3e7006189b703caf946604b3f791ae34d", - "https://deno.land/std@0.208.0/uuid/constants.ts": "0d0e95561343da44adb4a4edbc1f04cef48b0d75288c4d1704f58743f4a50d88", - "https://deno.land/std@0.208.0/uuid/mod.ts": "5c7ca252dddba1ddf0bca2dc1124328245272650c98251d71996bb9cd8f5a386", - "https://deno.land/std@0.208.0/uuid/v1.ts": "fe36009afce7ced96e1b5928565e12c5a8eb0df1a2b5063c0a72bda6b75c0de5", - "https://deno.land/std@0.208.0/uuid/v3.ts": "397ad58daec8b5ef6ba7e94fe86c9bc56b194adcbe2f70ec40a1fb005203c870", - "https://deno.land/std@0.208.0/uuid/v4.ts": "0f081880c156fd59b9e44e2f84ea0f94a3627e89c224eaf6cc982b53d849f37e", - "https://deno.land/std@0.208.0/uuid/v5.ts": "9daaf769e487b512d25adf8e137e05ff2e3392d27f66d5b273ee28030ff7cd58", - "https://deno.land/std@0.216.0/assert/assert.ts": "bec068b2fccdd434c138a555b19a2c2393b71dfaada02b7d568a01541e67cdc5", - "https://deno.land/std@0.216.0/assert/assertion_error.ts": "9f689a101ee586c4ce92f52fa7ddd362e86434ffdf1f848e45987dc7689976b8", - "https://deno.land/std@0.216.0/fs/_create_walk_entry.ts": "5d9d2aaec05bcf09a06748b1684224d33eba7a4de24cf4cf5599991ca6b5b412", - "https://deno.land/std@0.216.0/fs/_to_path_string.ts": "29bfc9c6c112254961d75cbf6ba814d6de5349767818eb93090cecfa9665591e", - "https://deno.land/std@0.216.0/fs/walk.ts": "78e1d01a9f75715614bf8d6e58bd77d9fafb1222c41194e607cd3849d7a0e771", - "https://deno.land/std@0.216.0/path/_common/assert_path.ts": "2ca275f36ac1788b2acb60fb2b79cb06027198bc2ba6fb7e163efaedde98c297", - "https://deno.land/std@0.216.0/path/_common/basename.ts": "569744855bc8445f3a56087fd2aed56bdad39da971a8d92b138c9913aecc5fa2", - "https://deno.land/std@0.216.0/path/_common/constants.ts": "dc5f8057159f4b48cd304eb3027e42f1148cf4df1fb4240774d3492b5d12ac0c", - "https://deno.land/std@0.216.0/path/_common/from_file_url.ts": "d672bdeebc11bf80e99bf266f886c70963107bdd31134c4e249eef51133ceccf", - "https://deno.land/std@0.216.0/path/_common/normalize.ts": "684df4aa71a04bbcc346c692c8485594fc8a90b9408dfbc26ff32cf3e0c98cc8", - "https://deno.land/std@0.216.0/path/_common/normalize_string.ts": "dfdf657a1b1a7db7999f7c575ee7e6b0551d9c20f19486c6c3f5ff428384c965", - "https://deno.land/std@0.216.0/path/_common/strip_trailing_separators.ts": "7024a93447efcdcfeaa9339a98fa63ef9d53de363f1fbe9858970f1bba02655a", - "https://deno.land/std@0.216.0/path/_os.ts": "8fb9b90fb6b753bd8c77cfd8a33c2ff6c5f5bc185f50de8ca4ac6a05710b2c15", - "https://deno.land/std@0.216.0/path/basename.ts": "5d341aadb7ada266e2280561692c165771d071c98746fcb66da928870cd47668", - "https://deno.land/std@0.216.0/path/from_file_url.ts": "911833ae4fd10a1c84f6271f36151ab785955849117dc48c6e43b929504ee069", - "https://deno.land/std@0.216.0/path/join.ts": "ae2ec5ca44c7e84a235fd532e4a0116bfb1f2368b394db1c4fb75e3c0f26a33a", - "https://deno.land/std@0.216.0/path/normalize.ts": "4155743ccceeed319b350c1e62e931600272fad8ad00c417b91df093867a8352", - "https://deno.land/std@0.216.0/path/posix/_util.ts": "1e3937da30f080bfc99fe45d7ed23c47dd8585c5e473b2d771380d3a6937cf9d", - "https://deno.land/std@0.216.0/path/posix/basename.ts": "39ee27a29f1f35935d3603ccf01d53f3d6e0c5d4d0f84421e65bd1afeff42843", - "https://deno.land/std@0.216.0/path/posix/from_file_url.ts": "951aee3a2c46fd0ed488899d024c6352b59154c70552e90885ed0c2ab699bc40", - "https://deno.land/std@0.216.0/path/posix/join.ts": "aef88d5fa3650f7516730865dbb951594d1a955b785e2450dbee93b8e32694f3", - "https://deno.land/std@0.216.0/path/posix/normalize.ts": "baeb49816a8299f90a0237d214cef46f00ba3e95c0d2ceb74205a6a584b58a91", - "https://deno.land/std@0.216.0/path/windows/_util.ts": "d5f47363e5293fced22c984550d5e70e98e266cc3f31769e1710511803d04808", - "https://deno.land/std@0.216.0/path/windows/basename.ts": "e2dbf31d1d6385bfab1ce38c333aa290b6d7ae9e0ecb8234a654e583cf22f8fe", - "https://deno.land/std@0.216.0/path/windows/from_file_url.ts": "ced2d587b6dff18f963f269d745c4a599cf82b0c4007356bd957cb4cb52efc01", - "https://deno.land/std@0.216.0/path/windows/join.ts": "e0b3356615c1a75c56ebb6a7311157911659e11fd533d80d724800126b761ac3", - "https://deno.land/std@0.216.0/path/windows/normalize.ts": "78126170ab917f0ca355a9af9e65ad6bfa5be14d574c5fb09bb1920f52577780", "https://deno.land/std@0.218.2/assert/assert.ts": "bec068b2fccdd434c138a555b19a2c2393b71dfaada02b7d568a01541e67cdc5", "https://deno.land/std@0.218.2/assert/assertion_error.ts": "9f689a101ee586c4ce92f52fa7ddd362e86434ffdf1f848e45987dc7689976b8", "https://deno.land/std@0.218.2/bytes/concat.ts": "9cac3b4376afbef98ff03588eb3cf948e0d1eb6c27cfe81a7651ab6dd3adc54a", @@ -459,7 +142,6 @@ "https://deno.land/std@0.221.0/path/windows/to_namespaced_path.ts": "4ffa4fb6fae321448d5fe810b3ca741d84df4d7897e61ee29be961a6aac89a4c", "https://deno.land/std@0.221.0/text/closest_string.ts": "8a91ee8b6d69ff96addcb7c251dad53b476ac8be9c756a0ef786abe9e13a93a5", "https://deno.land/std@0.221.0/text/levenshtein_distance.ts": "24be5cc88326bbba83ca7c1ea89259af0050cffda2817ff3a6d240ad6495eae2", - "https://deno.land/std@0.223.0/streams/to_text.ts": "6f93593bdfc2cea5cca39755ea5caf0d4092580c0a713dfe04a1e85c60df331f", "https://deno.land/std@0.224.0/assert/_constants.ts": "a271e8ef5a573f1df8e822a6eb9d09df064ad66a4390f21b3e31f820a38e0975", "https://deno.land/std@0.224.0/assert/assert.ts": "09d30564c09de846855b7b071e62b5974b001bb72a4b797958fe0660e7849834", "https://deno.land/std@0.224.0/assert/assert_almost_equals.ts": "9e416114322012c9a21fa68e187637ce2d7df25bcbdbfd957cd639e65d3cf293", @@ -589,35 +271,7 @@ "https://deno.land/std@0.224.0/path/windows/resolve.ts": "8dae1dadfed9d46ff46cc337c9525c0c7d959fb400a6308f34595c45bdca1972", "https://deno.land/std@0.224.0/path/windows/to_file_url.ts": "40e560ee4854fe5a3d4d12976cef2f4e8914125c81b11f1108e127934ced502e", "https://deno.land/std@0.224.0/path/windows/to_namespaced_path.ts": "4ffa4fb6fae321448d5fe810b3ca741d84df4d7897e61ee29be961a6aac89a4c", - "https://deno.land/std@0.224.0/streams/to_text.ts": "6f93593bdfc2cea5cca39755ea5caf0d4092580c0a713dfe04a1e85c60df331f", - "https://deno.land/std@0.224.0/testing/asserts.ts": "d0cdbabadc49cc4247a50732ee0df1403fdcd0f95360294ad448ae8c240f3f5c", "https://deno.land/std@0.224.0/testing/mock.ts": "a963181c2860b6ba3eb60e08b62c164d33cf5da7cd445893499b2efda20074db", - "https://deno.land/x/cliffy@v1.0.0-rc.3/_utils/distance.ts": "02af166952c7c358ac83beae397aa2fbca4ad630aecfcd38d92edb1ea429f004", - "https://deno.land/x/cliffy@v1.0.0-rc.3/ansi/ansi_escapes.ts": "193b3c3a4e520274bd8322ca4cab1c3ce38070bed1898cb2ade12a585dddd7c9", - "https://deno.land/x/cliffy@v1.0.0-rc.3/ansi/chain.ts": "eca61b1b64cad7b9799490c12c7aa5538d0f63ac65a73ddb6acac8b35f0a5323", - "https://deno.land/x/cliffy@v1.0.0-rc.3/ansi/cursor_position.ts": "caa008d29f7a904908bda514f9839bfbb7a93f2d5f5580501675b646d26a87ff", - "https://deno.land/x/cliffy@v1.0.0-rc.3/ansi/deps.ts": "f48ae5d066684793f4a203524db2a9fd61f514527934b458006f3e57363c0215", - "https://deno.land/x/cliffy@v1.0.0-rc.3/ansi/tty.ts": "155aacdcb7dc00f3f95352616a2415c622ffb88db51c5934e5d2e8341eab010b", - "https://deno.land/x/cliffy@v1.0.0-rc.3/keycode/_key_codes.ts": "917f0a2da0dbace08cf29bcfdaaa2257da9fe7e705fff8867d86ed69dfb08cfe", - "https://deno.land/x/cliffy@v1.0.0-rc.3/keycode/key_code.ts": "730fa675ca12fc2a99ba718aa8dbebb1f2c89afd47484e30ef3cb705ddfca367", - "https://deno.land/x/cliffy@v1.0.0-rc.3/keycode/mod.ts": "981b828bddada634e62a2a067b9d1592986180c4e920eb55e0a43cc085eb98ab", - "https://deno.land/x/cliffy@v1.0.0-rc.3/prompt/_figures.ts": "e22413ddd51bb271b6b861a058742e83aaa3f62c14e8162cb73ae6f047062f51", - "https://deno.land/x/cliffy@v1.0.0-rc.3/prompt/_generic_input.ts": "870dad97077582439cee26cb19aec123b4850376331338abdc64a91224733cdc", - "https://deno.land/x/cliffy@v1.0.0-rc.3/prompt/_generic_list.ts": "8b0bea4521b1e2f62c564e0d3764a63264043694f4228bb0bc0b63ce129ef33b", - "https://deno.land/x/cliffy@v1.0.0-rc.3/prompt/_generic_prompt.ts": "4c9d9cdeda749620a3f5332524df13d083e2d59b1ed90a003f43cd0991a75a10", - "https://deno.land/x/cliffy@v1.0.0-rc.3/prompt/_generic_suggestions.ts": "5e6ee1190b4dd5af261ae2ff0196dec7f1988ea9c41c6288cfaece293703002c", - "https://deno.land/x/cliffy@v1.0.0-rc.3/prompt/_utils.ts": "498ae639d7666599d612b615ee85de9103b3c3a913d5196f6b265072674258c7", - "https://deno.land/x/cliffy@v1.0.0-rc.3/prompt/checkbox.ts": "9cfd71f1e278d0ef76054be103d956b66995593902c149380d01b1a1647025f3", - "https://deno.land/x/cliffy@v1.0.0-rc.3/prompt/confirm.ts": "ff892331f6de281079421fe2f57f1d56acb38f28bc48678f87a3fc11ef4a5f7c", - "https://deno.land/x/cliffy@v1.0.0-rc.3/prompt/deps.ts": "2560142f070bb2668e2e8a74683c799461648b9aad01bbf36b3cad3851d712e6", - "https://deno.land/x/cliffy@v1.0.0-rc.3/prompt/input.ts": "81821244f895cc4db32c2511c17e21fb48fd7606e300605aeb2a231ab1680544", - "https://deno.land/x/cliffy@v1.0.0-rc.3/prompt/list.ts": "e5d3e1a6d931b9736d03eec2425fb7b4d2b8d1461a84e210b4787edda414dca4", - "https://deno.land/x/cliffy@v1.0.0-rc.3/prompt/mod.ts": "f8789193742daf3aba93b543a2ea099383284d60fcccc03567102e28c0d61927", - "https://deno.land/x/cliffy@v1.0.0-rc.3/prompt/number.ts": "5421bf1b6411a6f02c44da4e867f19e02315450769e0feacab3c1c88cc1b06d6", - "https://deno.land/x/cliffy@v1.0.0-rc.3/prompt/prompt.ts": "f10e1c8a0c2ca093a485f7f1156342210b27a8cffc96fe0b4cff60007cabab30", - "https://deno.land/x/cliffy@v1.0.0-rc.3/prompt/secret.ts": "cece271c7ce01e12b249c31c2f9cea9e53b6e6be7621a478dac902bd8f288b61", - "https://deno.land/x/cliffy@v1.0.0-rc.3/prompt/select.ts": "c10902aeaca02a55d9b846934958dd166ee39c741faebdaa9800689e402186cf", - "https://deno.land/x/cliffy@v1.0.0-rc.3/prompt/toggle.ts": "028f80de31750e7b5479727a64b4878f090ecd783fe3bb0d286e2e1c29f0eee3", "https://deno.land/x/cliffy@v1.0.0-rc.4/ansi/ansi_escapes.ts": "193b3c3a4e520274bd8322ca4cab1c3ce38070bed1898cb2ade12a585dddd7c9", "https://deno.land/x/cliffy@v1.0.0-rc.4/ansi/chain.ts": "eca61b1b64cad7b9799490c12c7aa5538d0f63ac65a73ddb6acac8b35f0a5323", "https://deno.land/x/cliffy@v1.0.0-rc.4/ansi/cursor_position.ts": "7a07410b312885db92ada9ecab095db0ff72ffe339b4e2d31e8c705f2c60c7fa", @@ -702,11 +356,6 @@ "https://deno.land/x/cliffy@v1.0.0-rc.4/table/deps.ts": "cbb896e8d7a6b5e3c2b9dda7d16638c202d9b46eb738c2dae1fa9480d8091486", "https://deno.land/x/cliffy@v1.0.0-rc.4/table/row.ts": "79eb1468aafdd951e5963898cdafe0752d4ab4c519d5f847f3d8ecb8fe857d4f", "https://deno.land/x/cliffy@v1.0.0-rc.4/table/table.ts": "298671e72e61f1ab18b42ae36643181993f79e29b39dc411fdc6ffd53aa04684", - "https://deno.land/x/crayon@3.3.3/mod.ts": "82ad225583a483c4837577971629cddaa22614093af8353da6426b9366de9780", - "https://deno.land/x/crayon@3.3.3/src/conversions.ts": "9bfd3b1fbe412bcba092890ac558b6beaad4c3aa399cd99d45fadb324d28afd6", - "https://deno.land/x/crayon@3.3.3/src/crayon.ts": "6b237baa08a31c903436e040afd2228a7fffaa5d11dddc58e3c402f79b3c1d04", - "https://deno.land/x/crayon@3.3.3/src/styles.ts": "aa588b57b2c0482dc5c6f53109b4287831a9827c0aeef9a88129beae1172c1ee", - "https://deno.land/x/crayon@3.3.3/src/util.ts": "af8884a917488de76ac0c2b92482093ade74514ece77a4c64e5eb5b0f6ed68e6", "https://deno.land/x/kd_clients@v1.0.0-preview.13/GitHubClients/Errors/AuthError.ts": "bcc54cec31e2b14db5a9b420ac4c1dd06c079a1910e2f46e4c6e9106d405d932", "https://deno.land/x/kd_clients@v1.0.0-preview.13/GitHubClients/Errors/GitError.ts": "e32a1754ef85c9cfcf88e92ca1e44338f1a521c0ab04f3210f6c2297408339d1", "https://deno.land/x/kd_clients@v1.0.0-preview.13/GitHubClients/Errors/IssueError.ts": "3cb02e326067366857ecacefdf256ff8afb5981264a53ac50a31d74719801556", @@ -736,10 +385,7 @@ "https://deno.land/x/kd_clients@v1.0.0-preview.13/GitHubClients/WorkflowClient.ts": "1ec78aade805c7eb72995cebb873e8b59deabf48921ef4ff17d812a96fe3c463", "https://deno.land/x/kd_clients@v1.0.0-preview.13/GitHubClients/mod.ts": "06b020577ed4ce6cbc349256f7e5627bc3865a80da1c712d47f5a4d2f4cecf47", "https://deno.land/x/kd_clients@v1.0.0-preview.13/OtherClients/Errors/XError.ts": "aaab99b57784390a6f4348ee71dc4e65e3b603ac9af25cef669e8a80a85d2d51", - "https://deno.land/x/kd_clients@v1.0.0-preview.13/OtherClients/XAuthValues.ts": "2f6a548f88fb9d859dd80c95ecb25739c4087122e5c2d74f7c363a0c3afe938d", - "https://deno.land/x/kd_clients@v1.0.0-preview.13/OtherClients/XClient.ts": "f07ea67daffd9d55ca2e874c645aabe90b6c32d7dca93d46cf661e3b8017ae13", "https://deno.land/x/kd_clients@v1.0.0-preview.13/PackageClients/Errors/NuGetError.ts": "842931ff2dd43db1d9e8f9f82379dfc105807d7c40cf508d7d710d723b2ce4c0", - "https://deno.land/x/kd_clients@v1.0.0-preview.13/PackageClients/NuGetClient.ts": "417bf0b314ed3c9913bef08d14da541c67aaa082c59e27ef1c7c0b2acd6c9ad8", "https://deno.land/x/kd_clients@v1.0.0-preview.13/core/Enums.ts": "df445643e675f63ef0ff6562c2da3cd618b2a8aba0068b9ca473220f8cd17fe0", "https://deno.land/x/kd_clients@v1.0.0-preview.13/core/GitHubClient.ts": "13f01e2b14a14bac2770f586106e87bc0532d98f7e0163cbeb6f5cb7814184c9", "https://deno.land/x/kd_clients@v1.0.0-preview.13/core/GraphQl/Mutations/AddCommitMutation.ts": "22aae54c9f57a7706ede59aa4a8ca49a004a72b2f484fda49effe0e6e44a18d5", @@ -787,88 +433,6 @@ "https://deno.land/x/kd_clients@v1.0.0-preview.13/core/Types.ts": "3afcf0c47e5372e723ea12c14324def66941229e0c721eaf20c6245af1489042", "https://deno.land/x/kd_clients@v1.0.0-preview.13/core/Utils.ts": "8e33b8b202330f9135a037bdb62ed11c692755d84f0e00c878484c90429a6d0d", "https://deno.land/x/kd_clients@v1.0.0-preview.13/core/WebApiClient.ts": "3ccd4efd2265a591d3cc018940bfd8c144afb43d9c2f202f88c63318763bc969", - "https://deno.land/x/kd_clients@v1.0.0-preview.13/deps.ts": "741a1ea0885f2ef67b3d2fdc09cc94266105f273713a5865092fba99d3386793", - "https://deno.land/x/kd_clients@v1.0.0-preview.13/mod.ts": "27291ee78812ae207f378e2ea44bac86efe75112f6fa7d2feec56c5d9e8ae918", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/GitHubClients/Errors/BadCredentials.ts": "d1cfe290f7f7a2ab03feeb7d646005527e772f5646ce03b7b7c0d982cb4ec682", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/GitHubClients/Errors/GitError.ts": "e32a1754ef85c9cfcf88e92ca1e44338f1a521c0ab04f3210f6c2297408339d1", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/GitHubClients/Errors/IssueError.ts": "3cb02e326067366857ecacefdf256ff8afb5981264a53ac50a31d74719801556", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/GitHubClients/Errors/LabelError.ts": "52897bf654c0ebe55eb8f018649cb7c9449d48dff46738195608003d43a1ddb5", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/GitHubClients/Errors/MilestoneError.ts": "e94bb94d0a35b2346b16eb3cc73ce4f72b73b7e0dc6fa3a9029bd13b8842c2ac", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/GitHubClients/Errors/OrganizationError.ts": "513de21351c8dc56a18969d50d5337e12c3f9d24a8882207aceb6b0ce5a133b7", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/GitHubClients/Errors/ProjectError.ts": "2553e68eb727b78e56b004b6ceca323d38e7a2816cfc459fce5172ff38b68b56", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/GitHubClients/Errors/PullRequestError.ts": "04f5d965d9409b5a9777b481e331e5444ce5164e58fc5b8f2af21d6dac23f4c6", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/GitHubClients/Errors/ReleaseError.ts": "8c499c0857f59e932d0c1cd4cc9819e966dc534e9902c5af94c2c0a508114846", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/GitHubClients/Errors/RepoError.ts": "4db70346df0bb991bb505eea31ad56c8d5ca1f76663e264a9277160803edb6a2", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/GitHubClients/Errors/TagError.ts": "9ce1fc074ed0e313a62624abe95eed385743f98bdc17e26853206ec645bdcba9", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/GitHubClients/Errors/UsersError.ts": "db0c9877b512f71bd8c68f904e30d0e684539d94a9e29e36377af54ed238b1a9", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/GitHubClients/Errors/WorkflowError.ts": "3596ce58fd302fcf3a5236bcbf51cfee7f4d3d22f415046a9baa8ac6e57ccfcd", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/GitHubClients/GitClient.ts": "2112b07b866c44ab7e68afb58f8fbb4dde0746bcb19638fbeabe6db0204437ff", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/GitHubClients/GithubResponse.ts": "6a5ede27ce6b35dc679b4df7436d82a409acd8a09766e3a50d96f29420d0c05b", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/GitHubClients/IssueClient.ts": "c76474e288605c178ce1ad952ae51ad7bba74d98dd6a0664b313876e60703976", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/GitHubClients/LabelClient.ts": "95e437537a7951d3251c8aea9ca144177433ac688b759bc707ded644fe3640d6", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/GitHubClients/MilestoneClient.ts": "e0cfb6e4b8e95ad2283fce0061bdc5c54f90ce718a0bbe23b0e6227984198524", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/GitHubClients/OrgClient.ts": "0f7843de8cff5224765b2f78df1a9bf728503529856058154d3365161df77df9", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/GitHubClients/ProjectClient.ts": "5326d8375d8dd1459f9fe9ef2c339d2514b869dd373623424f96ec0650460d91", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/GitHubClients/PullRequestClient.ts": "64634219df66e6c1df1861debb18b50aa0363d6a78770851b6b9401bf92efd69", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/GitHubClients/ReleaseClient.ts": "407dd9d8b352752c083afd754de542ff0eda8958f0e32c3cfbd1d6ad4c88f771", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/GitHubClients/RepoClient.ts": "deaaefed63b97a8f6728bdd7fcb489391fd7c63b7bc452cfb4ada93b2a954144", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/GitHubClients/TagClient.ts": "e7b532f719f294974e31e8b637813f3503fdc1e9435226911c0220757a72fc36", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/GitHubClients/UsersClient.ts": "11385654e9bede78d964bc17ed5b01be5e89f444842604a937f60d0348609ab2", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/GitHubClients/WorkflowClient.ts": "ed8730ed53f15420d8c6894248a5b0beed54f4f518280950f50cc3ec265bd6f6", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/GitHubClients/mod.ts": "06b020577ed4ce6cbc349256f7e5627bc3865a80da1c712d47f5a4d2f4cecf47", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/Enums.ts": "df445643e675f63ef0ff6562c2da3cd618b2a8aba0068b9ca473220f8cd17fe0", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/GitHubClient.ts": "780d52a764dc2b04d28e0a5a0a45d718298b2ebd24fdd087b74fb7826a81fe0b", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/GraphQl/Mutations/AddCommitMutation.ts": "22aae54c9f57a7706ede59aa4a8ca49a004a72b2f484fda49effe0e6e44a18d5", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/GraphQl/Mutations/AddToProjectMutation.ts": "311f58888ced8a5fe924cd76a1cc00539a83a69d8545815987ab74efd455df49", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/GraphQl/Mutations/CreateBranchMutation.ts": "5312c9d57bc722c22fa8ff58caaccef348d4b584f0079ca627c9b98e7a3f6a8e", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/GraphQl/Queries/GetBranchesQuery.ts": "012258132fd858aeea42c47bfc6f45c04b4a2c53341e14e58c7166707776aae0", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/GraphQl/Queries/GetIssueProjectsQuery.ts": "4520c4300254f96e4bb7ea1067ed348fda0330413dcd10304d58757660f668da", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/GraphQl/Queries/GetOrgProjectsQueries.ts": "5a524cdcf2afed4b5ff6dbb09da26c83cdc2bdbc129c894b8fa37fddd23d7798", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/GraphQl/Queries/GetPullRequestProjectsQuery.ts": "961d5e2b7023a7977ce546767032902c73ea0a153a80efc31b2b0470ae3be9e8", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/GraphQlClient.ts": "cdf7a2b05304f70898a10720e490cf6d1767a56c82c8fa7dacc17526f31c95ab", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/Guard.ts": "61042337cb21d3604b71c4b30ccead65b1489427ba178721cf4d09021b6a48e9", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/IssueOrPRRequestData.ts": "c3bc08b69a1957ad9bbb0e3f2b15fac51b7500252b6325f0a81640f17e7e8a3b", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/LinkHeader.ts": "d00df83efd7f98ac69b4c4a0805b512d0a868cf6a2bbc0f601ab6a7f427ef031", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/LinkHeaderParser.ts": "4349f1deb0ba26695131d6eccef065bf891a0da54add50b1a129ef38abdb2d14", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/Models/CommitModel.ts": "7cfbcfc89d447f7ceb2299698c3fbbd493dcd7ccc5a480d9f18a4e2592867a10", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/Models/FileContentModel.ts": "b18a3b384ec3038f6e90468e8b869cb0225a11a5ba88781f568d6195c8cdca9c", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/Models/GitHubVarModel.ts": "1c77149cf3f3d43bcc9211f9674a08e9b06f9fcb4e2573a298ec6eadcf4b5321", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/Models/GitHubVariablesModel.ts": "5142617eec9da3907e01c6cb202a24136dbb1a7f5bd72e1a794397e7d15903ab", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/Models/GraphQlModels/ErrorModel.ts": "e7c0b340851aac852e35a8814e8a7cc10e08ece0e0b6ee719ab0c9b70a2a3c06", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/Models/GraphQlModels/GitBranchModel.ts": "2fb6004b814ccad50620f8578690edbd93971569065c814f729b20e300a7a309", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/Models/GraphQlModels/GraphQlRequestResponseModel.ts": "c9087ae6ecf0c29b8b91fea5be4dc71d1bb9e6dedd959a0166b6c305a3b6ccb2", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/Models/GraphQlModels/LocationModel.ts": "70ce481c29297748d504d04a3fe83df4464149f2b1b1e4bc40b620a3123586a0", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/Models/GraphQlModels/PageInfoModel.ts": "57c5e94c84c2dc6490a8fc8ad81774af6ea96aea5186d01e8e21b079ef9a70d3", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/Models/GraphQlModels/RawModels/RawGetBranchTargetModel.ts": "ea7a505badd430102863939ea6a9f2a7df388d7875c65873cdfc0a56875deed0", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/Models/GraphQlModels/RawModels/RawGitBranchModel.ts": "8a8045fb0e9959360d04fb049d8332ab7dc3d2dd5139f1c2a7bd9f1fdb21b4b0", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/Models/GraphQlModels/RawModels/RawRefsGetBranchModel.ts": "fe713d8e525efdb4f7e9344ffa28048e84978a7c99f656068eab0820c9e1511c", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/Models/IssueModel.ts": "b10b64d949f883bafa463cd0d33debb4f0acee2e1e72d83f0bd96468ad5be2be", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/Models/LabelModel.ts": "b94203083496bc8009341298331970ae057a2012c1f2c448e17bd7fed870fbbe", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/Models/MilestoneModel.ts": "2c5ad910471d617a5b9301db6caa31444d101c6a248d86df1adc0384f3f22c53", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/Models/ProjectModel.ts": "27893f1cc63d4994234e82e8d6e63f6f55191f912f2d1d4108971c05f4895ce1", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/Models/PullRequestHeadOrBaseModel.ts": "c2e38e8a799c4bd8c4bd3288635e9671ba51e19539bbc138590534de0dad16a2", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/Models/PullRequestInfoModel.ts": "0fc783c701bc62bd0c79de325ea16bcbe446efa022eb29f92309f9f9ac639c58", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/Models/PullRequestModel.ts": "0c60e9d236fa38597745a570cafc6254b576844a20e055b55d60d8718d826488", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/Models/ReleaseModel.ts": "c92a7ebcb0756babc05da0f9e1d08bbfd2ed16bbc3fc0d2a878cb343aa780d51", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/Models/RepoModel.ts": "97c0ae69d84851c170ed7a514f0e69c4fe4919c901c58cd5fc81dd4183f51a9d", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/Models/TagModel.ts": "7201dc41e148716ec27adec8f5e76734712a93ee7156a143589acd01bff08334", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/Models/UserModel.ts": "634dfac13ce03ef55004a5247e87b6d6c7fd30785f7731d49f4d4f03c689187b", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/Models/WorkflowRunModel.ts": "9465c759c074dddf0b5fea1af107a79fbbbca83200e88012c0ca9f4408efe50b", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/Models/WorkflowRunsModel.ts": "6d7f849f1a5c053126fc2abfad60fc21ea22e85181e2733d3d973178aba0c1ee", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/Models/mod.ts": "7032919085910ddb596be0c8e9e2cf407c102474743174b5131b4d3416d70359", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/PageInfo.ts": "354f5deb782d27570d29b16536d8ab8d9885145469f16fe4517fd049144c0081", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/Types.ts": "77c1e76f7d450e448f9f74b22986c921c967b0ebb60b7a4e7ed52f9c54fa92fd", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/Utils.ts": "8763a46920df69ef16a7a196b35148398e2dade329d3049be19896bb37c03dc0", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/core/WebApiClient.ts": "27f9a1cf197c9d35ebabdf2c3dc68e7e06c492c576521c1bac70629b2ecdf7ed", - "https://deno.land/x/kd_clients@v1.0.0-preview.5/deps.ts": "281a3473a3ac2af6703808d66c7339bd7dbd24e0552c04d04faf66cd81d5bfee", - "https://deno.land/x/progress@v1.3.9/deps.ts": "83050e627263931d853ba28b7c15c80bf4be912bea7e0d3d13da2bc0aaf7889d", - "https://deno.land/x/progress@v1.3.9/mod.ts": "ca14ba3c56fc5991c4beee622faeb882e59db8f28d4f5e529ac17b7b07d55741", - "https://deno.land/x/progress@v1.3.9/multi.ts": "1de7edf67047ba0050edf63229970f2cbf9cd069342fcd29444a3800d4cfdcbc", - "https://deno.land/x/progress@v1.3.9/time.ts": "f5b302425cef076958c9352030f48a79bd7b54316b4057f99192884b5e140ea0", - "https://deno.land/x/zip@v1.2.5/compress.ts": "43d9f4440960d15a85aec58f5d365acc25530d3d4186b2f5f896c090ecac20e8", - "https://deno.land/x/zip@v1.2.5/decompress.ts": "0bce3d453726f686274fab3f6c19b72b5e74223a00d89c176b1de49a5dd5528d", - "https://deno.land/x/zip@v1.2.5/deps.ts": "79548387594b3ae1efaaa870b5a507c4d6bedede13dbd5d4ad42f6cda0aeef86", - "https://deno.land/x/zip@v1.2.5/mod.ts": "28eecbc3e1e5adf564f4aa465e64268713a05653104bacdcb04561533f8caf57", - "https://deno.land/x/zip@v1.2.5/utils.ts": "43c323f2b79f9db1976c5739bbb1f9cced20e8077ca7e7e703f9d01d4330bd9d" + "https://deno.land/x/kd_clients@v1.0.0-preview.13/deps.ts": "741a1ea0885f2ef67b3d2fdc09cc94266105f273713a5865092fba99d3386793" } }