@vercel/slack-bolt 1.3.1 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  'use strict';
3
3
 
4
- var chunkVI33CCYY_js = require('./chunk-VI33CCYY.js');
4
+ var chunkDYB6RJG4_js = require('./chunk-DYB6RJG4.js');
5
5
  var chunkQHMZVK6J_js = require('./chunk-QHMZVK6J.js');
6
6
  var zod = require('zod');
7
7
  var fs = require('fs');
@@ -99,12 +99,12 @@ async function cleanupOrphanedApps({
99
99
  teamId,
100
100
  slackConfigurationToken
101
101
  }) {
102
- const activeBranches = await chunkVI33CCYY_js.getActiveBranches({
102
+ const activeBranches = await chunkDYB6RJG4_js.getActiveBranches({
103
103
  projectId,
104
104
  token: vercelApiToken,
105
105
  teamId
106
106
  });
107
- const envs = await chunkVI33CCYY_js.getEnvironmentVariables({
107
+ const envs = await chunkDYB6RJG4_js.getEnvironmentVariables({
108
108
  projectId,
109
109
  token: vercelApiToken,
110
110
  teamId
@@ -116,65 +116,65 @@ async function cleanupOrphanedApps({
116
116
  }
117
117
  }
118
118
  if (staleBranches.size === 0) {
119
- chunkVI33CCYY_js.log.info("No orphaned preview apps found");
119
+ chunkDYB6RJG4_js.log.info("No orphaned preview apps found");
120
120
  return;
121
121
  }
122
- chunkVI33CCYY_js.log.step(
122
+ chunkDYB6RJG4_js.log.step(
123
123
  `Found ${staleBranches.size} orphaned ${staleBranches.size === 1 ? "branch" : "branches"}`
124
124
  );
125
125
  for (const [branch, envId] of staleBranches) {
126
126
  let appId = null;
127
127
  try {
128
- appId = await chunkVI33CCYY_js.getEnvironmentVariable({
128
+ appId = await chunkDYB6RJG4_js.getEnvironmentVariable({
129
129
  projectId,
130
130
  envId,
131
131
  token: vercelApiToken,
132
132
  teamId
133
133
  });
134
134
  } catch {
135
- chunkVI33CCYY_js.log.warning(`Failed to decrypt SLACK_APP_ID for branch ${branch}`);
135
+ chunkDYB6RJG4_js.log.warning(`Failed to decrypt SLACK_APP_ID for branch ${branch}`);
136
136
  }
137
137
  if (appId) {
138
138
  try {
139
- await chunkVI33CCYY_js.deleteSlackApp({
139
+ await chunkDYB6RJG4_js.deleteSlackApp({
140
140
  token: slackConfigurationToken,
141
141
  appId
142
142
  });
143
- chunkVI33CCYY_js.log.info(`${appId} deleted (branch: ${branch})`);
143
+ chunkDYB6RJG4_js.log.info(`${appId} deleted (branch: ${branch})`);
144
144
  } catch (error) {
145
145
  const msg = error instanceof Error ? error.message : String(error);
146
146
  if (msg.includes("app_not_found")) {
147
- chunkVI33CCYY_js.log.info(`${appId} already deleted (branch: ${branch})`);
147
+ chunkDYB6RJG4_js.log.info(`${appId} already deleted (branch: ${branch})`);
148
148
  } else {
149
- chunkVI33CCYY_js.log.warning(`Failed to delete app ${appId}: ${msg}`);
149
+ chunkDYB6RJG4_js.log.warning(`Failed to delete app ${appId}: ${msg}`);
150
150
  }
151
151
  }
152
152
  }
153
153
  for (const env of envs) {
154
154
  if (env.id && env.gitBranch === branch && SLACK_ENV_VAR_KEYS.includes(env.key)) {
155
155
  try {
156
- await chunkVI33CCYY_js.deleteEnvironmentVariable({
156
+ await chunkDYB6RJG4_js.deleteEnvironmentVariable({
157
157
  projectId,
158
158
  envId: env.id,
159
159
  token: vercelApiToken,
160
160
  teamId
161
161
  });
162
162
  } catch (error) {
163
- chunkVI33CCYY_js.log.warning(
163
+ chunkDYB6RJG4_js.log.warning(
164
164
  `Failed to delete env var ${env.key} for branch ${branch}: ${error instanceof Error ? error.message : error}`
165
165
  );
166
166
  }
167
167
  }
168
168
  }
169
169
  }
170
- chunkVI33CCYY_js.log.success("Orphan cleanup completed");
170
+ chunkDYB6RJG4_js.log.success("Orphan cleanup completed");
171
171
  }
172
172
  var SLACK_ENV_VAR_KEYS;
173
173
  var init_cleanup = chunkQHMZVK6J_js.__esm({
174
174
  "src/cleanup.ts"() {
175
- chunkVI33CCYY_js.init_slack();
176
- chunkVI33CCYY_js.init_vercel();
177
- chunkVI33CCYY_js.init_logger();
175
+ chunkDYB6RJG4_js.init_slack();
176
+ chunkDYB6RJG4_js.init_vercel();
177
+ chunkDYB6RJG4_js.init_logger();
178
178
  SLACK_ENV_VAR_KEYS = [
179
179
  "SLACK_APP_ID",
180
180
  "SLACK_CLIENT_ID",
@@ -191,7 +191,7 @@ async function executeBuild(params, options) {
191
191
  );
192
192
  }
193
193
  try {
194
- await chunkVI33CCYY_js.authTest({ token: params.slackConfigurationToken });
194
+ await chunkDYB6RJG4_js.authTest({ token: params.slackConfigurationToken });
195
195
  } catch (error) {
196
196
  if (!params.slackConfigRefreshToken) {
197
197
  throw new Error(
@@ -199,14 +199,14 @@ async function executeBuild(params, options) {
199
199
  { cause: error }
200
200
  );
201
201
  }
202
- chunkVI33CCYY_js.log.step("Refreshing SLACK_CONFIGURATION_TOKEN");
202
+ chunkDYB6RJG4_js.log.step("Refreshing SLACK_CONFIGURATION_TOKEN");
203
203
  try {
204
- const rotated = await chunkVI33CCYY_js.rotateConfigToken({
204
+ const rotated = await chunkDYB6RJG4_js.rotateConfigToken({
205
205
  refreshToken: params.slackConfigRefreshToken
206
206
  });
207
207
  params.slackConfigurationToken = rotated.token;
208
208
  params.slackConfigRefreshToken = rotated.refreshToken;
209
- await chunkVI33CCYY_js.addEnvironmentVariables({
209
+ await chunkDYB6RJG4_js.addEnvironmentVariables({
210
210
  projectId: params.projectId,
211
211
  token: params.vercelApiToken,
212
212
  teamId: params.teamId,
@@ -225,7 +225,7 @@ async function executeBuild(params, options) {
225
225
  }
226
226
  ]
227
227
  });
228
- chunkVI33CCYY_js.log.success("Configuration token rotated and persisted");
228
+ chunkDYB6RJG4_js.log.success("Configuration token rotated and persisted");
229
229
  } catch (rotateError) {
230
230
  throw new Error(
231
231
  "Failed to rotate configuration token \u2014 refresh token may be invalid. Generate new tokens:\nhttps://api.slack.com/apps",
@@ -235,13 +235,13 @@ async function executeBuild(params, options) {
235
235
  }
236
236
  if (params.slackServiceToken) {
237
237
  try {
238
- await chunkVI33CCYY_js.authTest({ token: params.slackServiceToken });
238
+ await chunkDYB6RJG4_js.authTest({ token: params.slackServiceToken });
239
239
  } catch (error) {
240
- chunkVI33CCYY_js.log.warning(
240
+ chunkDYB6RJG4_js.log.warning(
241
241
  "SLACK_SERVICE_TOKEN is invalid \u2014 app must be installed manually"
242
242
  );
243
- chunkVI33CCYY_js.log.info("https://docs.slack.dev/authentication/tokens/#service");
244
- chunkVI33CCYY_js.log.debug(error);
243
+ chunkDYB6RJG4_js.log.info("https://docs.slack.dev/authentication/tokens/#service");
244
+ chunkDYB6RJG4_js.log.debug(error);
245
245
  }
246
246
  }
247
247
  if (!params.branch) {
@@ -250,7 +250,7 @@ async function executeBuild(params, options) {
250
250
  );
251
251
  }
252
252
  try {
253
- await chunkVI33CCYY_js.getProject({
253
+ await chunkDYB6RJG4_js.getProject({
254
254
  projectId: params.projectId,
255
255
  token: params.vercelApiToken,
256
256
  teamId: params.teamId
@@ -269,7 +269,7 @@ https://docs.slack.dev/reference/manifests`
269
269
  );
270
270
  }
271
271
  if (options?.cleanup) {
272
- chunkVI33CCYY_js.log.step("Cleaning up orphaned preview apps");
272
+ chunkDYB6RJG4_js.log.step("Cleaning up orphaned preview apps");
273
273
  try {
274
274
  await cleanupOrphanedApps({
275
275
  projectId: params.projectId,
@@ -279,23 +279,23 @@ https://docs.slack.dev/reference/manifests`
279
279
  slackConfigurationToken: params.slackConfigurationToken
280
280
  });
281
281
  } catch (error) {
282
- chunkVI33CCYY_js.log.warning(
282
+ chunkDYB6RJG4_js.log.warning(
283
283
  `Orphan cleanup failed: ${error instanceof Error ? error.message : error}`
284
284
  );
285
285
  }
286
286
  }
287
- const result = await chunkVI33CCYY_js.preview(params, "cli");
287
+ const result = await chunkDYB6RJG4_js.preview(params, "cli");
288
288
  if (result.isNew && params.deploymentId) {
289
- chunkVI33CCYY_js.log.step("Creating new deployment to pick up new environment variables");
290
- const { id, url } = await chunkVI33CCYY_js.createDeployment({
289
+ chunkDYB6RJG4_js.log.step("Creating new deployment to pick up new environment variables");
290
+ const { id, url } = await chunkDYB6RJG4_js.createDeployment({
291
291
  deploymentId: params.deploymentId,
292
292
  projectId: params.projectId,
293
293
  token: params.vercelApiToken,
294
294
  teamId: params.teamId
295
295
  });
296
- chunkVI33CCYY_js.log.success(`New deployment created: ${url} (${id})`);
297
- chunkVI33CCYY_js.log.step("Cancelling current deployment");
298
- await chunkVI33CCYY_js.cancelDeployment({
296
+ chunkDYB6RJG4_js.log.success(`New deployment created: ${url} (${id})`);
297
+ chunkDYB6RJG4_js.log.step("Cancelling current deployment");
298
+ await chunkDYB6RJG4_js.cancelDeployment({
299
299
  deploymentId: params.deploymentId,
300
300
  token: params.vercelApiToken,
301
301
  teamId: params.teamId
@@ -305,10 +305,10 @@ https://docs.slack.dev/reference/manifests`
305
305
  var init_build = chunkQHMZVK6J_js.__esm({
306
306
  "src/cli/build.ts"() {
307
307
  init_cleanup();
308
- chunkVI33CCYY_js.init_slack();
309
- chunkVI33CCYY_js.init_vercel();
310
- chunkVI33CCYY_js.init_logger();
311
- chunkVI33CCYY_js.init_preview();
308
+ chunkDYB6RJG4_js.init_slack();
309
+ chunkDYB6RJG4_js.init_vercel();
310
+ chunkDYB6RJG4_js.init_logger();
311
+ chunkDYB6RJG4_js.init_preview();
312
312
  }
313
313
  });
314
314
 
@@ -372,12 +372,12 @@ function run(version) {
372
372
  const debug = program.opts().debug === true || process.env.VERCEL_SLACK_DEBUG === "1" || process.env.VERCEL_SLACK_DEBUG === "true";
373
373
  if (debug) {
374
374
  process.env.VERCEL_SLACK_DEBUG = "1";
375
- chunkVI33CCYY_js.enableFetchDebugLogging();
375
+ chunkDYB6RJG4_js.enableFetchDebugLogging();
376
376
  }
377
377
  const cleanup = options.cleanup === true;
378
378
  const env = resolveEnv(options);
379
379
  console.log(
380
- chunkVI33CCYY_js.startMessage(
380
+ chunkDYB6RJG4_js.startMessage(
381
381
  version,
382
382
  env.VERCEL_GIT_COMMIT_REF,
383
383
  env.VERCEL_GIT_COMMIT_SHA,
@@ -389,7 +389,7 @@ function run(version) {
389
389
  const isProd = env.VERCEL_ENV === "production";
390
390
  if (isLocal || isDev || isProd) {
391
391
  const reason = isLocal ? "local" : isDev ? "development" : "production";
392
- chunkVI33CCYY_js.log.info(`Environment: ${reason} (skipped)
392
+ chunkDYB6RJG4_js.log.info(`Environment: ${reason} (skipped)
393
393
  `);
394
394
  return;
395
395
  }
@@ -397,14 +397,14 @@ function run(version) {
397
397
  await executeBuild(params, { cleanup });
398
398
  });
399
399
  program.parseAsync().catch((error) => {
400
- chunkVI33CCYY_js.log.error(error instanceof Error ? error.message : String(error));
400
+ chunkDYB6RJG4_js.log.error(error instanceof Error ? error.message : String(error));
401
401
  console.log();
402
402
  });
403
403
  }
404
404
  var init_cli = chunkQHMZVK6J_js.__esm({
405
405
  "src/cli/index.ts"() {
406
406
  init_schemas();
407
- chunkVI33CCYY_js.init_logger();
407
+ chunkDYB6RJG4_js.init_logger();
408
408
  init_build();
409
409
  init_env();
410
410
  }
@@ -415,7 +415,7 @@ var require_package = chunkQHMZVK6J_js.__commonJS({
415
415
  "package.json"(exports$1, module) {
416
416
  module.exports = {
417
417
  name: "@vercel/slack-bolt",
418
- version: "1.3.1",
418
+ version: "1.4.0",
419
419
  description: "A Vercel receiver for building Slack apps with Bolt and deploying them to Vercel",
420
420
  main: "./dist/index.js",
421
421
  types: "./dist/index.d.ts",
@@ -477,6 +477,7 @@ var require_package = chunkQHMZVK6J_js.__commonJS({
477
477
  license: "MIT",
478
478
  dependencies: {
479
479
  "@slack/logger": "^4.0.0",
480
+ "@slack/oauth": "3.0.5",
480
481
  "@vercel/functions": "^3.4.3",
481
482
  commander: "^14.0.3",
482
483
  yaml: "^2.8.2",
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","rotateConfigToken","addEnvironmentVariables","getProject","path","fs","preview","createDeployment","cancelDeployment","init_preview","Command","enableFetchDebugLogging","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 slackConfigRefreshToken: slackResult.data.SLACK_CONFIG_REFRESH_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, rotateConfigToken } from \"../internal/slack\";\nimport {\n addEnvironmentVariables,\n cancelDeployment,\n createDeployment,\n getProject,\n} from \"../internal/vercel\";\nimport { log } from \"../logger\";\nimport { type PreviewParams, preview } from \"../preview\";\n\nexport async function executeBuild(\n params: PreviewParams,\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 if (!params.slackConfigRefreshToken) {\n throw new Error(\n \"Slack configuration token is invalid or expired. Provide SLACK_CONFIG_REFRESH_TOKEN for automatic rotation, or generate a new token:\\nhttps://api.slack.com/apps\",\n { cause: error },\n );\n }\n\n log.step(\"Refreshing SLACK_CONFIGURATION_TOKEN\");\n try {\n const rotated = await rotateConfigToken({\n refreshToken: params.slackConfigRefreshToken,\n });\n params.slackConfigurationToken = rotated.token;\n params.slackConfigRefreshToken = rotated.refreshToken;\n\n await addEnvironmentVariables({\n projectId: params.projectId,\n token: params.vercelApiToken,\n teamId: params.teamId,\n envs: [\n {\n key: \"SLACK_CONFIGURATION_TOKEN\",\n value: rotated.token,\n type: \"encrypted\",\n target: [\"production\", \"preview\", \"development\"],\n },\n {\n key: \"SLACK_CONFIG_REFRESH_TOKEN\",\n value: rotated.refreshToken,\n type: \"encrypted\",\n target: [\"production\", \"preview\", \"development\"],\n },\n ],\n });\n log.success(\"Configuration token rotated and persisted\");\n } catch (rotateError) {\n throw new Error(\n \"Failed to rotate configuration token — refresh token may be invalid. Generate new tokens:\\nhttps://api.slack.com/apps\",\n { cause: rotateError },\n );\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 log.debug(error);\n }\n }\n\n if (!params.branch) {\n throw new Error(\n \"VERCEL_GIT_COMMIT_REF is not set — connect your Git repository in your Vercel project settings.\\nhttps://vercel.com/docs/git\",\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 (or manifest.yaml) 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 { enableFetchDebugLogging, log, 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 .option(\"--debug\", \"Enable verbose debug logging for all HTTP requests\");\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 debug =\n program.opts().debug === true ||\n process.env.VERCEL_SLACK_DEBUG === \"1\" ||\n process.env.VERCEL_SLACK_DEBUG === \"true\";\n if (debug) {\n process.env.VERCEL_SLACK_DEBUG = \"1\";\n enableFetchDebugLogging();\n }\n\n const cleanup = options.cleanup === true;\n const env = resolveEnv(options as Record<string, string | undefined>);\n\n console.log(\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, { cleanup });\n });\n\n program.parseAsync().catch((error: unknown) => {\n log.error(error instanceof Error ? error.message : String(error));\n console.log();\n });\n}\n","{\n\t\"name\": \"@vercel/slack-bolt\",\n\t\"version\": \"1.3.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\"yaml\": \"^2.8.2\",\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","rotateConfigToken","addEnvironmentVariables","getProject","path","fs","preview","createDeployment","cancelDeployment","init_preview","Command","enableFetchDebugLogging","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 slackConfigRefreshToken: slackResult.data.SLACK_CONFIG_REFRESH_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, rotateConfigToken } from \"../internal/slack\";\nimport {\n addEnvironmentVariables,\n cancelDeployment,\n createDeployment,\n getProject,\n} from \"../internal/vercel\";\nimport { log } from \"../logger\";\nimport { type PreviewParams, preview } from \"../preview\";\n\nexport async function executeBuild(\n params: PreviewParams,\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 if (!params.slackConfigRefreshToken) {\n throw new Error(\n \"Slack configuration token is invalid or expired. Provide SLACK_CONFIG_REFRESH_TOKEN for automatic rotation, or generate a new token:\\nhttps://api.slack.com/apps\",\n { cause: error },\n );\n }\n\n log.step(\"Refreshing SLACK_CONFIGURATION_TOKEN\");\n try {\n const rotated = await rotateConfigToken({\n refreshToken: params.slackConfigRefreshToken,\n });\n params.slackConfigurationToken = rotated.token;\n params.slackConfigRefreshToken = rotated.refreshToken;\n\n await addEnvironmentVariables({\n projectId: params.projectId,\n token: params.vercelApiToken,\n teamId: params.teamId,\n envs: [\n {\n key: \"SLACK_CONFIGURATION_TOKEN\",\n value: rotated.token,\n type: \"encrypted\",\n target: [\"production\", \"preview\", \"development\"],\n },\n {\n key: \"SLACK_CONFIG_REFRESH_TOKEN\",\n value: rotated.refreshToken,\n type: \"encrypted\",\n target: [\"production\", \"preview\", \"development\"],\n },\n ],\n });\n log.success(\"Configuration token rotated and persisted\");\n } catch (rotateError) {\n throw new Error(\n \"Failed to rotate configuration token — refresh token may be invalid. Generate new tokens:\\nhttps://api.slack.com/apps\",\n { cause: rotateError },\n );\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 log.debug(error);\n }\n }\n\n if (!params.branch) {\n throw new Error(\n \"VERCEL_GIT_COMMIT_REF is not set — connect your Git repository in your Vercel project settings.\\nhttps://vercel.com/docs/git\",\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 (or manifest.yaml) 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 { enableFetchDebugLogging, log, 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 .option(\"--debug\", \"Enable verbose debug logging for all HTTP requests\");\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 debug =\n program.opts().debug === true ||\n process.env.VERCEL_SLACK_DEBUG === \"1\" ||\n process.env.VERCEL_SLACK_DEBUG === \"true\";\n if (debug) {\n process.env.VERCEL_SLACK_DEBUG = \"1\";\n enableFetchDebugLogging();\n }\n\n const cleanup = options.cleanup === true;\n const env = resolveEnv(options as Record<string, string | undefined>);\n\n console.log(\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, { cleanup });\n });\n\n program.parseAsync().catch((error: unknown) => {\n log.error(error instanceof Error ? error.message : String(error));\n console.log();\n });\n}\n","{\n\t\"name\": \"@vercel/slack-bolt\",\n\t\"version\": \"1.4.0\",\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\"@slack/oauth\": \"3.0.5\",\n\t\t\"@vercel/functions\": \"^3.4.3\",\n\t\t\"commander\": \"^14.0.3\",\n\t\t\"yaml\": \"^2.8.2\",\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,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { init_slack, init_vercel, init_logger, init_preview, enableFetchDebugLogging, startMessage, log, authTest, rotateConfigToken, addEnvironmentVariables, getProject, preview, createDeployment, cancelDeployment, getActiveBranches, getEnvironmentVariables, getEnvironmentVariable, deleteSlackApp, deleteEnvironmentVariable } from './chunk-F7WJK2MS.mjs';
2
+ import { init_slack, init_vercel, init_logger, init_preview, enableFetchDebugLogging, startMessage, log, authTest, rotateConfigToken, addEnvironmentVariables, getProject, preview, createDeployment, cancelDeployment, getActiveBranches, getEnvironmentVariables, getEnvironmentVariable, deleteSlackApp, deleteEnvironmentVariable } from './chunk-LARZABX3.mjs';
3
3
  import { __esm, __commonJS } from './chunk-B5E7QPZP.mjs';
4
4
  import { z } from 'zod';
5
5
  import fs from 'fs';
@@ -408,7 +408,7 @@ var require_package = __commonJS({
408
408
  "package.json"(exports$1, module) {
409
409
  module.exports = {
410
410
  name: "@vercel/slack-bolt",
411
- version: "1.3.1",
411
+ version: "1.4.0",
412
412
  description: "A Vercel receiver for building Slack apps with Bolt and deploying them to Vercel",
413
413
  main: "./dist/index.js",
414
414
  types: "./dist/index.d.ts",
@@ -470,6 +470,7 @@ var require_package = __commonJS({
470
470
  license: "MIT",
471
471
  dependencies: {
472
472
  "@slack/logger": "^4.0.0",
473
+ "@slack/oauth": "3.0.5",
473
474
  "@vercel/functions": "^3.4.3",
474
475
  commander: "^14.0.3",
475
476
  yaml: "^2.8.2",
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 slackConfigRefreshToken: slackResult.data.SLACK_CONFIG_REFRESH_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, rotateConfigToken } from \"../internal/slack\";\nimport {\n addEnvironmentVariables,\n cancelDeployment,\n createDeployment,\n getProject,\n} from \"../internal/vercel\";\nimport { log } from \"../logger\";\nimport { type PreviewParams, preview } from \"../preview\";\n\nexport async function executeBuild(\n params: PreviewParams,\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 if (!params.slackConfigRefreshToken) {\n throw new Error(\n \"Slack configuration token is invalid or expired. Provide SLACK_CONFIG_REFRESH_TOKEN for automatic rotation, or generate a new token:\\nhttps://api.slack.com/apps\",\n { cause: error },\n );\n }\n\n log.step(\"Refreshing SLACK_CONFIGURATION_TOKEN\");\n try {\n const rotated = await rotateConfigToken({\n refreshToken: params.slackConfigRefreshToken,\n });\n params.slackConfigurationToken = rotated.token;\n params.slackConfigRefreshToken = rotated.refreshToken;\n\n await addEnvironmentVariables({\n projectId: params.projectId,\n token: params.vercelApiToken,\n teamId: params.teamId,\n envs: [\n {\n key: \"SLACK_CONFIGURATION_TOKEN\",\n value: rotated.token,\n type: \"encrypted\",\n target: [\"production\", \"preview\", \"development\"],\n },\n {\n key: \"SLACK_CONFIG_REFRESH_TOKEN\",\n value: rotated.refreshToken,\n type: \"encrypted\",\n target: [\"production\", \"preview\", \"development\"],\n },\n ],\n });\n log.success(\"Configuration token rotated and persisted\");\n } catch (rotateError) {\n throw new Error(\n \"Failed to rotate configuration token — refresh token may be invalid. Generate new tokens:\\nhttps://api.slack.com/apps\",\n { cause: rotateError },\n );\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 log.debug(error);\n }\n }\n\n if (!params.branch) {\n throw new Error(\n \"VERCEL_GIT_COMMIT_REF is not set — connect your Git repository in your Vercel project settings.\\nhttps://vercel.com/docs/git\",\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 (or manifest.yaml) 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 { enableFetchDebugLogging, log, 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 .option(\"--debug\", \"Enable verbose debug logging for all HTTP requests\");\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 debug =\n program.opts().debug === true ||\n process.env.VERCEL_SLACK_DEBUG === \"1\" ||\n process.env.VERCEL_SLACK_DEBUG === \"true\";\n if (debug) {\n process.env.VERCEL_SLACK_DEBUG = \"1\";\n enableFetchDebugLogging();\n }\n\n const cleanup = options.cleanup === true;\n const env = resolveEnv(options as Record<string, string | undefined>);\n\n console.log(\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, { cleanup });\n });\n\n program.parseAsync().catch((error: unknown) => {\n log.error(error instanceof Error ? error.message : String(error));\n console.log();\n });\n}\n","{\n\t\"name\": \"@vercel/slack-bolt\",\n\t\"version\": \"1.3.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\"yaml\": \"^2.8.2\",\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 slackConfigRefreshToken: slackResult.data.SLACK_CONFIG_REFRESH_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, rotateConfigToken } from \"../internal/slack\";\nimport {\n addEnvironmentVariables,\n cancelDeployment,\n createDeployment,\n getProject,\n} from \"../internal/vercel\";\nimport { log } from \"../logger\";\nimport { type PreviewParams, preview } from \"../preview\";\n\nexport async function executeBuild(\n params: PreviewParams,\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 if (!params.slackConfigRefreshToken) {\n throw new Error(\n \"Slack configuration token is invalid or expired. Provide SLACK_CONFIG_REFRESH_TOKEN for automatic rotation, or generate a new token:\\nhttps://api.slack.com/apps\",\n { cause: error },\n );\n }\n\n log.step(\"Refreshing SLACK_CONFIGURATION_TOKEN\");\n try {\n const rotated = await rotateConfigToken({\n refreshToken: params.slackConfigRefreshToken,\n });\n params.slackConfigurationToken = rotated.token;\n params.slackConfigRefreshToken = rotated.refreshToken;\n\n await addEnvironmentVariables({\n projectId: params.projectId,\n token: params.vercelApiToken,\n teamId: params.teamId,\n envs: [\n {\n key: \"SLACK_CONFIGURATION_TOKEN\",\n value: rotated.token,\n type: \"encrypted\",\n target: [\"production\", \"preview\", \"development\"],\n },\n {\n key: \"SLACK_CONFIG_REFRESH_TOKEN\",\n value: rotated.refreshToken,\n type: \"encrypted\",\n target: [\"production\", \"preview\", \"development\"],\n },\n ],\n });\n log.success(\"Configuration token rotated and persisted\");\n } catch (rotateError) {\n throw new Error(\n \"Failed to rotate configuration token — refresh token may be invalid. Generate new tokens:\\nhttps://api.slack.com/apps\",\n { cause: rotateError },\n );\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 log.debug(error);\n }\n }\n\n if (!params.branch) {\n throw new Error(\n \"VERCEL_GIT_COMMIT_REF is not set — connect your Git repository in your Vercel project settings.\\nhttps://vercel.com/docs/git\",\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 (or manifest.yaml) 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 { enableFetchDebugLogging, log, 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 .option(\"--debug\", \"Enable verbose debug logging for all HTTP requests\");\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 debug =\n program.opts().debug === true ||\n process.env.VERCEL_SLACK_DEBUG === \"1\" ||\n process.env.VERCEL_SLACK_DEBUG === \"true\";\n if (debug) {\n process.env.VERCEL_SLACK_DEBUG = \"1\";\n enableFetchDebugLogging();\n }\n\n const cleanup = options.cleanup === true;\n const env = resolveEnv(options as Record<string, string | undefined>);\n\n console.log(\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, { cleanup });\n });\n\n program.parseAsync().catch((error: unknown) => {\n log.error(error instanceof Error ? error.message : String(error));\n console.log();\n });\n}\n","{\n\t\"name\": \"@vercel/slack-bolt\",\n\t\"version\": \"1.4.0\",\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\"@slack/oauth\": \"3.0.5\",\n\t\t\"@vercel/functions\": \"^3.4.3\",\n\t\t\"commander\": \"^14.0.3\",\n\t\t\"yaml\": \"^2.8.2\",\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"]}