@postpeer/node 0.3.2 → 0.5.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 (213) hide show
  1. package/CHANGELOG.md +25 -3
  2. package/LICENSE +1 -1
  3. package/README.md +28 -27
  4. package/api-promise.js.map +1 -1
  5. package/client.d.mts +14 -14
  6. package/client.d.mts.map +1 -1
  7. package/client.d.ts +14 -14
  8. package/client.d.ts.map +1 -1
  9. package/client.js +51 -96
  10. package/client.js.map +1 -1
  11. package/client.mjs +51 -96
  12. package/client.mjs.map +1 -1
  13. package/core/api-promise.d.mts +2 -2
  14. package/core/api-promise.d.mts.map +1 -1
  15. package/core/api-promise.d.ts +2 -2
  16. package/core/api-promise.d.ts.map +1 -1
  17. package/core/api-promise.js.map +1 -1
  18. package/core/api-promise.mjs.map +1 -1
  19. package/core/error.d.mts +2 -2
  20. package/core/error.d.mts.map +1 -1
  21. package/core/error.d.ts +2 -2
  22. package/core/error.d.ts.map +1 -1
  23. package/core/error.js +6 -6
  24. package/core/error.js.map +1 -1
  25. package/core/error.mjs +4 -4
  26. package/core/error.mjs.map +1 -1
  27. package/core/resource.d.mts +3 -3
  28. package/core/resource.d.ts +3 -3
  29. package/error.js.map +1 -1
  30. package/index.d.mts +3 -3
  31. package/index.d.mts.map +1 -1
  32. package/index.d.ts +3 -3
  33. package/index.d.ts.map +1 -1
  34. package/index.js +4 -4
  35. package/index.js.map +1 -1
  36. package/index.mjs +3 -3
  37. package/index.mjs.map +1 -1
  38. package/internal/builtin-types.d.mts +5 -5
  39. package/internal/builtin-types.d.mts.map +1 -1
  40. package/internal/builtin-types.d.ts +5 -5
  41. package/internal/builtin-types.d.ts.map +1 -1
  42. package/internal/detect-platform.d.mts.map +1 -1
  43. package/internal/detect-platform.d.ts.map +1 -1
  44. package/internal/detect-platform.js.map +1 -1
  45. package/internal/detect-platform.mjs.map +1 -1
  46. package/internal/errors.js +5 -6
  47. package/internal/errors.js.map +1 -1
  48. package/internal/errors.mjs +5 -6
  49. package/internal/errors.mjs.map +1 -1
  50. package/internal/headers.js +2 -2
  51. package/internal/headers.js.map +1 -1
  52. package/internal/headers.mjs +2 -2
  53. package/internal/headers.mjs.map +1 -1
  54. package/internal/parse.d.mts +2 -2
  55. package/internal/parse.d.mts.map +1 -1
  56. package/internal/parse.d.ts +2 -2
  57. package/internal/parse.d.ts.map +1 -1
  58. package/internal/parse.js +1 -7
  59. package/internal/parse.js.map +1 -1
  60. package/internal/parse.mjs +1 -7
  61. package/internal/parse.mjs.map +1 -1
  62. package/internal/qs/utils.d.mts.map +1 -1
  63. package/internal/qs/utils.d.ts.map +1 -1
  64. package/internal/qs/utils.js +2 -1
  65. package/internal/qs/utils.js.map +1 -1
  66. package/internal/qs/utils.mjs +2 -1
  67. package/internal/qs/utils.mjs.map +1 -1
  68. package/internal/request-options.d.mts.map +1 -1
  69. package/internal/request-options.d.ts.map +1 -1
  70. package/internal/request-options.js.map +1 -1
  71. package/internal/request-options.mjs.map +1 -1
  72. package/internal/shim-types.d.mts.map +1 -1
  73. package/internal/shim-types.d.ts.map +1 -1
  74. package/internal/shims.d.mts.map +1 -1
  75. package/internal/shims.d.ts.map +1 -1
  76. package/internal/shims.js +1 -1
  77. package/internal/shims.js.map +1 -1
  78. package/internal/shims.mjs +1 -1
  79. package/internal/shims.mjs.map +1 -1
  80. package/internal/to-file.d.mts.map +1 -1
  81. package/internal/to-file.d.ts.map +1 -1
  82. package/internal/to-file.js.map +1 -1
  83. package/internal/to-file.mjs.map +1 -1
  84. package/internal/types.d.mts +11 -17
  85. package/internal/types.d.mts.map +1 -1
  86. package/internal/types.d.ts +11 -17
  87. package/internal/types.d.ts.map +1 -1
  88. package/internal/uploads.d.mts +4 -4
  89. package/internal/uploads.d.ts +4 -4
  90. package/internal/utils/base64.js +2 -2
  91. package/internal/utils/base64.mjs +3 -3
  92. package/internal/utils/log.d.mts +3 -3
  93. package/internal/utils/log.d.mts.map +1 -1
  94. package/internal/utils/log.d.ts +3 -3
  95. package/internal/utils/log.d.ts.map +1 -1
  96. package/internal/utils/log.js +2 -9
  97. package/internal/utils/log.js.map +1 -1
  98. package/internal/utils/log.mjs +2 -9
  99. package/internal/utils/log.mjs.map +1 -1
  100. package/internal/utils/path.js +1 -1
  101. package/internal/utils/path.mjs +2 -2
  102. package/internal/utils/query.js.map +1 -1
  103. package/internal/utils/query.mjs.map +1 -1
  104. package/internal/utils/uuid.d.mts.map +1 -1
  105. package/internal/utils/uuid.d.ts.map +1 -1
  106. package/internal/utils/uuid.js +4 -2
  107. package/internal/utils/uuid.js.map +1 -1
  108. package/internal/utils/uuid.mjs +4 -2
  109. package/internal/utils/uuid.mjs.map +1 -1
  110. package/internal/utils/values.js +5 -5
  111. package/internal/utils/values.mjs +6 -6
  112. package/package.json +4 -4
  113. package/resource.js.map +1 -1
  114. package/resources/connect/connect.d.mts +2 -2
  115. package/resources/connect/connect.d.mts.map +1 -1
  116. package/resources/connect/connect.d.ts +2 -2
  117. package/resources/connect/connect.d.ts.map +1 -1
  118. package/resources/connect/connect.js.map +1 -1
  119. package/resources/connect/connect.mjs.map +1 -1
  120. package/resources/connect/index.d.mts +1 -1
  121. package/resources/connect/index.d.mts.map +1 -1
  122. package/resources/connect/index.d.ts +1 -1
  123. package/resources/connect/index.d.ts.map +1 -1
  124. package/resources/connect/index.js +2 -0
  125. package/resources/connect/index.js.map +1 -1
  126. package/resources/connect/index.mjs +3 -1
  127. package/resources/connect/index.mjs.map +1 -1
  128. package/resources/connect/integrations.d.mts +1 -1
  129. package/resources/connect/integrations.d.mts.map +1 -1
  130. package/resources/connect/integrations.d.ts +1 -1
  131. package/resources/connect/integrations.d.ts.map +1 -1
  132. package/resources/health.d.mts +1 -1
  133. package/resources/health.d.mts.map +1 -1
  134. package/resources/health.d.ts +1 -1
  135. package/resources/health.d.ts.map +1 -1
  136. package/resources/index.d.mts +1 -1
  137. package/resources/index.d.mts.map +1 -1
  138. package/resources/index.d.ts +1 -1
  139. package/resources/index.d.ts.map +1 -1
  140. package/resources/index.js +5 -0
  141. package/resources/index.js.map +1 -1
  142. package/resources/index.mjs +6 -1
  143. package/resources/index.mjs.map +1 -1
  144. package/resources/media.d.mts.map +1 -1
  145. package/resources/media.d.ts.map +1 -1
  146. package/resources/platforms.d.mts.map +1 -1
  147. package/resources/platforms.d.ts.map +1 -1
  148. package/resources/posts/index.d.mts +2 -2
  149. package/resources/posts/index.d.mts.map +1 -1
  150. package/resources/posts/index.d.ts +2 -2
  151. package/resources/posts/index.d.ts.map +1 -1
  152. package/resources/posts/index.js +2 -0
  153. package/resources/posts/index.js.map +1 -1
  154. package/resources/posts/index.mjs +4 -2
  155. package/resources/posts/index.mjs.map +1 -1
  156. package/resources/posts/posts.d.mts +97 -262
  157. package/resources/posts/posts.d.mts.map +1 -1
  158. package/resources/posts/posts.d.ts +97 -262
  159. package/resources/posts/posts.d.ts.map +1 -1
  160. package/resources/posts/posts.js.map +1 -1
  161. package/resources/posts/posts.mjs +1 -1
  162. package/resources/posts/posts.mjs.map +1 -1
  163. package/resources/posts/scheduled.d.mts +3 -9
  164. package/resources/posts/scheduled.d.mts.map +1 -1
  165. package/resources/posts/scheduled.d.ts +3 -9
  166. package/resources/posts/scheduled.d.ts.map +1 -1
  167. package/resources/posts/scheduled.js.map +1 -1
  168. package/resources/posts/scheduled.mjs.map +1 -1
  169. package/src/api-promise.ts +1 -1
  170. package/src/client.ts +93 -184
  171. package/src/core/api-promise.ts +5 -10
  172. package/src/core/error.ts +24 -22
  173. package/src/core/resource.ts +3 -3
  174. package/src/error.ts +1 -1
  175. package/src/index.ts +3 -17
  176. package/src/internal/builtin-types.ts +9 -14
  177. package/src/internal/detect-platform.ts +1 -5
  178. package/src/internal/errors.ts +7 -7
  179. package/src/internal/headers.ts +2 -2
  180. package/src/internal/parse.ts +4 -12
  181. package/src/internal/qs/utils.ts +4 -1
  182. package/src/internal/request-options.ts +5 -1
  183. package/src/internal/shim-types.ts +2 -2
  184. package/src/internal/shims.ts +2 -4
  185. package/src/internal/to-file.ts +7 -7
  186. package/src/internal/types.ts +22 -28
  187. package/src/internal/uploads.ts +5 -5
  188. package/src/internal/utils/base64.ts +3 -3
  189. package/src/internal/utils/log.ts +10 -32
  190. package/src/internal/utils/path.ts +2 -2
  191. package/src/internal/utils/query.ts +1 -1
  192. package/src/internal/utils/uuid.ts +5 -3
  193. package/src/internal/utils/values.ts +6 -6
  194. package/src/resource.ts +1 -1
  195. package/src/resources/connect/connect.ts +3 -7
  196. package/src/resources/connect/index.ts +2 -6
  197. package/src/resources/connect/integrations.ts +1 -1
  198. package/src/resources/health.ts +1 -1
  199. package/src/resources/index.ts +5 -15
  200. package/src/resources/media.ts +4 -1
  201. package/src/resources/platforms.ts +3 -1
  202. package/src/resources/posts/index.ts +2 -18
  203. package/src/resources/posts/posts.ts +138 -340
  204. package/src/resources/posts/scheduled.ts +4 -14
  205. package/src/uploads.ts +1 -1
  206. package/src/version.ts +1 -1
  207. package/uploads.js.map +1 -1
  208. package/version.d.mts +1 -1
  209. package/version.d.ts +1 -1
  210. package/version.js +1 -1
  211. package/version.js.map +1 -1
  212. package/version.mjs +1 -1
  213. package/version.mjs.map +1 -1
