diff --git a/bin/index.ts b/bin/index.ts index cc5bc73..d122b53 100644 --- a/bin/index.ts +++ b/bin/index.ts @@ -8,7 +8,7 @@ import { getSlugAndSection, getLatestDeployment, getProductionDeployment -} from '../src' +} from '../src/index.js' async function main () { const { _: args, ...flags } = mri(process.argv.slice(2)) diff --git a/package.json b/package.json index 5b5a75d..48dd430 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,8 @@ "@commitlint/cli": "latest", "@commitlint/config-conventional": "latest", "@ksmithut/prettier-standard": "latest", + "@types/node": "latest", + "@vercel/style-guide": "6", "c8": "latest", "ci-publish": "latest", "finepack": "latest", @@ -43,7 +45,6 @@ "nano-staged": "latest", "simple-git-hooks": "latest", "standard": "latest", - "standard-markdown": "latest", "standard-version": "latest", "tsup": "latest", "vitest": "latest" @@ -56,6 +57,7 @@ "contributors": "(npx git-authors-cli && npx finepack && git add package.json && git commit -m 'build: contributors' --no-verify) || true", "postrelease": "npm run release:tags && npm run release:github && (ci-publish || npm publish --access=public)", "prepublishOnly": "npm run build", + "pretest": "npm run lint", "release": "standard-version -a", "release:github": "github-generate-release", "release:tags": "git push --follow-tags origin HEAD:main", @@ -70,11 +72,7 @@ }, "nano-staged": { "*.js": [ - "prettier-standard", - "standard --fix" - ], - "*.md": [ - "standard-markdown" + "prettier-standard" ], "package.json": [ "finepack" diff --git a/src/index.ts b/src/index.ts index 8fd4196..f5a68d0 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,35 +2,36 @@ import { readFile } from 'fs/promises' import { existsSync } from 'fs' import path from 'path' -const vercelApi = pathname => +const vercelApi = (pathname: string) => fetch(`${process.env.VERCEL_API}/${pathname}`, { headers: { 'Accept-Encoding': 'identity' } }) -const getProjectName = async (projectId: string) => - vercelApi(`v9/projects/${projectId}`) +async function getProjectName (projectId: string) { + return vercelApi(`v9/projects/${projectId}`) .then(res => res.json()) - .then(payload => payload.name) + .then((payload: any) => payload.name) +} const getOrganizationName = async (teamId: string) => vercelApi(`v2/teams/${teamId}`) .then(res => res.json()) - .then(payload => payload.name) + .then((payload: any) => payload.name) export const getLatestDeployment = async () => { const { projectId } = await readProjectFile() return vercelApi(`v9/projects/${projectId}`) .then(res => res.json()) - .then(payload => payload.latestDeployments[0].id.replace('dpl_', '')) + .then((payload: any) => payload.latestDeployments[0].id.replace('dpl_', '')) } export const getProductionDeployment = async () => { const { projectId } = await readProjectFile() return vercelApi(`v9/projects/${projectId}`) .then(res => res.json()) - .then(payload => payload.targets.production.id.replace('dpl_', '')) + .then((payload: any) => payload.targets.production.id.replace('dpl_', '')) } async function readProjectFile (): Promise<{ @@ -52,20 +53,16 @@ async function readProjectFile (): Promise<{ async function fromPath (): Promise<{ org: string; project: string }> { const { projectId, teamId } = await readProjectFile() - const [org, project] = await Promise.all([ - getOrganizationName(teamId), - getProjectName(projectId) - ]) - + const org = await getOrganizationName(teamId) + const project = await getProjectName(projectId) return { org, project } } export async function getSlugAndSection ({ - args = [] + args }: { - args?: string[] - cwd?: string -} = {}): Promise<{ + args: string[] +} = { args: [] }): Promise<{ org: string project: string section: string @@ -75,13 +72,13 @@ export async function getSlugAndSection ({ } if (args.length === 1) { - if (!args[0].includes('/')) { + if (args[0] && !args[0].includes('/')) { return { ...(await fromPath()), section: args[0] } } else { - const [org, project] = args[0].split('/') + const [org = '', project = ''] = (args[0] || '').split('/') return { org, project, @@ -91,12 +88,12 @@ export async function getSlugAndSection ({ } if (args.length === 2) { - const [org, project] = args[0].split('/') + const [org = '', project = ''] = (args[0] || '').split('/') return { org, project, - section: args[1] + section: args[1] || '' } } diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..1dbfc25 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "@vercel/style-guide/typescript/node20" +}