@curviate/cli 0.16.0 → 0.17.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/CHANGELOG.md CHANGED
@@ -6,6 +6,31 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
6
6
  Versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html):
7
7
  a new command or flag is a minor; a breaking command/flag/exit-code change is a major; a fix is a patch.
8
8
 
9
+ ## [Unreleased]
10
+
11
+ ## [0.17.0] - 2026-07-17
12
+
13
+ A minor release adding the `company follow-invite` and `company invitable-followers`
14
+ commands. No breaking changes, built against `@curviate/sdk` 0.17.0.
15
+
16
+ ### Added
17
+
18
+ - **`company follow-invite <id> --invitee <AC…> [--invitee <AC…> ...]`** (write, admin-gated,
19
+ `--preview` accepted). Invites the connected account's 1st-degree connections to follow an
20
+ administered company page. `--invitee` is repeatable, at least one required, max 50 per
21
+ request. All-or-nothing: for an all-valid request you get one outcome per requested invitee,
22
+ in request order (`status: "invited" | "already_invited" | "ineligible" | "not_found"`); if
23
+ any invitee id is invalid the whole request rejects with a 404, not a partial result.
24
+ Re-inviting an already-invited member is a safe no-op, the same `invitation_id`, never a
25
+ duplicate. `<id>`
26
+ accepts a URL, slug, or numeric id, resolved to the numeric provider_id first (including
27
+ under `--preview`, so the preview renders the actual request that would be sent).
28
+ - **`company invitable-followers <id> [--limit] [--cursor] [--all]`** (paginated read). Lists
29
+ the connections eligible to be invited to follow a company page you administer, the read
30
+ that seeds `company follow-invite`. Items carry no name or headline; hydrate a candidate via
31
+ `profile <id>` first. `invite_token` is always re-encoded as base64 in CLI output (the raw
32
+ value can carry bytes unsafe to print in a terminal), in every output mode.
33
+
9
34
  ## [0.16.0] - 2026-07-17
10
35
 
11
36
  A minor release adding the `inboxes` command group. No breaking changes,
@@ -8,18 +8,18 @@ import {
8
8
  import {
9
9
  AUTH_NEEDED
10
10
  } from "./chunk-M6UDWFHX.js";
11
- import {
12
- buildPreviewOutput
13
- } from "./chunk-R3VLWLVV.js";
14
11
  import {
15
12
  slimAccountGet,
16
13
  slimAccountList,
17
14
  slimAccountListItem
18
- } from "./chunk-45KHSWCV.js";
15
+ } from "./chunk-ROULHEFW.js";
19
16
  import {
20
17
  pageDelayFromFlags,
21
18
  streamAll
22
19
  } from "./chunk-EEMJDJ4W.js";
20
+ import {
21
+ buildPreviewOutput
22
+ } from "./chunk-R3VLWLVV.js";
23
23
  import {
24
24
  createClient,
25
25
  renderError,
@@ -255,6 +255,32 @@ function slimCompany(data) {
255
255
  follower_count: d["follower_count"] ?? null
256
256
  };
257
257
  }
258
+ function encodeInviteToken(token) {
259
+ if (typeof token !== "string" || token.length === 0) return token;
260
+ return Buffer.from(token, "utf8").toString("base64");
261
+ }
262
+ function reencodeInviteTokenItem(item) {
263
+ if (!("invite_token" in item)) return item;
264
+ return { ...item, invite_token: encodeInviteToken(item["invite_token"]) };
265
+ }
266
+ function reencodeInvitableFollowers(data) {
267
+ const d = data !== null && data !== void 0 && typeof data === "object" ? data : {};
268
+ const items = Array.isArray(d["items"]) ? d["items"].map(reencodeInviteTokenItem) : [];
269
+ return { ...d, items };
270
+ }
271
+ function slimCompanyInvitableFollowerItem(item) {
272
+ return {
273
+ object: item["object"] ?? null,
274
+ id: item["id"] ?? null,
275
+ profile_urn: item["profile_urn"] ?? null,
276
+ invite_token: item["invite_token"] ?? null
277
+ };
278
+ }
279
+ function slimCompanyInvitableFollowers(data) {
280
+ const d = data !== null && data !== void 0 && typeof data === "object" ? data : {};
281
+ const items = Array.isArray(d["items"]) ? d["items"].map(slimCompanyInvitableFollowerItem) : [];
282
+ return { ...d, items };
283
+ }
258
284
 