package/src/client.ts CHANGED
@@ -21,28 +21,12 @@ import { Health, HealthCheckResponse, HealthVerifyAccessKeyResponse } from './re
21
21
  import { Media, MediaUploadParams, MediaUploadResponse } from './resources/media';
22
22
  import { PlatformListResponse, Platforms } from './resources/platforms';
23
23
  import { Connect, ConnectGetOAuthURLParams, ConnectGetOAuthURLResponse } from './resources/connect/connect';
24
- import {
25
- PostCreateParams,
26
- PostCreateResponse,
27
- PostDeleteResponse,
28
- PostListParams,
29
- PostListResponse,
30
- PostRetrieveResponse,
31
- PostSummary,
32
- Posts,
33
- Status,
34
- } from './resources/posts/posts';
24
+ import { PostCreateParams, PostCreateResponse, PostDeleteResponse, PostListParams, PostListResponse, PostRetrieveResponse, Posts, Status } from './resources/posts/posts';
35
25
  import { type Fetch } from './internal/builtin-types';
36
26
  import { HeadersLike, NullableHeaders, buildHeaders } from './internal/headers';
37
27
  import { FinalRequestOptions, RequestOptions } from './internal/request-options';
38
28
  import { readEnv } from './internal/utils/env';
39
- import {
40
- type LogLevel,
41
- type Logger,
42
- formatRequestDetails,
43
- loggerFor,
44
- parseLogLevel,
45
- } from './internal/utils/log';
29
+ import { type LogLevel, type Logger, formatRequestDetails, loggerFor, parseLogLevel } from './internal/utils/log';
46
30
  import { isEmptyObj } from './internal/utils/values';
