@vercel/board 0.25.1 → 0.26.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.
Files changed (37) hide show
  1. package/dist/{a2-A830f5NS.mjs → a2-Qzj0kCWU.mjs} +1 -1
  2. package/dist/backend-a2.mjs +1 -1
  3. package/dist/{backend-http-CYtfwqAW.mjs → backend-http-BB0Gld6Q.mjs} +1 -1
  4. package/dist/{backend-http-CJd4Fu0U.mjs → backend-http-F0W6e36G.mjs} +2 -2
  5. package/dist/backend-http.mjs +1 -1
  6. package/dist/backend-http.node.mjs +1 -1
  7. package/dist/{backend-vercel-BhwPExmE.mjs → backend-vercel-CtB46vMQ.mjs} +2 -2
  8. package/dist/{backend-vercel-Bqg2QfTd.mjs → backend-vercel-DUWIcFi9.mjs} +19 -6
  9. package/dist/backend-vercel.mjs +1 -1
  10. package/dist/backend-vercel.node.d.mts +5 -0
  11. package/dist/backend-vercel.node.mjs +2 -2
  12. package/dist/cli-commands.d.mts +1 -1
  13. package/dist/cli-commands.mjs +1 -1
  14. package/dist/cli-embedded.d.mts +5 -1
  15. package/dist/cli-embedded.mjs +8 -4
  16. package/dist/cli.mjs +4 -4
  17. package/dist/{commands-D0wXq6CY.d.mts → commands-D6gvrOh3.d.mts} +4 -4
  18. package/dist/{commands-BtL4jFq8.mjs → commands-nEG47RM_.mjs} +7 -7
  19. package/dist/{exports-DCqgO_mr.mjs → exports-NFjBgIT2.mjs} +1 -1
  20. package/dist/{index.default-BejExznB.mjs → index.default-Boe7x-mK.mjs} +1 -1
  21. package/dist/index.mjs +2 -2
  22. package/dist/index.node.mjs +1 -1
  23. package/dist/inspect/app.js +1 -1
  24. package/dist/{main-DOhNCWMd.mjs → main-BuahKR16.mjs} +19 -9
  25. package/dist/{node-Bkd1x0QI.mjs → node-Ybi9E6bO.mjs} +67 -37
  26. package/dist/{serve-D2O0C6Kk.mjs → serve-BbHEQk_Y.mjs} +3 -3
  27. package/dist/{server-BF4WJ7qi.mjs → server-Bphio_82.mjs} +2 -2
  28. package/dist/{watchers-hash-BHNXy_N7.mjs → watchers-hash-BfDPW95j.mjs} +4 -4
  29. package/docs/01-board/04-messages.md +1 -1
  30. package/docs/01-board/05-reading.md +2 -2
  31. package/docs/01-board/06-watchers.md +3 -3
  32. package/docs/02-sync/01-overview.md +2 -2
  33. package/docs/03-guides/03-ci.md +2 -2
  34. package/docs/03-guides/04-triage.md +5 -5
  35. package/docs/04-reference/01-cli.md +9 -4
  36. package/docs/index.md +2 -2
  37. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  import { n as DIRECT_UPLOAD_BYTES_MAX, r as IMPORT_BYTES_MAX, t as ATTACHMENT_BYTES_MAX } from "./files-SniSmeEr.mjs";
2
2
  import { _ as RemoteWatcherId, b as actorKind, i as Attachment, x as platformAvatar } from "./schemas-Be08nyfW.mjs";
3
3
  import "./external-BV_cUncs.mjs";
4
- import { a as METHODS, d as VERSION, f as SYNC, n as compileWatcher, r as hasCriteria, t as canonicalWatchers } from "./watchers-hash-BHNXy_N7.mjs";
4
+ import { a as METHODS, d as VERSION, f as SYNC, n as compileWatcher, r as hasCriteria, t as canonicalWatchers } from "./watchers-hash-BfDPW95j.mjs";
5
5
  import { r as duration, t as BoardError } from "./client-D0Px7KzF.mjs";
6
6
  import { n as derivedId, r as isKeyIdOf } from "./ids-C6AYo1bu.mjs";
7
7
  import { a as forbidden, c as toErrorResponse, i as duplicateId, r as badRequest, s as notFound, t as HttpError } from "./errors-CusN4x2l.mjs";
