listbee 0.7.1 → 0.8.1

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 (60) hide show
  1. package/README.md +67 -17
  2. package/dist/cjs/client.d.ts +4 -0
  3. package/dist/cjs/client.js +3 -0
  4. package/dist/cjs/client.js.map +1 -1
  5. package/dist/cjs/deliverable.d.ts +57 -0
  6. package/dist/cjs/deliverable.js +90 -0
  7. package/dist/cjs/deliverable.js.map +1 -0
  8. package/dist/cjs/errors.d.ts +11 -0
  9. package/dist/cjs/errors.js +16 -1
  10. package/dist/cjs/errors.js.map +1 -1
  11. package/dist/cjs/generated/api-types.d.ts +236 -2
  12. package/dist/cjs/generated/enums.d.ts +1 -0
  13. package/dist/cjs/generated/enums.js +1 -0
  14. package/dist/cjs/generated/enums.js.map +1 -1
  15. package/dist/cjs/generated/operations.d.ts +21 -0
  16. package/dist/cjs/generated/operations.js +3 -0
  17. package/dist/cjs/generated/operations.js.map +1 -1
  18. package/dist/cjs/generated/types.d.ts +2 -0
  19. package/dist/cjs/index.d.ts +2 -1
  20. package/dist/cjs/index.js +5 -1
  21. package/dist/cjs/index.js.map +1 -1
  22. package/dist/cjs/resources/listings.d.ts +43 -4
  23. package/dist/cjs/resources/listings.js +77 -3
  24. package/dist/cjs/resources/listings.js.map +1 -1
  25. package/dist/cjs/resources/orders.d.ts +9 -8
  26. package/dist/cjs/resources/orders.js +25 -8
  27. package/dist/cjs/resources/orders.js.map +1 -1
  28. package/dist/cjs/resources/utility.d.ts +15 -0
  29. package/dist/cjs/resources/utility.js +22 -0
  30. package/dist/cjs/resources/utility.js.map +1 -0
  31. package/dist/esm/client.d.ts +4 -0
  32. package/dist/esm/client.js +3 -0
  33. package/dist/esm/client.js.map +1 -1
  34. package/dist/esm/deliverable.d.ts +57 -0
  35. package/dist/esm/deliverable.js +86 -0
  36. package/dist/esm/deliverable.js.map +1 -0
  37. package/dist/esm/errors.d.ts +11 -0
  38. package/dist/esm/errors.js +14 -0
  39. package/dist/esm/errors.js.map +1 -1
  40. package/dist/esm/generated/api-types.d.ts +236 -2
  41. package/dist/esm/generated/enums.d.ts +1 -0
  42. package/dist/esm/generated/enums.js +1 -0
  43. package/dist/esm/generated/enums.js.map +1 -1
  44. package/dist/esm/generated/operations.d.ts +21 -0
  45. package/dist/esm/generated/operations.js +3 -0
  46. package/dist/esm/generated/operations.js.map +1 -1
  47. package/dist/esm/generated/types.d.ts +2 -0
  48. package/dist/esm/index.d.ts +2 -1
  49. package/dist/esm/index.js +3 -1
  50. package/dist/esm/index.js.map +1 -1
  51. package/dist/esm/resources/listings.d.ts +43 -4
  52. package/dist/esm/resources/listings.js +77 -3
  53. package/dist/esm/resources/listings.js.map +1 -1
  54. package/dist/esm/resources/orders.d.ts +9 -8
  55. package/dist/esm/resources/orders.js +25 -8
  56. package/dist/esm/resources/orders.js.map +1 -1
  57. package/dist/esm/resources/utility.d.ts +15 -0
  58. package/dist/esm/resources/utility.js +18 -0
  59. package/dist/esm/resources/utility.js.map +1 -0
  60. package/package.json +1 -1
package/README.md CHANGED
@@ -26,20 +26,17 @@ pnpm add listbee
26
26
  ## Quick start
27
27
 
