@futura-dev/cosmodrome
Advanced tools
Comparing version 1.2.0 to 1.3.0
@@ -11,9 +11,9 @@ #! /usr/bin/env node | ||
commander_1.program | ||
.name('@futura-dev/cosmodrome') | ||
.description('Cosmodrome 🚀') | ||
.version(process.env.npm_package_version ?? '0.0.0'); | ||
.name("@futura-dev/cosmodrome") | ||
.description("Cosmodrome 🚀") | ||
.version(process.env.npm_package_version ?? "0.0.0"); | ||
// 'release' command definition | ||
commander_1.program | ||
.command('release') | ||
.option('-c, --config <path>', 'path to configuration file', './.cosmodrome.json') | ||
.command("release") | ||
.option("-c, --config <path>", "path to configuration file", "./.cosmodrome.json") | ||
.action(async (...args) => { | ||
@@ -23,9 +23,7 @@ // parse and validate input | ||
// call the command | ||
const res = await (0, release_1.release)({ config }); | ||
await (0, release_1.release)({ config }); | ||
}); | ||
// 'init' command definition | ||
commander_1.program | ||
.command('init') | ||
.action(init_1.init); | ||
commander_1.program.command("init").action(init_1.init); | ||
// parse program | ||
commander_1.program.parse(process.argv); |
@@ -10,28 +10,31 @@ "use strict"; | ||
complete: { | ||
badge: '**', | ||
color: 'cyan', | ||
label: 'completed', | ||
}, | ||
badge: "**", | ||
color: "cyan", | ||
label: "completed" | ||
} | ||
}, | ||
config: { | ||
displayScope: false, | ||
}, | ||
displayScope: false | ||
} | ||
}; | ||
const s = new signale_1.Signale({ | ||
...baseSignalOptions, | ||
types: { ...baseSignalOptions.types, newline: { badge: '', label: '', color: 'black' } }, | ||
types: { | ||
...baseSignalOptions.types, | ||
newline: { badge: "", label: "", color: "black" } | ||
} | ||
}); | ||
const init = () => { | ||
fs.writeFileSync('./.cosmodrome.json', JSON.stringify({ | ||
'github': { | ||
'owner': '', | ||
'repo': '', | ||
'token': '', | ||
}, | ||
fs.writeFileSync("./.cosmodrome.json", JSON.stringify({ | ||
github: { | ||
owner: "", | ||
repo: "", | ||
token: "" | ||
} | ||
// eslint-disable-next-line comma-dangle | ||
}, null, 2)); | ||
s.complete('.cosmodrome.json file was successfully created'); | ||
const gitignore = fs.readFileSync('.gitignore', { encoding: 'utf8' }); | ||
fs.writeFileSync('.gitignore', gitignore + '\n# cosmodrome\n.cosmodrome.json\n', { flag: 'w' }); | ||
s.complete('added .cosmodrome.json to .gitignore'); | ||
s.complete(".cosmodrome.json file was successfully created"); | ||
const gitignore = fs.readFileSync(".gitignore", { encoding: "utf8" }); | ||
fs.writeFileSync(".gitignore", gitignore + "\n# cosmodrome\n.cosmodrome.json\n", { flag: "w" }); | ||
s.complete("added .cosmodrome.json to .gitignore"); | ||
// return | ||
@@ -38,0 +41,0 @@ return Promise.resolve(); |
export type Flags = { | ||
config: string; | ||
}; | ||
export type SemanticVersionType = 'major' | 'minor' | 'patch'; | ||
export type SemanticVersionType = "major" | "minor" | "patch"; | ||
/** | ||
@@ -6,0 +6,0 @@ * COMMAND release |
@@ -15,14 +15,17 @@ "use strict"; | ||
complete: { | ||
badge: '**', | ||
color: 'cyan', | ||
label: 'completed', | ||
}, | ||
badge: "**", | ||
color: "cyan", | ||
label: "completed" | ||
} | ||
}, | ||
config: { | ||
displayScope: false, | ||
}, | ||
displayScope: false | ||
} | ||
}; | ||
const s = new signale_1.Signale({ | ||
...baseSignalOptions, | ||
types: { ...baseSignalOptions.types, newline: { badge: '', label: '', color: 'black' } }, | ||
types: { | ||
...baseSignalOptions.types, | ||
newline: { badge: "", label: "", color: "black" } | ||
} | ||
}); | ||
@@ -32,3 +35,3 @@ const s_versioning = new signale_1.Signale({ | ||
interactive: true, | ||
scope: 'versioning', | ||
scope: "versioning" | ||
}); | ||
@@ -38,3 +41,3 @@ const s_git = new signale_1.Signale({ | ||
interactive: true, | ||
scope: 'git', | ||
scope: "git" | ||
}); | ||
@@ -52,14 +55,14 @@ /** | ||
// check for local pending changes | ||
const output = (0, functions_1.controlledSpawn)('git', ['status', '--short']); | ||
if (output !== '') { | ||
s.error('Found local changes, please commit or stash it before relaunch release command.'); | ||
const output = (0, functions_1.controlledSpawn)("git", ["status", "--short"]); | ||
if (output !== "") { | ||
s.error("Found local changes, please commit or stash it before relaunch release command."); | ||
process.exit(0); | ||
} | ||
// load and validate the root package.json | ||
const p_json = package_json_1.root_package_json_schema.parse(JSON.parse(fs.readFileSync('./package.json', { encoding: 'utf-8' }))); | ||
const p_json = package_json_1.root_package_json_schema.parse(JSON.parse(fs.readFileSync("./package.json", { encoding: "utf-8" }))); | ||
const _config = { | ||
run: '.', | ||
run: ".", | ||
monorepo: false, | ||
detected_version: '', | ||
new_version: '', | ||
detected_version: "", | ||
new_version: "" | ||
}; | ||
@@ -70,8 +73,8 @@ // is a monorepo ? | ||
const workspace = await prompts.select({ | ||
message: 'choose the workspace', | ||
message: "choose the workspace", | ||
choices: workspaces.map((workspace_path) => { | ||
return { | ||
value: workspace_path, | ||
value: workspace_path | ||
}; | ||
}), | ||
}) | ||
}); | ||
@@ -88,23 +91,23 @@ // update config | ||
} | ||
const config = cosmodrome_config_1.cosmodrome_config_schema.parse(JSON.parse(fs.readFileSync(flags.config, { encoding: 'utf8' }))); | ||
const config = cosmodrome_config_1.cosmodrome_config_schema.parse(JSON.parse(fs.readFileSync(flags.config, { encoding: "utf8" }))); | ||
// STEP 1 | ||
// validate the configuration | ||
s.complete('configuration loaded successfully'); | ||
s.complete("configuration loaded successfully"); | ||
s.newline(); | ||
// repo configuration | ||
const repo_config = { | ||
tagName: '', | ||
releaseName: '', | ||
commitMessage: '', | ||
tagName: "", | ||
releaseName: "", | ||
commitMessage: "" | ||
}; | ||
// STEP 2 | ||
// choose the correct semantic version | ||
const semantic = await prompts.select({ | ||
message: 'choose a version type', | ||
choices: [{ value: 'major' }, { value: 'minor' }, { value: 'patch' }], | ||
}); | ||
const semantic = (await prompts.select({ | ||
message: "choose a version type", | ||
choices: [{ value: "major" }, { value: "minor" }, { value: "patch" }] | ||
})); | ||
// MONOREPO | ||
if (_config.monorepo) { | ||
// read the target workspace package.json | ||
const target_p_json = package_json_1.workspace_package_json_schema.parse(JSON.parse(fs.readFileSync(`${_config.run}/package.json`, { encoding: 'utf-8' }))); | ||
const target_p_json = package_json_1.workspace_package_json_schema.parse(JSON.parse(fs.readFileSync(`${_config.run}/package.json`, { encoding: "utf-8" }))); | ||
// set repo config vars | ||
@@ -130,5 +133,7 @@ const workspace_new_version = _computeNewVersion(target_p_json.version, semantic); | ||
// Update the version in package.json and package-lock.json | ||
s_versioning.pending('updating version ...'); | ||
(0, functions_1.controlledSpawn)('npm', ['pkg', 'set', `version=${_config.new_version}`], { cwd: _config.run }); | ||
(0, functions_1.controlledSpawn)('npm', ['i'], { cwd: _config.run }); | ||
s_versioning.pending("updating version ..."); | ||
(0, functions_1.controlledSpawn)("npm", ["pkg", "set", `version=${_config.new_version}`], { | ||
cwd: _config.run | ||
}); | ||
(0, functions_1.controlledSpawn)("npm", ["i"], { cwd: _config.run }); | ||
s_versioning.complete(`version updated from ${_config.detected_version} to ${_config.new_version} in package.json and package-lock.json`); | ||
@@ -138,16 +143,19 @@ s.newline(); | ||
// Ask configuration | ||
s.pending('asking for config data...'); | ||
const message = await prompts.input({ message: 'Insert the commit message:', default: repo_config.commitMessage }); | ||
const doesTag = await prompts.confirm({ message: 'Create the tag ?' }); | ||
const doesPush = await prompts.confirm({ message: 'Push ?' }); | ||
s.pending("asking for config data..."); | ||
const message = await prompts.input({ | ||
message: "Insert the commit message:", | ||
default: repo_config.commitMessage | ||
}); | ||
const doesTag = await prompts.confirm({ message: "Create the tag ?" }); | ||
const doesPush = await prompts.confirm({ message: "Push ?" }); | ||
// choose repository provider type | ||
const git_provider = await prompts.select({ | ||
message: 'Choose the repository provider', | ||
const git_provider = (await prompts.select({ | ||
message: "Choose the repository provider", | ||
choices: [ | ||
{ value: 'GitHub' }, | ||
{ value: 'DevOps' }, | ||
{ value: "GitHub" }, | ||
{ value: "DevOps" } | ||
// { value: 'GitLab' }, | ||
// { value: 'BitBucket' } | ||
], | ||
}); | ||
] | ||
})); | ||
const git_provider_config = { | ||
@@ -157,21 +165,23 @@ isPreRelease: false, | ||
doesGenerateReleaseNotes: true, | ||
releaseBranchName: (0, functions_1.controlledSpawn)('git', ['branch', '--show-current']), | ||
releaseBranchName: (0, functions_1.controlledSpawn)("git", ["branch", "--show-current"]) | ||
}; | ||
if (git_provider === 'GitHub') { | ||
git_provider_config.isPreRelease = | ||
await prompts.confirm({ message: 'Is a pre-release ?', default: git_provider_config.isPreRelease }); | ||
git_provider_config.isDraft = | ||
await prompts.confirm({ message: 'Sign release as draft ?', default: git_provider_config.isDraft }); | ||
git_provider_config.doesGenerateReleaseNotes = | ||
await prompts.confirm({ | ||
message: 'Does generate auto release notes ?', | ||
default: git_provider_config.doesGenerateReleaseNotes, | ||
}); | ||
git_provider_config.releaseBranchName = | ||
await prompts.input({ | ||
message: 'Insert the git branch name for release ( default current ):', | ||
default: git_provider_config.releaseBranchName, | ||
}); | ||
if (git_provider === "GitHub") { | ||
git_provider_config.isPreRelease = await prompts.confirm({ | ||
message: "Is a pre-release ?", | ||
default: git_provider_config.isPreRelease | ||
}); | ||
git_provider_config.isDraft = await prompts.confirm({ | ||
message: "Sign release as draft ?", | ||
default: git_provider_config.isDraft | ||
}); | ||
git_provider_config.doesGenerateReleaseNotes = await prompts.confirm({ | ||
message: "Does generate auto release notes ?", | ||
default: git_provider_config.doesGenerateReleaseNotes | ||
}); | ||
git_provider_config.releaseBranchName = await prompts.input({ | ||
message: "Insert the git branch name for release ( default current ):", | ||
default: git_provider_config.releaseBranchName | ||
}); | ||
} | ||
s.complete('all data tacked'); | ||
s.complete("all data tacked"); | ||
s.newline(); | ||
@@ -182,5 +192,11 @@ // STEP 5 | ||
// update git locally | ||
(0, functions_1.controlledSpawn)('git', ['commit', `-am ${message}`, '--no-verify']); | ||
(0, functions_1.controlledSpawn)("git", [ | ||
"commit", | ||
`-am ${message}`, | ||
"--author", | ||
`${config.git.authorUsername} <${config.git.authorEmail}>`, | ||
"--no-verify" | ||
]); | ||
s.complete(`created commit with message ${message}`); | ||
doesTag && (0, functions_1.controlledSpawn)('git', ['tag', repo_config.tagName]); | ||
doesTag && (0, functions_1.controlledSpawn)("git", ["tag", repo_config.tagName]); | ||
s.complete(`created tag ${repo_config.tagName}`); | ||
@@ -190,19 +206,20 @@ s.newline(); | ||
// push git changes | ||
s_git.pending('pushing new commit ...'); | ||
doesPush && (0, functions_1.controlledSpawn)('git', ['push'], {}); | ||
s_git.complete('commit pushed'); | ||
s_git.pending("pushing new commit ..."); | ||
doesPush && (0, functions_1.controlledSpawn)("git", ["push"], {}); | ||
s_git.complete("commit pushed"); | ||
s.newline(); | ||
s_git.pending('pushing new tags ...'); | ||
doesTag && (0, functions_1.controlledSpawn)('git', ['push', '--tags'], {}); | ||
s_git.complete('tags pushed'); | ||
s_git.pending("pushing new tags ..."); | ||
doesTag && (0, functions_1.controlledSpawn)("git", ["push", "--tags"], {}); | ||
s_git.complete("tags pushed"); | ||
s.newline(); | ||
// STEP 8 (?) | ||
// create release on repository | ||
if (git_provider === 'GitHub' && !config.github) { | ||
s.error('missing \'github\' configuration inside the .cosmodrome.json file'); | ||
if (git_provider === "GitHub" && !config.github) { | ||
s.error("missing 'github' configuration inside the .cosmodrome.json file"); | ||
process.exit(0); | ||
} | ||
if (git_provider === 'GitHub' && doesPush && config.github) { | ||
s_git.pending('pushing release on github ...'); | ||
axios_1.default.post(`https://api.github.com/repos/${config.github.owner}/${config.github.repo}/releases`, { | ||
if (git_provider === "GitHub" && doesPush && config.github) { | ||
s_git.pending("pushing release on github ..."); | ||
axios_1.default | ||
.post(`https://api.github.com/repos/${config.github.owner}/${config.github.repo}/releases`, { | ||
tag_name: repo_config.tagName, | ||
@@ -214,18 +231,20 @@ target_commitish: git_provider_config.releaseBranchName, | ||
prerelease: git_provider_config.isPreRelease, | ||
generate_release_notes: git_provider_config.doesGenerateReleaseNotes, | ||
generate_release_notes: git_provider_config.doesGenerateReleaseNotes | ||
}, { | ||
headers: { | ||
Accept: 'application/vnd.github+json', | ||
Accept: "application/vnd.github+json", | ||
Authorization: `Bearer ${config.github.token}`, | ||
'X-GitHub-Api-Version': '2022-11-28', | ||
}, | ||
}).then((res) => { | ||
console.log('SUCCESS'); | ||
"X-GitHub-Api-Version": "2022-11-28" | ||
} | ||
}) | ||
.then(res => { | ||
console.log("SUCCESS"); | ||
s.info(res); | ||
s_git.complete(`Release ${repo_config.releaseName} created`); | ||
s.newline(); | ||
s.success('well done'); | ||
s.success("well done"); | ||
resolve(); | ||
}).catch((err) => { | ||
console.log('ERROR'); | ||
}) | ||
.catch(err => { | ||
console.log("ERROR"); | ||
s.info(err); | ||
@@ -240,13 +259,13 @@ s_git.fatal(err); | ||
const _computeNewVersion = (version, result) => { | ||
if (version.split('.').length !== 3) | ||
throw new Error('version is bad formatted'); | ||
const semanticVersion = version.split('.').map(string => Number(string)); | ||
if (version.split(".").length !== 3) | ||
throw new Error("version is bad formatted"); | ||
const semanticVersion = version.split(".").map(string => Number(string)); | ||
switch (result) { | ||
case 'major': | ||
case "major": | ||
return `${semanticVersion[0] + 1}.0.0`; | ||
case 'minor': | ||
case "minor": | ||
return `${semanticVersion[0]}.${semanticVersion[1] + 1}.0`; | ||
case 'patch': | ||
case "patch": | ||
return `${semanticVersion[0]}.${semanticVersion[1]}.${semanticVersion[2] + 1}`; | ||
} | ||
}; |
@@ -10,7 +10,7 @@ "use strict"; | ||
const controlledSpawn = (...params) => { | ||
(params[2] && !params[2].encoding) && (params[2].encoding = 'utf8'); | ||
params[2] && !params[2].encoding && (params[2].encoding = "utf8"); | ||
const output = (0, child_process_1.spawnSync)(...params); | ||
if (output.status !== 0) { | ||
console.log(output.error); | ||
console.log(output.stdout?.toString() ?? ''); | ||
console.log(output.stdout?.toString() ?? ""); | ||
console.log(output); | ||
@@ -17,0 +17,0 @@ throw new Error(output.stderr.toString()); |
@@ -1,1 +0,1 @@ | ||
export type ParamsOf<T extends (...params: readonly any[]) => any> = T extends ((...params: infer P) => any) ? P : never; | ||
export type ParamsOf<T extends (...params: readonly any[]) => any> = T extends (...params: infer P) => any ? P : never; |
@@ -1,3 +0,13 @@ | ||
import { z } from 'zod'; | ||
import { z } from "zod"; | ||
export declare const cosmodrome_config_schema: z.ZodObject<{ | ||
git: z.ZodObject<{ | ||
authorEmail: z.ZodString; | ||
authorUsername: z.ZodString; | ||
}, "strip", z.ZodTypeAny, { | ||
authorEmail: string; | ||
authorUsername: string; | ||
}, { | ||
authorEmail: string; | ||
authorUsername: string; | ||
}>; | ||
github: z.ZodOptional<z.ZodObject<{ | ||
@@ -17,2 +27,6 @@ owner: z.ZodString; | ||
}, "strip", z.ZodTypeAny, { | ||
git: { | ||
authorEmail: string; | ||
authorUsername: string; | ||
}; | ||
github?: { | ||
@@ -24,2 +38,6 @@ owner: string; | ||
}, { | ||
git: { | ||
authorEmail: string; | ||
authorUsername: string; | ||
}; | ||
github?: { | ||
@@ -26,0 +44,0 @@ owner: string; |
@@ -6,7 +6,11 @@ "use strict"; | ||
exports.cosmodrome_config_schema = zod_1.z.object({ | ||
"github": zod_1.z.optional(zod_1.z.object({ | ||
"owner": zod_1.z.string(), | ||
"repo": zod_1.z.string(), | ||
"token": zod_1.z.string() | ||
git: zod_1.z.object({ | ||
authorEmail: zod_1.z.string(), | ||
authorUsername: zod_1.z.string() | ||
}), | ||
github: zod_1.z.optional(zod_1.z.object({ | ||
owner: zod_1.z.string(), | ||
repo: zod_1.z.string(), | ||
token: zod_1.z.string() | ||
})) | ||
}); |
@@ -1,2 +0,2 @@ | ||
import { z } from 'zod'; | ||
import { z } from "zod"; | ||
export declare const root_package_json_schema: z.ZodObject<{ | ||
@@ -3,0 +3,0 @@ name: z.ZodString; |
@@ -13,3 +13,3 @@ "use strict"; | ||
slug: zod_1.z.string(), | ||
version: zod_1.z.string().regex(/\d\.\d\.\d/), | ||
version: zod_1.z.string().regex(/\d\.\d\.\d/) | ||
}); |
{ | ||
"name": "@futura-dev/cosmodrome", | ||
"version": "1.2.0", | ||
"version": "1.3.0", | ||
"private": false, | ||
@@ -25,7 +25,10 @@ "repository": { | ||
"scripts": { | ||
"lint": "eslint . --ext .ts --config .eslintrc", | ||
"build": "rm -rf dist && npx tsc" | ||
"build": "rm -rf dist && npx cosmofactory build", | ||
"lint": "eslint ./src --ext .ts --config .eslintrc", | ||
"lint:fix": "npm run lint -- --fix", | ||
"release": "node ./dist/cli.js release", | ||
"lint:beautify": "npm run lint:fix && prettier ./src --write" | ||
}, | ||
"dependencies": { | ||
"@inquirer/prompts": "^1.1.3", | ||
"@inquirer/prompts": "1.1.3", | ||
"@types/signale": "^1.4.4", | ||
@@ -35,12 +38,12 @@ "axios": "^1.4.0", | ||
"signale": "^1.4.0", | ||
"tslib": "^2.5.1", | ||
"tslib": "^2.5.2", | ||
"zod": "^3.21.4" | ||
}, | ||
"devDependencies": { | ||
"@futura-dev/cosmofactory": "^0.2.0", | ||
"@futura-dev/cosmokeeper": "^0.1.7", | ||
"@futura-dev/eslint-config-typescript": "^0.1.3", | ||
"@types/commander": "^2.12.2", | ||
"@types/mute-stream": "^0.0.1", | ||
"@types/node": "^16.18.29", | ||
"@typescript-eslint/eslint-plugin": "^5.59.6", | ||
"@typescript-eslint/parser": "^5.59.6", | ||
"eslint": "^7.32.0", | ||
"fp-ts": "^2.15.0", | ||
@@ -47,0 +50,0 @@ "ts-node": "^10.9.1", |
@@ -1,2 +0,2 @@ | ||
# Cosmodrome | ||
# Cosmodrome 🚀 | ||
@@ -9,2 +9,3 @@ [![Version](https://img.shields.io/github/v/release/futura-dev/cosmodrome)](https://github.com/futura-dev/cosmodrome) | ||
## Table of Contents | ||
- [Getting Started](#getting-started) | ||
@@ -22,22 +23,38 @@ - [Example](#example) | ||
## Code of Conduct | ||
As contributors and maintainers of this open-source web project, we pledge to provide a welcoming and inclusive environment for everyone. We value the participation of individuals from diverse backgrounds and perspectives and aim to foster a respectful and harassment-free community. | ||
To ensure a positive experience for all community members, we have established the following code of conduct that applies to all project-related activities and interactions, both online and offline. By participating in this project, you are expected to uphold these [guidelines](https://github.com/futura-dev/cosmodrome/blob/main/CODE_OF_CONDUCT.md). | ||
As contributors and maintainers of this open-source web project, we pledge to provide a welcoming and inclusive | ||
environment for everyone. We value the participation of individuals from diverse backgrounds and perspectives and aim to | ||
foster a respectful and harassment-free community. | ||
To ensure a positive experience for all community members, we have established the following code of conduct that | ||
applies to all project-related activities and interactions, both online and offline. By participating in this project, | ||
you are expected to uphold these [guidelines](https://github.com/futura-dev/cosmodrome/blob/main/CODE_OF_CONDUCT.md). | ||
## Contributing | ||
Thank you for considering contributing to this open-source web project! We appreciate your interest and support. To ensure a smooth collaboration process, please follow the [guidelines](https://github.com/futura-dev/cosmodrome/blob/main/CONTRIBUTING.md) | ||
Thank you for considering contributing to this open-source web project! We appreciate your interest and support. To | ||
ensure a smooth collaboration process, please follow | ||
the [guidelines](https://github.com/futura-dev/cosmodrome/blob/main/CONTRIBUTING.md) | ||
## Support | ||
If you need assistance, have questions, or want to provide feedback related to this open-source web project, there are several ways to get support: | ||
If you need assistance, have questions, or want to provide feedback related to this open-source web project, there are | ||
several ways to get support: | ||
- **Issue Tracker**: Check the project's issue tracker on [GitHub](https://github.com/futura-dev/cosmodrome/issues) to see if your question or issue has already been addressed. If not, feel free to open a new issue with a detailed description. | ||
- **Issue Tracker**: Check the project's issue tracker on [GitHub](https://github.com/futura-dev/cosmodrome/issues) to | ||
see if your question or issue has already been addressed. If not, feel free to open a new issue with a detailed | ||
description. | ||
- **Email**: You can also reach out to the project maintainers directly via email at (opensource@futura-dev.com)[mailto:opensource@futura-dev.com]. Please allow for a reasonable response time. | ||
- **Email**: You can also reach out to the project maintainers directly via email at ( | ||
opensource@futura-dev.com)[mailto:opensource@futura-dev.com]. Please allow for a reasonable response time. | ||
Before seeking support, make sure to review the project's documentation and readme file, as they may contain helpful information and answers to common questions. | ||
Before seeking support, make sure to review the project's documentation and readme file, as they may contain helpful | ||
information and answers to common questions. | ||
When seeking support or reporting issues, please provide as much relevant information as possible, such as the version of the project you are using, the steps to reproduce the problem, and any error messages encountered. This will help us better understand and assist you with your query. | ||
When seeking support or reporting issues, please provide as much relevant information as possible, such as the version | ||
of the project you are using, the steps to reproduce the problem, and any error messages encountered. This will help us | ||
better understand and assist you with your query. | ||
While we strive to provide timely and helpful support, please note that response times may vary depending on the availability of project maintainers and the complexity of the issue. | ||
While we strive to provide timely and helpful support, please note that response times may vary depending on the | ||
availability of project maintainers and the complexity of the issue. | ||
@@ -47,2 +64,4 @@ We appreciate your interest in this project and look forward to assisting you! | ||
## License | ||
This project is under MIT License. Please check our [LICENSE](https://github.com/futura-dev/cosmodrome/blob/main/LICENSE) page. | ||
This project is under MIT License. Please check | ||
our [LICENSE](https://github.com/futura-dev/cosmodrome/blob/main/LICENSE) page. |
24815
18
483
65
+ Added@inquirer/prompts@1.1.3(transitive)
- Removed@inquirer/prompts@1.2.3(transitive)
Updated@inquirer/prompts@1.1.3
Updatedtslib@^2.5.2