@@ -1,2 +1,2 @@
1
- import { n as fsBlob, r as memoryBlob, t as a2 } from "./a2-A830f5NS.mjs";
1
+ import { n as fsBlob, r as memoryBlob, t as a2 } from "./a2-Qzj0kCWU.mjs";
2
2
  export { a2, fsBlob, memoryBlob };
@@ -1,6 +1,6 @@
1
1
  import "./files-SniSmeEr.mjs";
2
2
  import "./schemas-Be08nyfW.mjs";
3
- import { K as routes, O as RegisterBody, a as METHODS, n as compileWatcher, t as canonicalWatchers } from "./watchers-hash-BHNXy_N7.mjs";
3
+ import { K as routes, O as RegisterBody, a as METHODS, n as compileWatcher, t as canonicalWatchers } from "./watchers-hash-BfDPW95j.mjs";
4
4
  import { n as createBoardClient, t as BoardError } from "./client-D0Px7KzF.mjs";
5
5
  import { a as sha256, i as keyId, n as derivedId, t as DERIVED_ID } from "./ids-C6AYo1bu.mjs";
6
6
  import { a as forbidden, o as json, t as HttpError } from "./errors-CusN4x2l.mjs";
@@ -1,5 +1,5 @@
1
- import { r as createHttp } from "./backend-http-CYtfwqAW.mjs";
2
- import { n as connect, r as environmentProfile, t as boardUrl } from "./node-Bkd1x0QI.mjs";
1
+ import { r as createHttp } from "./backend-http-BB0Gld6Q.mjs";
2
+ import { n as connect, r as environmentProfile, t as boardUrl } from "./node-Ybi9E6bO.mjs";
3
3
  //#region src/backend-http/index.ts