28
28
  ```typescript
29
- import { ListBee } from 'listbee';
29
+ import { ListBee, Deliverable } from 'listbee';
30
30
 
31
31
  const client = new ListBee({ apiKey: 'lb_...' });
32
32
 
33
- // Create a listing, set a deliverable, publish
34
- const listing = await client.listings.create({
33
+ // Create a listing, attach a deliverable, and publish in one call
34
+ const listing = await client.listings.createComplete({
35
35
  name: 'SEO Playbook',
36
36
  price: 2900, // $29.00 in cents
37
37
  description: 'A comprehensive guide to modern SEO.',
38
- });
39
-
40
- await client.listings.setDeliverables(listing.id, {
41
38
  deliverables: [
42
- { type: 'url', value: 'https://example.com/seo-playbook.pdf' },
39
+ Deliverable.url('https://example.com/seo-playbook.pdf'),
43
40
  ],
44
41
  });
45
42
 
@@ -72,7 +69,7 @@ The key is validated lazily — an `AuthenticationError` is raised only when you
72
69
 
73
70
  | Resource | Methods |
74
71
  |----------|---------|
75
- | `listings` | `create`, `get`, `list`, `update`, `publish`, `setDeliverables`, `removeDeliverables`, `delete` |
72
+ | `listings` | `create`, `get`, `list`, `update`, `publish`, `setDeliverables`, `removeDeliverables`, `addDeliverable`, `removeDeliverable`, `createComplete`, `delete` |
76
73
  | `orders` | `get`, `list`, `deliver`, `ship`, `refund` |
77
74
  | `customers` | `get`, `list` |
78
75
  | `files` | `upload` |
@@ -81,6 +78,7 @@ The key is validated lazily — an `AuthenticationError` is raised only when you
81
78
  | `apiKeys` | `list`, `create`, `delete` |
82
79
  | `signup` | `create`, `verify` |
83
80
  | `stripe` | `connect`, `disconnect` |
81
+ | `utility` | `ping` |
84
82
 
85
83
  ### Listings
86
84
 
@@ -100,9 +98,11 @@ const listing = await client.listings.create({
100
98
  console.log(listing.id); // lst_r7kq2xy9m3pR5tW1
101
99
 
102
100
  // Set deliverables (file, URL, or text)
101
+ import { Deliverable } from 'listbee';
102
+
103
103
  await client.listings.setDeliverables(listing.id, {
104
104
  deliverables: [
105
- { type: 'url', value: 'https://example.com/seo-playbook.pdf' },
105
+ Deliverable.url('https://example.com/seo-playbook.pdf'),
106
106
  ],
107
107
  });
108
108
 
@@ -129,6 +129,26 @@ await client.listings.update('lst_r7kq2xy9m3pR5tW1', { price: 3900 });
129
129
  // Remove deliverables (revert to external fulfillment)
130
130
  await client.listings.removeDeliverables('lst_r7kq2xy9m3pR5tW1');
131
131
 
132
+ // Add a single deliverable using the Deliverable class
133
+ import { Deliverable } from 'listbee';
134
+
135
+ await client.listings.addDeliverable('lst_r7kq2xy9m3pR5tW1', Deliverable.url('https://example.com/playbook.pdf'));
136
+ await client.listings.addDeliverable('lst_r7kq2xy9m3pR5tW1', Deliverable.text('Your license key: XXXX-XXXX'));
137
+ await client.listings.addDeliverable('lst_r7kq2xy9m3pR5tW1', Deliverable.fromToken(file.token));
138
+
139
+ // Remove a single deliverable by del_ ID
140
+ await client.listings.removeDeliverable('lst_r7kq2xy9m3pR5tW1', 'del_4hR9nK2mQ7tV5wX1');
141
+
142
+ // Create a listing and attach deliverables in one call
143
+ const listing = await client.listings.createComplete({
144
+ name: 'SEO Playbook',
145
+ price: 2900,
146
+ deliverables: [
147
+ Deliverable.url('https://example.com/seo-playbook.pdf'),
148
+ ],
149
+ });
150
+ await client.listings.publish(listing.id);
151
+
132
152
  // Delete
133
153
  await client.listings.delete('lst_r7kq2xy9m3pR5tW1');
134
154
  ```
