@vercel/slack-bolt 1.2.1 → 1.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -377,7 +377,7 @@ async function updateProtectionBypass({
377
377
  token,
378
378
  teamId
379
379
  }) {
380
- const newSecret = crypto.randomBytes(32).toString("hex");
380
+ const newSecret = crypto.randomBytes(16).toString("hex");
381
381
  const note = "Created by @vercel/slack-bolt";
382
382
  const url = new URL(
383
383
  `https://api.vercel.com/v1/projects/${encodeURIComponent(projectId)}/protection-bypass`
@@ -806,5 +806,5 @@ var init_preview = __esm({
806
806
  });
807
807
 
808
808
  export { authTest, cancelDeployment, createDeployment, deleteEnvironmentVariable, deleteSlackApp, getActiveBranches, getEnvironmentVariable, getEnvironmentVariables, getProject, init_logger, init_preview, init_slack, init_vercel, log, logger, preview, startMessage };
809
- //# sourceMappingURL=chunk-XGRIXFBJ.mjs.map
810
- //# sourceMappingURL=chunk-XGRIXFBJ.mjs.map
809
+ //# sourceMappingURL=chunk-F7XGHLWN.mjs.map
810
+ //# sourceMappingURL=chunk-F7XGHLWN.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/internal/manifest/index.ts","../src/internal/vercel/errors.ts","../src/internal/slack/errors.ts","../src/internal/slack/index.ts","../src/internal/vercel/index.ts","../src/logger.ts","../src/preview.ts"],"names":["init_errors","app"],"mappings":"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","file":"chunk-XGRIXFBJ.mjs","sourcesContent":["import type { Manifest } from \"./types\";\n\nexport function rewriteUrl(\n originalUrl: string,\n branchUrl: string,\n bypassSecret?: string,\n): string {\n const pathStart = originalUrl.indexOf(\"/\", originalUrl.indexOf(\"//\") + 2);\n const pathAndQuery = pathStart !== -1 ? originalUrl.slice(pathStart) : \"/\";\n\n const url = new URL(pathAndQuery, `https://${branchUrl}`);\n if (bypassSecret) {\n url.searchParams.set(\"x-vercel-protection-bypass\", bypassSecret);\n }\n return url.toString();\n}\n\nfunction createManifestDescription(params: {\n existingDescription: string;\n existingName: string;\n branchUrl: string;\n branch: string;\n commitSha?: string;\n commitMessage?: string;\n commitAuthor?: string;\n}): { longDescription: string; displayName: string } {\n const shortSha = params.commitSha?.slice(0, 7) ?? \"unknown\";\n const safeCommitMsg = params.commitMessage ?? \"\";\n const safeCommitAuthor = params.commitAuthor ?? \"unknown\";\n\n const deploymentInfo = `\\n:globe_with_meridians: *Deployment URL:* ${params.branchUrl}\\n:seedling: *Branch:* ${params.branch}\\n:technologist: *Commit:* ${shortSha} ${safeCommitMsg}\\n:bust_in_silhouette: *Last updated by:* ${safeCommitAuthor}\\n\\n_Automatically created by ▲ Vercel_\\n`;\n\n const maxLongDesc = 4000;\n const combined = params.existingDescription + deploymentInfo;\n let longDescription: string;\n if (combined.length > maxLongDesc) {\n const available = Math.max(0, maxLongDesc - deploymentInfo.length);\n longDescription = (\n params.existingDescription.slice(0, available) + deploymentInfo\n ).slice(0, maxLongDesc);\n } else {\n longDescription = combined;\n }\n\n const maxDisplayName = 35;\n const cleanBranch = params.branch\n .replace(/^refs\\/heads\\//, \"\")\n .replace(/\\//g, \"-\");\n\n let displayName = `${params.existingName} (${cleanBranch})`;\n if (displayName.length > maxDisplayName) {\n const prefix = `${params.existingName} (`;\n const suffix = \")\";\n const availableForBranch = maxDisplayName - prefix.length - suffix.length;\n displayName =\n availableForBranch > 0\n ? `${prefix}${cleanBranch.slice(0, availableForBranch)}${suffix}`\n : displayName.slice(0, maxDisplayName);\n }\n\n return { longDescription, displayName };\n}\n\nexport function createNewManifest(params: {\n originalManifest: Manifest;\n branchUrl: string;\n bypassSecret: string;\n branch: string;\n commitSha?: string;\n commitMessage?: string;\n commitAuthor?: string;\n}): Manifest {\n const manifest = structuredClone(params.originalManifest);\n\n if (manifest.settings?.event_subscriptions?.request_url) {\n manifest.settings.event_subscriptions.request_url = rewriteUrl(\n manifest.settings.event_subscriptions.request_url,\n params.branchUrl,\n params.bypassSecret,\n );\n }\n\n if (manifest.settings?.interactivity?.request_url) {\n manifest.settings.interactivity.request_url = rewriteUrl(\n manifest.settings.interactivity.request_url,\n params.branchUrl,\n params.bypassSecret,\n );\n }\n\n if (manifest.features?.slash_commands) {\n for (const cmd of manifest.features.slash_commands) {\n if (cmd.url) {\n cmd.url = rewriteUrl(cmd.url, params.branchUrl, params.bypassSecret);\n }\n }\n }\n\n if (manifest.oauth_config?.redirect_urls) {\n manifest.oauth_config.redirect_urls =\n manifest.oauth_config.redirect_urls.map((originalUrl) =>\n rewriteUrl(originalUrl, params.branchUrl),\n );\n }\n\n const { longDescription, displayName } = createManifestDescription({\n existingDescription: manifest.display_information.long_description ?? \"\",\n existingName:\n manifest.features?.bot_user?.display_name ??\n manifest.display_information.name,\n branchUrl: params.branchUrl,\n branch: params.branch,\n commitSha: params.commitSha,\n commitMessage: params.commitMessage,\n commitAuthor: params.commitAuthor,\n });\n\n manifest.display_information.long_description = longDescription;\n manifest.display_information.name = displayName;\n if (manifest.features?.bot_user) {\n manifest.features.bot_user.display_name = displayName;\n }\n\n return manifest;\n}\n","export class HTTPError extends Error {\n constructor(\n message: string,\n public status: number,\n public statusText: string,\n public body?: string,\n ) {\n const parts = [`${message}: ${status} ${statusText}`];\n if (body) parts.push(body);\n super(parts.join(\" - \"));\n }\n\n static async fromResponse(\n message: string,\n response: Response,\n ): Promise<HTTPError> {\n let body: string | undefined;\n try {\n const text = await response.text();\n if (text) body = text;\n } catch {\n // body unreadable, that's fine\n }\n return new HTTPError(message, response.status, response.statusText, body);\n }\n}\n","export class SlackManifestCreateError extends Error {\n constructor(\n message: string,\n public errors?: { message: string; pointer: string }[],\n ) {\n super(message);\n }\n}\n\nexport class SlackManifestUpdateError extends Error {\n constructor(\n message: string,\n public errors?: { message: string; pointer: string }[],\n ) {\n super(message);\n }\n}\n\nexport class SlackManifestExportError extends Error {\n constructor(message: string) {\n super(message);\n }\n}\n","import type { Manifest } from \"../manifest/types\";\nimport { HTTPError } from \"../vercel/errors\";\nimport {\n SlackManifestCreateError,\n SlackManifestExportError,\n SlackManifestUpdateError,\n} from \"./errors\";\nimport type {\n InstallResponse,\n InstallResult,\n SlackManifestCreateResponse,\n SlackManifestExportResponse,\n SlackManifestUpdateResponse,\n} from \"./types\";\n\nexport {\n SlackManifestCreateError,\n SlackManifestExportError,\n SlackManifestUpdateError,\n} from \"./errors\";\nexport type {\n InstallResult,\n SlackManifestCreateResponse,\n SlackManifestExportResponse,\n SlackManifestUpdateResponse,\n} from \"./types\";\n\nexport async function createSlackApp({\n token,\n manifest,\n}: {\n token: string;\n manifest: Manifest;\n}): Promise<SlackManifestCreateResponse> {\n const response = await fetch(\"https://slack.com/api/apps.manifest.create\", {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n body: JSON.stringify({ manifest: JSON.stringify(manifest) }),\n });\n\n if (!response.ok) {\n throw new HTTPError(\n \"Failed to create Slack app\",\n response.status,\n response.statusText,\n );\n }\n\n const data = (await response.json()) as SlackManifestCreateResponse;\n\n if (!data.ok) {\n throw new SlackManifestCreateError(\n data?.error ?? \"Unknown error\",\n data?.errors,\n );\n }\n\n return data;\n}\n\nexport async function updateSlackApp({\n token,\n appId,\n manifest,\n}: {\n token: string;\n appId: string;\n manifest: Manifest;\n}): Promise<SlackManifestUpdateResponse> {\n const response = await fetch(\"https://slack.com/api/apps.manifest.update\", {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n body: JSON.stringify({\n app_id: appId,\n manifest: JSON.stringify(manifest),\n }),\n });\n\n if (!response.ok) {\n throw new HTTPError(\n \"Failed to update Slack app\",\n response.status,\n response.statusText,\n );\n }\n\n const data = (await response.json()) as SlackManifestUpdateResponse;\n\n if (!data.ok) {\n throw new SlackManifestUpdateError(\n data?.error ?? \"Unknown error\",\n data?.errors,\n );\n }\n\n return data;\n}\n\nexport async function exportSlackApp({\n token,\n appId,\n}: {\n token: string;\n appId: string;\n}): Promise<SlackManifestExportResponse> {\n const response = await fetch(\"https://slack.com/api/apps.manifest.export\", {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n body: JSON.stringify({ app_id: appId }),\n });\n\n if (!response.ok) {\n throw new HTTPError(\n \"Failed to export Slack app\",\n response.status,\n response.statusText,\n );\n }\n\n const data = (await response.json()) as SlackManifestExportResponse;\n\n if (!data.ok) {\n throw new SlackManifestExportError(data?.error ?? \"Unknown error\");\n }\n\n return data;\n}\n\nexport async function upsertSlackApp({\n token,\n appId,\n manifest,\n}: {\n token: string;\n appId?: string;\n manifest: Manifest;\n}): Promise<\n | { isNew: true; app: SlackManifestCreateResponse }\n | { isNew: false; app: SlackManifestUpdateResponse }\n> {\n if (appId) {\n try {\n await exportSlackApp({ token, appId });\n const app = await updateSlackApp({ token, appId, manifest });\n return { isNew: false, app };\n } catch {\n // App doesn't exist or isn't accessible — fall through to create\n }\n }\n\n const app = await createSlackApp({ token, manifest });\n return { isNew: true, app };\n}\n\nexport async function deleteSlackApp({\n token,\n appId,\n}: {\n token: string;\n appId: string;\n}): Promise<void> {\n const response = await fetch(\"https://slack.com/api/apps.manifest.delete\", {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n body: JSON.stringify({ app_id: appId }),\n });\n\n if (!response.ok) {\n throw new HTTPError(\n \"Failed to delete Slack app\",\n response.status,\n response.statusText,\n );\n }\n\n const data = (await response.json()) as { ok: boolean; error?: string };\n\n if (!data.ok) {\n throw new Error(data.error ?? \"Unknown error\");\n }\n}\n\nexport async function authTest({ token }: { token: string }): Promise<void> {\n const response = await fetch(\"https://slack.com/api/auth.test\", {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n });\n\n if (!response.ok) {\n throw new HTTPError(\n \"Auth test failed\",\n response.status,\n response.statusText,\n );\n }\n\n const data = (await response.json()) as { ok: boolean; error?: string };\n\n if (!data.ok) {\n throw new Error(data.error ?? \"Unknown error\");\n }\n}\n\nexport async function installApp(params: {\n serviceToken?: string;\n appId: string;\n botScopes: string[];\n outgoingDomains?: string[];\n}): Promise<InstallResult> {\n const { serviceToken, appId, botScopes, outgoingDomains } = params;\n\n if (!serviceToken) {\n return {\n status: \"missing_service_token\",\n };\n }\n\n const response = await fetch(\"https://slack.com/api/apps.developerInstall\", {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${serviceToken}`,\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n body: JSON.stringify({\n app_id: appId,\n bot_scopes: botScopes,\n outgoing_domains: outgoingDomains ?? [],\n }),\n });\n\n if (!response.ok) {\n return {\n status: \"slack_api_error\",\n error: response.statusText,\n };\n }\n\n const data = (await response.json()) as InstallResponse;\n\n if (data.error) {\n switch (data.error) {\n case \"app_approval_request_eligible\":\n return {\n status: \"app_approval_request_eligible\",\n };\n case \"app_approval_request_pending\":\n return {\n status: \"app_approval_request_pending\",\n };\n case \"app_approval_request_denied\":\n return {\n status: \"app_approval_request_denied\",\n };\n default:\n return {\n status: \"unknown_error\",\n };\n }\n }\n\n return {\n status: \"installed\",\n botToken: data.api_access_tokens?.bot,\n appLevelToken: data.api_access_tokens?.app_level,\n userToken: data.api_access_tokens?.user,\n };\n}\n","import crypto from \"node:crypto\";\nimport { HTTPError } from \"./errors\";\nimport type {\n AddEnvironmentVariablesResult,\n CreateProjectEnv,\n EnvironmentVariable,\n} from \"./types\";\n\nexport async function getProject({\n projectId,\n token,\n teamId,\n}: {\n projectId: string;\n token: string;\n teamId?: string;\n}): Promise<void> {\n const url = new URL(\n `https://api.vercel.com/v9/projects/${encodeURIComponent(projectId)}`,\n );\n if (teamId) url.searchParams.set(\"teamId\", teamId);\n\n const response = await fetch(url, {\n method: \"GET\",\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n\n if (!response.ok) {\n throw await HTTPError.fromResponse(\n \"Failed to access Vercel project\",\n response,\n );\n }\n}\n\nexport async function updateProtectionBypass({\n projectId,\n token,\n teamId,\n}: {\n projectId: string;\n token: string;\n teamId?: string;\n}): Promise<string> {\n const newSecret = crypto.randomBytes(32).toString(\"hex\");\n const note = \"Created by @vercel/slack-bolt\";\n\n const url = new URL(\n `https://api.vercel.com/v1/projects/${encodeURIComponent(projectId)}/protection-bypass`,\n );\n if (teamId) url.searchParams.set(\"teamId\", teamId);\n\n const response = await fetch(url, {\n method: \"PATCH\",\n headers: {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n generate: {\n secret: newSecret,\n note: note,\n },\n }),\n });\n\n if (!response.ok) {\n throw await HTTPError.fromResponse(\n \"Failed to update protection bypass\",\n response,\n );\n }\n\n return newSecret;\n}\n\nexport async function addEnvironmentVariables({\n projectId,\n token,\n teamId,\n envs,\n upsert = true,\n}: {\n projectId: string;\n token: string;\n teamId?: string;\n envs: CreateProjectEnv | CreateProjectEnv[];\n upsert?: boolean;\n}): Promise<AddEnvironmentVariablesResult> {\n const url = new URL(\n `https://api.vercel.com/v10/projects/${encodeURIComponent(projectId)}/env`,\n );\n if (teamId) url.searchParams.set(\"teamId\", teamId);\n if (upsert) url.searchParams.set(\"upsert\", \"true\");\n\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(envs),\n });\n\n if (!response.ok) {\n throw await HTTPError.fromResponse(\n \"Failed to create environment variables\",\n response,\n );\n }\n\n return response.json();\n}\n\nexport async function cancelDeployment({\n deploymentId,\n token,\n teamId,\n}: {\n deploymentId: string;\n token: string;\n teamId?: string;\n}): Promise<void> {\n const url = new URL(\n `https://api.vercel.com/v12/deployments/${encodeURIComponent(deploymentId)}/cancel`,\n );\n if (teamId) url.searchParams.set(\"teamId\", teamId);\n\n const response = await fetch(url, {\n method: \"PATCH\",\n headers: { Authorization: `Bearer ${token}` },\n });\n\n if (!response.ok) {\n throw await HTTPError.fromResponse(\"Failed to cancel deployment\", response);\n }\n}\n\nexport async function createDeployment({\n deploymentId,\n projectId,\n token,\n teamId,\n}: {\n deploymentId: string;\n projectId: string;\n token: string;\n teamId?: string;\n}): Promise<{ id: string; url: string }> {\n const url = new URL(\"https://api.vercel.com/v13/deployments\");\n if (teamId) url.searchParams.set(\"teamId\", teamId);\n url.searchParams.set(\"forceNew\", \"1\");\n\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n deploymentId,\n name: projectId,\n project: projectId,\n }),\n });\n\n if (!response.ok) {\n throw await HTTPError.fromResponse(\"Failed to create deployment\", response);\n }\n\n const data = await response.json();\n return { id: data.id, url: data.url };\n}\n\nexport async function getActiveBranches({\n projectId,\n token,\n teamId,\n}: {\n projectId: string;\n token: string;\n teamId?: string;\n}): Promise<Set<string>> {\n const params = new URLSearchParams({ active: \"1\", limit: \"100\" });\n if (teamId) params.set(\"teamId\", teamId);\n\n const response = await fetch(\n `https://api.vercel.com/v5/projects/${encodeURIComponent(projectId)}/branches?${params}`,\n { headers: { Authorization: `Bearer ${token}` } },\n );\n\n if (!response.ok) {\n throw await HTTPError.fromResponse(\n \"Failed to fetch active branches\",\n response,\n );\n }\n\n const data: { branches?: { branch: string }[] } = await response.json();\n return new Set(data.branches?.map((b) => b.branch) ?? []);\n}\n\nexport async function getEnvironmentVariables({\n projectId,\n token,\n teamId,\n}: {\n projectId: string;\n token: string;\n teamId?: string;\n}): Promise<EnvironmentVariable[]> {\n const url = new URL(\n `https://api.vercel.com/v9/projects/${encodeURIComponent(projectId)}/env`,\n );\n if (teamId) url.searchParams.set(\"teamId\", teamId);\n\n const response = await fetch(url, {\n headers: { Authorization: `Bearer ${token}` },\n });\n\n if (!response.ok) {\n throw await HTTPError.fromResponse(\n \"Failed to fetch environment variables\",\n response,\n );\n }\n\n const data: { envs: EnvironmentVariable[] } = await response.json();\n return data.envs ?? [];\n}\n\nexport async function getEnvironmentVariable({\n projectId,\n envId,\n token,\n teamId,\n}: {\n projectId: string;\n envId: string;\n token: string;\n teamId?: string;\n}): Promise<string | null> {\n const url = new URL(\n `https://api.vercel.com/v9/projects/${encodeURIComponent(projectId)}/env/${encodeURIComponent(envId)}`,\n );\n if (teamId) url.searchParams.set(\"teamId\", teamId);\n\n const response = await fetch(url, {\n headers: { Authorization: `Bearer ${token}` },\n });\n\n if (!response.ok) {\n throw await HTTPError.fromResponse(\n \"Failed to fetch environment variable\",\n response,\n );\n }\n\n const data: { value?: string } = await response.json();\n return data.value ?? null;\n}\n\nexport async function deleteEnvironmentVariable({\n projectId,\n envId,\n token,\n teamId,\n}: {\n projectId: string;\n envId: string;\n token: string;\n teamId?: string;\n}): Promise<void> {\n const url = new URL(\n `https://api.vercel.com/v9/projects/${encodeURIComponent(projectId)}/env/${encodeURIComponent(envId)}`,\n );\n if (teamId) url.searchParams.set(\"teamId\", teamId);\n\n const response = await fetch(url, {\n method: \"DELETE\",\n headers: { Authorization: `Bearer ${token}` },\n });\n\n if (!response.ok) {\n throw await HTTPError.fromResponse(\n \"Failed to delete environment variable\",\n response,\n );\n }\n}\n","const isDebug =\n process.env.VERCEL_SLACK_DEBUG === \"1\" ||\n process.env.VERCEL_SLACK_DEBUG === \"true\";\n\nexport const logger = {\n info: (...args: unknown[]) => console.log(...args),\n warn: (...args: unknown[]) => console.warn(...args),\n error: (...args: unknown[]) => console.error(...args),\n debug: (...args: unknown[]) => {\n if (isDebug) console.debug(...args);\n },\n};\n\nconst BOLD = \"\\x1b[1m\";\nconst RESET = \"\\x1b[0m\";\nconst GREEN = \"\\x1b[32m\";\nconst YELLOW = \"\\x1b[33m\";\n\nexport const log = {\n step: (msg: string) => console.log(` ${msg} ...`),\n success: (msg: string) => console.log(`${GREEN}✓${RESET} ${msg}`),\n info: (msg: string) => console.log(` ${msg}`),\n warning: (msg: string) => console.log(`${YELLOW}⚠${RESET} ${msg}`),\n};\n\nexport const startMessage = (\n version?: string,\n branch?: string,\n commit?: string,\n appId?: string,\n) => {\n const lines = [`▲ @vercel/slack-bolt ${version ?? \"\"}`];\n if (branch) lines.push(` - Branch: ${branch}`);\n if (commit) lines.push(` - Commit: ${commit.slice(0, 7)}`);\n if (appId) lines.push(` - App ID: ${appId}`);\n return `${BOLD}${lines.join(\"\\n\")}${RESET}\\n`;\n};\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { createNewManifest } from \"./internal/manifest\";\nimport type { Manifest } from \"./internal/manifest/types\";\nimport { installApp, upsertSlackApp } from \"./internal/slack\";\nimport type {\n SlackManifestCreateResponse,\n SlackManifestUpdateResponse,\n} from \"./internal/slack/types\";\nimport {\n addEnvironmentVariables,\n updateProtectionBypass,\n} from \"./internal/vercel\";\nimport type { CreateProjectEnv } from \"./internal/vercel/types\";\nimport { log } from \"./logger\";\n\nexport type PreviewParams = {\n automationBypassSecret?: string;\n branch: string;\n branchUrl?: string;\n commitAuthor?: string;\n commitMessage?: string;\n commitSha?: string;\n deploymentId?: string;\n deploymentUrl: string;\n manifestPath: string;\n projectId: string;\n slackAppId?: string;\n slackConfigurationToken: string;\n slackServiceToken?: string;\n teamId?: string;\n vercelApiToken: string;\n};\n\nexport type PreviewResult = {\n isNew: boolean;\n installStatus: string;\n app: SlackManifestCreateResponse | SlackManifestUpdateResponse;\n};\n\nexport const preview = async (\n params: PreviewParams,\n context?: \"cli\",\n): Promise<PreviewResult> => {\n const {\n branch,\n projectId,\n deploymentUrl,\n teamId,\n commitAuthor,\n commitMessage: commitMsg,\n commitSha,\n slackAppId,\n slackConfigurationToken,\n slackServiceToken,\n manifestPath,\n vercelApiToken,\n } = params;\n\n const cli = context === \"cli\";\n const branchUrl = params.branchUrl ?? deploymentUrl;\n let bypassSecret = params.automationBypassSecret;\n\n if (!bypassSecret) {\n if (cli) log.step(\"Generating automation bypass secret\");\n bypassSecret = await updateProtectionBypass({\n projectId,\n token: vercelApiToken,\n teamId,\n });\n if (cli) log.success(\"Automation bypass secret generated\");\n }\n\n if (cli) log.step(`Reading manifest from ${manifestPath}`);\n const rawFileManifest = fs.readFileSync(\n path.join(process.cwd(), manifestPath),\n \"utf8\",\n );\n const manifest = JSON.parse(rawFileManifest) as Manifest;\n\n const newManifest = createNewManifest({\n originalManifest: manifest,\n branchUrl,\n bypassSecret,\n branch,\n commitSha,\n commitMessage: commitMsg,\n commitAuthor,\n });\n\n // write new manifest so user-land imports of manifest.json see the updated version\n fs.writeFileSync(\n path.join(process.cwd(), manifestPath),\n JSON.stringify(newManifest, null, 2),\n \"utf8\",\n );\n if (cli) log.success(`Manifest updated for ${branchUrl}`);\n\n if (cli) log.step(\"Creating or updating Slack app\");\n const { isNew, app } = await upsertSlackApp({\n token: slackConfigurationToken,\n appId: slackAppId,\n manifest: newManifest,\n });\n\n if (isNew) {\n const credentialEnvs: CreateProjectEnv[] = [];\n if (app.app_id) {\n credentialEnvs.push({\n key: \"SLACK_APP_ID\",\n value: app.app_id,\n type: \"encrypted\",\n target: [\"preview\"],\n gitBranch: branch,\n comment: `Created by @vercel/slack-bolt for app ${app.app_id} on branch ${branch}`,\n });\n }\n if (app.credentials?.client_id) {\n credentialEnvs.push({\n key: \"SLACK_CLIENT_ID\",\n value: app.credentials.client_id,\n type: \"encrypted\",\n target: [\"preview\"],\n gitBranch: branch,\n comment: `Created by @vercel/slack-bolt for app ${app.app_id} on branch ${branch}`,\n });\n }\n if (app.credentials?.client_secret) {\n credentialEnvs.push({\n key: \"SLACK_CLIENT_SECRET\",\n value: app.credentials.client_secret,\n type: \"encrypted\",\n target: [\"preview\"],\n gitBranch: branch,\n comment: `Created by @vercel/slack-bolt for app ${app.app_id} on branch ${branch}`,\n });\n }\n if (app.credentials?.signing_secret) {\n credentialEnvs.push({\n key: \"SLACK_SIGNING_SECRET\",\n value: app.credentials.signing_secret,\n type: \"encrypted\",\n target: [\"preview\"],\n gitBranch: branch,\n comment: `Created by @vercel/slack-bolt for app ${app.app_id} on branch ${branch}`,\n });\n }\n if (credentialEnvs.length > 0) {\n await addEnvironmentVariables({\n projectId,\n token: vercelApiToken,\n teamId,\n envs: credentialEnvs,\n });\n }\n }\n\n if (cli)\n log.success(`${isNew ? \"Created\" : \"Updated\"} Slack app ${app.app_id}`);\n\n if (cli) log.step(\"Installing Slack app\");\n const { status, botToken, appLevelToken, userToken } = await installApp({\n serviceToken: slackServiceToken,\n appId: app.app_id,\n botScopes: manifest.oauth_config?.scopes?.bot ?? [],\n });\n\n if (isNew) {\n const tokenEnvs: CreateProjectEnv[] = [];\n if (botToken) {\n tokenEnvs.push({\n key: \"SLACK_BOT_TOKEN\",\n value: botToken,\n type: \"encrypted\",\n target: [\"preview\"],\n gitBranch: branch,\n comment: `Created by @vercel/slack-bolt for app ${app.app_id} on branch ${branch}`,\n });\n }\n if (appLevelToken) {\n tokenEnvs.push({\n key: \"SLACK_APP_LEVEL_TOKEN\",\n value: appLevelToken,\n type: \"encrypted\",\n target: [\"preview\"],\n gitBranch: branch,\n comment: `Created by @vercel/slack-bolt for app ${app.app_id} on branch ${branch}`,\n });\n }\n if (userToken) {\n tokenEnvs.push({\n key: \"SLACK_USER_TOKEN\",\n value: userToken,\n type: \"encrypted\",\n target: [\"preview\"],\n gitBranch: branch,\n comment: `Created by @vercel/slack-bolt for app ${app.app_id} on branch ${branch}`,\n });\n }\n if (tokenEnvs.length > 0) {\n await addEnvironmentVariables({\n projectId,\n token: vercelApiToken,\n teamId,\n envs: tokenEnvs,\n });\n }\n }\n\n if (cli) {\n switch (status) {\n case \"missing_service_token\":\n log.warning(\n \"SLACK_SERVICE_TOKEN is not set — app must be installed manually\",\n );\n log.info(\"https://docs.slack.dev/authentication/tokens/#service\");\n break;\n case \"installed\":\n log.success(`Installed Slack app ${app.app_id}`);\n break;\n case \"app_approval_request_eligible\":\n log.warning(\"App requires approval before it can be installed\");\n break;\n case \"app_approval_request_pending\":\n log.warning(\"App is pending approval before it can be installed\");\n break;\n case \"app_approval_request_denied\":\n log.warning(\"App approval request was denied\");\n break;\n case \"slack_api_error\":\n log.warning(\"Slack API error while installing the app\");\n break;\n case \"unknown_error\":\n log.warning(\"Unknown error while installing the app\");\n break;\n }\n console.log();\n if (app.app_id) {\n log.info(`View app: https://api.slack.com/apps/${app.app_id}`);\n }\n if (isNew && app.oauth_authorize_url) {\n log.info(`Install URL: ${app.oauth_authorize_url}`);\n }\n console.log();\n }\n\n return {\n isNew,\n installStatus: status,\n app,\n };\n};\n"]}
1
+ {"version":3,"sources":["../src/internal/manifest/index.ts","../src/internal/vercel/errors.ts","../src/internal/slack/errors.ts","../src/internal/slack/index.ts","../src/internal/vercel/index.ts","../src/logger.ts","../src/preview.ts"],"names":["init_errors","app"],"mappings":"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","file":"chunk-F7XGHLWN.mjs","sourcesContent":["import type { Manifest } from \"./types\";\n\nexport function rewriteUrl(\n originalUrl: string,\n branchUrl: string,\n bypassSecret?: string,\n): string {\n const pathStart = originalUrl.indexOf(\"/\", originalUrl.indexOf(\"//\") + 2);\n const pathAndQuery = pathStart !== -1 ? originalUrl.slice(pathStart) : \"/\";\n\n const url = new URL(pathAndQuery, `https://${branchUrl}`);\n if (bypassSecret) {\n url.searchParams.set(\"x-vercel-protection-bypass\", bypassSecret);\n }\n return url.toString();\n}\n\nfunction createManifestDescription(params: {\n existingDescription: string;\n existingName: string;\n branchUrl: string;\n branch: string;\n commitSha?: string;\n commitMessage?: string;\n commitAuthor?: string;\n}): { longDescription: string; displayName: string } {\n const shortSha = params.commitSha?.slice(0, 7) ?? \"unknown\";\n const safeCommitMsg = params.commitMessage ?? \"\";\n const safeCommitAuthor = params.commitAuthor ?? \"unknown\";\n\n const deploymentInfo = `\\n:globe_with_meridians: *Deployment URL:* ${params.branchUrl}\\n:seedling: *Branch:* ${params.branch}\\n:technologist: *Commit:* ${shortSha} ${safeCommitMsg}\\n:bust_in_silhouette: *Last updated by:* ${safeCommitAuthor}\\n\\n_Automatically created by ▲ Vercel_\\n`;\n\n const maxLongDesc = 4000;\n const combined = params.existingDescription + deploymentInfo;\n let longDescription: string;\n if (combined.length > maxLongDesc) {\n const available = Math.max(0, maxLongDesc - deploymentInfo.length);\n longDescription = (\n params.existingDescription.slice(0, available) + deploymentInfo\n ).slice(0, maxLongDesc);\n } else {\n longDescription = combined;\n }\n\n const maxDisplayName = 35;\n const cleanBranch = params.branch\n .replace(/^refs\\/heads\\//, \"\")\n .replace(/\\//g, \"-\");\n\n let displayName = `${params.existingName} (${cleanBranch})`;\n if (displayName.length > maxDisplayName) {\n const prefix = `${params.existingName} (`;\n const suffix = \")\";\n const availableForBranch = maxDisplayName - prefix.length - suffix.length;\n displayName =\n availableForBranch > 0\n ? `${prefix}${cleanBranch.slice(0, availableForBranch)}${suffix}`\n : displayName.slice(0, maxDisplayName);\n }\n\n return { longDescription, displayName };\n}\n\nexport function createNewManifest(params: {\n originalManifest: Manifest;\n branchUrl: string;\n bypassSecret: string;\n branch: string;\n commitSha?: string;\n commitMessage?: string;\n commitAuthor?: string;\n}): Manifest {\n const manifest = structuredClone(params.originalManifest);\n\n if (manifest.settings?.event_subscriptions?.request_url) {\n manifest.settings.event_subscriptions.request_url = rewriteUrl(\n manifest.settings.event_subscriptions.request_url,\n params.branchUrl,\n params.bypassSecret,\n );\n }\n\n if (manifest.settings?.interactivity?.request_url) {\n manifest.settings.interactivity.request_url = rewriteUrl(\n manifest.settings.interactivity.request_url,\n params.branchUrl,\n params.bypassSecret,\n );\n }\n\n if (manifest.features?.slash_commands) {\n for (const cmd of manifest.features.slash_commands) {\n if (cmd.url) {\n cmd.url = rewriteUrl(cmd.url, params.branchUrl, params.bypassSecret);\n }\n }\n }\n\n if (manifest.oauth_config?.redirect_urls) {\n manifest.oauth_config.redirect_urls =\n manifest.oauth_config.redirect_urls.map((originalUrl) =>\n rewriteUrl(originalUrl, params.branchUrl),\n );\n }\n\n const { longDescription, displayName } = createManifestDescription({\n existingDescription: manifest.display_information.long_description ?? \"\",\n existingName:\n manifest.features?.bot_user?.display_name ??\n manifest.display_information.name,\n branchUrl: params.branchUrl,\n branch: params.branch,\n commitSha: params.commitSha,\n commitMessage: params.commitMessage,\n commitAuthor: params.commitAuthor,\n });\n\n manifest.display_information.long_description = longDescription;\n manifest.display_information.name = displayName;\n if (manifest.features?.bot_user) {\n manifest.features.bot_user.display_name = displayName;\n }\n\n return manifest;\n}\n","export class HTTPError extends Error {\n constructor(\n message: string,\n public status: number,\n public statusText: string,\n public body?: string,\n ) {\n const parts = [`${message}: ${status} ${statusText}`];\n if (body) parts.push(body);\n super(parts.join(\" - \"));\n }\n\n static async fromResponse(\n message: string,\n response: Response,\n ): Promise<HTTPError> {\n let body: string | undefined;\n try {\n const text = await response.text();\n if (text) body = text;\n } catch {\n // body unreadable, that's fine\n }\n return new HTTPError(message, response.status, response.statusText, body);\n }\n}\n","export class SlackManifestCreateError extends Error {\n constructor(\n message: string,\n public errors?: { message: string; pointer: string }[],\n ) {\n super(message);\n }\n}\n\nexport class SlackManifestUpdateError extends Error {\n constructor(\n message: string,\n public errors?: { message: string; pointer: string }[],\n ) {\n super(message);\n }\n}\n\nexport class SlackManifestExportError extends Error {\n constructor(message: string) {\n super(message);\n }\n}\n","import type { Manifest } from \"../manifest/types\";\nimport { HTTPError } from \"../vercel/errors\";\nimport {\n SlackManifestCreateError,\n SlackManifestExportError,\n SlackManifestUpdateError,\n} from \"./errors\";\nimport type {\n InstallResponse,\n InstallResult,\n SlackManifestCreateResponse,\n SlackManifestExportResponse,\n SlackManifestUpdateResponse,\n} from \"./types\";\n\nexport {\n SlackManifestCreateError,\n SlackManifestExportError,\n SlackManifestUpdateError,\n} from \"./errors\";\nexport type {\n InstallResult,\n SlackManifestCreateResponse,\n SlackManifestExportResponse,\n SlackManifestUpdateResponse,\n} from \"./types\";\n\nexport async function createSlackApp({\n token,\n manifest,\n}: {\n token: string;\n manifest: Manifest;\n}): Promise<SlackManifestCreateResponse> {\n const response = await fetch(\"https://slack.com/api/apps.manifest.create\", {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n body: JSON.stringify({ manifest: JSON.stringify(manifest) }),\n });\n\n if (!response.ok) {\n throw new HTTPError(\n \"Failed to create Slack app\",\n response.status,\n response.statusText,\n );\n }\n\n const data = (await response.json()) as SlackManifestCreateResponse;\n\n if (!data.ok) {\n throw new SlackManifestCreateError(\n data?.error ?? \"Unknown error\",\n data?.errors,\n );\n }\n\n return data;\n}\n\nexport async function updateSlackApp({\n token,\n appId,\n manifest,\n}: {\n token: string;\n appId: string;\n manifest: Manifest;\n}): Promise<SlackManifestUpdateResponse> {\n const response = await fetch(\"https://slack.com/api/apps.manifest.update\", {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n body: JSON.stringify({\n app_id: appId,\n manifest: JSON.stringify(manifest),\n }),\n });\n\n if (!response.ok) {\n throw new HTTPError(\n \"Failed to update Slack app\",\n response.status,\n response.statusText,\n );\n }\n\n const data = (await response.json()) as SlackManifestUpdateResponse;\n\n if (!data.ok) {\n throw new SlackManifestUpdateError(\n data?.error ?? \"Unknown error\",\n data?.errors,\n );\n }\n\n return data;\n}\n\nexport async function exportSlackApp({\n token,\n appId,\n}: {\n token: string;\n appId: string;\n}): Promise<SlackManifestExportResponse> {\n const response = await fetch(\"https://slack.com/api/apps.manifest.export\", {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n body: JSON.stringify({ app_id: appId }),\n });\n\n if (!response.ok) {\n throw new HTTPError(\n \"Failed to export Slack app\",\n response.status,\n response.statusText,\n );\n }\n\n const data = (await response.json()) as SlackManifestExportResponse;\n\n if (!data.ok) {\n throw new SlackManifestExportError(data?.error ?? \"Unknown error\");\n }\n\n return data;\n}\n\nexport async function upsertSlackApp({\n token,\n appId,\n manifest,\n}: {\n token: string;\n appId?: string;\n manifest: Manifest;\n}): Promise<\n | { isNew: true; app: SlackManifestCreateResponse }\n | { isNew: false; app: SlackManifestUpdateResponse }\n> {\n if (appId) {\n try {\n await exportSlackApp({ token, appId });\n const app = await updateSlackApp({ token, appId, manifest });\n return { isNew: false, app };\n } catch {\n // App doesn't exist or isn't accessible — fall through to create\n }\n }\n\n const app = await createSlackApp({ token, manifest });\n return { isNew: true, app };\n}\n\nexport async function deleteSlackApp({\n token,\n appId,\n}: {\n token: string;\n appId: string;\n}): Promise<void> {\n const response = await fetch(\"https://slack.com/api/apps.manifest.delete\", {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n body: JSON.stringify({ app_id: appId }),\n });\n\n if (!response.ok) {\n throw new HTTPError(\n \"Failed to delete Slack app\",\n response.status,\n response.statusText,\n );\n }\n\n const data = (await response.json()) as { ok: boolean; error?: string };\n\n if (!data.ok) {\n throw new Error(data.error ?? \"Unknown error\");\n }\n}\n\nexport async function authTest({ token }: { token: string }): Promise<void> {\n const response = await fetch(\"https://slack.com/api/auth.test\", {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n });\n\n if (!response.ok) {\n throw new HTTPError(\n \"Auth test failed\",\n response.status,\n response.statusText,\n );\n }\n\n const data = (await response.json()) as { ok: boolean; error?: string };\n\n if (!data.ok) {\n throw new Error(data.error ?? \"Unknown error\");\n }\n}\n\nexport async function installApp(params: {\n serviceToken?: string;\n appId: string;\n botScopes: string[];\n outgoingDomains?: string[];\n}): Promise<InstallResult> {\n const { serviceToken, appId, botScopes, outgoingDomains } = params;\n\n if (!serviceToken) {\n return {\n status: \"missing_service_token\",\n };\n }\n\n const response = await fetch(\"https://slack.com/api/apps.developerInstall\", {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${serviceToken}`,\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n body: JSON.stringify({\n app_id: appId,\n bot_scopes: botScopes,\n outgoing_domains: outgoingDomains ?? [],\n }),\n });\n\n if (!response.ok) {\n return {\n status: \"slack_api_error\",\n error: response.statusText,\n };\n }\n\n const data = (await response.json()) as InstallResponse;\n\n if (data.error) {\n switch (data.error) {\n case \"app_approval_request_eligible\":\n return {\n status: \"app_approval_request_eligible\",\n };\n case \"app_approval_request_pending\":\n return {\n status: \"app_approval_request_pending\",\n };\n case \"app_approval_request_denied\":\n return {\n status: \"app_approval_request_denied\",\n };\n default:\n return {\n status: \"unknown_error\",\n };\n }\n }\n\n return {\n status: \"installed\",\n botToken: data.api_access_tokens?.bot,\n appLevelToken: data.api_access_tokens?.app_level,\n userToken: data.api_access_tokens?.user,\n };\n}\n","import crypto from \"node:crypto\";\nimport { HTTPError } from \"./errors\";\nimport type {\n AddEnvironmentVariablesResult,\n CreateProjectEnv,\n EnvironmentVariable,\n} from \"./types\";\n\nexport async function getProject({\n projectId,\n token,\n teamId,\n}: {\n projectId: string;\n token: string;\n teamId?: string;\n}): Promise<void> {\n const url = new URL(\n `https://api.vercel.com/v9/projects/${encodeURIComponent(projectId)}`,\n );\n if (teamId) url.searchParams.set(\"teamId\", teamId);\n\n const response = await fetch(url, {\n method: \"GET\",\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n\n if (!response.ok) {\n throw await HTTPError.fromResponse(\n \"Failed to access Vercel project\",\n response,\n );\n }\n}\n\nexport async function updateProtectionBypass({\n projectId,\n token,\n teamId,\n}: {\n projectId: string;\n token: string;\n teamId?: string;\n}): Promise<string> {\n const newSecret = crypto.randomBytes(16).toString(\"hex\");\n const note = \"Created by @vercel/slack-bolt\";\n\n const url = new URL(\n `https://api.vercel.com/v1/projects/${encodeURIComponent(projectId)}/protection-bypass`,\n );\n if (teamId) url.searchParams.set(\"teamId\", teamId);\n\n const response = await fetch(url, {\n method: \"PATCH\",\n headers: {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n generate: {\n secret: newSecret,\n note: note,\n },\n }),\n });\n\n if (!response.ok) {\n throw await HTTPError.fromResponse(\n \"Failed to update protection bypass\",\n response,\n );\n }\n\n return newSecret;\n}\n\nexport async function addEnvironmentVariables({\n projectId,\n token,\n teamId,\n envs,\n upsert = true,\n}: {\n projectId: string;\n token: string;\n teamId?: string;\n envs: CreateProjectEnv | CreateProjectEnv[];\n upsert?: boolean;\n}): Promise<AddEnvironmentVariablesResult> {\n const url = new URL(\n `https://api.vercel.com/v10/projects/${encodeURIComponent(projectId)}/env`,\n );\n if (teamId) url.searchParams.set(\"teamId\", teamId);\n if (upsert) url.searchParams.set(\"upsert\", \"true\");\n\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(envs),\n });\n\n if (!response.ok) {\n throw await HTTPError.fromResponse(\n \"Failed to create environment variables\",\n response,\n );\n }\n\n return response.json();\n}\n\nexport async function cancelDeployment({\n deploymentId,\n token,\n teamId,\n}: {\n deploymentId: string;\n token: string;\n teamId?: string;\n}): Promise<void> {\n const url = new URL(\n `https://api.vercel.com/v12/deployments/${encodeURIComponent(deploymentId)}/cancel`,\n );\n if (teamId) url.searchParams.set(\"teamId\", teamId);\n\n const response = await fetch(url, {\n method: \"PATCH\",\n headers: { Authorization: `Bearer ${token}` },\n });\n\n if (!response.ok) {\n throw await HTTPError.fromResponse(\"Failed to cancel deployment\", response);\n }\n}\n\nexport async function createDeployment({\n deploymentId,\n projectId,\n token,\n teamId,\n}: {\n deploymentId: string;\n projectId: string;\n token: string;\n teamId?: string;\n}): Promise<{ id: string; url: string }> {\n const url = new URL(\"https://api.vercel.com/v13/deployments\");\n if (teamId) url.searchParams.set(\"teamId\", teamId);\n url.searchParams.set(\"forceNew\", \"1\");\n\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n deploymentId,\n name: projectId,\n project: projectId,\n }),\n });\n\n if (!response.ok) {\n throw await HTTPError.fromResponse(\"Failed to create deployment\", response);\n }\n\n const data = await response.json();\n return { id: data.id, url: data.url };\n}\n\nexport async function getActiveBranches({\n projectId,\n token,\n teamId,\n}: {\n projectId: string;\n token: string;\n teamId?: string;\n}): Promise<Set<string>> {\n const params = new URLSearchParams({ active: \"1\", limit: \"100\" });\n if (teamId) params.set(\"teamId\", teamId);\n\n const response = await fetch(\n `https://api.vercel.com/v5/projects/${encodeURIComponent(projectId)}/branches?${params}`,\n { headers: { Authorization: `Bearer ${token}` } },\n );\n\n if (!response.ok) {\n throw await HTTPError.fromResponse(\n \"Failed to fetch active branches\",\n response,\n );\n }\n\n const data: { branches?: { branch: string }[] } = await response.json();\n return new Set(data.branches?.map((b) => b.branch) ?? []);\n}\n\nexport async function getEnvironmentVariables({\n projectId,\n token,\n teamId,\n}: {\n projectId: string;\n token: string;\n teamId?: string;\n}): Promise<EnvironmentVariable[]> {\n const url = new URL(\n `https://api.vercel.com/v9/projects/${encodeURIComponent(projectId)}/env`,\n );\n if (teamId) url.searchParams.set(\"teamId\", teamId);\n\n const response = await fetch(url, {\n headers: { Authorization: `Bearer ${token}` },\n });\n\n if (!response.ok) {\n throw await HTTPError.fromResponse(\n \"Failed to fetch environment variables\",\n response,\n );\n }\n\n const data: { envs: EnvironmentVariable[] } = await response.json();\n return data.envs ?? [];\n}\n\nexport async function getEnvironmentVariable({\n projectId,\n envId,\n token,\n teamId,\n}: {\n projectId: string;\n envId: string;\n token: string;\n teamId?: string;\n}): Promise<string | null> {\n const url = new URL(\n `https://api.vercel.com/v9/projects/${encodeURIComponent(projectId)}/env/${encodeURIComponent(envId)}`,\n );\n if (teamId) url.searchParams.set(\"teamId\", teamId);\n\n const response = await fetch(url, {\n headers: { Authorization: `Bearer ${token}` },\n });\n\n if (!response.ok) {\n throw await HTTPError.fromResponse(\n \"Failed to fetch environment variable\",\n response,\n );\n }\n\n const data: { value?: string } = await response.json();\n return data.value ?? null;\n}\n\nexport async function deleteEnvironmentVariable({\n projectId,\n envId,\n token,\n teamId,\n}: {\n projectId: string;\n envId: string;\n token: string;\n teamId?: string;\n}): Promise<void> {\n const url = new URL(\n `https://api.vercel.com/v9/projects/${encodeURIComponent(projectId)}/env/${encodeURIComponent(envId)}`,\n );\n if (teamId) url.searchParams.set(\"teamId\", teamId);\n\n const response = await fetch(url, {\n method: \"DELETE\",\n headers: { Authorization: `Bearer ${token}` },\n });\n\n if (!response.ok) {\n throw await HTTPError.fromResponse(\n \"Failed to delete environment variable\",\n response,\n );\n }\n}\n","const isDebug =\n process.env.VERCEL_SLACK_DEBUG === \"1\" ||\n process.env.VERCEL_SLACK_DEBUG === \"true\";\n\nexport const logger = {\n info: (...args: unknown[]) => console.log(...args),\n warn: (...args: unknown[]) => console.warn(...args),\n error: (...args: unknown[]) => console.error(...args),\n debug: (...args: unknown[]) => {\n if (isDebug) console.debug(...args);\n },\n};\n\nconst BOLD = \"\\x1b[1m\";\nconst RESET = \"\\x1b[0m\";\nconst GREEN = \"\\x1b[32m\";\nconst YELLOW = \"\\x1b[33m\";\n\nexport const log = {\n step: (msg: string) => console.log(` ${msg} ...`),\n success: (msg: string) => console.log(`${GREEN}✓${RESET} ${msg}`),\n info: (msg: string) => console.log(` ${msg}`),\n warning: (msg: string) => console.log(`${YELLOW}⚠${RESET} ${msg}`),\n};\n\nexport const startMessage = (\n version?: string,\n branch?: string,\n commit?: string,\n appId?: string,\n) => {\n const lines = [`▲ @vercel/slack-bolt ${version ?? \"\"}`];\n if (branch) lines.push(` - Branch: ${branch}`);\n if (commit) lines.push(` - Commit: ${commit.slice(0, 7)}`);\n if (appId) lines.push(` - App ID: ${appId}`);\n return `${BOLD}${lines.join(\"\\n\")}${RESET}\\n`;\n};\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { createNewManifest } from \"./internal/manifest\";\nimport type { Manifest } from \"./internal/manifest/types\";\nimport { installApp, upsertSlackApp } from \"./internal/slack\";\nimport type {\n SlackManifestCreateResponse,\n SlackManifestUpdateResponse,\n} from \"./internal/slack/types\";\nimport {\n addEnvironmentVariables,\n updateProtectionBypass,\n} from \"./internal/vercel\";\nimport type { CreateProjectEnv } from \"./internal/vercel/types\";\nimport { log } from \"./logger\";\n\nexport type PreviewParams = {\n automationBypassSecret?: string;\n branch: string;\n branchUrl?: string;\n commitAuthor?: string;\n commitMessage?: string;\n commitSha?: string;\n deploymentId?: string;\n deploymentUrl: string;\n manifestPath: string;\n projectId: string;\n slackAppId?: string;\n slackConfigurationToken: string;\n slackServiceToken?: string;\n teamId?: string;\n vercelApiToken: string;\n};\n\nexport type PreviewResult = {\n isNew: boolean;\n installStatus: string;\n app: SlackManifestCreateResponse | SlackManifestUpdateResponse;\n};\n\nexport const preview = async (\n params: PreviewParams,\n context?: \"cli\",\n): Promise<PreviewResult> => {\n const {\n branch,\n projectId,\n deploymentUrl,\n teamId,\n commitAuthor,\n commitMessage: commitMsg,\n commitSha,\n slackAppId,\n slackConfigurationToken,\n slackServiceToken,\n manifestPath,\n vercelApiToken,\n } = params;\n\n const cli = context === \"cli\";\n const branchUrl = params.branchUrl ?? deploymentUrl;\n let bypassSecret = params.automationBypassSecret;\n\n if (!bypassSecret) {\n if (cli) log.step(\"Generating automation bypass secret\");\n bypassSecret = await updateProtectionBypass({\n projectId,\n token: vercelApiToken,\n teamId,\n });\n if (cli) log.success(\"Automation bypass secret generated\");\n }\n\n if (cli) log.step(`Reading manifest from ${manifestPath}`);\n const rawFileManifest = fs.readFileSync(\n path.join(process.cwd(), manifestPath),\n \"utf8\",\n );\n const manifest = JSON.parse(rawFileManifest) as Manifest;\n\n const newManifest = createNewManifest({\n originalManifest: manifest,\n branchUrl,\n bypassSecret,\n branch,\n commitSha,\n commitMessage: commitMsg,\n commitAuthor,\n });\n\n // write new manifest so user-land imports of manifest.json see the updated version\n fs.writeFileSync(\n path.join(process.cwd(), manifestPath),\n JSON.stringify(newManifest, null, 2),\n \"utf8\",\n );\n if (cli) log.success(`Manifest updated for ${branchUrl}`);\n\n if (cli) log.step(\"Creating or updating Slack app\");\n const { isNew, app } = await upsertSlackApp({\n token: slackConfigurationToken,\n appId: slackAppId,\n manifest: newManifest,\n });\n\n if (isNew) {\n const credentialEnvs: CreateProjectEnv[] = [];\n if (app.app_id) {\n credentialEnvs.push({\n key: \"SLACK_APP_ID\",\n value: app.app_id,\n type: \"encrypted\",\n target: [\"preview\"],\n gitBranch: branch,\n comment: `Created by @vercel/slack-bolt for app ${app.app_id} on branch ${branch}`,\n });\n }\n if (app.credentials?.client_id) {\n credentialEnvs.push({\n key: \"SLACK_CLIENT_ID\",\n value: app.credentials.client_id,\n type: \"encrypted\",\n target: [\"preview\"],\n gitBranch: branch,\n comment: `Created by @vercel/slack-bolt for app ${app.app_id} on branch ${branch}`,\n });\n }\n if (app.credentials?.client_secret) {\n credentialEnvs.push({\n key: \"SLACK_CLIENT_SECRET\",\n value: app.credentials.client_secret,\n type: \"encrypted\",\n target: [\"preview\"],\n gitBranch: branch,\n comment: `Created by @vercel/slack-bolt for app ${app.app_id} on branch ${branch}`,\n });\n }\n if (app.credentials?.signing_secret) {\n credentialEnvs.push({\n key: \"SLACK_SIGNING_SECRET\",\n value: app.credentials.signing_secret,\n type: \"encrypted\",\n target: [\"preview\"],\n gitBranch: branch,\n comment: `Created by @vercel/slack-bolt for app ${app.app_id} on branch ${branch}`,\n });\n }\n if (credentialEnvs.length > 0) {\n await addEnvironmentVariables({\n projectId,\n token: vercelApiToken,\n teamId,\n envs: credentialEnvs,\n });\n }\n }\n\n if (cli)\n log.success(`${isNew ? \"Created\" : \"Updated\"} Slack app ${app.app_id}`);\n\n if (cli) log.step(\"Installing Slack app\");\n const { status, botToken, appLevelToken, userToken } = await installApp({\n serviceToken: slackServiceToken,\n appId: app.app_id,\n botScopes: manifest.oauth_config?.scopes?.bot ?? [],\n });\n\n if (isNew) {\n const tokenEnvs: CreateProjectEnv[] = [];\n if (botToken) {\n tokenEnvs.push({\n key: \"SLACK_BOT_TOKEN\",\n value: botToken,\n type: \"encrypted\",\n target: [\"preview\"],\n gitBranch: branch,\n comment: `Created by @vercel/slack-bolt for app ${app.app_id} on branch ${branch}`,\n });\n }\n if (appLevelToken) {\n tokenEnvs.push({\n key: \"SLACK_APP_LEVEL_TOKEN\",\n value: appLevelToken,\n type: \"encrypted\",\n target: [\"preview\"],\n gitBranch: branch,\n comment: `Created by @vercel/slack-bolt for app ${app.app_id} on branch ${branch}`,\n });\n }\n if (userToken) {\n tokenEnvs.push({\n key: \"SLACK_USER_TOKEN\",\n value: userToken,\n type: \"encrypted\",\n target: [\"preview\"],\n gitBranch: branch,\n comment: `Created by @vercel/slack-bolt for app ${app.app_id} on branch ${branch}`,\n });\n }\n if (tokenEnvs.length > 0) {\n await addEnvironmentVariables({\n projectId,\n token: vercelApiToken,\n teamId,\n envs: tokenEnvs,\n });\n }\n }\n\n if (cli) {\n switch (status) {\n case \"missing_service_token\":\n log.warning(\n \"SLACK_SERVICE_TOKEN is not set — app must be installed manually\",\n );\n log.info(\"https://docs.slack.dev/authentication/tokens/#service\");\n break;\n case \"installed\":\n log.success(`Installed Slack app ${app.app_id}`);\n break;\n case \"app_approval_request_eligible\":\n log.warning(\"App requires approval before it can be installed\");\n break;\n case \"app_approval_request_pending\":\n log.warning(\"App is pending approval before it can be installed\");\n break;\n case \"app_approval_request_denied\":\n log.warning(\"App approval request was denied\");\n break;\n case \"slack_api_error\":\n log.warning(\"Slack API error while installing the app\");\n break;\n case \"unknown_error\":\n log.warning(\"Unknown error while installing the app\");\n break;\n }\n console.log();\n if (app.app_id) {\n log.info(`View app: https://api.slack.com/apps/${app.app_id}`);\n }\n if (isNew && app.oauth_authorize_url) {\n log.info(`Install URL: ${app.oauth_authorize_url}`);\n }\n console.log();\n }\n\n return {\n isNew,\n installStatus: status,\n app,\n };\n};\n"]}
@@ -385,7 +385,7 @@ async function updateProtectionBypass({
385
385
  token,
386
386
  teamId
387
387
  }) {
388
- const newSecret = crypto__default.default.randomBytes(32).toString("hex");
388
+ const newSecret = crypto__default.default.randomBytes(16).toString("hex");
389
389
  const note = "Created by @vercel/slack-bolt";
390
390
  const url = new URL(
391
391
  `https://api.vercel.com/v1/projects/${encodeURIComponent(projectId)}/protection-bypass`
@@ -826,5 +826,5 @@ exports.init_logger = init_logger;
826
826
  exports.init_preview = init_preview;
827
827
  exports.init_slack = init_slack;
828
828
  exports.init_vercel = init_vercel;
829
- //# sourceMappingURL=chunk-UHIORNAT.js.map
830
- //# sourceMappingURL=chunk-UHIORNAT.js.map
829
+ //# sourceMappingURL=chunk-QGGTFP5L.js.map
830
+ //# sourceMappingURL=chunk-QGGTFP5L.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/internal/manifest/index.ts","../src/internal/vercel/errors.ts","../src/internal/slack/errors.ts","../src/internal/slack/index.ts","../src/internal/vercel/index.ts","../src/logger.ts","../src/preview.ts"],"names":["__esm","init_errors","app","crypto","logger","log","startMessage","preview","fs","path"],"mappings":"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","file":"chunk-UHIORNAT.js","sourcesContent":["import type { Manifest } from \"./types\";\n\nexport function rewriteUrl(\n originalUrl: string,\n branchUrl: string,\n bypassSecret?: string,\n): string {\n const pathStart = originalUrl.indexOf(\"/\", originalUrl.indexOf(\"//\") + 2);\n const pathAndQuery = pathStart !== -1 ? originalUrl.slice(pathStart) : \"/\";\n\n const url = new URL(pathAndQuery, `https://${branchUrl}`);\n if (bypassSecret) {\n url.searchParams.set(\"x-vercel-protection-bypass\", bypassSecret);\n }\n return url.toString();\n}\n\nfunction createManifestDescription(params: {\n existingDescription: string;\n existingName: string;\n branchUrl: string;\n branch: string;\n commitSha?: string;\n commitMessage?: string;\n commitAuthor?: string;\n}): { longDescription: string; displayName: string } {\n const shortSha = params.commitSha?.slice(0, 7) ?? \"unknown\";\n const safeCommitMsg = params.commitMessage ?? \"\";\n const safeCommitAuthor = params.commitAuthor ?? \"unknown\";\n\n const deploymentInfo = `\\n:globe_with_meridians: *Deployment URL:* ${params.branchUrl}\\n:seedling: *Branch:* ${params.branch}\\n:technologist: *Commit:* ${shortSha} ${safeCommitMsg}\\n:bust_in_silhouette: *Last updated by:* ${safeCommitAuthor}\\n\\n_Automatically created by ▲ Vercel_\\n`;\n\n const maxLongDesc = 4000;\n const combined = params.existingDescription + deploymentInfo;\n let longDescription: string;\n if (combined.length > maxLongDesc) {\n const available = Math.max(0, maxLongDesc - deploymentInfo.length);\n longDescription = (\n params.existingDescription.slice(0, available) + deploymentInfo\n ).slice(0, maxLongDesc);\n } else {\n longDescription = combined;\n }\n\n const maxDisplayName = 35;\n const cleanBranch = params.branch\n .replace(/^refs\\/heads\\//, \"\")\n .replace(/\\//g, \"-\");\n\n let displayName = `${params.existingName} (${cleanBranch})`;\n if (displayName.length > maxDisplayName) {\n const prefix = `${params.existingName} (`;\n const suffix = \")\";\n const availableForBranch = maxDisplayName - prefix.length - suffix.length;\n displayName =\n availableForBranch > 0\n ? `${prefix}${cleanBranch.slice(0, availableForBranch)}${suffix}`\n : displayName.slice(0, maxDisplayName);\n }\n\n return { longDescription, displayName };\n}\n\nexport function createNewManifest(params: {\n originalManifest: Manifest;\n branchUrl: string;\n bypassSecret: string;\n branch: string;\n commitSha?: string;\n commitMessage?: string;\n commitAuthor?: string;\n}): Manifest {\n const manifest = structuredClone(params.originalManifest);\n\n if (manifest.settings?.event_subscriptions?.request_url) {\n manifest.settings.event_subscriptions.request_url = rewriteUrl(\n manifest.settings.event_subscriptions.request_url,\n params.branchUrl,\n params.bypassSecret,\n );\n }\n\n if (manifest.settings?.interactivity?.request_url) {\n manifest.settings.interactivity.request_url = rewriteUrl(\n manifest.settings.interactivity.request_url,\n params.branchUrl,\n params.bypassSecret,\n );\n }\n\n if (manifest.features?.slash_commands) {\n for (const cmd of manifest.features.slash_commands) {\n if (cmd.url) {\n cmd.url = rewriteUrl(cmd.url, params.branchUrl, params.bypassSecret);\n }\n }\n }\n\n if (manifest.oauth_config?.redirect_urls) {\n manifest.oauth_config.redirect_urls =\n manifest.oauth_config.redirect_urls.map((originalUrl) =>\n rewriteUrl(originalUrl, params.branchUrl),\n );\n }\n\n const { longDescription, displayName } = createManifestDescription({\n existingDescription: manifest.display_information.long_description ?? \"\",\n existingName:\n manifest.features?.bot_user?.display_name ??\n manifest.display_information.name,\n branchUrl: params.branchUrl,\n branch: params.branch,\n commitSha: params.commitSha,\n commitMessage: params.commitMessage,\n commitAuthor: params.commitAuthor,\n });\n\n manifest.display_information.long_description = longDescription;\n manifest.display_information.name = displayName;\n if (manifest.features?.bot_user) {\n manifest.features.bot_user.display_name = displayName;\n }\n\n return manifest;\n}\n","export class HTTPError extends Error {\n constructor(\n message: string,\n public status: number,\n public statusText: string,\n public body?: string,\n ) {\n const parts = [`${message}: ${status} ${statusText}`];\n if (body) parts.push(body);\n super(parts.join(\" - \"));\n }\n\n static async fromResponse(\n message: string,\n response: Response,\n ): Promise<HTTPError> {\n let body: string | undefined;\n try {\n const text = await response.text();\n if (text) body = text;\n } catch {\n // body unreadable, that's fine\n }\n return new HTTPError(message, response.status, response.statusText, body);\n }\n}\n","export class SlackManifestCreateError extends Error {\n constructor(\n message: string,\n public errors?: { message: string; pointer: string }[],\n ) {\n super(message);\n }\n}\n\nexport class SlackManifestUpdateError extends Error {\n constructor(\n message: string,\n public errors?: { message: string; pointer: string }[],\n ) {\n super(message);\n }\n}\n\nexport class SlackManifestExportError extends Error {\n constructor(message: string) {\n super(message);\n }\n}\n","import type { Manifest } from \"../manifest/types\";\nimport { HTTPError } from \"../vercel/errors\";\nimport {\n SlackManifestCreateError,\n SlackManifestExportError,\n SlackManifestUpdateError,\n} from \"./errors\";\nimport type {\n InstallResponse,\n InstallResult,\n SlackManifestCreateResponse,\n SlackManifestExportResponse,\n SlackManifestUpdateResponse,\n} from \"./types\";\n\nexport {\n SlackManifestCreateError,\n SlackManifestExportError,\n SlackManifestUpdateError,\n} from \"./errors\";\nexport type {\n InstallResult,\n SlackManifestCreateResponse,\n SlackManifestExportResponse,\n SlackManifestUpdateResponse,\n} from \"./types\";\n\nexport async function createSlackApp({\n token,\n manifest,\n}: {\n token: string;\n manifest: Manifest;\n}): Promise<SlackManifestCreateResponse> {\n const response = await fetch(\"https://slack.com/api/apps.manifest.create\", {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n body: JSON.stringify({ manifest: JSON.stringify(manifest) }),\n });\n\n if (!response.ok) {\n throw new HTTPError(\n \"Failed to create Slack app\",\n response.status,\n response.statusText,\n );\n }\n\n const data = (await response.json()) as SlackManifestCreateResponse;\n\n if (!data.ok) {\n throw new SlackManifestCreateError(\n data?.error ?? \"Unknown error\",\n data?.errors,\n );\n }\n\n return data;\n}\n\nexport async function updateSlackApp({\n token,\n appId,\n manifest,\n}: {\n token: string;\n appId: string;\n manifest: Manifest;\n}): Promise<SlackManifestUpdateResponse> {\n const response = await fetch(\"https://slack.com/api/apps.manifest.update\", {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n body: JSON.stringify({\n app_id: appId,\n manifest: JSON.stringify(manifest),\n }),\n });\n\n if (!response.ok) {\n throw new HTTPError(\n \"Failed to update Slack app\",\n response.status,\n response.statusText,\n );\n }\n\n const data = (await response.json()) as SlackManifestUpdateResponse;\n\n if (!data.ok) {\n throw new SlackManifestUpdateError(\n data?.error ?? \"Unknown error\",\n data?.errors,\n );\n }\n\n return data;\n}\n\nexport async function exportSlackApp({\n token,\n appId,\n}: {\n token: string;\n appId: string;\n}): Promise<SlackManifestExportResponse> {\n const response = await fetch(\"https://slack.com/api/apps.manifest.export\", {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n body: JSON.stringify({ app_id: appId }),\n });\n\n if (!response.ok) {\n throw new HTTPError(\n \"Failed to export Slack app\",\n response.status,\n response.statusText,\n );\n }\n\n const data = (await response.json()) as SlackManifestExportResponse;\n\n if (!data.ok) {\n throw new SlackManifestExportError(data?.error ?? \"Unknown error\");\n }\n\n return data;\n}\n\nexport async function upsertSlackApp({\n token,\n appId,\n manifest,\n}: {\n token: string;\n appId?: string;\n manifest: Manifest;\n}): Promise<\n | { isNew: true; app: SlackManifestCreateResponse }\n | { isNew: false; app: SlackManifestUpdateResponse }\n> {\n if (appId) {\n try {\n await exportSlackApp({ token, appId });\n const app = await updateSlackApp({ token, appId, manifest });\n return { isNew: false, app };\n } catch {\n // App doesn't exist or isn't accessible — fall through to create\n }\n }\n\n const app = await createSlackApp({ token, manifest });\n return { isNew: true, app };\n}\n\nexport async function deleteSlackApp({\n token,\n appId,\n}: {\n token: string;\n appId: string;\n}): Promise<void> {\n const response = await fetch(\"https://slack.com/api/apps.manifest.delete\", {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n body: JSON.stringify({ app_id: appId }),\n });\n\n if (!response.ok) {\n throw new HTTPError(\n \"Failed to delete Slack app\",\n response.status,\n response.statusText,\n );\n }\n\n const data = (await response.json()) as { ok: boolean; error?: string };\n\n if (!data.ok) {\n throw new Error(data.error ?? \"Unknown error\");\n }\n}\n\nexport async function authTest({ token }: { token: string }): Promise<void> {\n const response = await fetch(\"https://slack.com/api/auth.test\", {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n });\n\n if (!response.ok) {\n throw new HTTPError(\n \"Auth test failed\",\n response.status,\n response.statusText,\n );\n }\n\n const data = (await response.json()) as { ok: boolean; error?: string };\n\n if (!data.ok) {\n throw new Error(data.error ?? \"Unknown error\");\n }\n}\n\nexport async function installApp(params: {\n serviceToken?: string;\n appId: string;\n botScopes: string[];\n outgoingDomains?: string[];\n}): Promise<InstallResult> {\n const { serviceToken, appId, botScopes, outgoingDomains } = params;\n\n if (!serviceToken) {\n return {\n status: \"missing_service_token\",\n };\n }\n\n const response = await fetch(\"https://slack.com/api/apps.developerInstall\", {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${serviceToken}`,\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n body: JSON.stringify({\n app_id: appId,\n bot_scopes: botScopes,\n outgoing_domains: outgoingDomains ?? [],\n }),\n });\n\n if (!response.ok) {\n return {\n status: \"slack_api_error\",\n error: response.statusText,\n };\n }\n\n const data = (await response.json()) as InstallResponse;\n\n if (data.error) {\n switch (data.error) {\n case \"app_approval_request_eligible\":\n return {\n status: \"app_approval_request_eligible\",\n };\n case \"app_approval_request_pending\":\n return {\n status: \"app_approval_request_pending\",\n };\n case \"app_approval_request_denied\":\n return {\n status: \"app_approval_request_denied\",\n };\n default:\n return {\n status: \"unknown_error\",\n };\n }\n }\n\n return {\n status: \"installed\",\n botToken: data.api_access_tokens?.bot,\n appLevelToken: data.api_access_tokens?.app_level,\n userToken: data.api_access_tokens?.user,\n };\n}\n","import crypto from \"node:crypto\";\nimport { HTTPError } from \"./errors\";\nimport type {\n AddEnvironmentVariablesResult,\n CreateProjectEnv,\n EnvironmentVariable,\n} from \"./types\";\n\nexport async function getProject({\n projectId,\n token,\n teamId,\n}: {\n projectId: string;\n token: string;\n teamId?: string;\n}): Promise<void> {\n const url = new URL(\n `https://api.vercel.com/v9/projects/${encodeURIComponent(projectId)}`,\n );\n if (teamId) url.searchParams.set(\"teamId\", teamId);\n\n const response = await fetch(url, {\n method: \"GET\",\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n\n if (!response.ok) {\n throw await HTTPError.fromResponse(\n \"Failed to access Vercel project\",\n response,\n );\n }\n}\n\nexport async function updateProtectionBypass({\n projectId,\n token,\n teamId,\n}: {\n projectId: string;\n token: string;\n teamId?: string;\n}): Promise<string> {\n const newSecret = crypto.randomBytes(32).toString(\"hex\");\n const note = \"Created by @vercel/slack-bolt\";\n\n const url = new URL(\n `https://api.vercel.com/v1/projects/${encodeURIComponent(projectId)}/protection-bypass`,\n );\n if (teamId) url.searchParams.set(\"teamId\", teamId);\n\n const response = await fetch(url, {\n method: \"PATCH\",\n headers: {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n generate: {\n secret: newSecret,\n note: note,\n },\n }),\n });\n\n if (!response.ok) {\n throw await HTTPError.fromResponse(\n \"Failed to update protection bypass\",\n response,\n );\n }\n\n return newSecret;\n}\n\nexport async function addEnvironmentVariables({\n projectId,\n token,\n teamId,\n envs,\n upsert = true,\n}: {\n projectId: string;\n token: string;\n teamId?: string;\n envs: CreateProjectEnv | CreateProjectEnv[];\n upsert?: boolean;\n}): Promise<AddEnvironmentVariablesResult> {\n const url = new URL(\n `https://api.vercel.com/v10/projects/${encodeURIComponent(projectId)}/env`,\n );\n if (teamId) url.searchParams.set(\"teamId\", teamId);\n if (upsert) url.searchParams.set(\"upsert\", \"true\");\n\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(envs),\n });\n\n if (!response.ok) {\n throw await HTTPError.fromResponse(\n \"Failed to create environment variables\",\n response,\n );\n }\n\n return response.json();\n}\n\nexport async function cancelDeployment({\n deploymentId,\n token,\n teamId,\n}: {\n deploymentId: string;\n token: string;\n teamId?: string;\n}): Promise<void> {\n const url = new URL(\n `https://api.vercel.com/v12/deployments/${encodeURIComponent(deploymentId)}/cancel`,\n );\n if (teamId) url.searchParams.set(\"teamId\", teamId);\n\n const response = await fetch(url, {\n method: \"PATCH\",\n headers: { Authorization: `Bearer ${token}` },\n });\n\n if (!response.ok) {\n throw await HTTPError.fromResponse(\"Failed to cancel deployment\", response);\n }\n}\n\nexport async function createDeployment({\n deploymentId,\n projectId,\n token,\n teamId,\n}: {\n deploymentId: string;\n projectId: string;\n token: string;\n teamId?: string;\n}): Promise<{ id: string; url: string }> {\n const url = new URL(\"https://api.vercel.com/v13/deployments\");\n if (teamId) url.searchParams.set(\"teamId\", teamId);\n url.searchParams.set(\"forceNew\", \"1\");\n\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n deploymentId,\n name: projectId,\n project: projectId,\n }),\n });\n\n if (!response.ok) {\n throw await HTTPError.fromResponse(\"Failed to create deployment\", response);\n }\n\n const data = await response.json();\n return { id: data.id, url: data.url };\n}\n\nexport async function getActiveBranches({\n projectId,\n token,\n teamId,\n}: {\n projectId: string;\n token: string;\n teamId?: string;\n}): Promise<Set<string>> {\n const params = new URLSearchParams({ active: \"1\", limit: \"100\" });\n if (teamId) params.set(\"teamId\", teamId);\n\n const response = await fetch(\n `https://api.vercel.com/v5/projects/${encodeURIComponent(projectId)}/branches?${params}`,\n { headers: { Authorization: `Bearer ${token}` } },\n );\n\n if (!response.ok) {\n throw await HTTPError.fromResponse(\n \"Failed to fetch active branches\",\n response,\n );\n }\n\n const data: { branches?: { branch: string }[] } = await response.json();\n return new Set(data.branches?.map((b) => b.branch) ?? []);\n}\n\nexport async function getEnvironmentVariables({\n projectId,\n token,\n teamId,\n}: {\n projectId: string;\n token: string;\n teamId?: string;\n}): Promise<EnvironmentVariable[]> {\n const url = new URL(\n `https://api.vercel.com/v9/projects/${encodeURIComponent(projectId)}/env`,\n );\n if (teamId) url.searchParams.set(\"teamId\", teamId);\n\n const response = await fetch(url, {\n headers: { Authorization: `Bearer ${token}` },\n });\n\n if (!response.ok) {\n throw await HTTPError.fromResponse(\n \"Failed to fetch environment variables\",\n response,\n );\n }\n\n const data: { envs: EnvironmentVariable[] } = await response.json();\n return data.envs ?? [];\n}\n\nexport async function getEnvironmentVariable({\n projectId,\n envId,\n token,\n teamId,\n}: {\n projectId: string;\n envId: string;\n token: string;\n teamId?: string;\n}): Promise<string | null> {\n const url = new URL(\n `https://api.vercel.com/v9/projects/${encodeURIComponent(projectId)}/env/${encodeURIComponent(envId)}`,\n );\n if (teamId) url.searchParams.set(\"teamId\", teamId);\n\n const response = await fetch(url, {\n headers: { Authorization: `Bearer ${token}` },\n });\n\n if (!response.ok) {\n throw await HTTPError.fromResponse(\n \"Failed to fetch environment variable\",\n response,\n );\n }\n\n const data: { value?: string } = await response.json();\n return data.value ?? null;\n}\n\nexport async function deleteEnvironmentVariable({\n projectId,\n envId,\n token,\n teamId,\n}: {\n projectId: string;\n envId: string;\n token: string;\n teamId?: string;\n}): Promise<void> {\n const url = new URL(\n `https://api.vercel.com/v9/projects/${encodeURIComponent(projectId)}/env/${encodeURIComponent(envId)}`,\n );\n if (teamId) url.searchParams.set(\"teamId\", teamId);\n\n const response = await fetch(url, {\n method: \"DELETE\",\n headers: { Authorization: `Bearer ${token}` },\n });\n\n if (!response.ok) {\n throw await HTTPError.fromResponse(\n \"Failed to delete environment variable\",\n response,\n );\n }\n}\n","const isDebug =\n process.env.VERCEL_SLACK_DEBUG === \"1\" ||\n process.env.VERCEL_SLACK_DEBUG === \"true\";\n\nexport const logger = {\n info: (...args: unknown[]) => console.log(...args),\n warn: (...args: unknown[]) => console.warn(...args),\n error: (...args: unknown[]) => console.error(...args),\n debug: (...args: unknown[]) => {\n if (isDebug) console.debug(...args);\n },\n};\n\nconst BOLD = \"\\x1b[1m\";\nconst RESET = \"\\x1b[0m\";\nconst GREEN = \"\\x1b[32m\";\nconst YELLOW = \"\\x1b[33m\";\n\nexport const log = {\n step: (msg: string) => console.log(` ${msg} ...`),\n success: (msg: string) => console.log(`${GREEN}✓${RESET} ${msg}`),\n info: (msg: string) => console.log(` ${msg}`),\n warning: (msg: string) => console.log(`${YELLOW}⚠${RESET} ${msg}`),\n};\n\nexport const startMessage = (\n version?: string,\n branch?: string,\n commit?: string,\n appId?: string,\n) => {\n const lines = [`▲ @vercel/slack-bolt ${version ?? \"\"}`];\n if (branch) lines.push(` - Branch: ${branch}`);\n if (commit) lines.push(` - Commit: ${commit.slice(0, 7)}`);\n if (appId) lines.push(` - App ID: ${appId}`);\n return `${BOLD}${lines.join(\"\\n\")}${RESET}\\n`;\n};\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { createNewManifest } from \"./internal/manifest\";\nimport type { Manifest } from \"./internal/manifest/types\";\nimport { installApp, upsertSlackApp } from \"./internal/slack\";\nimport type {\n SlackManifestCreateResponse,\n SlackManifestUpdateResponse,\n} from \"./internal/slack/types\";\nimport {\n addEnvironmentVariables,\n updateProtectionBypass,\n} from \"./internal/vercel\";\nimport type { CreateProjectEnv } from \"./internal/vercel/types\";\nimport { log } from \"./logger\";\n\nexport type PreviewParams = {\n automationBypassSecret?: string;\n branch: string;\n branchUrl?: string;\n commitAuthor?: string;\n commitMessage?: string;\n commitSha?: string;\n deploymentId?: string;\n deploymentUrl: string;\n manifestPath: string;\n projectId: string;\n slackAppId?: string;\n slackConfigurationToken: string;\n slackServiceToken?: string;\n teamId?: string;\n vercelApiToken: string;\n};\n\nexport type PreviewResult = {\n isNew: boolean;\n installStatus: string;\n app: SlackManifestCreateResponse | SlackManifestUpdateResponse;\n};\n\nexport const preview = async (\n params: PreviewParams,\n context?: \"cli\",\n): Promise<PreviewResult> => {\n const {\n branch,\n projectId,\n deploymentUrl,\n teamId,\n commitAuthor,\n commitMessage: commitMsg,\n commitSha,\n slackAppId,\n slackConfigurationToken,\n slackServiceToken,\n manifestPath,\n vercelApiToken,\n } = params;\n\n const cli = context === \"cli\";\n const branchUrl = params.branchUrl ?? deploymentUrl;\n let bypassSecret = params.automationBypassSecret;\n\n if (!bypassSecret) {\n if (cli) log.step(\"Generating automation bypass secret\");\n bypassSecret = await updateProtectionBypass({\n projectId,\n token: vercelApiToken,\n teamId,\n });\n if (cli) log.success(\"Automation bypass secret generated\");\n }\n\n if (cli) log.step(`Reading manifest from ${manifestPath}`);\n const rawFileManifest = fs.readFileSync(\n path.join(process.cwd(), manifestPath),\n \"utf8\",\n );\n const manifest = JSON.parse(rawFileManifest) as Manifest;\n\n const newManifest = createNewManifest({\n originalManifest: manifest,\n branchUrl,\n bypassSecret,\n branch,\n commitSha,\n commitMessage: commitMsg,\n commitAuthor,\n });\n\n // write new manifest so user-land imports of manifest.json see the updated version\n fs.writeFileSync(\n path.join(process.cwd(), manifestPath),\n JSON.stringify(newManifest, null, 2),\n \"utf8\",\n );\n if (cli) log.success(`Manifest updated for ${branchUrl}`);\n\n if (cli) log.step(\"Creating or updating Slack app\");\n const { isNew, app } = await upsertSlackApp({\n token: slackConfigurationToken,\n appId: slackAppId,\n manifest: newManifest,\n });\n\n if (isNew) {\n const credentialEnvs: CreateProjectEnv[] = [];\n if (app.app_id) {\n credentialEnvs.push({\n key: \"SLACK_APP_ID\",\n value: app.app_id,\n type: \"encrypted\",\n target: [\"preview\"],\n gitBranch: branch,\n comment: `Created by @vercel/slack-bolt for app ${app.app_id} on branch ${branch}`,\n });\n }\n if (app.credentials?.client_id) {\n credentialEnvs.push({\n key: \"SLACK_CLIENT_ID\",\n value: app.credentials.client_id,\n type: \"encrypted\",\n target: [\"preview\"],\n gitBranch: branch,\n comment: `Created by @vercel/slack-bolt for app ${app.app_id} on branch ${branch}`,\n });\n }\n if (app.credentials?.client_secret) {\n credentialEnvs.push({\n key: \"SLACK_CLIENT_SECRET\",\n value: app.credentials.client_secret,\n type: \"encrypted\",\n target: [\"preview\"],\n gitBranch: branch,\n comment: `Created by @vercel/slack-bolt for app ${app.app_id} on branch ${branch}`,\n });\n }\n if (app.credentials?.signing_secret) {\n credentialEnvs.push({\n key: \"SLACK_SIGNING_SECRET\",\n value: app.credentials.signing_secret,\n type: \"encrypted\",\n target: [\"preview\"],\n gitBranch: branch,\n comment: `Created by @vercel/slack-bolt for app ${app.app_id} on branch ${branch}`,\n });\n }\n if (credentialEnvs.length > 0) {\n await addEnvironmentVariables({\n projectId,\n token: vercelApiToken,\n teamId,\n envs: credentialEnvs,\n });\n }\n }\n\n if (cli)\n log.success(`${isNew ? \"Created\" : \"Updated\"} Slack app ${app.app_id}`);\n\n if (cli) log.step(\"Installing Slack app\");\n const { status, botToken, appLevelToken, userToken } = await installApp({\n serviceToken: slackServiceToken,\n appId: app.app_id,\n botScopes: manifest.oauth_config?.scopes?.bot ?? [],\n });\n\n if (isNew) {\n const tokenEnvs: CreateProjectEnv[] = [];\n if (botToken) {\n tokenEnvs.push({\n key: \"SLACK_BOT_TOKEN\",\n value: botToken,\n type: \"encrypted\",\n target: [\"preview\"],\n gitBranch: branch,\n comment: `Created by @vercel/slack-bolt for app ${app.app_id} on branch ${branch}`,\n });\n }\n if (appLevelToken) {\n tokenEnvs.push({\n key: \"SLACK_APP_LEVEL_TOKEN\",\n value: appLevelToken,\n type: \"encrypted\",\n target: [\"preview\"],\n gitBranch: branch,\n comment: `Created by @vercel/slack-bolt for app ${app.app_id} on branch ${branch}`,\n });\n }\n if (userToken) {\n tokenEnvs.push({\n key: \"SLACK_USER_TOKEN\",\n value: userToken,\n type: \"encrypted\",\n target: [\"preview\"],\n gitBranch: branch,\n comment: `Created by @vercel/slack-bolt for app ${app.app_id} on branch ${branch}`,\n });\n }\n if (tokenEnvs.length > 0) {\n await addEnvironmentVariables({\n projectId,\n token: vercelApiToken,\n teamId,\n envs: tokenEnvs,\n });\n }\n }\n\n if (cli) {\n switch (status) {\n case \"missing_service_token\":\n log.warning(\n \"SLACK_SERVICE_TOKEN is not set — app must be installed manually\",\n );\n log.info(\"https://docs.slack.dev/authentication/tokens/#service\");\n break;\n case \"installed\":\n log.success(`Installed Slack app ${app.app_id}`);\n break;\n case \"app_approval_request_eligible\":\n log.warning(\"App requires approval before it can be installed\");\n break;\n case \"app_approval_request_pending\":\n log.warning(\"App is pending approval before it can be installed\");\n break;\n case \"app_approval_request_denied\":\n log.warning(\"App approval request was denied\");\n break;\n case \"slack_api_error\":\n log.warning(\"Slack API error while installing the app\");\n break;\n case \"unknown_error\":\n log.warning(\"Unknown error while installing the app\");\n break;\n }\n console.log();\n if (app.app_id) {\n log.info(`View app: https://api.slack.com/apps/${app.app_id}`);\n }\n if (isNew && app.oauth_authorize_url) {\n log.info(`Install URL: ${app.oauth_authorize_url}`);\n }\n console.log();\n }\n\n return {\n isNew,\n installStatus: status,\n app,\n };\n};\n"]}
1
+ {"version":3,"sources":["../src/internal/manifest/index.ts","../src/internal/vercel/errors.ts","../src/internal/slack/errors.ts","../src/internal/slack/index.ts","../src/internal/vercel/index.ts","../src/logger.ts","../src/preview.ts"],"names":["__esm","init_errors","app","crypto","logger","log","startMessage","preview","fs","path"],"mappings":"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","file":"chunk-QGGTFP5L.js","sourcesContent":["import type { Manifest } from \"./types\";\n\nexport function rewriteUrl(\n originalUrl: string,\n branchUrl: string,\n bypassSecret?: string,\n): string {\n const pathStart = originalUrl.indexOf(\"/\", originalUrl.indexOf(\"//\") + 2);\n const pathAndQuery = pathStart !== -1 ? originalUrl.slice(pathStart) : \"/\";\n\n const url = new URL(pathAndQuery, `https://${branchUrl}`);\n if (bypassSecret) {\n url.searchParams.set(\"x-vercel-protection-bypass\", bypassSecret);\n }\n return url.toString();\n}\n\nfunction createManifestDescription(params: {\n existingDescription: string;\n existingName: string;\n branchUrl: string;\n branch: string;\n commitSha?: string;\n commitMessage?: string;\n commitAuthor?: string;\n}): { longDescription: string; displayName: string } {\n const shortSha = params.commitSha?.slice(0, 7) ?? \"unknown\";\n const safeCommitMsg = params.commitMessage ?? \"\";\n const safeCommitAuthor = params.commitAuthor ?? \"unknown\";\n\n const deploymentInfo = `\\n:globe_with_meridians: *Deployment URL:* ${params.branchUrl}\\n:seedling: *Branch:* ${params.branch}\\n:technologist: *Commit:* ${shortSha} ${safeCommitMsg}\\n:bust_in_silhouette: *Last updated by:* ${safeCommitAuthor}\\n\\n_Automatically created by ▲ Vercel_\\n`;\n\n const maxLongDesc = 4000;\n const combined = params.existingDescription + deploymentInfo;\n let longDescription: string;\n if (combined.length > maxLongDesc) {\n const available = Math.max(0, maxLongDesc - deploymentInfo.length);\n longDescription = (\n params.existingDescription.slice(0, available) + deploymentInfo\n ).slice(0, maxLongDesc);\n } else {\n longDescription = combined;\n }\n\n const maxDisplayName = 35;\n const cleanBranch = params.branch\n .replace(/^refs\\/heads\\//, \"\")\n .replace(/\\//g, \"-\");\n\n let displayName = `${params.existingName} (${cleanBranch})`;\n if (displayName.length > maxDisplayName) {\n const prefix = `${params.existingName} (`;\n const suffix = \")\";\n const availableForBranch = maxDisplayName - prefix.length - suffix.length;\n displayName =\n availableForBranch > 0\n ? `${prefix}${cleanBranch.slice(0, availableForBranch)}${suffix}`\n : displayName.slice(0, maxDisplayName);\n }\n\n return { longDescription, displayName };\n}\n\nexport function createNewManifest(params: {\n originalManifest: Manifest;\n branchUrl: string;\n bypassSecret: string;\n branch: string;\n commitSha?: string;\n commitMessage?: string;\n commitAuthor?: string;\n}): Manifest {\n const manifest = structuredClone(params.originalManifest);\n\n if (manifest.settings?.event_subscriptions?.request_url) {\n manifest.settings.event_subscriptions.request_url = rewriteUrl(\n manifest.settings.event_subscriptions.request_url,\n params.branchUrl,\n params.bypassSecret,\n );\n }\n\n if (manifest.settings?.interactivity?.request_url) {\n manifest.settings.interactivity.request_url = rewriteUrl(\n manifest.settings.interactivity.request_url,\n params.branchUrl,\n params.bypassSecret,\n );\n }\n\n if (manifest.features?.slash_commands) {\n for (const cmd of manifest.features.slash_commands) {\n if (cmd.url) {\n cmd.url = rewriteUrl(cmd.url, params.branchUrl, params.bypassSecret);\n }\n }\n }\n\n if (manifest.oauth_config?.redirect_urls) {\n manifest.oauth_config.redirect_urls =\n manifest.oauth_config.redirect_urls.map((originalUrl) =>\n rewriteUrl(originalUrl, params.branchUrl),\n );\n }\n\n const { longDescription, displayName } = createManifestDescription({\n existingDescription: manifest.display_information.long_description ?? \"\",\n existingName:\n manifest.features?.bot_user?.display_name ??\n manifest.display_information.name,\n branchUrl: params.branchUrl,\n branch: params.branch,\n commitSha: params.commitSha,\n commitMessage: params.commitMessage,\n commitAuthor: params.commitAuthor,\n });\n\n manifest.display_information.long_description = longDescription;\n manifest.display_information.name = displayName;\n if (manifest.features?.bot_user) {\n manifest.features.bot_user.display_name = displayName;\n }\n\n return manifest;\n}\n","export class HTTPError extends Error {\n constructor(\n message: string,\n public status: number,\n public statusText: string,\n public body?: string,\n ) {\n const parts = [`${message}: ${status} ${statusText}`];\n if (body) parts.push(body);\n super(parts.join(\" - \"));\n }\n\n static async fromResponse(\n message: string,\n response: Response,\n ): Promise<HTTPError> {\n let body: string | undefined;\n try {\n const text = await response.text();\n if (text) body = text;\n } catch {\n // body unreadable, that's fine\n }\n return new HTTPError(message, response.status, response.statusText, body);\n }\n}\n","export class SlackManifestCreateError extends Error {\n constructor(\n message: string,\n public errors?: { message: string; pointer: string }[],\n ) {\n super(message);\n }\n}\n\nexport class SlackManifestUpdateError extends Error {\n constructor(\n message: string,\n public errors?: { message: string; pointer: string }[],\n ) {\n super(message);\n }\n}\n\nexport class SlackManifestExportError extends Error {\n constructor(message: string) {\n super(message);\n }\n}\n","import type { Manifest } from \"../manifest/types\";\nimport { HTTPError } from \"../vercel/errors\";\nimport {\n SlackManifestCreateError,\n SlackManifestExportError,\n SlackManifestUpdateError,\n} from \"./errors\";\nimport type {\n InstallResponse,\n InstallResult,\n SlackManifestCreateResponse,\n SlackManifestExportResponse,\n SlackManifestUpdateResponse,\n} from \"./types\";\n\nexport {\n SlackManifestCreateError,\n SlackManifestExportError,\n SlackManifestUpdateError,\n} from \"./errors\";\nexport type {\n InstallResult,\n SlackManifestCreateResponse,\n SlackManifestExportResponse,\n SlackManifestUpdateResponse,\n} from \"./types\";\n\nexport async function createSlackApp({\n token,\n manifest,\n}: {\n token: string;\n manifest: Manifest;\n}): Promise<SlackManifestCreateResponse> {\n const response = await fetch(\"https://slack.com/api/apps.manifest.create\", {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n body: JSON.stringify({ manifest: JSON.stringify(manifest) }),\n });\n\n if (!response.ok) {\n throw new HTTPError(\n \"Failed to create Slack app\",\n response.status,\n response.statusText,\n );\n }\n\n const data = (await response.json()) as SlackManifestCreateResponse;\n\n if (!data.ok) {\n throw new SlackManifestCreateError(\n data?.error ?? \"Unknown error\",\n data?.errors,\n );\n }\n\n return data;\n}\n\nexport async function updateSlackApp({\n token,\n appId,\n manifest,\n}: {\n token: string;\n appId: string;\n manifest: Manifest;\n}): Promise<SlackManifestUpdateResponse> {\n const response = await fetch(\"https://slack.com/api/apps.manifest.update\", {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n body: JSON.stringify({\n app_id: appId,\n manifest: JSON.stringify(manifest),\n }),\n });\n\n if (!response.ok) {\n throw new HTTPError(\n \"Failed to update Slack app\",\n response.status,\n response.statusText,\n );\n }\n\n const data = (await response.json()) as SlackManifestUpdateResponse;\n\n if (!data.ok) {\n throw new SlackManifestUpdateError(\n data?.error ?? \"Unknown error\",\n data?.errors,\n );\n }\n\n return data;\n}\n\nexport async function exportSlackApp({\n token,\n appId,\n}: {\n token: string;\n appId: string;\n}): Promise<SlackManifestExportResponse> {\n const response = await fetch(\"https://slack.com/api/apps.manifest.export\", {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n body: JSON.stringify({ app_id: appId }),\n });\n\n if (!response.ok) {\n throw new HTTPError(\n \"Failed to export Slack app\",\n response.status,\n response.statusText,\n );\n }\n\n const data = (await response.json()) as SlackManifestExportResponse;\n\n if (!data.ok) {\n throw new SlackManifestExportError(data?.error ?? \"Unknown error\");\n }\n\n return data;\n}\n\nexport async function upsertSlackApp({\n token,\n appId,\n manifest,\n}: {\n token: string;\n appId?: string;\n manifest: Manifest;\n}): Promise<\n | { isNew: true; app: SlackManifestCreateResponse }\n | { isNew: false; app: SlackManifestUpdateResponse }\n> {\n if (appId) {\n try {\n await exportSlackApp({ token, appId });\n const app = await updateSlackApp({ token, appId, manifest });\n return { isNew: false, app };\n } catch {\n // App doesn't exist or isn't accessible — fall through to create\n }\n }\n\n const app = await createSlackApp({ token, manifest });\n return { isNew: true, app };\n}\n\nexport async function deleteSlackApp({\n token,\n appId,\n}: {\n token: string;\n appId: string;\n}): Promise<void> {\n const response = await fetch(\"https://slack.com/api/apps.manifest.delete\", {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n body: JSON.stringify({ app_id: appId }),\n });\n\n if (!response.ok) {\n throw new HTTPError(\n \"Failed to delete Slack app\",\n response.status,\n response.statusText,\n );\n }\n\n const data = (await response.json()) as { ok: boolean; error?: string };\n\n if (!data.ok) {\n throw new Error(data.error ?? \"Unknown error\");\n }\n}\n\nexport async function authTest({ token }: { token: string }): Promise<void> {\n const response = await fetch(\"https://slack.com/api/auth.test\", {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n });\n\n if (!response.ok) {\n throw new HTTPError(\n \"Auth test failed\",\n response.status,\n response.statusText,\n );\n }\n\n const data = (await response.json()) as { ok: boolean; error?: string };\n\n if (!data.ok) {\n throw new Error(data.error ?? \"Unknown error\");\n }\n}\n\nexport async function installApp(params: {\n serviceToken?: string;\n appId: string;\n botScopes: string[];\n outgoingDomains?: string[];\n}): Promise<InstallResult> {\n const { serviceToken, appId, botScopes, outgoingDomains } = params;\n\n if (!serviceToken) {\n return {\n status: \"missing_service_token\",\n };\n }\n\n const response = await fetch(\"https://slack.com/api/apps.developerInstall\", {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${serviceToken}`,\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n body: JSON.stringify({\n app_id: appId,\n bot_scopes: botScopes,\n outgoing_domains: outgoingDomains ?? [],\n }),\n });\n\n if (!response.ok) {\n return {\n status: \"slack_api_error\",\n error: response.statusText,\n };\n }\n\n const data = (await response.json()) as InstallResponse;\n\n if (data.error) {\n switch (data.error) {\n case \"app_approval_request_eligible\":\n return {\n status: \"app_approval_request_eligible\",\n };\n case \"app_approval_request_pending\":\n return {\n status: \"app_approval_request_pending\",\n };\n case \"app_approval_request_denied\":\n return {\n status: \"app_approval_request_denied\",\n };\n default:\n return {\n status: \"unknown_error\",\n };\n }\n }\n\n return {\n status: \"installed\",\n botToken: data.api_access_tokens?.bot,\n appLevelToken: data.api_access_tokens?.app_level,\n userToken: data.api_access_tokens?.user,\n };\n}\n","import crypto from \"node:crypto\";\nimport { HTTPError } from \"./errors\";\nimport type {\n AddEnvironmentVariablesResult,\n CreateProjectEnv,\n EnvironmentVariable,\n} from \"./types\";\n\nexport async function getProject({\n projectId,\n token,\n teamId,\n}: {\n projectId: string;\n token: string;\n teamId?: string;\n}): Promise<void> {\n const url = new URL(\n `https://api.vercel.com/v9/projects/${encodeURIComponent(projectId)}`,\n );\n if (teamId) url.searchParams.set(\"teamId\", teamId);\n\n const response = await fetch(url, {\n method: \"GET\",\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n\n if (!response.ok) {\n throw await HTTPError.fromResponse(\n \"Failed to access Vercel project\",\n response,\n );\n }\n}\n\nexport async function updateProtectionBypass({\n projectId,\n token,\n teamId,\n}: {\n projectId: string;\n token: string;\n teamId?: string;\n}): Promise<string> {\n const newSecret = crypto.randomBytes(16).toString(\"hex\");\n const note = \"Created by @vercel/slack-bolt\";\n\n const url = new URL(\n `https://api.vercel.com/v1/projects/${encodeURIComponent(projectId)}/protection-bypass`,\n );\n if (teamId) url.searchParams.set(\"teamId\", teamId);\n\n const response = await fetch(url, {\n method: \"PATCH\",\n headers: {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n generate: {\n secret: newSecret,\n note: note,\n },\n }),\n });\n\n if (!response.ok) {\n throw await HTTPError.fromResponse(\n \"Failed to update protection bypass\",\n response,\n );\n }\n\n return newSecret;\n}\n\nexport async function addEnvironmentVariables({\n projectId,\n token,\n teamId,\n envs,\n upsert = true,\n}: {\n projectId: string;\n token: string;\n teamId?: string;\n envs: CreateProjectEnv | CreateProjectEnv[];\n upsert?: boolean;\n}): Promise<AddEnvironmentVariablesResult> {\n const url = new URL(\n `https://api.vercel.com/v10/projects/${encodeURIComponent(projectId)}/env`,\n );\n if (teamId) url.searchParams.set(\"teamId\", teamId);\n if (upsert) url.searchParams.set(\"upsert\", \"true\");\n\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(envs),\n });\n\n if (!response.ok) {\n throw await HTTPError.fromResponse(\n \"Failed to create environment variables\",\n response,\n );\n }\n\n return response.json();\n}\n\nexport async function cancelDeployment({\n deploymentId,\n token,\n teamId,\n}: {\n deploymentId: string;\n token: string;\n teamId?: string;\n}): Promise<void> {\n const url = new URL(\n `https://api.vercel.com/v12/deployments/${encodeURIComponent(deploymentId)}/cancel`,\n );\n if (teamId) url.searchParams.set(\"teamId\", teamId);\n\n const response = await fetch(url, {\n method: \"PATCH\",\n headers: { Authorization: `Bearer ${token}` },\n });\n\n if (!response.ok) {\n throw await HTTPError.fromResponse(\"Failed to cancel deployment\", response);\n }\n}\n\nexport async function createDeployment({\n deploymentId,\n projectId,\n token,\n teamId,\n}: {\n deploymentId: string;\n projectId: string;\n token: string;\n teamId?: string;\n}): Promise<{ id: string; url: string }> {\n const url = new URL(\"https://api.vercel.com/v13/deployments\");\n if (teamId) url.searchParams.set(\"teamId\", teamId);\n url.searchParams.set(\"forceNew\", \"1\");\n\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n deploymentId,\n name: projectId,\n project: projectId,\n }),\n });\n\n if (!response.ok) {\n throw await HTTPError.fromResponse(\"Failed to create deployment\", response);\n }\n\n const data = await response.json();\n return { id: data.id, url: data.url };\n}\n\nexport async function getActiveBranches({\n projectId,\n token,\n teamId,\n}: {\n projectId: string;\n token: string;\n teamId?: string;\n}): Promise<Set<string>> {\n const params = new URLSearchParams({ active: \"1\", limit: \"100\" });\n if (teamId) params.set(\"teamId\", teamId);\n\n const response = await fetch(\n `https://api.vercel.com/v5/projects/${encodeURIComponent(projectId)}/branches?${params}`,\n { headers: { Authorization: `Bearer ${token}` } },\n );\n\n if (!response.ok) {\n throw await HTTPError.fromResponse(\n \"Failed to fetch active branches\",\n response,\n );\n }\n\n const data: { branches?: { branch: string }[] } = await response.json();\n return new Set(data.branches?.map((b) => b.branch) ?? []);\n}\n\nexport async function getEnvironmentVariables({\n projectId,\n token,\n teamId,\n}: {\n projectId: string;\n token: string;\n teamId?: string;\n}): Promise<EnvironmentVariable[]> {\n const url = new URL(\n `https://api.vercel.com/v9/projects/${encodeURIComponent(projectId)}/env`,\n );\n if (teamId) url.searchParams.set(\"teamId\", teamId);\n\n const response = await fetch(url, {\n headers: { Authorization: `Bearer ${token}` },\n });\n\n if (!response.ok) {\n throw await HTTPError.fromResponse(\n \"Failed to fetch environment variables\",\n response,\n );\n }\n\n const data: { envs: EnvironmentVariable[] } = await response.json();\n return data.envs ?? [];\n}\n\nexport async function getEnvironmentVariable({\n projectId,\n envId,\n token,\n teamId,\n}: {\n projectId: string;\n envId: string;\n token: string;\n teamId?: string;\n}): Promise<string | null> {\n const url = new URL(\n `https://api.vercel.com/v9/projects/${encodeURIComponent(projectId)}/env/${encodeURIComponent(envId)}`,\n );\n if (teamId) url.searchParams.set(\"teamId\", teamId);\n\n const response = await fetch(url, {\n headers: { Authorization: `Bearer ${token}` },\n });\n\n if (!response.ok) {\n throw await HTTPError.fromResponse(\n \"Failed to fetch environment variable\",\n response,\n );\n }\n\n const data: { value?: string } = await response.json();\n return data.value ?? null;\n}\n\nexport async function deleteEnvironmentVariable({\n projectId,\n envId,\n token,\n teamId,\n}: {\n projectId: string;\n envId: string;\n token: string;\n teamId?: string;\n}): Promise<void> {\n const url = new URL(\n `https://api.vercel.com/v9/projects/${encodeURIComponent(projectId)}/env/${encodeURIComponent(envId)}`,\n );\n if (teamId) url.searchParams.set(\"teamId\", teamId);\n\n const response = await fetch(url, {\n method: \"DELETE\",\n headers: { Authorization: `Bearer ${token}` },\n });\n\n if (!response.ok) {\n throw await HTTPError.fromResponse(\n \"Failed to delete environment variable\",\n response,\n );\n }\n}\n","const isDebug =\n process.env.VERCEL_SLACK_DEBUG === \"1\" ||\n process.env.VERCEL_SLACK_DEBUG === \"true\";\n\nexport const logger = {\n info: (...args: unknown[]) => console.log(...args),\n warn: (...args: unknown[]) => console.warn(...args),\n error: (...args: unknown[]) => console.error(...args),\n debug: (...args: unknown[]) => {\n if (isDebug) console.debug(...args);\n },\n};\n\nconst BOLD = \"\\x1b[1m\";\nconst RESET = \"\\x1b[0m\";\nconst GREEN = \"\\x1b[32m\";\nconst YELLOW = \"\\x1b[33m\";\n\nexport const log = {\n step: (msg: string) => console.log(` ${msg} ...`),\n success: (msg: string) => console.log(`${GREEN}✓${RESET} ${msg}`),\n info: (msg: string) => console.log(` ${msg}`),\n warning: (msg: string) => console.log(`${YELLOW}⚠${RESET} ${msg}`),\n};\n\nexport const startMessage = (\n version?: string,\n branch?: string,\n commit?: string,\n appId?: string,\n) => {\n const lines = [`▲ @vercel/slack-bolt ${version ?? \"\"}`];\n if (branch) lines.push(` - Branch: ${branch}`);\n if (commit) lines.push(` - Commit: ${commit.slice(0, 7)}`);\n if (appId) lines.push(` - App ID: ${appId}`);\n return `${BOLD}${lines.join(\"\\n\")}${RESET}\\n`;\n};\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { createNewManifest } from \"./internal/manifest\";\nimport type { Manifest } from \"./internal/manifest/types\";\nimport { installApp, upsertSlackApp } from \"./internal/slack\";\nimport type {\n SlackManifestCreateResponse,\n SlackManifestUpdateResponse,\n} from \"./internal/slack/types\";\nimport {\n addEnvironmentVariables,\n updateProtectionBypass,\n} from \"./internal/vercel\";\nimport type { CreateProjectEnv } from \"./internal/vercel/types\";\nimport { log } from \"./logger\";\n\nexport type PreviewParams = {\n automationBypassSecret?: string;\n branch: string;\n branchUrl?: string;\n commitAuthor?: string;\n commitMessage?: string;\n commitSha?: string;\n deploymentId?: string;\n deploymentUrl: string;\n manifestPath: string;\n projectId: string;\n slackAppId?: string;\n slackConfigurationToken: string;\n slackServiceToken?: string;\n teamId?: string;\n vercelApiToken: string;\n};\n\nexport type PreviewResult = {\n isNew: boolean;\n installStatus: string;\n app: SlackManifestCreateResponse | SlackManifestUpdateResponse;\n};\n\nexport const preview = async (\n params: PreviewParams,\n context?: \"cli\",\n): Promise<PreviewResult> => {\n const {\n branch,\n projectId,\n deploymentUrl,\n teamId,\n commitAuthor,\n commitMessage: commitMsg,\n commitSha,\n slackAppId,\n slackConfigurationToken,\n slackServiceToken,\n manifestPath,\n vercelApiToken,\n } = params;\n\n const cli = context === \"cli\";\n const branchUrl = params.branchUrl ?? deploymentUrl;\n let bypassSecret = params.automationBypassSecret;\n\n if (!bypassSecret) {\n if (cli) log.step(\"Generating automation bypass secret\");\n bypassSecret = await updateProtectionBypass({\n projectId,\n token: vercelApiToken,\n teamId,\n });\n if (cli) log.success(\"Automation bypass secret generated\");\n }\n\n if (cli) log.step(`Reading manifest from ${manifestPath}`);\n const rawFileManifest = fs.readFileSync(\n path.join(process.cwd(), manifestPath),\n \"utf8\",\n );\n const manifest = JSON.parse(rawFileManifest) as Manifest;\n\n const newManifest = createNewManifest({\n originalManifest: manifest,\n branchUrl,\n bypassSecret,\n branch,\n commitSha,\n commitMessage: commitMsg,\n commitAuthor,\n });\n\n // write new manifest so user-land imports of manifest.json see the updated version\n fs.writeFileSync(\n path.join(process.cwd(), manifestPath),\n JSON.stringify(newManifest, null, 2),\n \"utf8\",\n );\n if (cli) log.success(`Manifest updated for ${branchUrl}`);\n\n if (cli) log.step(\"Creating or updating Slack app\");\n const { isNew, app } = await upsertSlackApp({\n token: slackConfigurationToken,\n appId: slackAppId,\n manifest: newManifest,\n });\n\n if (isNew) {\n const credentialEnvs: CreateProjectEnv[] = [];\n if (app.app_id) {\n credentialEnvs.push({\n key: \"SLACK_APP_ID\",\n value: app.app_id,\n type: \"encrypted\",\n target: [\"preview\"],\n gitBranch: branch,\n comment: `Created by @vercel/slack-bolt for app ${app.app_id} on branch ${branch}`,\n });\n }\n if (app.credentials?.client_id) {\n credentialEnvs.push({\n key: \"SLACK_CLIENT_ID\",\n value: app.credentials.client_id,\n type: \"encrypted\",\n target: [\"preview\"],\n gitBranch: branch,\n comment: `Created by @vercel/slack-bolt for app ${app.app_id} on branch ${branch}`,\n });\n }\n if (app.credentials?.client_secret) {\n credentialEnvs.push({\n key: \"SLACK_CLIENT_SECRET\",\n value: app.credentials.client_secret,\n type: \"encrypted\",\n target: [\"preview\"],\n gitBranch: branch,\n comment: `Created by @vercel/slack-bolt for app ${app.app_id} on branch ${branch}`,\n });\n }\n if (app.credentials?.signing_secret) {\n credentialEnvs.push({\n key: \"SLACK_SIGNING_SECRET\",\n value: app.credentials.signing_secret,\n type: \"encrypted\",\n target: [\"preview\"],\n gitBranch: branch,\n comment: `Created by @vercel/slack-bolt for app ${app.app_id} on branch ${branch}`,\n });\n }\n if (credentialEnvs.length > 0) {\n await addEnvironmentVariables({\n projectId,\n token: vercelApiToken,\n teamId,\n envs: credentialEnvs,\n });\n }\n }\n\n if (cli)\n log.success(`${isNew ? \"Created\" : \"Updated\"} Slack app ${app.app_id}`);\n\n if (cli) log.step(\"Installing Slack app\");\n const { status, botToken, appLevelToken, userToken } = await installApp({\n serviceToken: slackServiceToken,\n appId: app.app_id,\n botScopes: manifest.oauth_config?.scopes?.bot ?? [],\n });\n\n if (isNew) {\n const tokenEnvs: CreateProjectEnv[] = [];\n if (botToken) {\n tokenEnvs.push({\n key: \"SLACK_BOT_TOKEN\",\n value: botToken,\n type: \"encrypted\",\n target: [\"preview\"],\n gitBranch: branch,\n comment: `Created by @vercel/slack-bolt for app ${app.app_id} on branch ${branch}`,\n });\n }\n if (appLevelToken) {\n tokenEnvs.push({\n key: \"SLACK_APP_LEVEL_TOKEN\",\n value: appLevelToken,\n type: \"encrypted\",\n target: [\"preview\"],\n gitBranch: branch,\n comment: `Created by @vercel/slack-bolt for app ${app.app_id} on branch ${branch}`,\n });\n }\n if (userToken) {\n tokenEnvs.push({\n key: \"SLACK_USER_TOKEN\",\n value: userToken,\n type: \"encrypted\",\n target: [\"preview\"],\n gitBranch: branch,\n comment: `Created by @vercel/slack-bolt for app ${app.app_id} on branch ${branch}`,\n });\n }\n if (tokenEnvs.length > 0) {\n await addEnvironmentVariables({\n projectId,\n token: vercelApiToken,\n teamId,\n envs: tokenEnvs,\n });\n }\n }\n\n if (cli) {\n switch (status) {\n case \"missing_service_token\":\n log.warning(\n \"SLACK_SERVICE_TOKEN is not set — app must be installed manually\",\n );\n log.info(\"https://docs.slack.dev/authentication/tokens/#service\");\n break;\n case \"installed\":\n log.success(`Installed Slack app ${app.app_id}`);\n break;\n case \"app_approval_request_eligible\":\n log.warning(\"App requires approval before it can be installed\");\n break;\n case \"app_approval_request_pending\":\n log.warning(\"App is pending approval before it can be installed\");\n break;\n case \"app_approval_request_denied\":\n log.warning(\"App approval request was denied\");\n break;\n case \"slack_api_error\":\n log.warning(\"Slack API error while installing the app\");\n break;\n case \"unknown_error\":\n log.warning(\"Unknown error while installing the app\");\n break;\n }\n console.log();\n if (app.app_id) {\n log.info(`View app: https://api.slack.com/apps/${app.app_id}`);\n }\n if (isNew && app.oauth_authorize_url) {\n log.info(`Install URL: ${app.oauth_authorize_url}`);\n }\n console.log();\n }\n\n return {\n isNew,\n installStatus: status,\n app,\n };\n};\n"]}
package/dist/cli.js CHANGED
@@ -1,11 +1,18 @@
1
1
  #!/usr/bin/env node
2
2
  'use strict';
3
3
 
4
- var chunkUHIORNAT_js = require('./chunk-UHIORNAT.js');
4
+ var chunkQGGTFP5L_js = require('./chunk-QGGTFP5L.js');
5
5
  var chunkQHMZVK6J_js = require('./chunk-QHMZVK6J.js');
6
6
  var zod = require('zod');
7
+ var fs = require('fs');
8
+ var path = require('path');
7
9
  var commander = require('commander');
8
10
 
11
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
12
+
13
+ var fs__default = /*#__PURE__*/_interopDefault(fs);
14
+ var path__default = /*#__PURE__*/_interopDefault(path);
15
+
9
16
  function formatMissingKeys(error) {
10
17
  return error.issues.map((i) => i.path.join(".")).join(", ");
11
18
  }
@@ -91,12 +98,12 @@ async function cleanupOrphanedApps({
91
98
  teamId,
92
99
  slackConfigurationToken
93
100
  }) {
94
- const activeBranches = await chunkUHIORNAT_js.getActiveBranches({
101
+ const activeBranches = await chunkQGGTFP5L_js.getActiveBranches({
95
102
  projectId,
96
103
  token: vercelApiToken,
97
104
  teamId
98
105
  });
99
- const envs = await chunkUHIORNAT_js.getEnvironmentVariables({
106
+ const envs = await chunkQGGTFP5L_js.getEnvironmentVariables({
100
107
  projectId,
101
108
  token: vercelApiToken,
102
109
  teamId
@@ -108,65 +115,65 @@ async function cleanupOrphanedApps({
108
115
  }
109
116
  }
110
117
  if (staleBranches.size === 0) {
111
- chunkUHIORNAT_js.log.info("No orphaned preview apps found");
118
+ chunkQGGTFP5L_js.log.info("No orphaned preview apps found");
112
119
  return;
113
120
  }
114
- chunkUHIORNAT_js.log.step(
121
+ chunkQGGTFP5L_js.log.step(
115
122
  `Found ${staleBranches.size} orphaned ${staleBranches.size === 1 ? "branch" : "branches"}`
116
123
  );
117
124
  for (const [branch, envId] of staleBranches) {
118
125
  let appId = null;
119
126
  try {
120
- appId = await chunkUHIORNAT_js.getEnvironmentVariable({
127
+ appId = await chunkQGGTFP5L_js.getEnvironmentVariable({
121
128
  projectId,
122
129
  envId,
123
130
  token: vercelApiToken,
124
131
  teamId
125
132
  });
126
133
  } catch {
127
- chunkUHIORNAT_js.log.warning(`Failed to decrypt SLACK_APP_ID for branch ${branch}`);
134
+ chunkQGGTFP5L_js.log.warning(`Failed to decrypt SLACK_APP_ID for branch ${branch}`);
128
135
  }
129
136
  if (appId) {
130
137
  try {
131
- await chunkUHIORNAT_js.deleteSlackApp({
138
+ await chunkQGGTFP5L_js.deleteSlackApp({
132
139
  token: slackConfigurationToken,
133
140
  appId
134
141
  });
135
- chunkUHIORNAT_js.log.info(`${appId} deleted (branch: ${branch})`);
142
+ chunkQGGTFP5L_js.log.info(`${appId} deleted (branch: ${branch})`);
136
143
  } catch (error) {
137
144
  const msg = error instanceof Error ? error.message : String(error);
138
145
  if (msg.includes("app_not_found")) {
139
- chunkUHIORNAT_js.log.info(`${appId} already deleted (branch: ${branch})`);
146
+ chunkQGGTFP5L_js.log.info(`${appId} already deleted (branch: ${branch})`);
140
147
  } else {
141
- chunkUHIORNAT_js.log.warning(`Failed to delete app ${appId}: ${msg}`);
148
+ chunkQGGTFP5L_js.log.warning(`Failed to delete app ${appId}: ${msg}`);
142
149
  }
143
150
  }
144
151
  }
145
152
  for (const env of envs) {
146
153
  if (env.id && env.gitBranch === branch && SLACK_ENV_VAR_KEYS.includes(env.key)) {
147
154
  try {
148
- await chunkUHIORNAT_js.deleteEnvironmentVariable({
155
+ await chunkQGGTFP5L_js.deleteEnvironmentVariable({
149
156
  projectId,
150
157
  envId: env.id,
151
158
  token: vercelApiToken,
152
159
  teamId
153
160
  });
154
161
  } catch (error) {
155
- chunkUHIORNAT_js.log.warning(
162
+ chunkQGGTFP5L_js.log.warning(
156
163
  `Failed to delete env var ${env.key} for branch ${branch}: ${error instanceof Error ? error.message : error}`
157
164
  );
158
165
  }
159
166
  }
160
167
  }
161
168
  }
162
- chunkUHIORNAT_js.log.success("Orphan cleanup completed");
169
+ chunkQGGTFP5L_js.log.success("Orphan cleanup completed");
163
170
  }
164
171
  var SLACK_ENV_VAR_KEYS;
165
172
  var init_cleanup = chunkQHMZVK6J_js.__esm({
166
173
  "src/cleanup.ts"() {
167
- chunkUHIORNAT_js.init_slack();
168
- chunkUHIORNAT_js.init_vercel();
169
- chunkUHIORNAT_js.init_logger();
174
+ chunkQGGTFP5L_js.init_slack();
175
+ chunkQGGTFP5L_js.init_vercel();
176
+ chunkQGGTFP5L_js.init_logger();
170
177
  SLACK_ENV_VAR_KEYS = [
171
178
  "SLACK_APP_ID",
172
179
  "SLACK_CLIENT_ID",
@@ -176,8 +183,6 @@ var init_cleanup = chunkQHMZVK6J_js.__esm({
176
183
  ];
177
184
  }
178
185
  });
179
-
180
- // src/cli/build.ts
181
186
  async function executeBuild(params, version, options) {
182
187
  if (!params.slackConfigurationToken) {
183
188
  throw new Error(
@@ -185,7 +190,7 @@ async function executeBuild(params, version, options) {
185
190
  );
186
191
  }
187
192
  try {
188
- await chunkUHIORNAT_js.authTest({ token: params.slackConfigurationToken });
193
+ await chunkQGGTFP5L_js.authTest({ token: params.slackConfigurationToken });
189
194
  } catch (error) {
190
195
  throw new Error(
191
196
  "Slack configuration token is invalid or expired. Generate a new configuration token and add it as SLACK_CONFIGURATION_TOKEN in your Vercel project:\nhttps://api.slack.com/apps",
@@ -194,17 +199,17 @@ async function executeBuild(params, version, options) {
194
199
  }
195
200
  if (params.slackServiceToken) {
196
201
  try {
197
- await chunkUHIORNAT_js.authTest({ token: params.slackServiceToken });
202
+ await chunkQGGTFP5L_js.authTest({ token: params.slackServiceToken });
198
203
  } catch (error) {
199
- chunkUHIORNAT_js.log.warning(
204
+ chunkQGGTFP5L_js.log.warning(
200
205
  "SLACK_SERVICE_TOKEN is invalid \u2014 app must be installed manually"
201
206
  );
202
- chunkUHIORNAT_js.log.info("https://docs.slack.dev/authentication/tokens/#service");
203
- chunkUHIORNAT_js.logger.debug(error);
207
+ chunkQGGTFP5L_js.log.info("https://docs.slack.dev/authentication/tokens/#service");
208
+ chunkQGGTFP5L_js.logger.debug(error);
204
209
  }
205
210
  }
206
211
  try {
207
- await chunkUHIORNAT_js.getProject({
212
+ await chunkQGGTFP5L_js.getProject({
208
213
  projectId: params.projectId,
209
214
  token: params.vercelApiToken,
210
215
  teamId: params.teamId
@@ -215,8 +220,15 @@ async function executeBuild(params, version, options) {
215
220
  { cause: error }
216
221
  );
217
222
  }
223
+ const manifestFullPath = path__default.default.join(process.cwd(), params.manifestPath);
224
+ if (!fs__default.default.existsSync(manifestFullPath)) {
225
+ throw new Error(
226
+ `No manifest found at ${params.manifestPath}. Create a manifest.json file with your Slack app configuration:
227
+ https://docs.slack.dev/reference/manifests`
228
+ );
229
+ }
218
230
  if (options?.cleanup) {
219
- chunkUHIORNAT_js.log.step("Cleaning up orphaned preview apps");
231
+ chunkQGGTFP5L_js.log.step("Cleaning up orphaned preview apps");
220
232
  try {
221
233
  await cleanupOrphanedApps({
222
234
  projectId: params.projectId,
@@ -226,23 +238,23 @@ async function executeBuild(params, version, options) {
226
238
  slackConfigurationToken: params.slackConfigurationToken
227
239
  });
228
240
  } catch (error) {
229
- chunkUHIORNAT_js.log.warning(
241
+ chunkQGGTFP5L_js.log.warning(
230
242
  `Orphan cleanup failed: ${error instanceof Error ? error.message : error}`
231
243
  );
232
244
  }
233
245
  }
234
- const result = await chunkUHIORNAT_js.preview(params, "cli");
246
+ const result = await chunkQGGTFP5L_js.preview(params, "cli");
235
247
  if (result.isNew && params.deploymentId) {
236
- chunkUHIORNAT_js.log.step("Creating new deployment to pick up new environment variables");
237
- const { id, url } = await chunkUHIORNAT_js.createDeployment({
248
+ chunkQGGTFP5L_js.log.step("Creating new deployment to pick up new environment variables");
249
+ const { id, url } = await chunkQGGTFP5L_js.createDeployment({
238
250
  deploymentId: params.deploymentId,
239
251
  projectId: params.projectId,
240
252
  token: params.vercelApiToken,
241
253
  teamId: params.teamId
242
254
  });
243
- chunkUHIORNAT_js.log.success(`New deployment created: ${url} (${id})`);
244
- chunkUHIORNAT_js.log.step("Cancelling current deployment");
245
- await chunkUHIORNAT_js.cancelDeployment({
255
+ chunkQGGTFP5L_js.log.success(`New deployment created: ${url} (${id})`);
256
+ chunkQGGTFP5L_js.log.step("Cancelling current deployment");
257
+ await chunkQGGTFP5L_js.cancelDeployment({
246
258
  deploymentId: params.deploymentId,
247
259
  token: params.vercelApiToken,
248
260
  teamId: params.teamId
@@ -252,10 +264,10 @@ async function executeBuild(params, version, options) {
252
264
  var init_build = chunkQHMZVK6J_js.__esm({
253
265
  "src/cli/build.ts"() {
254
266
  init_cleanup();
255
- chunkUHIORNAT_js.init_slack();
256
- chunkUHIORNAT_js.init_vercel();
257
- chunkUHIORNAT_js.init_logger();
258
- chunkUHIORNAT_js.init_preview();
267
+ chunkQGGTFP5L_js.init_slack();
268
+ chunkQGGTFP5L_js.init_vercel();
269
+ chunkQGGTFP5L_js.init_logger();
270
+ chunkQGGTFP5L_js.init_preview();
259
271
  }
260
272
  });
261
273
 
@@ -318,8 +330,8 @@ function run(version) {
318
330
  cmd.action(async (options) => {
319
331
  const cleanup = options.cleanup === true;
320
332
  const env = resolveEnv(options);
321
- chunkUHIORNAT_js.logger.info(
322
- chunkUHIORNAT_js.startMessage(
333
+ chunkQGGTFP5L_js.logger.info(
334
+ chunkQGGTFP5L_js.startMessage(
323
335
  version,
324
336
  env.VERCEL_GIT_COMMIT_REF,
325
337
  env.VERCEL_GIT_COMMIT_SHA,
@@ -331,7 +343,7 @@ function run(version) {
331
343
  const isProd = env.VERCEL_ENV === "production";
332
344
  if (isLocal || isDev || isProd) {
333
345
  const reason = isLocal ? "local" : isDev ? "development" : "production";
334
- chunkUHIORNAT_js.log.info(`Environment: ${reason} (skipped)
346
+ chunkQGGTFP5L_js.log.info(`Environment: ${reason} (skipped)
335
347
  `);
336
348
  return;
337
349
  }
@@ -339,14 +351,14 @@ function run(version) {
339
351
  await executeBuild(params, version, { cleanup });
340
352
  });
341
353
  program.parseAsync().catch((error) => {
342
- chunkUHIORNAT_js.logger.error(error instanceof Error ? error.message : String(error));
354
+ chunkQGGTFP5L_js.logger.error(error instanceof Error ? error.message : String(error));
343
355
  console.log();
344
356
  });
345
357
  }
346
358
  var init_cli = chunkQHMZVK6J_js.__esm({
347
359
  "src/cli/index.ts"() {
348
360
  init_schemas();
349
- chunkUHIORNAT_js.init_logger();
361
+ chunkQGGTFP5L_js.init_logger();
350
362
  init_build();
351
363
  init_env();
352
364
  }
@@ -357,7 +369,7 @@ var require_package = chunkQHMZVK6J_js.__commonJS({
357
369
  "package.json"(exports$1, module) {
358
370
  module.exports = {
359
371
  name: "@vercel/slack-bolt",
360
- version: "1.2.1",
372
+ version: "1.2.3",
361
373
  description: "A Vercel receiver for building Slack apps with Bolt and deploying them to Vercel",
362
374
  main: "./dist/index.js",
363
375
  types: "./dist/index.d.ts",
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/internal/schemas.ts","../src/cleanup.ts","../src/cli/build.ts","../src/cli/env.ts","../src/cli/index.ts","../package.json","../src/cli.ts"],"names":["__esm","z","getActiveBranches","getEnvironmentVariables","log","getEnvironmentVariable","deleteSlackApp","deleteEnvironmentVariable","init_slack","init_vercel","init_logger","authTest","logger","getProject","preview","createDeployment","cancelDeployment","init_preview","Command","startMessage","__commonJS","exports"],"mappings":"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","file":"cli.js","sourcesContent":["import { z } from \"zod\";\nimport type { PreviewParams } from \"../preview\";\n\nexport function formatMissingKeys(error: z.ZodError): string {\n return error.issues.map((i) => i.path.join(\".\")).join(\", \");\n}\n\nexport const systemEnvSchema = z.object({\n VERCEL_ENV: z.enum([\"production\", \"preview\", \"development\"]),\n VERCEL_GIT_COMMIT_REF: z.string(),\n VERCEL_PROJECT_ID: z.string(),\n VERCEL_URL: z.string(),\n VERCEL_BRANCH_URL: z.string().optional(),\n VERCEL_TEAM_ID: z.string().optional(),\n VERCEL_GIT_COMMIT_SHA: z.string().optional(),\n VERCEL_GIT_COMMIT_MESSAGE: z.string().optional(),\n VERCEL_GIT_COMMIT_AUTHOR_LOGIN: z.string().optional(),\n VERCEL_DEPLOYMENT_ID: z.string().optional(),\n VERCEL_AUTOMATION_BYPASS_SECRET: z.string().optional(),\n});\n\nexport const slackEnvSchema = z.object({\n SLACK_APP_ID: z.string().optional(),\n SLACK_CONFIGURATION_TOKEN: z.string(),\n SLACK_SERVICE_TOKEN: z.string().optional(),\n SLACK_CONFIG_REFRESH_TOKEN: z.string().optional(),\n MANIFEST_PATH: z.string().default(\"manifest.json\"),\n});\n\nexport const vercelEnvSchema = z.object({\n VERCEL_API_TOKEN: z.string(),\n});\n\nexport function validateAndBuildParams(\n env: Record<string, string | undefined>,\n): PreviewParams {\n const systemResult = systemEnvSchema.safeParse(env);\n if (!systemResult.success) {\n const missing = formatMissingKeys(systemResult.error);\n throw new Error(\n `Missing Vercel system environment variables: ${missing}\\nEnable 'Automatically expose System Environment Variables' in your Vercel project settings:\\nhttps://vercel.com/docs/projects/environment-variables/system-environment-variables`,\n );\n }\n\n const slackResult = slackEnvSchema.safeParse(env);\n if (!slackResult.success) {\n const missing = formatMissingKeys(slackResult.error);\n throw new Error(\n `Missing Slack environment variables: ${missing}\\nAdd them as environment variables in your Vercel project.`,\n );\n }\n\n const vercelResult = vercelEnvSchema.safeParse(env);\n if (!vercelResult.success) {\n const missing = formatMissingKeys(vercelResult.error);\n throw new Error(\n `Missing Vercel environment variables: ${missing}\\nCreate a new token and add it as VERCEL_API_TOKEN in your Vercel project:\\nhttps://vercel.com/account/settings/tokens`,\n );\n }\n\n return {\n branch: systemResult.data.VERCEL_GIT_COMMIT_REF,\n projectId: systemResult.data.VERCEL_PROJECT_ID,\n deploymentUrl: systemResult.data.VERCEL_URL,\n branchUrl: systemResult.data.VERCEL_BRANCH_URL,\n teamId: systemResult.data.VERCEL_TEAM_ID,\n commitSha: systemResult.data.VERCEL_GIT_COMMIT_SHA,\n commitMessage: systemResult.data.VERCEL_GIT_COMMIT_MESSAGE,\n commitAuthor: systemResult.data.VERCEL_GIT_COMMIT_AUTHOR_LOGIN,\n deploymentId: systemResult.data.VERCEL_DEPLOYMENT_ID,\n automationBypassSecret: systemResult.data.VERCEL_AUTOMATION_BYPASS_SECRET,\n slackAppId: slackResult.data.SLACK_APP_ID,\n slackConfigurationToken: slackResult.data.SLACK_CONFIGURATION_TOKEN,\n slackServiceToken: slackResult.data.SLACK_SERVICE_TOKEN,\n manifestPath: slackResult.data.MANIFEST_PATH,\n vercelApiToken: vercelResult.data.VERCEL_API_TOKEN,\n };\n}\n","import { deleteSlackApp } from \"./internal/slack\";\nimport {\n deleteEnvironmentVariable,\n getActiveBranches,\n getEnvironmentVariable,\n getEnvironmentVariables,\n} from \"./internal/vercel\";\nimport { log } from \"./logger\";\n\nconst SLACK_ENV_VAR_KEYS = [\n \"SLACK_APP_ID\",\n \"SLACK_CLIENT_ID\",\n \"SLACK_CLIENT_SECRET\",\n \"SLACK_SIGNING_SECRET\",\n \"SLACK_BOT_TOKEN\",\n];\n\nexport async function cleanupOrphanedApps({\n projectId,\n currentBranch,\n vercelApiToken,\n teamId,\n slackConfigurationToken,\n}: {\n projectId: string;\n currentBranch: string;\n vercelApiToken: string;\n teamId?: string;\n slackConfigurationToken: string;\n}): Promise<void> {\n const activeBranches = await getActiveBranches({\n projectId,\n token: vercelApiToken,\n teamId,\n });\n\n const envs = await getEnvironmentVariables({\n projectId,\n token: vercelApiToken,\n teamId,\n });\n\n const staleBranches = new Map<string, string>();\n for (const env of envs) {\n if (\n env.key === \"SLACK_APP_ID\" &&\n env.gitBranch &&\n env.gitBranch !== currentBranch &&\n !activeBranches.has(env.gitBranch)\n ) {\n staleBranches.set(env.gitBranch, env.id);\n }\n }\n\n if (staleBranches.size === 0) {\n log.info(\"No orphaned preview apps found\");\n return;\n }\n\n log.step(\n `Found ${staleBranches.size} orphaned ${staleBranches.size === 1 ? \"branch\" : \"branches\"}`,\n );\n\n for (const [branch, envId] of staleBranches) {\n let appId: string | null = null;\n try {\n appId = await getEnvironmentVariable({\n projectId,\n envId,\n token: vercelApiToken,\n teamId,\n });\n } catch {\n log.warning(`Failed to decrypt SLACK_APP_ID for branch ${branch}`);\n }\n\n if (appId) {\n try {\n await deleteSlackApp({\n token: slackConfigurationToken,\n appId,\n });\n log.info(`${appId} deleted (branch: ${branch})`);\n } catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n if (msg.includes(\"app_not_found\")) {\n log.info(`${appId} already deleted (branch: ${branch})`);\n } else {\n log.warning(`Failed to delete app ${appId}: ${msg}`);\n }\n }\n }\n\n for (const env of envs) {\n if (\n env.id &&\n env.gitBranch === branch &&\n SLACK_ENV_VAR_KEYS.includes(env.key)\n ) {\n try {\n await deleteEnvironmentVariable({\n projectId,\n envId: env.id,\n token: vercelApiToken,\n teamId,\n });\n } catch (error) {\n log.warning(\n `Failed to delete env var ${env.key} for branch ${branch}: ${error instanceof Error ? error.message : error}`,\n );\n }\n }\n }\n }\n\n log.success(\"Orphan cleanup completed\");\n}\n","import { cleanupOrphanedApps } from \"../cleanup\";\nimport { authTest } from \"../internal/slack\";\nimport {\n cancelDeployment,\n createDeployment,\n getProject,\n} from \"../internal/vercel\";\nimport { log, logger } from \"../logger\";\nimport { type PreviewParams, preview } from \"../preview\";\n\nexport async function executeBuild(\n params: PreviewParams,\n version: string,\n options?: { cleanup?: boolean },\n): Promise<void> {\n if (!params.slackConfigurationToken) {\n throw new Error(\n \"Slack Configuration Token is not set. Generate a configuration token and add it as SLACK_CONFIGURATION_TOKEN in your Vercel project:\\nhttps://api.slack.com/apps\",\n );\n }\n\n try {\n await authTest({ token: params.slackConfigurationToken });\n } catch (error) {\n throw new Error(\n \"Slack configuration token is invalid or expired. Generate a new configuration token and add it as SLACK_CONFIGURATION_TOKEN in your Vercel project:\\nhttps://api.slack.com/apps\",\n { cause: error },\n );\n }\n\n if (params.slackServiceToken) {\n try {\n await authTest({ token: params.slackServiceToken });\n } catch (error) {\n log.warning(\n \"SLACK_SERVICE_TOKEN is invalid — app must be installed manually\",\n );\n log.info(\"https://docs.slack.dev/authentication/tokens/#service\");\n logger.debug(error);\n }\n }\n\n try {\n await getProject({\n projectId: params.projectId,\n token: params.vercelApiToken,\n teamId: params.teamId,\n });\n } catch (error) {\n throw new Error(\n \"Vercel API token cannot access this project. Ensure VERCEL_API_TOKEN is valid and has access to this team:\\nhttps://vercel.com/account/settings/tokens\",\n { cause: error },\n );\n }\n\n if (options?.cleanup) {\n log.step(\"Cleaning up orphaned preview apps\");\n try {\n await cleanupOrphanedApps({\n projectId: params.projectId,\n currentBranch: params.branch,\n vercelApiToken: params.vercelApiToken,\n teamId: params.teamId,\n slackConfigurationToken: params.slackConfigurationToken,\n });\n } catch (error) {\n log.warning(\n `Orphan cleanup failed: ${error instanceof Error ? error.message : error}`,\n );\n }\n }\n\n const result = await preview(params, \"cli\");\n\n if (result.isNew && params.deploymentId) {\n log.step(\"Creating new deployment to pick up new environment variables\");\n const { id, url } = await createDeployment({\n deploymentId: params.deploymentId,\n projectId: params.projectId,\n token: params.vercelApiToken,\n teamId: params.teamId,\n });\n log.success(`New deployment created: ${url} (${id})`);\n\n log.step(\"Cancelling current deployment\");\n await cancelDeployment({\n deploymentId: params.deploymentId,\n token: params.vercelApiToken,\n teamId: params.teamId,\n });\n }\n}\n","export const ENV_KEYS = [\n \"VERCEL_ENV\",\n \"VERCEL_GIT_COMMIT_REF\",\n \"VERCEL_PROJECT_ID\",\n \"VERCEL_URL\",\n \"VERCEL_BRANCH_URL\",\n \"VERCEL_TEAM_ID\",\n \"VERCEL_GIT_COMMIT_SHA\",\n \"VERCEL_GIT_COMMIT_MESSAGE\",\n \"VERCEL_GIT_COMMIT_AUTHOR_LOGIN\",\n \"VERCEL_DEPLOYMENT_ID\",\n \"VERCEL_AUTOMATION_BYPASS_SECRET\",\n \"SLACK_APP_ID\",\n \"SLACK_CONFIGURATION_TOKEN\",\n \"SLACK_SERVICE_TOKEN\",\n \"SLACK_CONFIG_REFRESH_TOKEN\",\n \"MANIFEST_PATH\",\n \"VERCEL_API_TOKEN\",\n] as const;\n\nexport function envKeyToFlag(key: string): string {\n return key.toLowerCase().replace(/_/g, \"-\");\n}\n\nfunction flagToCamelCase(flag: string): string {\n return flag.replace(/-([a-z])/g, (_, c: string) => c.toUpperCase());\n}\n\nexport function resolveEnv(\n options: Record<string, string | undefined>,\n): Record<string, string | undefined> {\n const overrides: Record<string, string> = {};\n for (const key of ENV_KEYS) {\n const camelKey = flagToCamelCase(envKeyToFlag(key));\n const value = options[camelKey];\n if (typeof value === \"string\") {\n overrides[key] = value;\n }\n }\n return { ...process.env, ...overrides };\n}\n","import { Command } from \"commander\";\nimport { validateAndBuildParams } from \"../internal/schemas\";\nimport { log, logger, startMessage } from \"../logger\";\nimport { executeBuild } from \"./build\";\nimport { ENV_KEYS, envKeyToFlag, resolveEnv } from \"./env\";\n\nexport function run(version: string): void {\n const program = new Command()\n .name(\"vercel-slack\")\n .description(\n \"Build and configure Slack apps for Vercel preview deployments\",\n )\n .version(version);\n\n const cmd = program\n .command(\"build\")\n .description(\n \"Build and configure the Slack app for a Vercel preview deployment\",\n );\n\n for (const key of ENV_KEYS) {\n cmd.option(`--${envKeyToFlag(key)} <value>`, `Override ${key}`);\n }\n\n cmd.option(\n \"--cleanup\",\n \"Clean up Slack apps and env vars for inactive preview branches\",\n );\n\n cmd.action(async (options: Record<string, string | boolean | undefined>) => {\n const cleanup = options.cleanup === true;\n const env = resolveEnv(options as Record<string, string | undefined>);\n\n logger.info(\n startMessage(\n version,\n env.VERCEL_GIT_COMMIT_REF,\n env.VERCEL_GIT_COMMIT_SHA,\n env.SLACK_APP_ID,\n ),\n );\n\n const isLocal = !env.VERCEL_ENV;\n const isDev =\n env.VERCEL_ENV === \"development\" || env.NODE_ENV === \"development\";\n const isProd = env.VERCEL_ENV === \"production\";\n\n if (isLocal || isDev || isProd) {\n const reason = isLocal ? \"local\" : isDev ? \"development\" : \"production\";\n log.info(`Environment: ${reason} (skipped)\\n`);\n return;\n }\n\n const params = validateAndBuildParams(env);\n await executeBuild(params, version, { cleanup });\n });\n\n program.parseAsync().catch((error: unknown) => {\n logger.error(error instanceof Error ? error.message : String(error));\n console.log();\n });\n}\n","{\n\t\"name\": \"@vercel/slack-bolt\",\n\t\"version\": \"1.2.1\",\n\t\"description\": \"A Vercel receiver for building Slack apps with Bolt and deploying them to Vercel\",\n\t\"main\": \"./dist/index.js\",\n\t\"types\": \"./dist/index.d.ts\",\n\t\"type\": \"commonjs\",\n\t\"bin\": {\n\t\t\"vercel-slack\": \"./bin/vercel-slack.js\"\n\t},\n\t\"exports\": {\n\t\t\".\": {\n\t\t\t\"types\": {\n\t\t\t\t\"import\": \"./dist/index.d.mts\",\n\t\t\t\t\"require\": \"./dist/index.d.ts\"\n\t\t\t},\n\t\t\t\"import\": \"./dist/index.mjs\",\n\t\t\t\"require\": \"./dist/index.js\"\n\t\t},\n\t\t\"./preview\": {\n\t\t\t\"types\": {\n\t\t\t\t\"import\": \"./dist/preview.d.mts\",\n\t\t\t\t\"require\": \"./dist/preview.d.ts\"\n\t\t\t},\n\t\t\t\"import\": \"./dist/preview.mjs\",\n\t\t\t\"require\": \"./dist/preview.js\"\n\t\t}\n\t},\n\t\"typesVersions\": {\n\t\t\"*\": {\n\t\t\t\"preview\": [\n\t\t\t\t\"./dist/preview.d.ts\"\n\t\t\t]\n\t\t}\n\t},\n\t\"files\": [\n\t\t\"bin\",\n\t\t\"dist\"\n\t],\n\t\"repository\": {\n\t\t\"type\": \"git\",\n\t\t\"url\": \"https://github.com/vercel-labs/slack-bolt\"\n\t},\n\t\"bugs\": {\n\t\t\"url\": \"https://github.com/vercel-labs/slack-bolt/issues\"\n\t},\n\t\"scripts\": {\n\t\t\"build\": \"tsup\",\n\t\t\"dev\": \"tsup --watch\",\n\t\t\"test\": \"vitest run\",\n\t\t\"test:watch\": \"vitest watch\",\n\t\t\"lint\": \"biome check .\",\n\t\t\"lint:fix\": \"biome check . --write\",\n\t\t\"attw\": \"attw --pack .\"\n\t},\n\t\"keywords\": [\n\t\t\"vercel\",\n\t\t\"bolt\",\n\t\t\"slack\"\n\t],\n\t\"author\": \"Vercel\",\n\t\"license\": \"MIT\",\n\t\"dependencies\": {\n\t\t\"@slack/logger\": \"^4.0.0\",\n\t\t\"@vercel/functions\": \"^3.4.3\",\n\t\t\"commander\": \"^14.0.3\",\n\t\t\"zod\": \"^4.3.6\"\n\t},\n\t\"devDependencies\": {\n\t\t\"@arethetypeswrong/cli\": \"^0.18.2\",\n\t\t\"@biomejs/biome\": \"2.2.2\",\n\t\t\"@types/node\": \"^20.19.35\",\n\t\t\"@vitest/coverage-v8\": \"4.0.18\",\n\t\t\"tsup\": \"^8.5.1\",\n\t\t\"tsx\": \"^4.21.0\",\n\t\t\"typescript\": \"^5.9.3\",\n\t\t\"vitest\": \"^4.0.18\"\n\t},\n\t\"peerDependencies\": {\n\t\t\"@slack/bolt\": \"^4.4.0\"\n\t},\n\t\"peerDependenciesMeta\": {\n\t\t\"@slack/bolt\": {\n\t\t\t\"optional\": false\n\t\t}\n\t},\n\t\"engines\": {\n\t\t\"node\": \">=20.0.0\"\n\t},\n\t\"publishConfig\": {\n\t\t\"access\": \"public\"\n\t}\n}\n","#!/usr/bin/env node\nimport { run } from \"./cli/index\";\n\nconst { version } = require(\"../package.json\") as { version: string };\n\nrun(version);\n"]}
1
+ {"version":3,"sources":["../src/internal/schemas.ts","../src/cleanup.ts","../src/cli/build.ts","../src/cli/env.ts","../src/cli/index.ts","../package.json","../src/cli.ts"],"names":["__esm","z","getActiveBranches","getEnvironmentVariables","log","getEnvironmentVariable","deleteSlackApp","deleteEnvironmentVariable","init_slack","init_vercel","init_logger","authTest","logger","getProject","path","fs","preview","createDeployment","cancelDeployment","init_preview","Command","startMessage","__commonJS","exports"],"mappings":"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","file":"cli.js","sourcesContent":["import { z } from \"zod\";\nimport type { PreviewParams } from \"../preview\";\n\nexport function formatMissingKeys(error: z.ZodError): string {\n return error.issues.map((i) => i.path.join(\".\")).join(\", \");\n}\n\nexport const systemEnvSchema = z.object({\n VERCEL_ENV: z.enum([\"production\", \"preview\", \"development\"]),\n VERCEL_GIT_COMMIT_REF: z.string(),\n VERCEL_PROJECT_ID: z.string(),\n VERCEL_URL: z.string(),\n VERCEL_BRANCH_URL: z.string().optional(),\n VERCEL_TEAM_ID: z.string().optional(),\n VERCEL_GIT_COMMIT_SHA: z.string().optional(),\n VERCEL_GIT_COMMIT_MESSAGE: z.string().optional(),\n VERCEL_GIT_COMMIT_AUTHOR_LOGIN: z.string().optional(),\n VERCEL_DEPLOYMENT_ID: z.string().optional(),\n VERCEL_AUTOMATION_BYPASS_SECRET: z.string().optional(),\n});\n\nexport const slackEnvSchema = z.object({\n SLACK_APP_ID: z.string().optional(),\n SLACK_CONFIGURATION_TOKEN: z.string(),\n SLACK_SERVICE_TOKEN: z.string().optional(),\n SLACK_CONFIG_REFRESH_TOKEN: z.string().optional(),\n MANIFEST_PATH: z.string().default(\"manifest.json\"),\n});\n\nexport const vercelEnvSchema = z.object({\n VERCEL_API_TOKEN: z.string(),\n});\n\nexport function validateAndBuildParams(\n env: Record<string, string | undefined>,\n): PreviewParams {\n const systemResult = systemEnvSchema.safeParse(env);\n if (!systemResult.success) {\n const missing = formatMissingKeys(systemResult.error);\n throw new Error(\n `Missing Vercel system environment variables: ${missing}\\nEnable 'Automatically expose System Environment Variables' in your Vercel project settings:\\nhttps://vercel.com/docs/projects/environment-variables/system-environment-variables`,\n );\n }\n\n const slackResult = slackEnvSchema.safeParse(env);\n if (!slackResult.success) {\n const missing = formatMissingKeys(slackResult.error);\n throw new Error(\n `Missing Slack environment variables: ${missing}\\nAdd them as environment variables in your Vercel project.`,\n );\n }\n\n const vercelResult = vercelEnvSchema.safeParse(env);\n if (!vercelResult.success) {\n const missing = formatMissingKeys(vercelResult.error);\n throw new Error(\n `Missing Vercel environment variables: ${missing}\\nCreate a new token and add it as VERCEL_API_TOKEN in your Vercel project:\\nhttps://vercel.com/account/settings/tokens`,\n );\n }\n\n return {\n branch: systemResult.data.VERCEL_GIT_COMMIT_REF,\n projectId: systemResult.data.VERCEL_PROJECT_ID,\n deploymentUrl: systemResult.data.VERCEL_URL,\n branchUrl: systemResult.data.VERCEL_BRANCH_URL,\n teamId: systemResult.data.VERCEL_TEAM_ID,\n commitSha: systemResult.data.VERCEL_GIT_COMMIT_SHA,\n commitMessage: systemResult.data.VERCEL_GIT_COMMIT_MESSAGE,\n commitAuthor: systemResult.data.VERCEL_GIT_COMMIT_AUTHOR_LOGIN,\n deploymentId: systemResult.data.VERCEL_DEPLOYMENT_ID,\n automationBypassSecret: systemResult.data.VERCEL_AUTOMATION_BYPASS_SECRET,\n slackAppId: slackResult.data.SLACK_APP_ID,\n slackConfigurationToken: slackResult.data.SLACK_CONFIGURATION_TOKEN,\n slackServiceToken: slackResult.data.SLACK_SERVICE_TOKEN,\n manifestPath: slackResult.data.MANIFEST_PATH,\n vercelApiToken: vercelResult.data.VERCEL_API_TOKEN,\n };\n}\n","import { deleteSlackApp } from \"./internal/slack\";\nimport {\n deleteEnvironmentVariable,\n getActiveBranches,\n getEnvironmentVariable,\n getEnvironmentVariables,\n} from \"./internal/vercel\";\nimport { log } from \"./logger\";\n\nconst SLACK_ENV_VAR_KEYS = [\n \"SLACK_APP_ID\",\n \"SLACK_CLIENT_ID\",\n \"SLACK_CLIENT_SECRET\",\n \"SLACK_SIGNING_SECRET\",\n \"SLACK_BOT_TOKEN\",\n];\n\nexport async function cleanupOrphanedApps({\n projectId,\n currentBranch,\n vercelApiToken,\n teamId,\n slackConfigurationToken,\n}: {\n projectId: string;\n currentBranch: string;\n vercelApiToken: string;\n teamId?: string;\n slackConfigurationToken: string;\n}): Promise<void> {\n const activeBranches = await getActiveBranches({\n projectId,\n token: vercelApiToken,\n teamId,\n });\n\n const envs = await getEnvironmentVariables({\n projectId,\n token: vercelApiToken,\n teamId,\n });\n\n const staleBranches = new Map<string, string>();\n for (const env of envs) {\n if (\n env.key === \"SLACK_APP_ID\" &&\n env.gitBranch &&\n env.gitBranch !== currentBranch &&\n !activeBranches.has(env.gitBranch)\n ) {\n staleBranches.set(env.gitBranch, env.id);\n }\n }\n\n if (staleBranches.size === 0) {\n log.info(\"No orphaned preview apps found\");\n return;\n }\n\n log.step(\n `Found ${staleBranches.size} orphaned ${staleBranches.size === 1 ? \"branch\" : \"branches\"}`,\n );\n\n for (const [branch, envId] of staleBranches) {\n let appId: string | null = null;\n try {\n appId = await getEnvironmentVariable({\n projectId,\n envId,\n token: vercelApiToken,\n teamId,\n });\n } catch {\n log.warning(`Failed to decrypt SLACK_APP_ID for branch ${branch}`);\n }\n\n if (appId) {\n try {\n await deleteSlackApp({\n token: slackConfigurationToken,\n appId,\n });\n log.info(`${appId} deleted (branch: ${branch})`);\n } catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n if (msg.includes(\"app_not_found\")) {\n log.info(`${appId} already deleted (branch: ${branch})`);\n } else {\n log.warning(`Failed to delete app ${appId}: ${msg}`);\n }\n }\n }\n\n for (const env of envs) {\n if (\n env.id &&\n env.gitBranch === branch &&\n SLACK_ENV_VAR_KEYS.includes(env.key)\n ) {\n try {\n await deleteEnvironmentVariable({\n projectId,\n envId: env.id,\n token: vercelApiToken,\n teamId,\n });\n } catch (error) {\n log.warning(\n `Failed to delete env var ${env.key} for branch ${branch}: ${error instanceof Error ? error.message : error}`,\n );\n }\n }\n }\n }\n\n log.success(\"Orphan cleanup completed\");\n}\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { cleanupOrphanedApps } from \"../cleanup\";\nimport { authTest } from \"../internal/slack\";\nimport {\n cancelDeployment,\n createDeployment,\n getProject,\n} from \"../internal/vercel\";\nimport { log, logger } from \"../logger\";\nimport { type PreviewParams, preview } from \"../preview\";\n\nexport async function executeBuild(\n params: PreviewParams,\n version: string,\n options?: { cleanup?: boolean },\n): Promise<void> {\n if (!params.slackConfigurationToken) {\n throw new Error(\n \"Slack Configuration Token is not set. Generate a configuration token and add it as SLACK_CONFIGURATION_TOKEN in your Vercel project:\\nhttps://api.slack.com/apps\",\n );\n }\n\n try {\n await authTest({ token: params.slackConfigurationToken });\n } catch (error) {\n throw new Error(\n \"Slack configuration token is invalid or expired. Generate a new configuration token and add it as SLACK_CONFIGURATION_TOKEN in your Vercel project:\\nhttps://api.slack.com/apps\",\n { cause: error },\n );\n }\n\n if (params.slackServiceToken) {\n try {\n await authTest({ token: params.slackServiceToken });\n } catch (error) {\n log.warning(\n \"SLACK_SERVICE_TOKEN is invalid — app must be installed manually\",\n );\n log.info(\"https://docs.slack.dev/authentication/tokens/#service\");\n logger.debug(error);\n }\n }\n\n try {\n await getProject({\n projectId: params.projectId,\n token: params.vercelApiToken,\n teamId: params.teamId,\n });\n } catch (error) {\n throw new Error(\n \"Vercel API token cannot access this project. Ensure VERCEL_API_TOKEN is valid and has access to this team:\\nhttps://vercel.com/account/settings/tokens\",\n { cause: error },\n );\n }\n\n const manifestFullPath = path.join(process.cwd(), params.manifestPath);\n if (!fs.existsSync(manifestFullPath)) {\n throw new Error(\n `No manifest found at ${params.manifestPath}. Create a manifest.json file with your Slack app configuration:\\nhttps://docs.slack.dev/reference/manifests`,\n );\n }\n\n if (options?.cleanup) {\n log.step(\"Cleaning up orphaned preview apps\");\n try {\n await cleanupOrphanedApps({\n projectId: params.projectId,\n currentBranch: params.branch,\n vercelApiToken: params.vercelApiToken,\n teamId: params.teamId,\n slackConfigurationToken: params.slackConfigurationToken,\n });\n } catch (error) {\n log.warning(\n `Orphan cleanup failed: ${error instanceof Error ? error.message : error}`,\n );\n }\n }\n\n const result = await preview(params, \"cli\");\n\n if (result.isNew && params.deploymentId) {\n log.step(\"Creating new deployment to pick up new environment variables\");\n const { id, url } = await createDeployment({\n deploymentId: params.deploymentId,\n projectId: params.projectId,\n token: params.vercelApiToken,\n teamId: params.teamId,\n });\n log.success(`New deployment created: ${url} (${id})`);\n\n log.step(\"Cancelling current deployment\");\n await cancelDeployment({\n deploymentId: params.deploymentId,\n token: params.vercelApiToken,\n teamId: params.teamId,\n });\n }\n}\n","export const ENV_KEYS = [\n \"VERCEL_ENV\",\n \"VERCEL_GIT_COMMIT_REF\",\n \"VERCEL_PROJECT_ID\",\n \"VERCEL_URL\",\n \"VERCEL_BRANCH_URL\",\n \"VERCEL_TEAM_ID\",\n \"VERCEL_GIT_COMMIT_SHA\",\n \"VERCEL_GIT_COMMIT_MESSAGE\",\n \"VERCEL_GIT_COMMIT_AUTHOR_LOGIN\",\n \"VERCEL_DEPLOYMENT_ID\",\n \"VERCEL_AUTOMATION_BYPASS_SECRET\",\n \"SLACK_APP_ID\",\n \"SLACK_CONFIGURATION_TOKEN\",\n \"SLACK_SERVICE_TOKEN\",\n \"SLACK_CONFIG_REFRESH_TOKEN\",\n \"MANIFEST_PATH\",\n \"VERCEL_API_TOKEN\",\n] as const;\n\nexport function envKeyToFlag(key: string): string {\n return key.toLowerCase().replace(/_/g, \"-\");\n}\n\nfunction flagToCamelCase(flag: string): string {\n return flag.replace(/-([a-z])/g, (_, c: string) => c.toUpperCase());\n}\n\nexport function resolveEnv(\n options: Record<string, string | undefined>,\n): Record<string, string | undefined> {\n const overrides: Record<string, string> = {};\n for (const key of ENV_KEYS) {\n const camelKey = flagToCamelCase(envKeyToFlag(key));\n const value = options[camelKey];\n if (typeof value === \"string\") {\n overrides[key] = value;\n }\n }\n return { ...process.env, ...overrides };\n}\n","import { Command } from \"commander\";\nimport { validateAndBuildParams } from \"../internal/schemas\";\nimport { log, logger, startMessage } from \"../logger\";\nimport { executeBuild } from \"./build\";\nimport { ENV_KEYS, envKeyToFlag, resolveEnv } from \"./env\";\n\nexport function run(version: string): void {\n const program = new Command()\n .name(\"vercel-slack\")\n .description(\n \"Build and configure Slack apps for Vercel preview deployments\",\n )\n .version(version);\n\n const cmd = program\n .command(\"build\")\n .description(\n \"Build and configure the Slack app for a Vercel preview deployment\",\n );\n\n for (const key of ENV_KEYS) {\n cmd.option(`--${envKeyToFlag(key)} <value>`, `Override ${key}`);\n }\n\n cmd.option(\n \"--cleanup\",\n \"Clean up Slack apps and env vars for inactive preview branches\",\n );\n\n cmd.action(async (options: Record<string, string | boolean | undefined>) => {\n const cleanup = options.cleanup === true;\n const env = resolveEnv(options as Record<string, string | undefined>);\n\n logger.info(\n startMessage(\n version,\n env.VERCEL_GIT_COMMIT_REF,\n env.VERCEL_GIT_COMMIT_SHA,\n env.SLACK_APP_ID,\n ),\n );\n\n const isLocal = !env.VERCEL_ENV;\n const isDev =\n env.VERCEL_ENV === \"development\" || env.NODE_ENV === \"development\";\n const isProd = env.VERCEL_ENV === \"production\";\n\n if (isLocal || isDev || isProd) {\n const reason = isLocal ? \"local\" : isDev ? \"development\" : \"production\";\n log.info(`Environment: ${reason} (skipped)\\n`);\n return;\n }\n\n const params = validateAndBuildParams(env);\n await executeBuild(params, version, { cleanup });\n });\n\n program.parseAsync().catch((error: unknown) => {\n logger.error(error instanceof Error ? error.message : String(error));\n console.log();\n });\n}\n","{\n\t\"name\": \"@vercel/slack-bolt\",\n\t\"version\": \"1.2.3\",\n\t\"description\": \"A Vercel receiver for building Slack apps with Bolt and deploying them to Vercel\",\n\t\"main\": \"./dist/index.js\",\n\t\"types\": \"./dist/index.d.ts\",\n\t\"type\": \"commonjs\",\n\t\"bin\": {\n\t\t\"vercel-slack\": \"./bin/vercel-slack.js\"\n\t},\n\t\"exports\": {\n\t\t\".\": {\n\t\t\t\"types\": {\n\t\t\t\t\"import\": \"./dist/index.d.mts\",\n\t\t\t\t\"require\": \"./dist/index.d.ts\"\n\t\t\t},\n\t\t\t\"import\": \"./dist/index.mjs\",\n\t\t\t\"require\": \"./dist/index.js\"\n\t\t},\n\t\t\"./preview\": {\n\t\t\t\"types\": {\n\t\t\t\t\"import\": \"./dist/preview.d.mts\",\n\t\t\t\t\"require\": \"./dist/preview.d.ts\"\n\t\t\t},\n\t\t\t\"import\": \"./dist/preview.mjs\",\n\t\t\t\"require\": \"./dist/preview.js\"\n\t\t}\n\t},\n\t\"typesVersions\": {\n\t\t\"*\": {\n\t\t\t\"preview\": [\n\t\t\t\t\"./dist/preview.d.ts\"\n\t\t\t]\n\t\t}\n\t},\n\t\"files\": [\n\t\t\"bin\",\n\t\t\"dist\"\n\t],\n\t\"repository\": {\n\t\t\"type\": \"git\",\n\t\t\"url\": \"https://github.com/vercel-labs/slack-bolt\"\n\t},\n\t\"bugs\": {\n\t\t\"url\": \"https://github.com/vercel-labs/slack-bolt/issues\"\n\t},\n\t\"scripts\": {\n\t\t\"build\": \"tsup\",\n\t\t\"dev\": \"tsup --watch\",\n\t\t\"test\": \"vitest run\",\n\t\t\"test:watch\": \"vitest watch\",\n\t\t\"lint\": \"biome check .\",\n\t\t\"lint:fix\": \"biome check . --write\",\n\t\t\"attw\": \"attw --pack .\"\n\t},\n\t\"keywords\": [\n\t\t\"vercel\",\n\t\t\"bolt\",\n\t\t\"slack\"\n\t],\n\t\"author\": \"Vercel\",\n\t\"license\": \"MIT\",\n\t\"dependencies\": {\n\t\t\"@slack/logger\": \"^4.0.0\",\n\t\t\"@vercel/functions\": \"^3.4.3\",\n\t\t\"commander\": \"^14.0.3\",\n\t\t\"zod\": \"^4.3.6\"\n\t},\n\t\"devDependencies\": {\n\t\t\"@arethetypeswrong/cli\": \"^0.18.2\",\n\t\t\"@biomejs/biome\": \"2.2.2\",\n\t\t\"@types/node\": \"^20.19.35\",\n\t\t\"@vitest/coverage-v8\": \"4.0.18\",\n\t\t\"tsup\": \"^8.5.1\",\n\t\t\"tsx\": \"^4.21.0\",\n\t\t\"typescript\": \"^5.9.3\",\n\t\t\"vitest\": \"^4.0.18\"\n\t},\n\t\"peerDependencies\": {\n\t\t\"@slack/bolt\": \"^4.4.0\"\n\t},\n\t\"peerDependenciesMeta\": {\n\t\t\"@slack/bolt\": {\n\t\t\t\"optional\": false\n\t\t}\n\t},\n\t\"engines\": {\n\t\t\"node\": \">=20.0.0\"\n\t},\n\t\"publishConfig\": {\n\t\t\"access\": \"public\"\n\t}\n}\n","#!/usr/bin/env node\nimport { run } from \"./cli/index\";\n\nconst { version } = require(\"../package.json\") as { version: string };\n\nrun(version);\n"]}
package/dist/cli.mjs CHANGED
@@ -1,7 +1,9 @@
1
1
  #!/usr/bin/env node
2
- import { init_slack, init_vercel, init_logger, init_preview, logger, startMessage, log, authTest, getProject, preview, createDeployment, cancelDeployment, getActiveBranches, getEnvironmentVariables, getEnvironmentVariable, deleteSlackApp, deleteEnvironmentVariable } from './chunk-XGRIXFBJ.mjs';
2
+ import { init_slack, init_vercel, init_logger, init_preview, logger, startMessage, log, authTest, getProject, preview, createDeployment, cancelDeployment, getActiveBranches, getEnvironmentVariables, getEnvironmentVariable, deleteSlackApp, deleteEnvironmentVariable } from './chunk-F7XGHLWN.mjs';
3
3
  import { __esm, __commonJS } from './chunk-B5E7QPZP.mjs';
4
4
  import { z } from 'zod';
5
+ import fs from 'fs';
6
+ import path from 'path';
5
7
  import { Command } from 'commander';
6
8
 
7
9
  function formatMissingKeys(error) {
@@ -174,8 +176,6 @@ var init_cleanup = __esm({
174
176
  ];
175
177
  }
176
178
  });
177
-
178
- // src/cli/build.ts
179
179
  async function executeBuild(params, version, options) {
180
180
  if (!params.slackConfigurationToken) {
181
181
  throw new Error(
@@ -213,6 +213,13 @@ async function executeBuild(params, version, options) {
213
213
  { cause: error }
214
214
  );
215
215
  }
216
+ const manifestFullPath = path.join(process.cwd(), params.manifestPath);
217
+ if (!fs.existsSync(manifestFullPath)) {
218
+ throw new Error(
219
+ `No manifest found at ${params.manifestPath}. Create a manifest.json file with your Slack app configuration:
220
+ https://docs.slack.dev/reference/manifests`
221
+ );
222
+ }
216
223
  if (options?.cleanup) {
217
224
  log.step("Cleaning up orphaned preview apps");
218
225
  try {
@@ -355,7 +362,7 @@ var require_package = __commonJS({
355
362
  "package.json"(exports$1, module) {
356
363
  module.exports = {
357
364
  name: "@vercel/slack-bolt",
358
- version: "1.2.1",
365
+ version: "1.2.3",
359
366
  description: "A Vercel receiver for building Slack apps with Bolt and deploying them to Vercel",
360
367
  main: "./dist/index.js",
361
368
  types: "./dist/index.d.ts",
package/dist/cli.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/internal/schemas.ts","../src/cleanup.ts","../src/cli/build.ts","../src/cli/env.ts","../src/cli/index.ts","../package.json","../src/cli.ts"],"names":["exports"],"mappings":"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","file":"cli.mjs","sourcesContent":["import { z } from \"zod\";\nimport type { PreviewParams } from \"../preview\";\n\nexport function formatMissingKeys(error: z.ZodError): string {\n return error.issues.map((i) => i.path.join(\".\")).join(\", \");\n}\n\nexport const systemEnvSchema = z.object({\n VERCEL_ENV: z.enum([\"production\", \"preview\", \"development\"]),\n VERCEL_GIT_COMMIT_REF: z.string(),\n VERCEL_PROJECT_ID: z.string(),\n VERCEL_URL: z.string(),\n VERCEL_BRANCH_URL: z.string().optional(),\n VERCEL_TEAM_ID: z.string().optional(),\n VERCEL_GIT_COMMIT_SHA: z.string().optional(),\n VERCEL_GIT_COMMIT_MESSAGE: z.string().optional(),\n VERCEL_GIT_COMMIT_AUTHOR_LOGIN: z.string().optional(),\n VERCEL_DEPLOYMENT_ID: z.string().optional(),\n VERCEL_AUTOMATION_BYPASS_SECRET: z.string().optional(),\n});\n\nexport const slackEnvSchema = z.object({\n SLACK_APP_ID: z.string().optional(),\n SLACK_CONFIGURATION_TOKEN: z.string(),\n SLACK_SERVICE_TOKEN: z.string().optional(),\n SLACK_CONFIG_REFRESH_TOKEN: z.string().optional(),\n MANIFEST_PATH: z.string().default(\"manifest.json\"),\n});\n\nexport const vercelEnvSchema = z.object({\n VERCEL_API_TOKEN: z.string(),\n});\n\nexport function validateAndBuildParams(\n env: Record<string, string | undefined>,\n): PreviewParams {\n const systemResult = systemEnvSchema.safeParse(env);\n if (!systemResult.success) {\n const missing = formatMissingKeys(systemResult.error);\n throw new Error(\n `Missing Vercel system environment variables: ${missing}\\nEnable 'Automatically expose System Environment Variables' in your Vercel project settings:\\nhttps://vercel.com/docs/projects/environment-variables/system-environment-variables`,\n );\n }\n\n const slackResult = slackEnvSchema.safeParse(env);\n if (!slackResult.success) {\n const missing = formatMissingKeys(slackResult.error);\n throw new Error(\n `Missing Slack environment variables: ${missing}\\nAdd them as environment variables in your Vercel project.`,\n );\n }\n\n const vercelResult = vercelEnvSchema.safeParse(env);\n if (!vercelResult.success) {\n const missing = formatMissingKeys(vercelResult.error);\n throw new Error(\n `Missing Vercel environment variables: ${missing}\\nCreate a new token and add it as VERCEL_API_TOKEN in your Vercel project:\\nhttps://vercel.com/account/settings/tokens`,\n );\n }\n\n return {\n branch: systemResult.data.VERCEL_GIT_COMMIT_REF,\n projectId: systemResult.data.VERCEL_PROJECT_ID,\n deploymentUrl: systemResult.data.VERCEL_URL,\n branchUrl: systemResult.data.VERCEL_BRANCH_URL,\n teamId: systemResult.data.VERCEL_TEAM_ID,\n commitSha: systemResult.data.VERCEL_GIT_COMMIT_SHA,\n commitMessage: systemResult.data.VERCEL_GIT_COMMIT_MESSAGE,\n commitAuthor: systemResult.data.VERCEL_GIT_COMMIT_AUTHOR_LOGIN,\n deploymentId: systemResult.data.VERCEL_DEPLOYMENT_ID,\n automationBypassSecret: systemResult.data.VERCEL_AUTOMATION_BYPASS_SECRET,\n slackAppId: slackResult.data.SLACK_APP_ID,\n slackConfigurationToken: slackResult.data.SLACK_CONFIGURATION_TOKEN,\n slackServiceToken: slackResult.data.SLACK_SERVICE_TOKEN,\n manifestPath: slackResult.data.MANIFEST_PATH,\n vercelApiToken: vercelResult.data.VERCEL_API_TOKEN,\n };\n}\n","import { deleteSlackApp } from \"./internal/slack\";\nimport {\n deleteEnvironmentVariable,\n getActiveBranches,\n getEnvironmentVariable,\n getEnvironmentVariables,\n} from \"./internal/vercel\";\nimport { log } from \"./logger\";\n\nconst SLACK_ENV_VAR_KEYS = [\n \"SLACK_APP_ID\",\n \"SLACK_CLIENT_ID\",\n \"SLACK_CLIENT_SECRET\",\n \"SLACK_SIGNING_SECRET\",\n \"SLACK_BOT_TOKEN\",\n];\n\nexport async function cleanupOrphanedApps({\n projectId,\n currentBranch,\n vercelApiToken,\n teamId,\n slackConfigurationToken,\n}: {\n projectId: string;\n currentBranch: string;\n vercelApiToken: string;\n teamId?: string;\n slackConfigurationToken: string;\n}): Promise<void> {\n const activeBranches = await getActiveBranches({\n projectId,\n token: vercelApiToken,\n teamId,\n });\n\n const envs = await getEnvironmentVariables({\n projectId,\n token: vercelApiToken,\n teamId,\n });\n\n const staleBranches = new Map<string, string>();\n for (const env of envs) {\n if (\n env.key === \"SLACK_APP_ID\" &&\n env.gitBranch &&\n env.gitBranch !== currentBranch &&\n !activeBranches.has(env.gitBranch)\n ) {\n staleBranches.set(env.gitBranch, env.id);\n }\n }\n\n if (staleBranches.size === 0) {\n log.info(\"No orphaned preview apps found\");\n return;\n }\n\n log.step(\n `Found ${staleBranches.size} orphaned ${staleBranches.size === 1 ? \"branch\" : \"branches\"}`,\n );\n\n for (const [branch, envId] of staleBranches) {\n let appId: string | null = null;\n try {\n appId = await getEnvironmentVariable({\n projectId,\n envId,\n token: vercelApiToken,\n teamId,\n });\n } catch {\n log.warning(`Failed to decrypt SLACK_APP_ID for branch ${branch}`);\n }\n\n if (appId) {\n try {\n await deleteSlackApp({\n token: slackConfigurationToken,\n appId,\n });\n log.info(`${appId} deleted (branch: ${branch})`);\n } catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n if (msg.includes(\"app_not_found\")) {\n log.info(`${appId} already deleted (branch: ${branch})`);\n } else {\n log.warning(`Failed to delete app ${appId}: ${msg}`);\n }\n }\n }\n\n for (const env of envs) {\n if (\n env.id &&\n env.gitBranch === branch &&\n SLACK_ENV_VAR_KEYS.includes(env.key)\n ) {\n try {\n await deleteEnvironmentVariable({\n projectId,\n envId: env.id,\n token: vercelApiToken,\n teamId,\n });\n } catch (error) {\n log.warning(\n `Failed to delete env var ${env.key} for branch ${branch}: ${error instanceof Error ? error.message : error}`,\n );\n }\n }\n }\n }\n\n log.success(\"Orphan cleanup completed\");\n}\n","import { cleanupOrphanedApps } from \"../cleanup\";\nimport { authTest } from \"../internal/slack\";\nimport {\n cancelDeployment,\n createDeployment,\n getProject,\n} from \"../internal/vercel\";\nimport { log, logger } from \"../logger\";\nimport { type PreviewParams, preview } from \"../preview\";\n\nexport async function executeBuild(\n params: PreviewParams,\n version: string,\n options?: { cleanup?: boolean },\n): Promise<void> {\n if (!params.slackConfigurationToken) {\n throw new Error(\n \"Slack Configuration Token is not set. Generate a configuration token and add it as SLACK_CONFIGURATION_TOKEN in your Vercel project:\\nhttps://api.slack.com/apps\",\n );\n }\n\n try {\n await authTest({ token: params.slackConfigurationToken });\n } catch (error) {\n throw new Error(\n \"Slack configuration token is invalid or expired. Generate a new configuration token and add it as SLACK_CONFIGURATION_TOKEN in your Vercel project:\\nhttps://api.slack.com/apps\",\n { cause: error },\n );\n }\n\n if (params.slackServiceToken) {\n try {\n await authTest({ token: params.slackServiceToken });\n } catch (error) {\n log.warning(\n \"SLACK_SERVICE_TOKEN is invalid — app must be installed manually\",\n );\n log.info(\"https://docs.slack.dev/authentication/tokens/#service\");\n logger.debug(error);\n }\n }\n\n try {\n await getProject({\n projectId: params.projectId,\n token: params.vercelApiToken,\n teamId: params.teamId,\n });\n } catch (error) {\n throw new Error(\n \"Vercel API token cannot access this project. Ensure VERCEL_API_TOKEN is valid and has access to this team:\\nhttps://vercel.com/account/settings/tokens\",\n { cause: error },\n );\n }\n\n if (options?.cleanup) {\n log.step(\"Cleaning up orphaned preview apps\");\n try {\n await cleanupOrphanedApps({\n projectId: params.projectId,\n currentBranch: params.branch,\n vercelApiToken: params.vercelApiToken,\n teamId: params.teamId,\n slackConfigurationToken: params.slackConfigurationToken,\n });\n } catch (error) {\n log.warning(\n `Orphan cleanup failed: ${error instanceof Error ? error.message : error}`,\n );\n }\n }\n\n const result = await preview(params, \"cli\");\n\n if (result.isNew && params.deploymentId) {\n log.step(\"Creating new deployment to pick up new environment variables\");\n const { id, url } = await createDeployment({\n deploymentId: params.deploymentId,\n projectId: params.projectId,\n token: params.vercelApiToken,\n teamId: params.teamId,\n });\n log.success(`New deployment created: ${url} (${id})`);\n\n log.step(\"Cancelling current deployment\");\n await cancelDeployment({\n deploymentId: params.deploymentId,\n token: params.vercelApiToken,\n teamId: params.teamId,\n });\n }\n}\n","export const ENV_KEYS = [\n \"VERCEL_ENV\",\n \"VERCEL_GIT_COMMIT_REF\",\n \"VERCEL_PROJECT_ID\",\n \"VERCEL_URL\",\n \"VERCEL_BRANCH_URL\",\n \"VERCEL_TEAM_ID\",\n \"VERCEL_GIT_COMMIT_SHA\",\n \"VERCEL_GIT_COMMIT_MESSAGE\",\n \"VERCEL_GIT_COMMIT_AUTHOR_LOGIN\",\n \"VERCEL_DEPLOYMENT_ID\",\n \"VERCEL_AUTOMATION_BYPASS_SECRET\",\n \"SLACK_APP_ID\",\n \"SLACK_CONFIGURATION_TOKEN\",\n \"SLACK_SERVICE_TOKEN\",\n \"SLACK_CONFIG_REFRESH_TOKEN\",\n \"MANIFEST_PATH\",\n \"VERCEL_API_TOKEN\",\n] as const;\n\nexport function envKeyToFlag(key: string): string {\n return key.toLowerCase().replace(/_/g, \"-\");\n}\n\nfunction flagToCamelCase(flag: string): string {\n return flag.replace(/-([a-z])/g, (_, c: string) => c.toUpperCase());\n}\n\nexport function resolveEnv(\n options: Record<string, string | undefined>,\n): Record<string, string | undefined> {\n const overrides: Record<string, string> = {};\n for (const key of ENV_KEYS) {\n const camelKey = flagToCamelCase(envKeyToFlag(key));\n const value = options[camelKey];\n if (typeof value === \"string\") {\n overrides[key] = value;\n }\n }\n return { ...process.env, ...overrides };\n}\n","import { Command } from \"commander\";\nimport { validateAndBuildParams } from \"../internal/schemas\";\nimport { log, logger, startMessage } from \"../logger\";\nimport { executeBuild } from \"./build\";\nimport { ENV_KEYS, envKeyToFlag, resolveEnv } from \"./env\";\n\nexport function run(version: string): void {\n const program = new Command()\n .name(\"vercel-slack\")\n .description(\n \"Build and configure Slack apps for Vercel preview deployments\",\n )\n .version(version);\n\n const cmd = program\n .command(\"build\")\n .description(\n \"Build and configure the Slack app for a Vercel preview deployment\",\n );\n\n for (const key of ENV_KEYS) {\n cmd.option(`--${envKeyToFlag(key)} <value>`, `Override ${key}`);\n }\n\n cmd.option(\n \"--cleanup\",\n \"Clean up Slack apps and env vars for inactive preview branches\",\n );\n\n cmd.action(async (options: Record<string, string | boolean | undefined>) => {\n const cleanup = options.cleanup === true;\n const env = resolveEnv(options as Record<string, string | undefined>);\n\n logger.info(\n startMessage(\n version,\n env.VERCEL_GIT_COMMIT_REF,\n env.VERCEL_GIT_COMMIT_SHA,\n env.SLACK_APP_ID,\n ),\n );\n\n const isLocal = !env.VERCEL_ENV;\n const isDev =\n env.VERCEL_ENV === \"development\" || env.NODE_ENV === \"development\";\n const isProd = env.VERCEL_ENV === \"production\";\n\n if (isLocal || isDev || isProd) {\n const reason = isLocal ? \"local\" : isDev ? \"development\" : \"production\";\n log.info(`Environment: ${reason} (skipped)\\n`);\n return;\n }\n\n const params = validateAndBuildParams(env);\n await executeBuild(params, version, { cleanup });\n });\n\n program.parseAsync().catch((error: unknown) => {\n logger.error(error instanceof Error ? error.message : String(error));\n console.log();\n });\n}\n","{\n\t\"name\": \"@vercel/slack-bolt\",\n\t\"version\": \"1.2.1\",\n\t\"description\": \"A Vercel receiver for building Slack apps with Bolt and deploying them to Vercel\",\n\t\"main\": \"./dist/index.js\",\n\t\"types\": \"./dist/index.d.ts\",\n\t\"type\": \"commonjs\",\n\t\"bin\": {\n\t\t\"vercel-slack\": \"./bin/vercel-slack.js\"\n\t},\n\t\"exports\": {\n\t\t\".\": {\n\t\t\t\"types\": {\n\t\t\t\t\"import\": \"./dist/index.d.mts\",\n\t\t\t\t\"require\": \"./dist/index.d.ts\"\n\t\t\t},\n\t\t\t\"import\": \"./dist/index.mjs\",\n\t\t\t\"require\": \"./dist/index.js\"\n\t\t},\n\t\t\"./preview\": {\n\t\t\t\"types\": {\n\t\t\t\t\"import\": \"./dist/preview.d.mts\",\n\t\t\t\t\"require\": \"./dist/preview.d.ts\"\n\t\t\t},\n\t\t\t\"import\": \"./dist/preview.mjs\",\n\t\t\t\"require\": \"./dist/preview.js\"\n\t\t}\n\t},\n\t\"typesVersions\": {\n\t\t\"*\": {\n\t\t\t\"preview\": [\n\t\t\t\t\"./dist/preview.d.ts\"\n\t\t\t]\n\t\t}\n\t},\n\t\"files\": [\n\t\t\"bin\",\n\t\t\"dist\"\n\t],\n\t\"repository\": {\n\t\t\"type\": \"git\",\n\t\t\"url\": \"https://github.com/vercel-labs/slack-bolt\"\n\t},\n\t\"bugs\": {\n\t\t\"url\": \"https://github.com/vercel-labs/slack-bolt/issues\"\n\t},\n\t\"scripts\": {\n\t\t\"build\": \"tsup\",\n\t\t\"dev\": \"tsup --watch\",\n\t\t\"test\": \"vitest run\",\n\t\t\"test:watch\": \"vitest watch\",\n\t\t\"lint\": \"biome check .\",\n\t\t\"lint:fix\": \"biome check . --write\",\n\t\t\"attw\": \"attw --pack .\"\n\t},\n\t\"keywords\": [\n\t\t\"vercel\",\n\t\t\"bolt\",\n\t\t\"slack\"\n\t],\n\t\"author\": \"Vercel\",\n\t\"license\": \"MIT\",\n\t\"dependencies\": {\n\t\t\"@slack/logger\": \"^4.0.0\",\n\t\t\"@vercel/functions\": \"^3.4.3\",\n\t\t\"commander\": \"^14.0.3\",\n\t\t\"zod\": \"^4.3.6\"\n\t},\n\t\"devDependencies\": {\n\t\t\"@arethetypeswrong/cli\": \"^0.18.2\",\n\t\t\"@biomejs/biome\": \"2.2.2\",\n\t\t\"@types/node\": \"^20.19.35\",\n\t\t\"@vitest/coverage-v8\": \"4.0.18\",\n\t\t\"tsup\": \"^8.5.1\",\n\t\t\"tsx\": \"^4.21.0\",\n\t\t\"typescript\": \"^5.9.3\",\n\t\t\"vitest\": \"^4.0.18\"\n\t},\n\t\"peerDependencies\": {\n\t\t\"@slack/bolt\": \"^4.4.0\"\n\t},\n\t\"peerDependenciesMeta\": {\n\t\t\"@slack/bolt\": {\n\t\t\t\"optional\": false\n\t\t}\n\t},\n\t\"engines\": {\n\t\t\"node\": \">=20.0.0\"\n\t},\n\t\"publishConfig\": {\n\t\t\"access\": \"public\"\n\t}\n}\n","#!/usr/bin/env node\nimport { run } from \"./cli/index\";\n\nconst { version } = require(\"../package.json\") as { version: string };\n\nrun(version);\n"]}
1
+ {"version":3,"sources":["../src/internal/schemas.ts","../src/cleanup.ts","../src/cli/build.ts","../src/cli/env.ts","../src/cli/index.ts","../package.json","../src/cli.ts"],"names":["exports"],"mappings":"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","file":"cli.mjs","sourcesContent":["import { z } from \"zod\";\nimport type { PreviewParams } from \"../preview\";\n\nexport function formatMissingKeys(error: z.ZodError): string {\n return error.issues.map((i) => i.path.join(\".\")).join(\", \");\n}\n\nexport const systemEnvSchema = z.object({\n VERCEL_ENV: z.enum([\"production\", \"preview\", \"development\"]),\n VERCEL_GIT_COMMIT_REF: z.string(),\n VERCEL_PROJECT_ID: z.string(),\n VERCEL_URL: z.string(),\n VERCEL_BRANCH_URL: z.string().optional(),\n VERCEL_TEAM_ID: z.string().optional(),\n VERCEL_GIT_COMMIT_SHA: z.string().optional(),\n VERCEL_GIT_COMMIT_MESSAGE: z.string().optional(),\n VERCEL_GIT_COMMIT_AUTHOR_LOGIN: z.string().optional(),\n VERCEL_DEPLOYMENT_ID: z.string().optional(),\n VERCEL_AUTOMATION_BYPASS_SECRET: z.string().optional(),\n});\n\nexport const slackEnvSchema = z.object({\n SLACK_APP_ID: z.string().optional(),\n SLACK_CONFIGURATION_TOKEN: z.string(),\n SLACK_SERVICE_TOKEN: z.string().optional(),\n SLACK_CONFIG_REFRESH_TOKEN: z.string().optional(),\n MANIFEST_PATH: z.string().default(\"manifest.json\"),\n});\n\nexport const vercelEnvSchema = z.object({\n VERCEL_API_TOKEN: z.string(),\n});\n\nexport function validateAndBuildParams(\n env: Record<string, string | undefined>,\n): PreviewParams {\n const systemResult = systemEnvSchema.safeParse(env);\n if (!systemResult.success) {\n const missing = formatMissingKeys(systemResult.error);\n throw new Error(\n `Missing Vercel system environment variables: ${missing}\\nEnable 'Automatically expose System Environment Variables' in your Vercel project settings:\\nhttps://vercel.com/docs/projects/environment-variables/system-environment-variables`,\n );\n }\n\n const slackResult = slackEnvSchema.safeParse(env);\n if (!slackResult.success) {\n const missing = formatMissingKeys(slackResult.error);\n throw new Error(\n `Missing Slack environment variables: ${missing}\\nAdd them as environment variables in your Vercel project.`,\n );\n }\n\n const vercelResult = vercelEnvSchema.safeParse(env);\n if (!vercelResult.success) {\n const missing = formatMissingKeys(vercelResult.error);\n throw new Error(\n `Missing Vercel environment variables: ${missing}\\nCreate a new token and add it as VERCEL_API_TOKEN in your Vercel project:\\nhttps://vercel.com/account/settings/tokens`,\n );\n }\n\n return {\n branch: systemResult.data.VERCEL_GIT_COMMIT_REF,\n projectId: systemResult.data.VERCEL_PROJECT_ID,\n deploymentUrl: systemResult.data.VERCEL_URL,\n branchUrl: systemResult.data.VERCEL_BRANCH_URL,\n teamId: systemResult.data.VERCEL_TEAM_ID,\n commitSha: systemResult.data.VERCEL_GIT_COMMIT_SHA,\n commitMessage: systemResult.data.VERCEL_GIT_COMMIT_MESSAGE,\n commitAuthor: systemResult.data.VERCEL_GIT_COMMIT_AUTHOR_LOGIN,\n deploymentId: systemResult.data.VERCEL_DEPLOYMENT_ID,\n automationBypassSecret: systemResult.data.VERCEL_AUTOMATION_BYPASS_SECRET,\n slackAppId: slackResult.data.SLACK_APP_ID,\n slackConfigurationToken: slackResult.data.SLACK_CONFIGURATION_TOKEN,\n slackServiceToken: slackResult.data.SLACK_SERVICE_TOKEN,\n manifestPath: slackResult.data.MANIFEST_PATH,\n vercelApiToken: vercelResult.data.VERCEL_API_TOKEN,\n };\n}\n","import { deleteSlackApp } from \"./internal/slack\";\nimport {\n deleteEnvironmentVariable,\n getActiveBranches,\n getEnvironmentVariable,\n getEnvironmentVariables,\n} from \"./internal/vercel\";\nimport { log } from \"./logger\";\n\nconst SLACK_ENV_VAR_KEYS = [\n \"SLACK_APP_ID\",\n \"SLACK_CLIENT_ID\",\n \"SLACK_CLIENT_SECRET\",\n \"SLACK_SIGNING_SECRET\",\n \"SLACK_BOT_TOKEN\",\n];\n\nexport async function cleanupOrphanedApps({\n projectId,\n currentBranch,\n vercelApiToken,\n teamId,\n slackConfigurationToken,\n}: {\n projectId: string;\n currentBranch: string;\n vercelApiToken: string;\n teamId?: string;\n slackConfigurationToken: string;\n}): Promise<void> {\n const activeBranches = await getActiveBranches({\n projectId,\n token: vercelApiToken,\n teamId,\n });\n\n const envs = await getEnvironmentVariables({\n projectId,\n token: vercelApiToken,\n teamId,\n });\n\n const staleBranches = new Map<string, string>();\n for (const env of envs) {\n if (\n env.key === \"SLACK_APP_ID\" &&\n env.gitBranch &&\n env.gitBranch !== currentBranch &&\n !activeBranches.has(env.gitBranch)\n ) {\n staleBranches.set(env.gitBranch, env.id);\n }\n }\n\n if (staleBranches.size === 0) {\n log.info(\"No orphaned preview apps found\");\n return;\n }\n\n log.step(\n `Found ${staleBranches.size} orphaned ${staleBranches.size === 1 ? \"branch\" : \"branches\"}`,\n );\n\n for (const [branch, envId] of staleBranches) {\n let appId: string | null = null;\n try {\n appId = await getEnvironmentVariable({\n projectId,\n envId,\n token: vercelApiToken,\n teamId,\n });\n } catch {\n log.warning(`Failed to decrypt SLACK_APP_ID for branch ${branch}`);\n }\n\n if (appId) {\n try {\n await deleteSlackApp({\n token: slackConfigurationToken,\n appId,\n });\n log.info(`${appId} deleted (branch: ${branch})`);\n } catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n if (msg.includes(\"app_not_found\")) {\n log.info(`${appId} already deleted (branch: ${branch})`);\n } else {\n log.warning(`Failed to delete app ${appId}: ${msg}`);\n }\n }\n }\n\n for (const env of envs) {\n if (\n env.id &&\n env.gitBranch === branch &&\n SLACK_ENV_VAR_KEYS.includes(env.key)\n ) {\n try {\n await deleteEnvironmentVariable({\n projectId,\n envId: env.id,\n token: vercelApiToken,\n teamId,\n });\n } catch (error) {\n log.warning(\n `Failed to delete env var ${env.key} for branch ${branch}: ${error instanceof Error ? error.message : error}`,\n );\n }\n }\n }\n }\n\n log.success(\"Orphan cleanup completed\");\n}\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { cleanupOrphanedApps } from \"../cleanup\";\nimport { authTest } from \"../internal/slack\";\nimport {\n cancelDeployment,\n createDeployment,\n getProject,\n} from \"../internal/vercel\";\nimport { log, logger } from \"../logger\";\nimport { type PreviewParams, preview } from \"../preview\";\n\nexport async function executeBuild(\n params: PreviewParams,\n version: string,\n options?: { cleanup?: boolean },\n): Promise<void> {\n if (!params.slackConfigurationToken) {\n throw new Error(\n \"Slack Configuration Token is not set. Generate a configuration token and add it as SLACK_CONFIGURATION_TOKEN in your Vercel project:\\nhttps://api.slack.com/apps\",\n );\n }\n\n try {\n await authTest({ token: params.slackConfigurationToken });\n } catch (error) {\n throw new Error(\n \"Slack configuration token is invalid or expired. Generate a new configuration token and add it as SLACK_CONFIGURATION_TOKEN in your Vercel project:\\nhttps://api.slack.com/apps\",\n { cause: error },\n );\n }\n\n if (params.slackServiceToken) {\n try {\n await authTest({ token: params.slackServiceToken });\n } catch (error) {\n log.warning(\n \"SLACK_SERVICE_TOKEN is invalid — app must be installed manually\",\n );\n log.info(\"https://docs.slack.dev/authentication/tokens/#service\");\n logger.debug(error);\n }\n }\n\n try {\n await getProject({\n projectId: params.projectId,\n token: params.vercelApiToken,\n teamId: params.teamId,\n });\n } catch (error) {\n throw new Error(\n \"Vercel API token cannot access this project. Ensure VERCEL_API_TOKEN is valid and has access to this team:\\nhttps://vercel.com/account/settings/tokens\",\n { cause: error },\n );\n }\n\n const manifestFullPath = path.join(process.cwd(), params.manifestPath);\n if (!fs.existsSync(manifestFullPath)) {\n throw new Error(\n `No manifest found at ${params.manifestPath}. Create a manifest.json file with your Slack app configuration:\\nhttps://docs.slack.dev/reference/manifests`,\n );\n }\n\n if (options?.cleanup) {\n log.step(\"Cleaning up orphaned preview apps\");\n try {\n await cleanupOrphanedApps({\n projectId: params.projectId,\n currentBranch: params.branch,\n vercelApiToken: params.vercelApiToken,\n teamId: params.teamId,\n slackConfigurationToken: params.slackConfigurationToken,\n });\n } catch (error) {\n log.warning(\n `Orphan cleanup failed: ${error instanceof Error ? error.message : error}`,\n );\n }\n }\n\n const result = await preview(params, \"cli\");\n\n if (result.isNew && params.deploymentId) {\n log.step(\"Creating new deployment to pick up new environment variables\");\n const { id, url } = await createDeployment({\n deploymentId: params.deploymentId,\n projectId: params.projectId,\n token: params.vercelApiToken,\n teamId: params.teamId,\n });\n log.success(`New deployment created: ${url} (${id})`);\n\n log.step(\"Cancelling current deployment\");\n await cancelDeployment({\n deploymentId: params.deploymentId,\n token: params.vercelApiToken,\n teamId: params.teamId,\n });\n }\n}\n","export const ENV_KEYS = [\n \"VERCEL_ENV\",\n \"VERCEL_GIT_COMMIT_REF\",\n \"VERCEL_PROJECT_ID\",\n \"VERCEL_URL\",\n \"VERCEL_BRANCH_URL\",\n \"VERCEL_TEAM_ID\",\n \"VERCEL_GIT_COMMIT_SHA\",\n \"VERCEL_GIT_COMMIT_MESSAGE\",\n \"VERCEL_GIT_COMMIT_AUTHOR_LOGIN\",\n \"VERCEL_DEPLOYMENT_ID\",\n \"VERCEL_AUTOMATION_BYPASS_SECRET\",\n \"SLACK_APP_ID\",\n \"SLACK_CONFIGURATION_TOKEN\",\n \"SLACK_SERVICE_TOKEN\",\n \"SLACK_CONFIG_REFRESH_TOKEN\",\n \"MANIFEST_PATH\",\n \"VERCEL_API_TOKEN\",\n] as const;\n\nexport function envKeyToFlag(key: string): string {\n return key.toLowerCase().replace(/_/g, \"-\");\n}\n\nfunction flagToCamelCase(flag: string): string {\n return flag.replace(/-([a-z])/g, (_, c: string) => c.toUpperCase());\n}\n\nexport function resolveEnv(\n options: Record<string, string | undefined>,\n): Record<string, string | undefined> {\n const overrides: Record<string, string> = {};\n for (const key of ENV_KEYS) {\n const camelKey = flagToCamelCase(envKeyToFlag(key));\n const value = options[camelKey];\n if (typeof value === \"string\") {\n overrides[key] = value;\n }\n }\n return { ...process.env, ...overrides };\n}\n","import { Command } from \"commander\";\nimport { validateAndBuildParams } from \"../internal/schemas\";\nimport { log, logger, startMessage } from \"../logger\";\nimport { executeBuild } from \"./build\";\nimport { ENV_KEYS, envKeyToFlag, resolveEnv } from \"./env\";\n\nexport function run(version: string): void {\n const program = new Command()\n .name(\"vercel-slack\")\n .description(\n \"Build and configure Slack apps for Vercel preview deployments\",\n )\n .version(version);\n\n const cmd = program\n .command(\"build\")\n .description(\n \"Build and configure the Slack app for a Vercel preview deployment\",\n );\n\n for (const key of ENV_KEYS) {\n cmd.option(`--${envKeyToFlag(key)} <value>`, `Override ${key}`);\n }\n\n cmd.option(\n \"--cleanup\",\n \"Clean up Slack apps and env vars for inactive preview branches\",\n );\n\n cmd.action(async (options: Record<string, string | boolean | undefined>) => {\n const cleanup = options.cleanup === true;\n const env = resolveEnv(options as Record<string, string | undefined>);\n\n logger.info(\n startMessage(\n version,\n env.VERCEL_GIT_COMMIT_REF,\n env.VERCEL_GIT_COMMIT_SHA,\n env.SLACK_APP_ID,\n ),\n );\n\n const isLocal = !env.VERCEL_ENV;\n const isDev =\n env.VERCEL_ENV === \"development\" || env.NODE_ENV === \"development\";\n const isProd = env.VERCEL_ENV === \"production\";\n\n if (isLocal || isDev || isProd) {\n const reason = isLocal ? \"local\" : isDev ? \"development\" : \"production\";\n log.info(`Environment: ${reason} (skipped)\\n`);\n return;\n }\n\n const params = validateAndBuildParams(env);\n await executeBuild(params, version, { cleanup });\n });\n\n program.parseAsync().catch((error: unknown) => {\n logger.error(error instanceof Error ? error.message : String(error));\n console.log();\n });\n}\n","{\n\t\"name\": \"@vercel/slack-bolt\",\n\t\"version\": \"1.2.3\",\n\t\"description\": \"A Vercel receiver for building Slack apps with Bolt and deploying them to Vercel\",\n\t\"main\": \"./dist/index.js\",\n\t\"types\": \"./dist/index.d.ts\",\n\t\"type\": \"commonjs\",\n\t\"bin\": {\n\t\t\"vercel-slack\": \"./bin/vercel-slack.js\"\n\t},\n\t\"exports\": {\n\t\t\".\": {\n\t\t\t\"types\": {\n\t\t\t\t\"import\": \"./dist/index.d.mts\",\n\t\t\t\t\"require\": \"./dist/index.d.ts\"\n\t\t\t},\n\t\t\t\"import\": \"./dist/index.mjs\",\n\t\t\t\"require\": \"./dist/index.js\"\n\t\t},\n\t\t\"./preview\": {\n\t\t\t\"types\": {\n\t\t\t\t\"import\": \"./dist/preview.d.mts\",\n\t\t\t\t\"require\": \"./dist/preview.d.ts\"\n\t\t\t},\n\t\t\t\"import\": \"./dist/preview.mjs\",\n\t\t\t\"require\": \"./dist/preview.js\"\n\t\t}\n\t},\n\t\"typesVersions\": {\n\t\t\"*\": {\n\t\t\t\"preview\": [\n\t\t\t\t\"./dist/preview.d.ts\"\n\t\t\t]\n\t\t}\n\t},\n\t\"files\": [\n\t\t\"bin\",\n\t\t\"dist\"\n\t],\n\t\"repository\": {\n\t\t\"type\": \"git\",\n\t\t\"url\": \"https://github.com/vercel-labs/slack-bolt\"\n\t},\n\t\"bugs\": {\n\t\t\"url\": \"https://github.com/vercel-labs/slack-bolt/issues\"\n\t},\n\t\"scripts\": {\n\t\t\"build\": \"tsup\",\n\t\t\"dev\": \"tsup --watch\",\n\t\t\"test\": \"vitest run\",\n\t\t\"test:watch\": \"vitest watch\",\n\t\t\"lint\": \"biome check .\",\n\t\t\"lint:fix\": \"biome check . --write\",\n\t\t\"attw\": \"attw --pack .\"\n\t},\n\t\"keywords\": [\n\t\t\"vercel\",\n\t\t\"bolt\",\n\t\t\"slack\"\n\t],\n\t\"author\": \"Vercel\",\n\t\"license\": \"MIT\",\n\t\"dependencies\": {\n\t\t\"@slack/logger\": \"^4.0.0\",\n\t\t\"@vercel/functions\": \"^3.4.3\",\n\t\t\"commander\": \"^14.0.3\",\n\t\t\"zod\": \"^4.3.6\"\n\t},\n\t\"devDependencies\": {\n\t\t\"@arethetypeswrong/cli\": \"^0.18.2\",\n\t\t\"@biomejs/biome\": \"2.2.2\",\n\t\t\"@types/node\": \"^20.19.35\",\n\t\t\"@vitest/coverage-v8\": \"4.0.18\",\n\t\t\"tsup\": \"^8.5.1\",\n\t\t\"tsx\": \"^4.21.0\",\n\t\t\"typescript\": \"^5.9.3\",\n\t\t\"vitest\": \"^4.0.18\"\n\t},\n\t\"peerDependencies\": {\n\t\t\"@slack/bolt\": \"^4.4.0\"\n\t},\n\t\"peerDependenciesMeta\": {\n\t\t\"@slack/bolt\": {\n\t\t\t\"optional\": false\n\t\t}\n\t},\n\t\"engines\": {\n\t\t\"node\": \">=20.0.0\"\n\t},\n\t\"publishConfig\": {\n\t\t\"access\": \"public\"\n\t}\n}\n","#!/usr/bin/env node\nimport { run } from \"./cli/index\";\n\nconst { version } = require(\"../package.json\") as { version: string };\n\nrun(version);\n"]}
package/dist/preview.js CHANGED
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
- var chunkUHIORNAT_js = require('./chunk-UHIORNAT.js');
3
+ var chunkQGGTFP5L_js = require('./chunk-QGGTFP5L.js');
4
4
  require('./chunk-QHMZVK6J.js');
5
5
 
6
- chunkUHIORNAT_js.init_preview();
6
+ chunkQGGTFP5L_js.init_preview();
7
7
 
8
8
  Object.defineProperty(exports, "preview", {
9
9
  enumerable: true,
10
- get: function () { return chunkUHIORNAT_js.preview; }
10
+ get: function () { return chunkQGGTFP5L_js.preview; }
11
11
  });
12
12
  //# sourceMappingURL=preview.js.map
13
13
  //# sourceMappingURL=preview.js.map
package/dist/preview.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import { init_preview } from './chunk-XGRIXFBJ.mjs';
2
- export { preview } from './chunk-XGRIXFBJ.mjs';
1
+ import { init_preview } from './chunk-F7XGHLWN.mjs';
2
+ export { preview } from './chunk-F7XGHLWN.mjs';
3
3
  import './chunk-B5E7QPZP.mjs';
4
4
 
5
5
  init_preview();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vercel/slack-bolt",
3
- "version": "1.2.1",
3
+ "version": "1.2.3",
4
4
  "description": "A Vercel receiver for building Slack apps with Bolt and deploying them to Vercel",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",