4
4
  const environment = {
5
5
  url: boardUrl,
@@ -1,2 +1,2 @@
1
- import { t as http } from "./index.default-BejExznB.mjs";
1
+ import { t as http } from "./index.default-Boe7x-mK.mjs";
2
2
  export { http };
@@ -1,2 +1,2 @@
1
- import { t as http } from "./backend-http-CJd4Fu0U.mjs";
1
+ import { t as http } from "./backend-http-F0W6e36G.mjs";
2
2
  export { http };
@@ -1,8 +1,8 @@
1
1
  import { _ as RemoteWatcherId } from "./schemas-Be08nyfW.mjs";
2
- import { O as RegisterBody, a as METHODS, d as VERSION, n as compileWatcher, t as canonicalWatchers } from "./watchers-hash-BHNXy_N7.mjs";
2
+ import { O as RegisterBody, a as METHODS, d as VERSION, n as compileWatcher, t as canonicalWatchers } from "./watchers-hash-BfDPW95j.mjs";
3
3
  import { a as sha256, n as derivedId } from "./ids-C6AYo1bu.mjs";
4
4
  import { a as forbidden, o as json, s as notFound, t as HttpError } from "./errors-CusN4x2l.mjs";
5
- import { a as wakePath, i as registrant, n as callerProfile, t as PROJECTS_OWN } from "./backend-http-CYtfwqAW.mjs";
5
+ import { a as wakePath, i as registrant, n as callerProfile, t as PROJECTS_OWN } from "./backend-http-BB0Gld6Q.mjs";
6
6
  //#region src/server/backend-vercel.ts
7
7
  const PROFILE = /^[A-Za-z][A-Za-z0-9-]{0,31}$/;
8
8
  const SESSION = /^[A-Za-z0-9_.:-]{1,128}$/;
@@ -1,6 +1,6 @@
1
1
  import { t as HttpError } from "./errors-CusN4x2l.mjs";
2
- import { o as vercelLogin, r as environmentProfile, s as vercelProjectFile } from "./node-Bkd1x0QI.mjs";
3
- import { t as createVercel } from "./backend-vercel-BhwPExmE.mjs";
2
+ import { c as vercelLogin, l as vercelProjectFile, o as loginHanded, r as environmentProfile } from "./node-Ybi9E6bO.mjs";
3
+ import { t as createVercel } from "./backend-vercel-CtB46vMQ.mjs";
4
4
  import { readFile } from "node:fs/promises";
5
5
  import { decodeJwt } from "jose";
6
6
  import { getVercelOidcToken } from "@vercel/oidc";
@@ -9,7 +9,7 @@ import { getVercelOidcToken } from "@vercel/oidc";
9
9
  const deployed = () => process.env.VERCEL === "1" || !!process.env.VERCEL_OIDC_TOKEN;
10
10
  /**
11
11
  * A token Vercel's API takes: `VERCEL_TOKEN`, this deployment's OIDC token, or your Vercel login,
12
- * the one the Vercel CLI hands a CLI it runs (`VERCEL_AUTH_TOKEN`) or your `vercel login`.
12
+ * the one the CLI that runs board's hands it (`vercel board`'s) or your `vercel login`.
13
13
  */
14
14
  async function token() {
15
15
  if (process.env.VERCEL_TOKEN) return process.env.VERCEL_TOKEN;
@@ -25,10 +25,23 @@ async function token() {
25
25
  function credentialSource() {
26
26
  if (process.env.VERCEL_TOKEN) return "VERCEL_TOKEN";
27
27
  if (deployed()) return "Vercel OIDC";
28
- return process.env.VERCEL_AUTH_TOKEN ? "the Vercel CLI" : "vercel login";
28
+ return loginHanded() ? "the Vercel CLI" : "vercel login";
29
29
  }
30
- /** The team: `VERCEL_ORG_ID`, the one the deployment's OIDC token names, or the linked project's (the nearest `.vercel/project.json`). */
30
+ /** The team a CLI that runs board's resolves itself (`vercel board`'s), while one does. */
31
+ let handed = null;
32
+ /**
33
+ * Hands board the team to use when nothing names one (`--scope` still wins), resolved as the app
34
+ * resolves its own and asked for only when a request needs it. Null takes it back.
35
+ */
36
+ function handTeam(resolve) {
37
+ handed = resolve;
38
+ }
39
+ /**
40
+ * The team: the one a CLI that runs board's hands it, `VERCEL_ORG_ID`, the one the deployment's OIDC
41
+ * token names, or the linked project's (the nearest `.vercel/project.json`).
42
+ */
31
43
  async function team() {
44
+ if (handed) return handed();
32
45
  if (process.env.VERCEL_ORG_ID) return process.env.VERCEL_ORG_ID;
33
46
  if (!process.env.VERCEL_TOKEN && deployed()) try {
34
47
  const owner = decodeJwt(await getVercelOidcToken()).owner_id;
@@ -63,4 +76,4 @@ function vercel(options = {}) {
63
76
  return createVercel(options, environment);
64
77
  }
65
78
  //#endregion
66
- export { vercel as n, credentialSource as t };
79
+ export { handTeam as n, vercel as r, credentialSource as t };
@@ -1,4 +1,4 @@
1
- import { t as createVercel } from "./backend-vercel-BhwPExmE.mjs";
1
+ import { t as createVercel } from "./backend-vercel-CtB46vMQ.mjs";
2
2
  //#region src/backend-vercel/index.default.ts
3
3
  /**
4
4
  * Your team's board, in Vercel's API. Outside Node there's no environment to find credentials or
@@ -2,6 +2,11 @@ import { n as VercelOptions, t as VercelBackend } from "./backend-vercel-CIRObA0
2
2
  //#region src/backend-vercel/index.d.ts
3
3
  /** Where `token` comes from, in words: what `vb whoami` says. */
4
4
  export declare function credentialSource(): string;
5
+ /**
6
+ * Hands board the team to use when nothing names one (`--scope` still wins), resolved as the app
7
+ * resolves its own and asked for only when a request needs it. Null takes it back.
8
+ */
9
+ export declare function handTeam(resolve: (() => Promise<string | null>) | null): void;
5
10
  /**
6
11
  * Your team's board, in Vercel's API: this board keeps nothing, and reads and writes that one as
7
12
  * this deployment's project, or as you. Without `board`, the team's board; without `fetch`, it
@@ -1,2 +1,2 @@
1
- import { n as vercel, t as credentialSource } from "./backend-vercel-Bqg2QfTd.mjs";
2
- export { credentialSource, vercel };
1
+ import { n as handTeam, r as vercel, t as credentialSource } from "./backend-vercel-DUWIcFi9.mjs";
2
+ export { credentialSource, handTeam, vercel };
@@ -1,2 +1,2 @@
1
- import { a as OptionName, c as globalOptions, d as options, f as usage, i as CliOption, l as groups, n as CliCommand, o as commands, r as CliExample, s as filters, t as CliArgument, u as option } from "./commands-D0wXq6CY.mjs";
1
+ import { a as OptionName, c as globalOptions, d as options, f as usage, i as CliOption, l as groups, n as CliCommand, o as commands, r as CliExample, s as filters, t as CliArgument, u as option } from "./commands-D6gvrOh3.mjs";
2
2
  export { CliArgument, CliCommand, CliExample, CliOption, OptionName, commands, filters, globalOptions, groups, option, options, usage };
@@ -1,2 +1,2 @@
1
- import { a as option, i as groups, n as filters, o as options, r as globalOptions, s as usage, t as commands } from "./commands-BtL4jFq8.mjs";
1
+ import { a as option, i as groups, n as filters, o as options, r as globalOptions, s as usage, t as commands } from "./commands-nEG47RM_.mjs";
2
2
  export { commands, filters, globalOptions, groups, option, options, usage };
@@ -60,7 +60,9 @@ export declare function commandWord(argv: string[]): string | undefined;
60
60
  *
61
61
  * A failure goes to `onError`, with whether the run asked for `--json`, to show as the app shows
62
62
  * its own, and a warning to `onWarning` (with `--json`, it's in the result). Without them, the CLI
63
- * prints its own on stderr.
63
+ * prints its own on stderr. `login` is the app's Vercel login and `team` the team it resolves
64
+ * (`--scope` still wins): board asks for each only when a request needs it, so help, a typo, or
65
+ * misuse never refreshes a login or looks a team up.
64
66
  */
65
67
  export declare function createApp(options: {
66
68
  appName: string;
@@ -68,6 +70,8 @@ export declare function createApp(options: {
68
70
  json: boolean;
69
71
  }) => void;
70
72
  onWarning?: (warning: Warning) => void;
73
+ login?: () => Promise<string>;
74
+ team?: () => Promise<string | null>;
71
75
  }): {
72
76
  run(args: string[]): Promise<number>;
73
77
  };
@@ -1,4 +1,4 @@
1
- import { a as commandLine, c as failureLines, i as mainWith, l as formatFailure, n as commandWord, o as exitCode, r as main, s as failureDocument, t as Failed } from "./main-DOhNCWMd.mjs";
1
+ import { a as commandLine, c as failureLines, i as mainWith, l as formatFailure, n as commandWord, o as exitCode, r as main, s as failureDocument, t as Failed } from "./main-BuahKR16.mjs";
2
2
  //#region src/cli/embedded.ts
3
3
  /**
4
4
  * Board's CLI as `appName` names it in help, usage, and errors (`vercel board`). With no board
@@ -9,16 +9,20 @@ import { a as commandLine, c as failureLines, i as mainWith, l as formatFailure,
9
9
  *
10
10
  * A failure goes to `onError`, with whether the run asked for `--json`, to show as the app shows
11
11
  * its own, and a warning to `onWarning` (with `--json`, it's in the result). Without them, the CLI
12
- * prints its own on stderr.
12
+ * prints its own on stderr. `login` is the app's Vercel login and `team` the team it resolves
13
+ * (`--scope` still wins): board asks for each only when a request needs it, so help, a typo, or
14
+ * misuse never refreshes a login or looks a team up.
13
15
  */
14
16
  function createApp(options) {
15
- const { appName, onError, onWarning } = options;
17
+ const { appName, onError, onWarning, login, team } = options;
16
18
  return { run: (args) => main(args, {
17
19
  name: appName,
18
20
  commands: {},
19
21
  teamBoard: true,
20
22
  ...onError ? { onError } : {},
21
- ...onWarning ? { onWarning } : {}
23
+ ...onWarning ? { onWarning } : {},
24
+ ...login ? { login } : {},
25
+ ...team ? { team } : {}
22
26
  }) };
23
27
  }
24
28
  const lacking = (what, option) => async () => {
package/dist/cli.mjs CHANGED
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import { t as ATTACHMENT_BYTES_MAX } from "./files-SniSmeEr.mjs";
3
3
  import "./schemas-Be08nyfW.mjs";
4
- import { a as option } from "./commands-BtL4jFq8.mjs";
5
- import { a as projectDir } from "./node-Bkd1x0QI.mjs";
6
- import { r as main, u as who } from "./main-DOhNCWMd.mjs";
4
+ import { a as option } from "./commands-nEG47RM_.mjs";
5
+ import { s as projectDir } from "./node-Ybi9E6bO.mjs";
6
+ import { r as main, u as who } from "./main-BuahKR16.mjs";
7
7
  import { randomBytes, timingSafeEqual } from "node:crypto";
8
8
  import { appendFile, readFile } from "node:fs/promises";
9
9
  import { join } from "node:path";
@@ -661,7 +661,7 @@ const local = {
661
661
  if (args.length > 0) throw usage("serve takes no arguments: pass its port with --port, and its directory with --dir.");
662
662
  const port = portFlag();
663
663
  const root = projectDir();
664
- const { localHandle, serveLocal } = await import("./serve-D2O0C6Kk.mjs");
664
+ const { localHandle, serveLocal } = await import("./serve-BbHEQk_Y.mjs");
665
665
  const handle = flags.handle ?? process.env.BOARD_HANDLE;
666
666
  const local = await serveLocal({
667
667
  dir: flags.dir ?? join(root, ".board"),
@@ -69,7 +69,7 @@ declare const options: {
69
69
  readonly value: 'k[=v|w]';
70
70
  readonly description: "with a label on the message or its thread's root";
71
71
  };
72
- readonly from: {
72
+ readonly source: {
73
73
  readonly type: 'string';
74
74
  readonly value: 'source';
75
75
  readonly description: 'from a source: a sync key such as slack, or board';
@@ -121,7 +121,7 @@ declare const options: {
121
121
  };
122
122
  readonly json: {
123
123
  readonly type: 'boolean';
124
- readonly description: 'one JSON object per line, for programs';
124
+ readonly description: 'JSON, for programs';
125
125
  };
126
126
  readonly help: {
127
127
  readonly type: 'boolean';
@@ -139,10 +139,10 @@ declare const options: {
139
139
  readonly value: 'N';
140
140
  readonly description: 'how many';
141
141
  };
142
- readonly id: {
142
+ readonly 'idempotency-key': {
143
143
  readonly type: 'string';
144
144
  readonly value: 'key';
145
- readonly description: 'a client ID: sending the same one again posts once';
145
+ readonly description: 'sending the same one again posts once';
146
146
  };
147
147
  readonly sync: {
148
148
  readonly type: 'string';
@@ -23,7 +23,7 @@ const options = {
23
23
  value: "k[=v|w]",
24
24
  description: "with a label on the message or its thread's root"
25
25
  },
26
- from: {
26
+ source: {
27
27
  type: "string",
28
28
  value: "source",
29
29
  description: "from a source: a sync key such as slack, or board"
@@ -75,7 +75,7 @@ const options = {
75
75
  },
76
76
  json: {
77
77
  type: "boolean",
78
- description: "one JSON object per line, for programs"
78
+ description: "JSON, for programs"
79
79
  },
80
80
  help: {
81
81
  type: "boolean",
@@ -93,10 +93,10 @@ const options = {
93
93
  value: "N",
94
94
  description: "how many"
95
95
  },
96
- id: {
96
+ "idempotency-key": {
97
97
  type: "string",
98
98
  value: "key",
99
- description: "a client ID: sending the same one again posts once"
99
+ description: "sending the same one again posts once"
100
100
  },
101
101
  sync: {
102
102
  type: "string",
@@ -214,7 +214,7 @@ const option = (name, description, value) => ({
214
214
  const filters = [
215
215
  "re",
216
216
  "by",
217
- "from",
217
+ "source",
218
218
  "label",
219
219
  "text",
220
220
  "mentions",
@@ -369,7 +369,7 @@ const commands = [
369
369
  option("attach"),
370
370
  option("sync"),
371
371
  option("no-sync"),
372
- option("id")
372
+ option("idempotency-key")
373
373
  ],
374
374
  examples: [{
375
375
  name: "start a thread",
@@ -386,7 +386,7 @@ const commands = [
386
386
  arguments: [id("the ID of a message in the thread"), text()],
387
387
  options: [
388
388
  option("attach"),
389
- option("id"),
389
+ option("idempotency-key"),
390
390
  option("no-sync")
391
391
  ],
392
392
  examples: [{
@@ -1,6 +1,6 @@
1
1
  import { t as ATTACHMENT_BYTES_MAX } from "./files-SniSmeEr.mjs";
2
2
  import "./schemas-Be08nyfW.mjs";
3
- import { A as SchedulesQuery, B as SyncReceiptBody, C as MatchesQuery, D as Ref, E as ReactBody, F as SyncBody, G as UploadStartBody, H as SyncUnlinkBody, I as SyncCodeBody, L as SyncCopiesQuery, M as SourceJoinBody, N as SourceReadQuery, O as RegisterBody, P as SyncAccountBody, R as SyncFindQuery, S as LinkedQuery, T as PostBody, U as ThreadsQuery, V as SyncRootsQuery, W as TypingBody, _ as InboxAckBody, a as METHODS, b as InboxQuery, c as queryObject, d as VERSION, f as SYNC, g as IdentityUnlinkBody, h as EventsQuery, j as SignInQuery, k as ScheduleBody, l as readCapped, m as EditBody, o as createRouter, p as AckBody, s as openapi, u as readJson, v as InboxNextQuery, w as MessagesQuery, x as LabelBody, y as InboxPushBody, z as SyncImportBody } from "./watchers-hash-BHNXy_N7.mjs";
3
+ import { A as SchedulesQuery, B as SyncReceiptBody, C as MatchesQuery, D as Ref, E as ReactBody, F as SyncBody, G as UploadStartBody, H as SyncUnlinkBody, I as SyncCodeBody, L as SyncCopiesQuery, M as SourceJoinBody, N as SourceReadQuery, O as RegisterBody, P as SyncAccountBody, R as SyncFindQuery, S as LinkedQuery, T as PostBody, U as ThreadsQuery, V as SyncRootsQuery, W as TypingBody, _ as InboxAckBody, a as METHODS, b as InboxQuery, c as queryObject, d as VERSION, f as SYNC, g as IdentityUnlinkBody, h as EventsQuery, j as SignInQuery, k as ScheduleBody, l as readCapped, m as EditBody, o as createRouter, p as AckBody, s as openapi, u as readJson, v as InboxNextQuery, w as MessagesQuery, x as LabelBody, y as InboxPushBody, z as SyncImportBody } from "./watchers-hash-BfDPW95j.mjs";
4
4
  import { n as createBoardClient, t as BoardError } from "./client-D0Px7KzF.mjs";
5
5
  import { n as derivedId } from "./ids-C6AYo1bu.mjs";
6
6
  import { a as forbidden, c as toErrorResponse, l as unauthorized, n as RejectedError, o as json, r as badRequest, s as notFound, t as HttpError } from "./errors-CusN4x2l.mjs";
@@ -1,4 +1,4 @@
1
- import { r as createHttp } from "./backend-http-CYtfwqAW.mjs";
1
+ import { r as createHttp } from "./backend-http-BB0Gld6Q.mjs";
2
2
  //#region src/backend-http/index.default.ts
3
3
  /**
4
4
  * The board at `url`, which keeps the log. Outside Node there's no environment to find it or a
package/dist/index.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import { r as duration, t as BoardError } from "./client-D0Px7KzF.mjs";
2
2
  import { t as HttpError } from "./errors-CusN4x2l.mjs";
3
- import { t as http } from "./index.default-BejExznB.mjs";
4
- import { t as createBoard } from "./exports-DCqgO_mr.mjs";
3
+ import { t as http } from "./index.default-Boe7x-mK.mjs";
4
+ import { t as createBoard } from "./exports-NFjBgIT2.mjs";
5
5
  import { t as DroppedError } from "./middleware-ChKM1zuu.mjs";
6
6
  //#region src/server/index.default.ts
7
7
  /**
@@ -1,5 +1,5 @@
1
1
  import { r as duration, t as BoardError } from "./client-D0Px7KzF.mjs";
2
2
  import { t as HttpError } from "./errors-CusN4x2l.mjs";
3
3
  import { t as DroppedError } from "./middleware-ChKM1zuu.mjs";
4
- import { t as board } from "./server-BF4WJ7qi.mjs";
4
+ import { t as board } from "./server-Bphio_82.mjs";
5
5
  export { BoardError, DroppedError, HttpError, board, duration };