@@ -152,17 +172,19 @@ console.log(order.checkout_data); // custom checkout field values
152
172
  console.log(order.paid_at); // ISO 8601 timestamp
153
173
 
154
174
  // Deliver — push content to the buyer (external fulfillment)
175
+ import { Deliverable } from 'listbee';
176
+
155
177
  const fulfilled = await client.orders.deliver('ord_9xM4kP7nR2qT5wY1', {
156
178
  deliverables: [
157
- { type: 'text', value: 'Your AI-generated report is ready.' },
179
+ Deliverable.text('Your AI-generated report is ready.'),
158
180
  ],
159
181
  });
160
182
  console.log(fulfilled.status); // "fulfilled"
161
183
 
162
- // Or deliver a file or URL
184
+ // Or deliver a URL
163
185
  await client.orders.deliver('ord_9xM4kP7nR2qT5wY1', {
164
186
  deliverables: [
165
- { type: 'url', value: 'https://example.com/report.pdf' },
187
+ Deliverable.url('https://example.com/report.pdf'),
166
188
  ],
167
189
  });
168
190
 
@@ -197,18 +219,19 @@ console.log(customer.email, customer.order_count);
197
219
 
198
220
  ```typescript
199
221
  import { createReadStream } from 'fs';
222
+ import { Deliverable } from 'listbee';
200
223
 
201
224
  // Upload a file (multipart, native FormData)
202
225
  const file = await client.files.upload({
203
226
  file: createReadStream('/path/to/report.pdf'),
204
227
  filename: 'report.pdf',
205
228
  });
206
- console.log(file.id); // use this ID in setDeliverables
229
+ console.log(file.token); // use this token in setDeliverables / Deliverable.fromToken()
207
230
 
208
231
  // Then attach to a listing
209
232
  await client.listings.setDeliverables(listing.id, {
210
233
  deliverables: [
211
- { type: 'file', token: file.id },
234
+ Deliverable.fromToken(file.token),
212
235
  ],
213
236
  });
214
237
  ```
@@ -306,8 +329,24 @@ await client.stripe.disconnect();
306
329
  - **External** — ListBee fires `order.paid` webhook, your app handles delivery. Call `orders.deliver()` to push content back.
307
330
 
308
331
  ```typescript
332
+ import { Deliverable } from 'listbee';
333
+
334
+ // One-shot: create listing + attach deliverables
335
+ const listing = await client.listings.createComplete({
336
+ name: 'SEO Playbook',
337
+ price: 2900,
338
+ deliverables: [
339
+ Deliverable.url('https://example.com/seo-playbook.pdf'),
340
+ ],
341
+ });
342
+ await client.listings.publish(listing.id);
343
+
344
+ // Add or remove individual deliverables after creation
345
+ await client.listings.addDeliverable(listing.id, Deliverable.text('Bonus: license key XXXX-XXXX'));
346
+ await client.listings.removeDeliverable(listing.id, 'del_4hR9nK2mQ7tV5wX1');
347
+
309
348
  // External fulfillment — AI-generated content
310
- const listing = await client.listings.create({
349
+ const external = await client.listings.create({
311
350
  name: 'Custom SEO Report',
312
351
  price: 4900,
313
352
  fulfillment: 'external',
@@ -315,12 +354,12 @@ const listing = await client.listings.create({
315
354
  { type: 'text', key: 'website_url', label: 'Your website URL', required: true },
316
355
  ],
317
356
  });
318
- await client.listings.publish(listing.id);
357
+ await client.listings.publish(external.id);
319
358
 
320
359
  // On order.paid webhook:
321
360
  await client.orders.deliver(order.id, {
322
361
  deliverables: [
323
- { type: 'text', value: generatedReport },
362
+ Deliverable.text(generatedReport),
324
363
  ],
325
364
  });
326
365
  ```