259
285
  export {
260
286
  slimProfileMe,
@@ -275,5 +301,8 @@ export {
275
301
  slimAccountList,
276
302
  slimAccountGet,
277
303
  slimJob,
278
- slimCompany
304
+ slimCompany,
305
+ reencodeInviteTokenItem,
306
+ reencodeInvitableFollowers,
307
+ slimCompanyInvitableFollowers
279
308
  };
package/dist/cli.js CHANGED
@@ -255,20 +255,20 @@ var main = defineCommand({
255
255
  // ---------------------------------------------------------------------------
256
256
  // Noun groups — lazy-loaded on first invocation.
257
257
  // ---------------------------------------------------------------------------
258
- profile: () => import("./profile-JUTGTPES.js").then((m) => m.profileCommand),
259
- company: () => import("./company-XU7TZ66L.js").then((m) => m.companyCommand),
260
- job: () => import("./job-QLSGNDGW.js").then((m) => m.jobCommand),
261
- connect: () => import("./connect-7OWBNGHU.js").then((m) => m.connectCommand),
262
- search: () => import("./search-5U5U5MTT.js").then((m) => m.searchCommand),
263
- inbox: () => import("./inbox-VVRQ7SOX.js").then((m) => m.inboxCommand),
258
+ profile: () => import("./profile-MLSIFVDJ.js").then((m) => m.profileCommand),
259
+ company: () => import("./company-CU3BEHRW.js").then((m) => m.companyCommand),
260
+ job: () => import("./job-6GEPEDLS.js").then((m) => m.jobCommand),
261
+ connect: () => import("./connect-DO3J5OUV.js").then((m) => m.connectCommand),
262
+ search: () => import("./search-ZQUKLQ6T.js").then((m) => m.searchCommand),
263
+ inbox: () => import("./inbox-RZOMPFDA.js").then((m) => m.inboxCommand),
264
264
  inboxes: () => import("./inboxes-MTPWLP5F.js").then((m) => m.inboxesCommand),
265
- message: () => import("./message-IKKOI6CZ.js").then((m) => m.messageCommand),
266
- post: () => import("./post-DH4RDYKZ.js").then((m) => m.postCommand),
267
- comment: () => import("./comment-COJY6HQP.js").then((m) => m.commentCommand),
268
- account: () => import("./account-ZDIZAXVI.js").then((m) => m.accountCommand),
269
- webhook: () => import("./webhook-UWIOVWVV.js").then((m) => m.webhookCommand),
270
- "sales-nav": () => import("./sales-nav-NUCYJ4S3.js").then((m) => m.salesNavCommand),
271
- recruiter: () => import("./recruiter-WEZZVZN3.js").then((m) => m.recruiterCommand)
265
+ message: () => import("./message-KOSPK33G.js").then((m) => m.messageCommand),
266
+ post: () => import("./post-TSOE327K.js").then((m) => m.postCommand),
267
+ comment: () => import("./comment-56VBPLGW.js").then((m) => m.commentCommand),
268
+ account: () => import("./account-VDKORNPQ.js").then((m) => m.accountCommand),
269
+ webhook: () => import("./webhook-QFSZN3P2.js").then((m) => m.webhookCommand),
270
+ "sales-nav": () => import("./sales-nav-GD5WQCJI.js").then((m) => m.salesNavCommand),
271
+ recruiter: () => import("./recruiter-OWEQIFYG.js").then((m) => m.recruiterCommand)
272
272
  },
273
273
  async run() {
274
274
  const { runMain } = await import("citty");
@@ -3,15 +3,21 @@ import {
3
3
  resolveIdentifier
4
4
  } from "./chunk-DMQZEPQE.js";
5
5
  import {
6
+ reencodeInvitableFollowers,
7
+ reencodeInviteTokenItem,
6
8
  slimCompany,
9
+ slimCompanyInvitableFollowers,
7
10
  slimSearchJobs,
8
11
  slimSearchPeople,
9
12
  slimSearchPosts
10
- } from "./chunk-45KHSWCV.js";
13
+ } from "./chunk-ROULHEFW.js";
11
14
  import {
12
15
  pageDelayFromFlags,
13
16
  streamAll
14
17
  } from "./chunk-EEMJDJ4W.js";
18
+ import {
19
+ buildPreviewOutput
20
+ } from "./chunk-R3VLWLVV.js";
15
21
  import {
16
22
  createClient,
17
23
  renderError,
@@ -20,7 +26,8 @@ import {
20
26
  resolveEffectiveConfig
21
27
  } from "./chunk-M33MI53G.js";
22
28
  import {
23
- GLOBAL_FLAGS
29
+ GLOBAL_FLAGS,
30
+ WRITE_FLAGS
24
31
  } from "./chunk-TMU3CSPR.js";
25
32
 
26
33
  // src/commands/company.ts
@@ -52,6 +59,10 @@ function resolveOutputOpts(flags) {
52
59
  verbose: flags.verbose ?? false
53
60
  };
54
61
  }
62
+ function normalizeInviteeIds(invitee) {
63
+ if (!invitee) return [];
64
+ return Array.isArray(invitee) ? invitee : [invitee];
65
+ }
55
66
  async function resolveCompanyId(ns, raw) {
56
67
  const normalized = resolveIdentifier(raw);
57
68
  if (/^\d+$/.test(normalized)) return normalized;
@@ -176,6 +187,64 @@ async function runCompanyJobs(client, flags, out) {
176
187
  await handleSdkError(err, outOpts, out);
177
188
  }
178
189
  }
190
+ async function runCompanyInvitableFollowers(client, flags, out) {
191
+ rejectPreviewOnRead(flags.preview, out);
192
+ const accountId = requireAccount(flags.account, out);
193
+ const ns = client.account(accountId);
194
+ const outOpts = resolveOutputOpts(flags);
195
+ const params = {};
196
+ if (flags.limit) params["limit"] = parseInt(flags.limit, 10);
197
+ if (flags.cursor) params["cursor"] = flags.cursor;
198
+ try {
199
+ const identifier = await resolveCompanyId(ns, flags.id ?? "");
200
+ if (flags.all) {
201
+ const maxPages = flags["max-pages"] ? parseInt(flags["max-pages"], 10) : 100;
202
+ const fn = (p) => ns.companies.invitableFollowers(identifier, p);
203
+ for await (const item of streamAll(fn, params, {
204
+ maxPages,
205
+ out,
206
+ pageDelayMs: pageDelayFromFlags(flags)
207
+ })) {
208
+ out.stdout.write(JSON.stringify(reencodeInviteTokenItem(item)) + "\n");
209
+ }
210
+ return;
211
+ }
212
+ const result = await ns.companies.invitableFollowers(identifier, params);
213
+ const safeResult = reencodeInvitableFollowers(result);
214
+ renderSuccess(safeResult, { ...outOpts, slim: slimCompanyInvitableFollowers }, out);
215
+ } catch (err) {
216
+ await handleSdkError(err, outOpts, out);
217
+ }
218
+ }
219
+ async function runCompanyFollowInvite(client, flags, out) {
220
+ const accountId = requireAccount(flags.account, out);
221
+ const ns = client.account(accountId);
222
+ const outOpts = resolveOutputOpts(flags);
223
+ const inviteeIds = normalizeInviteeIds(flags.invitee);
224
+ if (inviteeIds.length === 0) {
225
+ out.stderr.write("error: at least one --invitee is required.\n");
226
+ process.exit(2);
227
+ return;
228
+ }
229
+ try {
230
+ const identifier = await resolveCompanyId(ns, flags.id ?? "");
231
+ const body = { invitee_ids: inviteeIds };
232
+ if (flags.preview) {
233
+ const preview = buildPreviewOutput({
234
+ method: "companies.followInvite",
235
+ args: { identifier },
236
+ body,
237
+ account: accountId
238
+ });
239
+ out.stdout.write(JSON.stringify(preview) + "\n");
240
+ return;
241
+ }
242
+ const result = await ns.companies.followInvite(identifier, body);
243
+ renderSuccess(result, outOpts, out);
244
+ } catch (err) {
245
+ await handleSdkError(err, outOpts, out);
246
+ }
247
+ }
179
248
  var companyEmployeesCommand = defineCommand({
180
249
  meta: { name: "employees", description: "List people who currently work at the company." },
181
250
  args: {
@@ -251,6 +320,64 @@ var companyJobsCommand = defineCommand({
251
320
  await runCompanyJobs(client, { ...flags, account: flags.account ?? cfg.account }, out);
252
321
  }
253
322
  });
323
+ var companyInvitableFollowersCommand = defineCommand({
324
+ meta: {
325
+ name: "invitable-followers",
326
+ description: "List the account's 1st-degree connections who are eligible to be invited to follow the company page. This is the read that seeds `company follow-invite`. Items carry no name or headline (a wire limitation), so hydrate a candidate via `profile <id>` before deciding who to invite. `invite_token` is always returned as base64 (the raw value can carry binary bytes unsafe to print)."
327
+ },
328
+ args: {
329
+ ...GLOBAL_FLAGS,
330
+ id: { type: "positional", description: "Company identifier (URL, slug, or numeric id), resolved to the numeric id first." }
331
+ },
332
+ async run({ args }) {
333
+ const flags = args;
334
+ const cfg = await resolveEffectiveConfig({
335
+ apiKey: flags["api-key"],
336
+ baseUrl: flags["base-url"],
337
+ timeout: flags.timeout,
338
+ account: flags.account,
339
+ profile: flags.profile
340
+ });
341
+ if (!cfg.apiKey) {
342
+ process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
343
+ process.exit(3);
344
+ }
345
+ const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });
346
+ const out = buildOutputStreams();
347
+ await runCompanyInvitableFollowers(client, { ...flags, account: flags.account ?? cfg.account }, out);
348
+ }
349
+ });
350
+ var companyFollowInviteCommand = defineCommand({
351
+ meta: {
352
+ name: "follow-invite",
353
+ description: "Invite the account's 1st-degree connections to follow the administered company page. Write, admin-gated (the account must administer the page with invite rights). Pass the AC\u2026 member ids from `company invitable-followers`, one --invitee per invitee. All-or-nothing: for an all-valid request you get one outcome per invitee, in request order (invited/already_invited/ineligible/not_found); if any invitee id is invalid the whole request rejects with a 404, not a partial result. Re-inviting an already-invited member is a safe no-op (the same invitation id, never a duplicate)."
354
+ },
355
+ args: {
356
+ ...WRITE_FLAGS,
357
+ id: { type: "positional", description: "Company identifier (URL, slug, or numeric id), resolved to the numeric id first, including under --preview." },
358
+ invitee: {
359
+ type: "string",
360
+ description: "AC\u2026 member id to invite (from `company invitable-followers`). Repeatable, at least one required, max 50 per request."
361
+ }
362
+ },
363
+ async run({ args }) {
364
+ const flags = args;
365
+ const cfg = await resolveEffectiveConfig({
366
+ apiKey: flags["api-key"],
367
+ baseUrl: flags["base-url"],
368
+ timeout: flags.timeout,
369
+ account: flags.account,
370
+ profile: flags.profile
371
+ });
372
+ if (!cfg.apiKey) {
373
+ process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
374
+ process.exit(3);
375
+ }
376
+ const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });
377
+ const out = buildOutputStreams();
378
+ await runCompanyFollowInvite(client, { ...flags, account: flags.account ?? cfg.account }, out);
379
+ }
380
+ });
254
381
  var companyCommand = defineCommand({
255
382
  meta: { name: "company", description: "Fetch a company profile by URL, slug, or numeric id, and its sub-resources." },
256
383
  args: {
@@ -261,7 +388,9 @@ var companyCommand = defineCommand({
261
388
  subCommands: {
262
389
  employees: companyEmployeesCommand,
263
390
  posts: companyPostsCommand,
264
- jobs: companyJobsCommand
391
+ jobs: companyJobsCommand,
392
+ "invitable-followers": companyInvitableFollowersCommand,
393
+ "follow-invite": companyFollowInviteCommand
265
394
  },
266
395
  async run({ args }) {
267
396
  const flags = args;
@@ -284,7 +413,9 @@ var companyCommand = defineCommand({
284
413
  export {
285
414
  companyCommand,
286
415
  runCompanyEmployees,
416
+ runCompanyFollowInvite,
287
417
  runCompanyGet,
418
+ runCompanyInvitableFollowers,
288
419
  runCompanyJobs,
289
420
  runCompanyPosts
290
421
  };
@@ -1,7 +1,4 @@
1
1
  #!/usr/bin/env node
2
- import {
3
- buildPreviewOutput
4
- } from "./chunk-R3VLWLVV.js";
5
2
  import {
6
3
  resolveIdentifier
7
4
  } from "./chunk-DMQZEPQE.js";
@@ -10,11 +7,14 @@ import {
10
7
  slimInviteReceivedItem,
11
8
  slimInviteSent,
12
9
  slimInviteSentItem
13
- } from "./chunk-45KHSWCV.js";
10
+ } from "./chunk-ROULHEFW.js";
14
11
  import {
15
12
  pageDelayFromFlags,
16
13
  streamAll
17
14
  } from "./chunk-EEMJDJ4W.js";
15
+ import {
16
+ buildPreviewOutput
17
+ } from "./chunk-R3VLWLVV.js";
18
18
  import {
19
19
  createClient,
20
20
  renderError,
@@ -3,21 +3,21 @@ import {
3
3
  BinaryOutputError,
4
4
  writeBinaryOutput
5
5
  } from "./chunk-UWO2D4HW.js";
6
- import {
7
- buildPreviewOutput
8
- } from "./chunk-R3VLWLVV.js";
9
6
  import {
10
7
  resolveJobIdentifier
11
8
  } from "./chunk-DMQZEPQE.js";
12
9
  import {
13
10
  slimJob
14
- } from "./chunk-45KHSWCV.js";
11
+ } from "./chunk-ROULHEFW.js";
15
12
  import {
16
13
  DEFAULT_PAGE_DELAY_MS,
17
14
  ndjsonModeNotice,
18
15
  pageDelayFromFlags,
19
16
  streamAll
20
17
  } from "./chunk-EEMJDJ4W.js";
18
+ import {
19
+ buildPreviewOutput
20
+ } from "./chunk-R3VLWLVV.js";
21
21
  import {
22
22
  createClient,
23
23
  renderError,
@@ -8,20 +8,20 @@ import {
8
8
  readAttachment,
9
9
  toAttachmentPayload
10
10
  } from "./chunk-BGZW6B7G.js";
11
- import {
12
- buildPreviewOutput
13
- } from "./chunk-R3VLWLVV.js";
14
11
  import {
15
12
  resolveIdentifier
16
13
  } from "./chunk-DMQZEPQE.js";
17
14
  import {
18
15
  slimProfile,
19
16
  slimProfileMe
20
- } from "./chunk-45KHSWCV.js";
17
+ } from "./chunk-ROULHEFW.js";
21
18
  import {
22
19
  pageDelayFromFlags,
23
20
  streamAll
24
21
  } from "./chunk-EEMJDJ4W.js";
22
+ import {
23
+ buildPreviewOutput
24
+ } from "./chunk-R3VLWLVV.js";
25
25
  import {
26
26
  createClient,
27
27
  renderError,
@@ -13,20 +13,20 @@ import {
13
13
  BinaryOutputError,
14
14
  writeBinaryOutput
15
15
  } from "./chunk-UWO2D4HW.js";
16
- import {
17
- buildPreviewOutput
18
- } from "./chunk-R3VLWLVV.js";
19
16
  import {
20
17
  resolveIdentifier,
21
18
  resolveJobIdentifier
22
19
  } from "./chunk-DMQZEPQE.js";
23
20
  import {
24
21
  slimJob
25
- } from "./chunk-45KHSWCV.js";
22
+ } from "./chunk-ROULHEFW.js";
26
23
  import {
27
24
  pageDelayFromFlags,
28
25
  streamAll
29
26
  } from "./chunk-EEMJDJ4W.js";
27
+ import {
28
+ buildPreviewOutput
29
+ } from "./chunk-R3VLWLVV.js";
30
30
  import {
31
31
  createClient,
32
32
  renderError,
@@ -14,7 +14,7 @@ import {
14
14
  slimSearchPeopleItem,
15
15
  slimSearchPosts,
16
16
  slimSearchPostsItem
17
- } from "./chunk-45KHSWCV.js";
17
+ } from "./chunk-ROULHEFW.js";
18
18
  import {
19
19
  pageDelayFromFlags,
20
20
  streamAll
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@curviate/cli",
3
- "version": "0.16.0",
3
+ "version": "0.17.0",
4
4
  "private": false,
5
5
  "description": "Official command-line interface for the Curviate API.",
6
6
  "license": "MIT",
@@ -41,7 +41,7 @@
41
41
  "clean": "rm -rf dist *.tsbuildinfo"
42
42
  },
43
43
  "dependencies": {
44
- "@curviate/sdk": "^0.16.0",
44
+ "@curviate/sdk": "^0.17.0",
45
45
  "citty": "^0.1.6",
46
46
  "open": "^10.1.0"
47
47
  },
@@ -11,14 +11,14 @@ import {
11
11
  readAttachment,
12
12
  toAttachmentPayload
13
13
  } from "./chunk-BGZW6B7G.js";
14
- import {
15
- buildPreviewOutput
16
- } from "./chunk-R3VLWLVV.js";
17
14
  import "./chunk-DMQZEPQE.js";
18
15
  import {
19
16
  pageDelayFromFlags,
20
17
  streamAll
21
18
  } from "./chunk-EEMJDJ4W.js";
19
+ import {
20
+ buildPreviewOutput
21
+ } from "./chunk-R3VLWLVV.js";
22
22
  import {
23
23
  createClient,
24
24
  renderError,
@@ -1,7 +1,4 @@
1
1
  #!/usr/bin/env node
2
- import {
3
- buildPreviewOutput
4
- } from "./chunk-R3VLWLVV.js";
5
2
  import {
6
3
  normalizeChatId
7
4
  } from "./chunk-DMQZEPQE.js";
@@ -9,6 +6,9 @@ import {
9
6
  pageDelayFromFlags,
10
7
  streamAll
11
8
  } from "./chunk-EEMJDJ4W.js";
9
+ import {
10
+ buildPreviewOutput
11
+ } from "./chunk-R3VLWLVV.js";
12
12
  import {
13
13
  createClient,
14
14
  renderError,
@@ -11,13 +11,13 @@ import {
11
11
  BinaryOutputError,
12
12
  writeBinaryOutput
13
13
  } from "./chunk-UWO2D4HW.js";
14
- import {
15
- buildPreviewOutput
16
- } from "./chunk-R3VLWLVV.js";
17
14
  import {
18
15
  normalizeChatId,
19
16
  resolveIdentifier
20
17
  } from "./chunk-DMQZEPQE.js";
18
+ import {
19
+ buildPreviewOutput
20
+ } from "./chunk-R3VLWLVV.js";
21
21
  import {
22
22
  createClient,
23
23
  renderError,
@@ -10,14 +10,14 @@ import {
10
10
  readAttachment,
11
11
  toAttachmentPayload
12
12
  } from "./chunk-BGZW6B7G.js";
13
- import {
14
- buildPreviewOutput
15
- } from "./chunk-R3VLWLVV.js";
16
13
  import "./chunk-DMQZEPQE.js";
17
14
  import {
18
15
  pageDelayFromFlags,
19
16
  streamAll
20
17
  } from "./chunk-EEMJDJ4W.js";
18
+ import {
19
+ buildPreviewOutput
20
+ } from "./chunk-R3VLWLVV.js";
21
21
  import {
22
22
  createClient,
23
23
  renderError,
@@ -10,9 +10,6 @@ import {
10
10
  readAttachment,
11
11
  toAttachmentPayload
12
12
  } from "./chunk-BGZW6B7G.js";
13
- import {
14
- buildPreviewOutput
15
- } from "./chunk-R3VLWLVV.js";
16
13
  import {
17
14
  resolveIdentifier
18
15
  } from "./chunk-DMQZEPQE.js";
@@ -20,6 +17,9 @@ import {
20
17
  pageDelayFromFlags,
21
18
  streamAll
22
19
  } from "./chunk-EEMJDJ4W.js";
20
+ import {
21
+ buildPreviewOutput
22
+ } from "./chunk-R3VLWLVV.js";
23
23
  import {
24
24
  createClient,
25
25
  renderError,
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
- import {
3
- buildPreviewOutput
4
- } from "./chunk-R3VLWLVV.js";
5
2
  import {
6
3
  pageDelayFromFlags,
7
4
  streamAll
8
5
  } from "./chunk-EEMJDJ4W.js";
6
+ import {
7
+ buildPreviewOutput
8
+ } from "./chunk-R3VLWLVV.js";
9
9
  import {
10
10
  createClient,
11
11
  renderError,