47
31
 
48
32
  export interface ClientOptions {
@@ -54,7 +38,7 @@ export interface ClientOptions {
54
38
  /**
55
39
  * Override the default base URL for the API, e.g., "https://api.example.com/v2/"
56
40
  *
57
- * Defaults to process.env['POST_PEER_BASE_URL'].
41
+ * Defaults to process.env['POSTPEER_BASE_URL'].
58
42
  */
59
43
  baseURL?: string | null | undefined;
60
44
 
@@ -108,7 +92,7 @@ export interface ClientOptions {
108
92
  /**
109
93
  * Set the log level.
110
94
  *
111
- * Defaults to process.env['POST_PEER_LOG'] or 'warn' if it isn't set.
95
+ * Defaults to process.env['POSTPEER_LOG'] or 'warn' if it isn't set.
112
96
  */
113
97
  logLevel?: LogLevel | undefined;
114
98
 
@@ -121,9 +105,9 @@ export interface ClientOptions {
121
105
  }
122
106
 
123
107
  /**
124
- * API Client for interfacing with the Post Peer API.
108
+ * API Client for interfacing with the Postpeer API.
125
109
  */
126
- export class PostPeer {
110
+ export class Postpeer {
127
111
  apiKey: string;
128
112
 
129
113
  baseURL: string;
@@ -139,10 +123,10 @@ export class PostPeer {
139
123
  private _options: ClientOptions;
140
124
 
141
125
  /**
142
- * API Client for interfacing with the Post Peer API.
126
+ * API Client for interfacing with the Postpeer API.
143
127
  *
144
128
  * @param {string | undefined} [opts.apiKey=process.env['POSTPEER_API_KEY'] ?? undefined]
145
- * @param {string} [opts.baseURL=process.env['POST_PEER_BASE_URL'] ?? https://api.example.com] - Override the default base URL for the API.
129
+ * @param {string} [opts.baseURL=process.env['POSTPEER_BASE_URL'] ?? https://api.example.com] - Override the default base URL for the API.
146
130
  * @param {number} [opts.timeout=1 minute] - The maximum amount of time (in milliseconds) the client will wait for a response before timing out.
147
131
  * @param {MergedRequestInit} [opts.fetchOptions] - Additional `RequestInit` options to be passed to `fetch` calls.
148
132
  * @param {Fetch} [opts.fetch] - Specify a custom `fetch` function implementation.
@@ -151,13 +135,13 @@ export class PostPeer {
151
135
  * @param {Record<string, string | undefined>} opts.defaultQuery - Default query parameters to include with every request to the API.
152
136
  */
153
137
  constructor({
154
- baseURL = readEnv('POST_PEER_BASE_URL'),
138
+ baseURL = readEnv('POSTPEER_BASE_URL'),
155
139
  apiKey = readEnv('POSTPEER_API_KEY'),
156
140
  ...opts
157
141
  }: ClientOptions = {}) {
158
142
  if (apiKey === undefined) {
159
- throw new Errors.PostPeerError(
160
- "The POSTPEER_API_KEY environment variable is missing or empty; either provide it, or instantiate the PostPeer client with an apiKey option, like new PostPeer({ apiKey: 'My API Key' }).",
143
+ throw new Errors.PostpeerError(
144
+ 'The POSTPEER_API_KEY environment variable is missing or empty; either provide it, or instantiate the Postpeer client with an apiKey option, like new Postpeer({ apiKey: \'My API Key\' }).'
161
145
  );
162
146
  }
163
147
 
@@ -168,15 +152,12 @@ export class PostPeer {
168
152
  };
169
153
 
170
154
  this.baseURL = options.baseURL!;
171
- this.timeout = options.timeout ?? PostPeer.DEFAULT_TIMEOUT /* 1 minute */;
155
+ this.timeout = options.timeout ?? Postpeer.DEFAULT_TIMEOUT /* 1 minute */;
172
156
  this.logger = options.logger ?? console;
173
157
  const defaultLogLevel = 'warn';
174
158
  // Set default logLevel early so that we can log a warning in parseLogLevel.
175
159
  this.logLevel = defaultLogLevel;
176
- this.logLevel =
177
- parseLogLevel(options.logLevel, 'ClientOptions.logLevel', this) ??
178
- parseLogLevel(readEnv('POST_PEER_LOG'), "process.env['POST_PEER_LOG']", this) ??
179
- defaultLogLevel;
160
+ this.logLevel = parseLogLevel(options.logLevel, 'ClientOptions.logLevel', this) ?? parseLogLevel(readEnv('POSTPEER_LOG'), 'process.env[\'POSTPEER_LOG\']', this) ?? defaultLogLevel;
180
161
  this.fetchOptions = options.fetchOptions;
181
162
  this.maxRetries = options.maxRetries ?? 2;
182
163
  this.fetch = options.fetch ?? Shims.getDefaultFetch();
@@ -201,7 +182,7 @@ export class PostPeer {
201
182
  fetch: this.fetch,
202
183
  fetchOptions: this.fetchOptions,
203
184
  apiKey: this.apiKey,
204
- ...options,
185
+ ...options
205
186
  });
206
187
  return client;
207
188
  }
@@ -214,7 +195,7 @@ export class PostPeer {
214
195
  }
215
196
 
216
197
  protected defaultQuery(): Record<string, string | undefined> | undefined {
217
- return this._options.defaultQuery;
198
+ return this._options.defaultQuery
218
199
  }
219
200
 
220
201
  protected validateHeaders({ values, nulls }: NullableHeaders) {
@@ -246,11 +227,7 @@ export class PostPeer {
246
227
  return Errors.APIError.generate(status, error, message, headers);
247
228
  }
248
229
 
249
- buildURL(
250
- path: string,
251
- query: Record<string, unknown> | null | undefined,
252
- defaultBaseURL?: string | undefined,
253
- ): string {
230
+ buildURL(path: string, query: Record<string, unknown> | null | undefined, defaultBaseURL?: string | undefined): string {
254
231
  const baseURL = (!this.#baseURLOverridden() && defaultBaseURL) || this.baseURL;
255
232
  const url =
256
233
  isAbsoluteURL(path) ?
@@ -338,9 +315,7 @@ export class PostPeer {
338
315
 
339
316
  await this.prepareOptions(options);
340
317
 
341
- const { req, url, timeout } = await this.buildRequest(options, {
342
- retryCount: maxRetries - retriesRemaining,
343
- });
318
+ const { req, url, timeout } = await this.buildRequest(options, { retryCount: maxRetries - retriesRemaining });
344
319
 
345
320
  await this.prepareRequest(req, { url, options });
346
321
 
@@ -349,16 +324,7 @@ export class PostPeer {
349
324
  const retryLogStr = retryOfRequestLogID === undefined ? '' : `, retryOf: ${retryOfRequestLogID}`;
350
325
  const startTime = Date.now();
351
326
 
352
- loggerFor(this).debug(
353
- `[${requestLogID}] sending request`,
354
- formatRequestDetails({
355
- retryOfRequestLogID,
356
- method: options.method,
357
- url,
358
- options,
359
- headers: req.headers,
360
- }),
361
- );
327
+ loggerFor(this).debug(`[${requestLogID}] sending request`, formatRequestDetails({ retryOfRequestLogID, method: options.method, url, options, headers: req.headers }));
362
328
 
363
329
  if (options.signal?.aborted) {
364
330
  throw new Errors.APIUserAbortError();
@@ -377,45 +343,21 @@ export class PostPeer {
377
343
  // deno throws "TypeError: error sending request for url (https://example/): client error (Connect): tcp connect error: Operation timed out (os error 60): Operation timed out (os error 60)"
378
344
  // undici throws "TypeError: fetch failed" with cause "ConnectTimeoutError: Connect Timeout Error (attempted address: example:443, timeout: 1ms)"
379
345
  // others do not provide enough information to distinguish timeouts from other connection errors
380
- const isTimeout =
381
- isAbortError(response) ||
382
- /timed? ?out/i.test(String(response) + ('cause' in response ? String(response.cause) : ''));
346
+ const isTimeout = isAbortError(response) || /timed? ?out/i.test(String(response) + ('cause' in response ? String(response.cause) : ''))
383
347
  if (retriesRemaining) {
384
- loggerFor(this).info(
385
- `[${requestLogID}] connection ${isTimeout ? 'timed out' : 'failed'} - ${retryMessage}`,
386
- );
387
- loggerFor(this).debug(
388
- `[${requestLogID}] connection ${isTimeout ? 'timed out' : 'failed'} (${retryMessage})`,
389
- formatRequestDetails({
390
- retryOfRequestLogID,
391
- url,
392
- durationMs: headersTime - startTime,
393
- message: response.message,
394
- }),
395
- );
348
+ loggerFor(this).info(`[${requestLogID}] connection ${isTimeout ? 'timed out' : 'failed'} - ${retryMessage}`)
349
+ loggerFor(this).debug(`[${requestLogID}] connection ${isTimeout ? 'timed out' : 'failed'} (${retryMessage})`, formatRequestDetails({ retryOfRequestLogID, url, durationMs: headersTime - startTime, message: response.message }));
396
350
  return this.retryRequest(options, retriesRemaining, retryOfRequestLogID ?? requestLogID);
397
351
  }
398
- loggerFor(this).info(
399
- `[${requestLogID}] connection ${isTimeout ? 'timed out' : 'failed'} - error; no more retries left`,
400
- );
401
- loggerFor(this).debug(
402
- `[${requestLogID}] connection ${isTimeout ? 'timed out' : 'failed'} (error; no more retries left)`,
403
- formatRequestDetails({
404
- retryOfRequestLogID,
405
- url,
406
- durationMs: headersTime - startTime,
407
- message: response.message,
408
- }),
409
- );
352
+ loggerFor(this).info(`[${requestLogID}] connection ${isTimeout ? 'timed out' : 'failed'} - error; no more retries left`)
353
+ loggerFor(this).debug(`[${requestLogID}] connection ${isTimeout ? 'timed out' : 'failed'} (error; no more retries left)`, formatRequestDetails({ retryOfRequestLogID, url, durationMs: headersTime - startTime, message: response.message }));
410
354
  if (isTimeout) {
411
355
  throw new Errors.APIConnectionTimeoutError();
412
356
  }
413
357
  throw new Errors.APIConnectionError({ cause: response });
414
358
  }
415
359
 
416
- const responseInfo = `[${requestLogID}${retryLogStr}] ${req.method} ${url} ${
417
- response.ok ? 'succeeded' : 'failed'
418
- } with status ${response.status} in ${headersTime - startTime}ms`;
360
+ const responseInfo = `[${requestLogID}${retryLogStr}] ${req.method} ${url} ${response.ok ? 'succeeded' : 'failed'} with status ${response.status} in ${headersTime - startTime}ms`;
419
361
 
420
362
  if (!response.ok) {
421
363
  const shouldRetry = await this.shouldRetry(response);
@@ -424,60 +366,27 @@ export class PostPeer {
424
366
 
425
367
  // We don't need the body of this response.
426
368
  await Shims.CancelReadableStream(response.body);
427
- loggerFor(this).info(`${responseInfo} - ${retryMessage}`);
428
- loggerFor(this).debug(
429
- `[${requestLogID}] response error (${retryMessage})`,
430
- formatRequestDetails({
431
- retryOfRequestLogID,
432
- url: response.url,
433
- status: response.status,
434
- headers: response.headers,
435
- durationMs: headersTime - startTime,
436
- }),
437
- );
438
- return this.retryRequest(
439
- options,
440
- retriesRemaining,
441
- retryOfRequestLogID ?? requestLogID,
442
- response.headers,
443
- );
369
+ loggerFor(this).info(`${responseInfo} - ${retryMessage}`)
370
+ loggerFor(this).debug(`[${requestLogID}] response error (${retryMessage})`, formatRequestDetails({ retryOfRequestLogID, url: response.url, status: response.status, headers: response.headers, durationMs: headersTime - startTime }));
371
+ return this.retryRequest(options, retriesRemaining, retryOfRequestLogID ?? requestLogID, response.headers);
444
372
  }
445
373
 
446
374
  const retryMessage = shouldRetry ? `error; no more retries left` : `error; not retryable`;
447
375
 
448
- loggerFor(this).info(`${responseInfo} - ${retryMessage}`);
376
+ loggerFor(this).info(`${responseInfo} - ${retryMessage}`)
449
377
 
450
378
  const errText = await response.text().catch((err: any) => castToError(err).message);
451
379
  const errJSON = safeJSON(errText) as any;
452
380
  const errMessage = errJSON ? undefined : errText;
453
381
 
454
- loggerFor(this).debug(
455
- `[${requestLogID}] response error (${retryMessage})`,
456
- formatRequestDetails({
457
- retryOfRequestLogID,
458
- url: response.url,
459
- status: response.status,
460
- headers: response.headers,
461
- message: errMessage,
462
- durationMs: Date.now() - startTime,
463
- }),
464
- );
382
+ loggerFor(this).debug(`[${requestLogID}] response error (${retryMessage})`, formatRequestDetails({ retryOfRequestLogID, url: response.url, status: response.status, headers: response.headers, message: errMessage, durationMs: Date.now() - startTime }));
465
383
 
466
384
  const err = this.makeStatusError(response.status, errJSON, errMessage, response.headers);
467
385
  throw err;
468
386
  }
469
387
 
470
- loggerFor(this).info(responseInfo);
471
- loggerFor(this).debug(
472
- `[${requestLogID}] response start`,
473
- formatRequestDetails({
474
- retryOfRequestLogID,
475
- url: response.url,
476
- status: response.status,
477
- headers: response.headers,
478
- durationMs: headersTime - startTime,
479
- }),
480
- );
388
+ loggerFor(this).info(responseInfo)
389
+ loggerFor(this).debug(`[${requestLogID}] response start`, formatRequestDetails({ retryOfRequestLogID, url: response.url, status: response.status, headers: response.headers, durationMs: headersTime - startTime }));
481
390
 
482
391
  return { response, options, controller, requestLogID, retryOfRequestLogID, startTime };
483
392
  }
@@ -494,9 +403,7 @@ export class PostPeer {
494
403
 
495
404
  const timeout = setTimeout(abort, ms);
496
405
 
497
- const isReadableBody =
498
- ((globalThis as any).ReadableStream && options.body instanceof (globalThis as any).ReadableStream) ||
499
- (typeof options.body === 'object' && options.body !== null && Symbol.asyncIterator in options.body);
406
+ const isReadableBody = ((globalThis as any).ReadableStream && options.body instanceof (globalThis as any).ReadableStream) || (typeof options.body === "object" && options.body !== null && Symbol.asyncIterator in options.body);
500
407
 
501
408
  const fetchOptions: RequestInit = {
502
409
  signal: controller.signal as any,
@@ -511,6 +418,7 @@ export class PostPeer {
511
418
  }
512
419
 
513
420
  try {
421
+
514
422
  // use undefined this binding; fetch errors if bound to something else in browser/cloudflare
515
423
  return await this.fetch.call(undefined, url, fetchOptions);
516
424
  } finally {
@@ -611,12 +519,11 @@ export class PostPeer {
611
519
  const req: FinalizedRequestInit = {
612
520
  method,
613
521
  headers: reqHeaders,
614
- ...(options.signal && { signal: options.signal }),
615
- ...((globalThis as any).ReadableStream &&
616
- body instanceof (globalThis as any).ReadableStream && { duplex: 'half' }),
522
+ ...(options.signal && { signal: options.signal}),
523
+ ...((globalThis as any).ReadableStream && body instanceof (globalThis as any).ReadableStream && { duplex: "half" }),
617
524
  ...(body && { body }),
618
- ...((this.fetchOptions as any) ?? {}),
619
- ...((options.fetchOptions as any) ?? {}),
525
+ ...(this.fetchOptions as any ?? {}),
526
+ ...(options.fetchOptions as any ?? {}),
620
527
  };
621
528
 
622
529
  return { req, url, timeout: options.timeout };
@@ -641,17 +548,15 @@ export class PostPeer {
641
548
 
642
549
  const headers = buildHeaders([
643
550
  idempotencyHeaders,
644
- {
645
- Accept: 'application/json',
646
- 'User-Agent': this.getUserAgent(),
647
- 'X-Stainless-Retry-Count': String(retryCount),
648
- ...(options.timeout ? { 'X-Stainless-Timeout': String(Math.trunc(options.timeout / 1000)) } : {}),
649
- ...getPlatformHeaders(),
650
- },
551
+ {Accept: 'application/json',
552
+ 'User-Agent': this.getUserAgent(),
553
+ 'X-Stainless-Retry-Count': String(retryCount),
554
+ ...(options.timeout ? { 'X-Stainless-Timeout': String(Math.trunc(options.timeout / 1000)) } : {}),
555
+ ...getPlatformHeaders()},
651
556
  await this.authHeaders(options),
652
557
  this._options.defaultHeaders,
653
558
  bodyHeaders,
654
- options.headers,
559
+ options.headers
655
560
  ]);
656
561
 
657
562
  this.validateHeaders(headers);
@@ -678,9 +583,11 @@ export class PostPeer {
678
583
  ArrayBuffer.isView(body) ||
679
584
  body instanceof ArrayBuffer ||
680
585
  body instanceof DataView ||
681
- (typeof body === 'string' &&
586
+ (
587
+ typeof body === 'string' &&
682
588
  // Preserve legacy string encoding behavior for now
683
- headers.values.has('content-type')) ||
589
+ headers.values.has('content-type')
590
+ ) ||
684
591
  // `Blob` is superset of `File`
685
592
  ((globalThis as any).Blob && body instanceof (globalThis as any).Blob) ||
686
593
  // `FormData` -> `multipart/form-data`
@@ -710,10 +617,10 @@ export class PostPeer {
710
617
  }
711
618
  }
712
619
 
713
- static PostPeer = this;
714
- static DEFAULT_TIMEOUT = 60000; // 1 minute
620
+ static Postpeer = this;
621
+ static DEFAULT_TIMEOUT = 60000 // 1 minute
715
622
 
716
- static PostPeerError = Errors.PostPeerError;
623
+ static PostpeerError = Errors.PostpeerError;
717
624
  static APIError = Errors.APIError;
718
625
  static APIConnectionError = Errors.APIConnectionError;
719
626
  static APIConnectionTimeoutError = Errors.APIConnectionTimeoutError;
@@ -736,44 +643,46 @@ export class PostPeer {
736
643
  media: API.Media = new API.Media(this);
737
644
  }
738
645
 
739
- PostPeer.Health = Health;
740
- PostPeer.Connect = Connect;
741
- PostPeer.Platforms = Platforms;
742
- PostPeer.Posts = Posts;
743
- PostPeer.Media = Media;
744
-
745
- export declare namespace PostPeer {
746
- export type RequestOptions = Opts.RequestOptions;
747
-
748
- export {
749
- Health as Health,
750
- type HealthCheckResponse as HealthCheckResponse,
751
- type HealthVerifyAccessKeyResponse as HealthVerifyAccessKeyResponse,
752
- };
753
-
754
- export {
755
- Connect as Connect,
756
- type ConnectGetOAuthURLResponse as ConnectGetOAuthURLResponse,
757
- type ConnectGetOAuthURLParams as ConnectGetOAuthURLParams,
758
- };
759
-
760
- export { Platforms as Platforms, type PlatformListResponse as PlatformListResponse };
761
-
762
- export {
763
- Posts as Posts,
764
- type PostSummary as PostSummary,
765
- type Status as Status,
766
- type PostCreateResponse as PostCreateResponse,
767
- type PostRetrieveResponse as PostRetrieveResponse,
768
- type PostListResponse as PostListResponse,
769
- type PostDeleteResponse as PostDeleteResponse,
770
- type PostCreateParams as PostCreateParams,
771
- type PostListParams as PostListParams,
772
- };
773
-
774
- export {
775
- Media as Media,
776
- type MediaUploadResponse as MediaUploadResponse,
777
- type MediaUploadParams as MediaUploadParams,
778
- };
779
- }
646
+ Postpeer.Health = Health;
647
+ Postpeer.Connect = Connect;
648
+ Postpeer.Platforms = Platforms;
649
+ Postpeer.Posts = Posts;
650
+ Postpeer.Media = Media;
651
+
652
+ export declare namespace Postpeer {
653
+ export type RequestOptions = Opts.RequestOptions;
654
+
655
+ export {
656
+ Health as Health,
657
+ type HealthCheckResponse as HealthCheckResponse,
658
+ type HealthVerifyAccessKeyResponse as HealthVerifyAccessKeyResponse
659
+ };
660
+
661
+ export {
662
+ Connect as Connect,
663
+ type ConnectGetOAuthURLResponse as ConnectGetOAuthURLResponse,
664
+ type ConnectGetOAuthURLParams as ConnectGetOAuthURLParams
665
+ };
666
+
667
+ export {
668
+ Platforms as Platforms,
669
+ type PlatformListResponse as PlatformListResponse
670
+ };
671
+
672
+ export {
673
+ Posts as Posts,
674
+ type Status as Status,
675
+ type PostCreateResponse as PostCreateResponse,
676
+ type PostRetrieveResponse as PostRetrieveResponse,
677
+ type PostListResponse as PostListResponse,
678
+ type PostDeleteResponse as PostDeleteResponse,
679
+ type PostCreateParams as PostCreateParams,
680
+ type PostListParams as PostListParams
681
+ };
682
+
683
+ export {
684
+ Media as Media,
685
+ type MediaUploadResponse as MediaUploadResponse,
686
+ type MediaUploadParams as MediaUploadParams
687
+ };
688
+ }
@@ -1,6 +1,6 @@
1
1
  // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
- import { type PostPeer } from '../client';
3
+ import { type Postpeer } from '../client';
4
4
 
5
5
  import { type PromiseOrValue } from '../internal/types';
6
6
  import { APIResponseProps, defaultParseResponse } from '../internal/parse';
@@ -11,15 +11,12 @@ import { APIResponseProps, defaultParseResponse } from '../internal/parse';
11
11
  */
12
12
  export class APIPromise<T> extends Promise<T> {
13
13
  private parsedPromise: Promise<T> | undefined;
14
- #client: PostPeer;
14
+ #client: Postpeer;
15
15
 
16
16
  constructor(
17
- client: PostPeer,
17
+ client: Postpeer,
18
18
  private responsePromise: Promise<APIResponseProps>,
19
- private parseResponse: (
20
- client: PostPeer,
21
- props: APIResponseProps,
22
- ) => PromiseOrValue<T> = defaultParseResponse,
19
+ private parseResponse: (client: Postpeer, props: APIResponseProps) => PromiseOrValue<T> = defaultParseResponse,
23
20
  ) {
24
21
  super((resolve) => {
25
22
  // this is maybe a bit weird but this has to be a no-op to not implicitly
@@ -31,9 +28,7 @@ export class APIPromise<T> extends Promise<T> {
31
28
  }
32
29
 
33
30
  _thenUnwrap<U>(transform: (data: T, props: APIResponseProps) => U): APIPromise<U> {
34
- return new APIPromise(this.#client, this.responsePromise, async (client, props) =>
35
- transform(await this.parseResponse(client, props), props),
36
- );
31
+ return new APIPromise(this.#client, this.responsePromise, async (client, props) => transform(await this.parseResponse(client, props), props));
37
32
  }
38
33
 
39
34
  /**
package/src/core/error.ts CHANGED
@@ -2,13 +2,10 @@
2
2
 
3
3
  import { castToError } from '../internal/errors';
4
4
 
5
- export class PostPeerError extends Error {}
5
+ export class PostpeerError extends Error {
6
+ }
6
7
 
7
- export class APIError<
8
- TStatus extends number | undefined = number | undefined,
9
- THeaders extends Headers | undefined = Headers | undefined,
10
- TError extends Object | undefined = Object | undefined,
11
- > extends PostPeerError {
8
+ export class APIError<TStatus extends number | undefined = number | undefined, THeaders extends Headers | undefined = Headers | undefined, TError extends Object | undefined = Object | undefined> extends PostpeerError {
12
9
  /** HTTP status for the response that caused the error */
13
10
  readonly status: TStatus;
14
11
  /** HTTP headers for the response that caused the error */
@@ -16,6 +13,9 @@ export class APIError<
16
13
  /** JSON body of the response that caused the error */
17
14
  readonly error: TError;
18
15
 
16
+
17
+ ;
18
+
19
19
  constructor(status: TStatus, error: TError, message: string | undefined, headers: THeaders) {
20
20
  super(`${APIError.makeMessage(status, error, message)}`);
21
21
  this.status = status;
@@ -26,8 +26,7 @@ export class APIError<
26
26
  private static makeMessage(status: number | undefined, error: any, message: string | undefined) {
27
27
  const msg =
28
28
  error?.message ?
29
- typeof error.message === 'string' ?
30
- error.message
29
+ typeof error.message === 'string' ? error.message
31
30
  : JSON.stringify(error.message)
32
31
  : error ? JSON.stringify(error)
33
32
  : message;
@@ -44,12 +43,7 @@ export class APIError<
44
43
  return '(no status code or body)';
45
44
  }
46
45
 
47
- static generate(
48
- status: number | undefined,
49
- errorResponse: Object | undefined,
50
- message: string | undefined,
51
- headers: Headers | undefined,
52
- ): APIError {
46
+ static generate(status: number | undefined, errorResponse: Object | undefined, message: string | undefined, headers: Headers | undefined): APIError {
53
47
  if (!status || !headers) {
54
48
  return new APIConnectionError({ message, cause: castToError(errorResponse) });
55
49
  }
@@ -113,18 +107,26 @@ export class APIConnectionTimeoutError extends APIConnectionError {
113
107
  }
114
108
  }
115
109
 
116
- export class BadRequestError extends APIError<400, Headers> {}
110
+ export class BadRequestError extends APIError<400, Headers> {
111
+ }
117
112
 
118
- export class AuthenticationError extends APIError<401, Headers> {}
113
+ export class AuthenticationError extends APIError<401, Headers> {
114
+ }
119
115
 
120
- export class PermissionDeniedError extends APIError<403, Headers> {}
116
+ export class PermissionDeniedError extends APIError<403, Headers> {
117
+ }
121
118
 
122
- export class NotFoundError extends APIError<404, Headers> {}
119
+ export class NotFoundError extends APIError<404, Headers> {
120
+ }
123
121
 
124
- export class ConflictError extends APIError<409, Headers> {}
122
+ export class ConflictError extends APIError<409, Headers> {
123
+ }
125
124
 
126
- export class UnprocessableEntityError extends APIError<422, Headers> {}
125
+ export class UnprocessableEntityError extends APIError<422, Headers> {
126
+ }
127
127
 
128
- export class RateLimitError extends APIError<429, Headers> {}
128
+ export class RateLimitError extends APIError<429, Headers> {
129
+ }
129
130
 
130
- export class InternalServerError extends APIError<number, Headers> {}
131
+ export class InternalServerError extends APIError<number, Headers> {
132
+ }
@@ -1,11 +1,11 @@
1
1
  // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
- import type { PostPeer } from '../client';
3
+ import type { Postpeer } from '../client';
4
4
 
5
5
  export abstract class APIResource {
6
- protected _client: PostPeer;
6
+ protected _client: Postpeer;
7
7
 
8
- constructor(client: PostPeer) {
8
+ constructor(client: Postpeer) {
9
9
  this._client = client;
10
10
  }
11
11
  }
package/src/error.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  /** @deprecated Import from ./core/error instead */
2
- export * from './core/error';
2
+ export * from "./core/error"
package/src/index.ts CHANGED
@@ -1,22 +1,8 @@
1
1
  // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
- export { PostPeer as default } from './client';
3
+ export { Postpeer as default } from './client';
4
4
 
5
5
  export { type Uploadable, toFile } from './core/uploads';
6
6
  export { APIPromise } from './core/api-promise';
7
- export { PostPeer, type ClientOptions } from './client';
8
- export {
9
- PostPeerError,
10
- APIError,
11
- APIConnectionError,
12
- APIConnectionTimeoutError,
13
- APIUserAbortError,
14
- NotFoundError,
15
- ConflictError,
16
- RateLimitError,
17
- BadRequestError,
18
- AuthenticationError,
19
- InternalServerError,
20
- PermissionDeniedError,
21
- UnprocessableEntityError,
22
- } from './core/error';
7
+ export { Postpeer, type ClientOptions } from './client';
8
+ export { PostpeerError, APIError, APIConnectionError, APIConnectionTimeoutError, APIUserAbortError, NotFoundError, ConflictError, RateLimitError, BadRequestError, AuthenticationError, InternalServerError, PermissionDeniedError, UnprocessableEntityError } from './core/error';