@@ -367,6 +406,15 @@ if (page.has_more) {
367
406
  }
368
407
  ```
369
408
 
409
+ ### Utility
410
+
411
+ Verify API connectivity and that your API key is valid:
412
+
413
+ ```typescript
414
+ const ping = await client.utility.ping();
415
+ console.log(ping.status); // "ok"
416
+ ```
417
+
370
418
  ## Error handling
371
419
 
372
420
  ```
@@ -423,6 +471,8 @@ import {
423
471
  ListBee,
424
472
  CursorPage,
425
473
  ErrorCode,
474
+ Deliverable, // input class: .file() | .url() | .text() | .fromToken()
475
+ PartialCreationError, // thrown when listing is created but deliverable attachment fails
426
476
 
427
477
  // Response types
428
478
  type ListingResponse,
@@ -10,6 +10,7 @@ import { ListingsResource } from './resources/listings';
10
10
  import { OrdersResource } from './resources/orders';
11
11
  import { SignupResource } from './resources/signup';
12
12
  import { StripeResource } from './resources/stripe';
13
+ import { Utility } from './resources/utility';
13
14
  import { WebhooksResource } from './resources/webhooks';
14
15
  export type { ClientOptions };
15
16
  /**
@@ -40,6 +41,7 @@ export declare class ListBee extends BaseClient {
40
41
  private _orders?;
41
42
  private _signup?;
42
43
  private _stripe?;
44
+ private _utility?;
43
45
  private _webhooks?;
44
46
  /** Account resource — get, update, and delete your account. */
45
47
  get account(): AccountResource;
@@ -57,6 +59,8 @@ export declare class ListBee extends BaseClient {
57
59
  get signup(): SignupResource;
58
60
  /** Stripe resource — connect and disconnect Stripe. */
59
61
  get stripe(): StripeResource;
62
+ /** Utility resource — connectivity checks and diagnostics. */
63
+ get utility(): Utility;
60
64
  /** Webhooks resource — create, list, update, delete, list events, retry, test, verify. */
61
65
  get webhooks(): WebhooksResource;
62
66
  }
@@ -13,6 +13,7 @@ const listings_1 = require("./resources/listings");
13
13
  const orders_1 = require("./resources/orders");
14
14
  const signup_1 = require("./resources/signup");
15
15
  const stripe_1 = require("./resources/stripe");
16
+ const utility_1 = require("./resources/utility");
16
17
  const webhooks_1 = require("./resources/webhooks");
17
18
  /**
18
19
  * ListBee API client.
@@ -50,6 +51,8 @@ class ListBee extends base_client_1.BaseClient {
50
51
  get signup() { var _a; return ((_a = this._signup) !== null && _a !== void 0 ? _a : (this._signup = new signup_1.SignupResource(this))); }
51
52
  /** Stripe resource — connect and disconnect Stripe. */
52
53
  get stripe() { var _a; return ((_a = this._stripe) !== null && _a !== void 0 ? _a : (this._stripe = new stripe_1.StripeResource(this))); }
54
+ /** Utility resource — connectivity checks and diagnostics. */
55
+ get utility() { var _a; return ((_a = this._utility) !== null && _a !== void 0 ? _a : (this._utility = new utility_1.Utility(this))); }
53
56
  /** Webhooks resource — create, list, update, delete, list events, retry, test, verify. */
54
57
  get webhooks() { var _a; return ((_a = this._webhooks) !== null && _a !== void 0 ? _a : (this._webhooks = new webhooks_1.WebhooksResource(this))); }
55
58
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,+CAA+D;AAC/D,iDAAsD;AACtD,mDAAuD;AACvD,qDAA0D;AAC1D,6CAAkD;AAClD,mDAAwD;AACxD,+CAAoD;AACpD,+CAAoD;AACpD,+CAAoD;AACpD,mDAAwD;AAIxD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAa,OAAQ,SAAQ,wBAAU;IAWrC,+DAA+D;IAC/D,IAAI,OAAO,aAAsB,OAAO,OAAC,IAAI,CAAC,QAAQ,oCAAb,IAAI,CAAC,QAAQ,GAAK,IAAI,yBAAe,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC,CAAC;IACxF,yDAAyD;IACzD,IAAI,OAAO,aAAsB,OAAO,OAAC,IAAI,CAAC,QAAQ,oCAAb,IAAI,CAAC,QAAQ,GAAK,IAAI,0BAAe,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC,CAAC;IACxF,gDAAgD;IAChD,IAAI,SAAS,aAAwB,OAAO,OAAC,IAAI,CAAC,UAAU,oCAAf,IAAI,CAAC,UAAU,GAAK,IAAI,6BAAiB,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC,CAAC;IAChG,2EAA2E;IAC3E,IAAI,KAAK,aAAoB,OAAO,OAAC,IAAI,CAAC,MAAM,oCAAX,IAAI,CAAC,MAAM,GAAK,IAAI,qBAAa,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC,CAAC;IAChF,sFAAsF;IACtF,IAAI,QAAQ,aAAuB,OAAO,OAAC,IAAI,CAAC,SAAS,oCAAd,IAAI,CAAC,SAAS,GAAK,IAAI,2BAAgB,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC,CAAC;IAC5F,qEAAqE;IACrE,IAAI,MAAM,aAAqB,OAAO,OAAC,IAAI,CAAC,OAAO,oCAAZ,IAAI,CAAC,OAAO,GAAK,IAAI,uBAAc,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC,CAAC;IACpF,yEAAyE;IACzE,IAAI,MAAM,aAAqB,OAAO,OAAC,IAAI,CAAC,OAAO,oCAAZ,IAAI,CAAC,OAAO,GAAK,IAAI,uBAAc,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC,CAAC;IACpF,uDAAuD;IACvD,IAAI,MAAM,aAAqB,OAAO,OAAC,IAAI,CAAC,OAAO,oCAAZ,IAAI,CAAC,OAAO,GAAK,IAAI,uBAAc,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC,CAAC;IACpF,0FAA0F;IAC1F,IAAI,QAAQ,aAAuB,OAAO,OAAC,IAAI,CAAC,SAAS,oCAAd,IAAI,CAAC,SAAS,GAAK,IAAI,2BAAgB,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC,CAAC;CAC7F;AA7BD,0BA6BC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,+CAA+D;AAC/D,iDAAsD;AACtD,mDAAuD;AACvD,qDAA0D;AAC1D,6CAAkD;AAClD,mDAAwD;AACxD,+CAAoD;AACpD,+CAAoD;AACpD,+CAAoD;AACpD,iDAA8C;AAC9C,mDAAwD;AAIxD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAa,OAAQ,SAAQ,wBAAU;IAYrC,+DAA+D;IAC/D,IAAI,OAAO,aAAsB,OAAO,OAAC,IAAI,CAAC,QAAQ,oCAAb,IAAI,CAAC,QAAQ,GAAK,IAAI,yBAAe,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC,CAAC;IACxF,yDAAyD;IACzD,IAAI,OAAO,aAAsB,OAAO,OAAC,IAAI,CAAC,QAAQ,oCAAb,IAAI,CAAC,QAAQ,GAAK,IAAI,0BAAe,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC,CAAC;IACxF,gDAAgD;IAChD,IAAI,SAAS,aAAwB,OAAO,OAAC,IAAI,CAAC,UAAU,oCAAf,IAAI,CAAC,UAAU,GAAK,IAAI,6BAAiB,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC,CAAC;IAChG,2EAA2E;IAC3E,IAAI,KAAK,aAAoB,OAAO,OAAC,IAAI,CAAC,MAAM,oCAAX,IAAI,CAAC,MAAM,GAAK,IAAI,qBAAa,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC,CAAC;IAChF,sFAAsF;IACtF,IAAI,QAAQ,aAAuB,OAAO,OAAC,IAAI,CAAC,SAAS,oCAAd,IAAI,CAAC,SAAS,GAAK,IAAI,2BAAgB,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC,CAAC;IAC5F,qEAAqE;IACrE,IAAI,MAAM,aAAqB,OAAO,OAAC,IAAI,CAAC,OAAO,oCAAZ,IAAI,CAAC,OAAO,GAAK,IAAI,uBAAc,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC,CAAC;IACpF,yEAAyE;IACzE,IAAI,MAAM,aAAqB,OAAO,OAAC,IAAI,CAAC,OAAO,oCAAZ,IAAI,CAAC,OAAO,GAAK,IAAI,uBAAc,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC,CAAC;IACpF,uDAAuD;IACvD,IAAI,MAAM,aAAqB,OAAO,OAAC,IAAI,CAAC,OAAO,oCAAZ,IAAI,CAAC,OAAO,GAAK,IAAI,uBAAc,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC,CAAC;IACpF,8DAA8D;IAC9D,IAAI,OAAO,aAAc,OAAO,OAAC,IAAI,CAAC,QAAQ,oCAAb,IAAI,CAAC,QAAQ,GAAK,IAAI,iBAAO,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC,CAAC;IACxE,0FAA0F;IAC1F,IAAI,QAAQ,aAAuB,OAAO,OAAC,IAAI,CAAC,SAAS,oCAAd,IAAI,CAAC,SAAS,GAAK,IAAI,2BAAgB,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC,CAAC;CAC7F;AAhCD,0BAgCC"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Deliverable input builder — type-safe file handling for SDK methods.
3
+ */
4
+ /// <reference types="node" />
5
+ /// <reference types="node" />
6
+ type FileSource = Buffer | Blob | string;
7
+ /**
8
+ * Input builder for deliverables. Use static factory methods.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * Deliverable.file(Buffer.from('pdf'), 'guide.pdf')
13
+ * Deliverable.fromToken('file_tok_abc')
14
+ * Deliverable.url('https://example.com/secret')
15
+ * Deliverable.text('License key: ABCD-1234')
16
+ * ```
17
+ */
18
+ export declare class Deliverable {
19
+ /** @internal */ readonly _type: 'file' | 'url' | 'text';
20
+ /** @internal */ readonly _fileData?: Buffer | Blob;
21
+ /** @internal */ readonly _filename?: string;
22
+ /** @internal */ readonly _value?: string;
23
+ /** @internal */ readonly _token?: string;
24
+ private constructor();
25
+ /**
26
+ * Create a file deliverable from a Buffer, Blob, or file path.
27
+ *
28
+ * @param source - File content or path.
29
+ * @param filename - Filename (required for Buffer/Blob, auto-detected for paths).
30
+ */
31
+ static file(source: FileSource, filename?: string): Deliverable;
32
+ /**
33
+ * Create a file deliverable from a pre-uploaded file token.
34
+ *
35
+ * @param token - File token from `client.files.upload()` (valid 24 hours).
36
+ */
37
+ static fromToken(token: string): Deliverable;
38
+ /**
39
+ * Create a URL redirect deliverable.
40
+ *
41
+ * @param url - HTTPS URL buyers will be redirected to after purchase.
42
+ */
43
+ static url(url: string): Deliverable;
44
+ /**
45
+ * Create a plain text deliverable.
46
+ *
47
+ * @param content - Text content delivered to the buyer.
48
+ */
49
+ static text(content: string): Deliverable;
50
+ /** True if this deliverable has file data that must be uploaded first. */
51
+ get needsUpload(): boolean;
52
+ /** @internal Returns file data for upload. */
53
+ toUploadData(): Buffer | Blob;
54
+ /** @internal Returns JSON body for the API. */
55
+ toApiBody(token?: string): Record<string, string>;
56
+ }
57
+ export {};
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ /**
3
+ * Deliverable input builder — type-safe file handling for SDK methods.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Deliverable = void 0;
7
+ const node_fs_1 = require("node:fs");
8
+ const node_path_1 = require("node:path");
9
+ /**
10
+ * Input builder for deliverables. Use static factory methods.
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * Deliverable.file(Buffer.from('pdf'), 'guide.pdf')
15
+ * Deliverable.fromToken('file_tok_abc')
16
+ * Deliverable.url('https://example.com/secret')
17
+ * Deliverable.text('License key: ABCD-1234')
18
+ * ```
19
+ */
20
+ class Deliverable {
21
+ constructor(fields) {
22
+ this._type = fields._type;
23
+ this._fileData = fields._fileData;
24
+ this._filename = fields._filename;
25
+ this._value = fields._value;
26
+ this._token = fields._token;
27
+ }
28
+ /**
29
+ * Create a file deliverable from a Buffer, Blob, or file path.
30
+ *
31
+ * @param source - File content or path.
32
+ * @param filename - Filename (required for Buffer/Blob, auto-detected for paths).
33
+ */
34
+ static file(source, filename) {
35
+ if (typeof source === 'string') {
36
+ return new Deliverable({
37
+ _type: 'file',
38
+ _fileData: (0, node_fs_1.readFileSync)(source),
39
+ _filename: filename !== null && filename !== void 0 ? filename : (0, node_path_1.basename)(source),
40
+ });
41
+ }
42
+ if (!filename)
43
+ throw new Error('filename is required when source is Buffer or Blob');
44
+ return new Deliverable({
45
+ _type: 'file',
46
+ _fileData: source,
47
+ _filename: filename,
48
+ });
49
+ }
50
+ /**
51
+ * Create a file deliverable from a pre-uploaded file token.
52
+ *
53
+ * @param token - File token from `client.files.upload()` (valid 24 hours).
54
+ */
55
+ static fromToken(token) {
56
+ return new Deliverable({ _type: 'file', _token: token });
57
+ }
58
+ /**
59
+ * Create a URL redirect deliverable.
60
+ *
61
+ * @param url - HTTPS URL buyers will be redirected to after purchase.
62
+ */
63
+ static url(url) {
64
+ return new Deliverable({ _type: 'url', _value: url });
65
+ }
66
+ /**
67
+ * Create a plain text deliverable.
68
+ *
69
+ * @param content - Text content delivered to the buyer.
70
+ */
71
+ static text(content) {
72
+ return new Deliverable({ _type: 'text', _value: content });
73
+ }
74
+ /** True if this deliverable has file data that must be uploaded first. */
75
+ get needsUpload() {
76
+ return this._type === 'file' && this._fileData != null;
77
+ }
78
+ /** @internal Returns file data for upload. */
79
+ toUploadData() {
80
+ return this._fileData;
81
+ }
82
+ /** @internal Returns JSON body for the API. */
83
+ toApiBody(token) {
84
+ if (this._type === 'file')
85
+ return { type: 'file', token: token !== null && token !== void 0 ? token : this._token };
86
+ return { type: this._type, value: this._value };
87
+ }
88
+ }
89
+ exports.Deliverable = Deliverable;
90
+ //# sourceMappingURL=deliverable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deliverable.js","sourceRoot":"","sources":["../../src/deliverable.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,qCAAuC;AACvC,yCAAqC;AAIrC;;;;;;;;;;GAUG;AACH,MAAa,WAAW;IAOtB,YAAoB,MAA2H;QAC7I,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,IAAI,CAAC,MAAkB,EAAE,QAAiB;QAC/C,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,OAAO,IAAI,WAAW,CAAC;gBACrB,KAAK,EAAE,MAAM;gBACb,SAAS,EAAE,IAAA,sBAAY,EAAC,MAAM,CAAC;gBAC/B,SAAS,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,IAAA,oBAAQ,EAAC,MAAM,CAAC;aACxC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACrF,OAAO,IAAI,WAAW,CAAC;YACrB,KAAK,EAAE,MAAM;YACb,SAAS,EAAE,MAAM;YACjB,SAAS,EAAE,QAAQ;SACpB,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,SAAS,CAAC,KAAa;QAC5B,OAAO,IAAI,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,GAAG,CAAC,GAAW;QACpB,OAAO,IAAI,WAAW,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACxD,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,IAAI,CAAC,OAAe;QACzB,OAAO,IAAI,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,0EAA0E;IAC1E,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,KAAK,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC;IACzD,CAAC;IAED,8CAA8C;IAC9C,YAAY;QACV,OAAO,IAAI,CAAC,SAAU,CAAC;IACzB,CAAC;IAED,+CAA+C;IAC/C,SAAS,CAAC,KAAc;QACtB,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM;YAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,IAAI,CAAC,MAAO,EAAE,CAAC;QACjF,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,MAAO,EAAE,CAAC;IACnD,CAAC;CACF;AA/ED,kCA+EC"}
@@ -86,6 +86,17 @@ export declare class InternalServerError extends APIStatusError {
86
86
  export declare class WebhookVerificationError extends ListBeeError {
87
87
  constructor(message: string);
88
88
  }
89
+ /**
90
+ * Raised when createComplete creates the listing but fails during file upload
91
+ * or deliverable attachment.
92
+ *
93
+ * The `listingId` property contains the draft that was created, so the caller
94
+ * can resume with individual `addDeliverable` calls.
95
+ */
96
+ export declare class PartialCreationError extends ListBeeError {
97
+ readonly listingId: string;
98
+ constructor(listingId: string, message: string);
99
+ }
89
100
  type ErrorBody = {
90
101
  type?: unknown;
91
102
  title?: unknown;
@@ -3,7 +3,7 @@
3
3
  * Typed exception hierarchy for the ListBee SDK (RFC 9457).
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.raiseForStatus = exports.WebhookVerificationError = exports.InternalServerError = exports.RateLimitError = exports.PayloadTooLargeError = exports.ValidationError = exports.ConflictError = exports.NotFoundError = exports.ForbiddenError = exports.AuthenticationError = exports.BadRequestError = exports.APIStatusError = exports.APITimeoutError = exports.APIConnectionError = exports.ListBeeError = void 0;
6
+ exports.raiseForStatus = exports.PartialCreationError = exports.WebhookVerificationError = exports.InternalServerError = exports.RateLimitError = exports.PayloadTooLargeError = exports.ValidationError = exports.ConflictError = exports.NotFoundError = exports.ForbiddenError = exports.AuthenticationError = exports.BadRequestError = exports.APIStatusError = exports.APITimeoutError = exports.APIConnectionError = exports.ListBeeError = void 0;
7
7
  /** Base class for all ListBee SDK errors. */
8
8
  class ListBeeError extends Error {
9
9
  constructor(message) {
@@ -127,6 +127,21 @@ class WebhookVerificationError extends ListBeeError {
127
127
  }
128
128
  }
129
129
  exports.WebhookVerificationError = WebhookVerificationError;
130
+ /**
131
+ * Raised when createComplete creates the listing but fails during file upload
132
+ * or deliverable attachment.
133
+ *
134
+ * The `listingId` property contains the draft that was created, so the caller
135
+ * can resume with individual `addDeliverable` calls.
136
+ */
137
+ class PartialCreationError extends ListBeeError {
138
+ constructor(listingId, message) {
139
+ super(message);
140
+ this.name = 'PartialCreationError';
141
+ this.listingId = listingId;
142
+ }
143
+ }
144
+ exports.PartialCreationError = PartialCreationError;
130
145
  /**
131
146
  * Parse an RFC 9457 error body and throw the appropriate typed exception.
132
147
  */
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}