@blorp-labs/piefed-api-client 0.0.0-774e8e8 → 0.0.0-7b3ed49

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.
@@ -78,8 +78,7 @@ declare const allFns: {
78
78
  getPostApiAlphaPrivateMessageReportUrl: () => string;
79
79
  postApiAlphaPrivateMessageReport: (reportPrivateMessageRequest: import("./schemas").ReportPrivateMessageRequest, options?: RequestInit) => Promise<import("./schemas").PrivateMessageResponse>;
80
80
  getGetApiAlphaPostListUrl: (params?: import("./schemas").GetApiAlphaPostListParams) => string;
81
- getApiAlphaPostList: (// Two instances at the same time:
82
- params?: import("./schemas").GetApiAlphaPostListParams, options?: RequestInit) => Promise<import("./schemas").ListPostsResponse>;
81
+ getApiAlphaPostList: (params?: import("./schemas").GetApiAlphaPostListParams, options?: RequestInit) => Promise<import("./schemas").ListPostsResponse>;
83
82
  getGetApiAlphaPostList2Url: (params?: import("./schemas").GetApiAlphaPostList2Params) => string;
84
83
  getApiAlphaPostList2: (params?: import("./schemas").GetApiAlphaPostList2Params, options?: RequestInit) => Promise<import("./schemas").ListPostsResponse>;
85
84
  getGetApiAlphaPostUrl: (params: import("./schemas").GetApiAlphaPostParams) => string;
@@ -203,29 +202,15 @@ declare const allFns: {
203
202
  getGetApiAlphaCommentLikeListUrl: (params: import("./schemas").GetApiAlphaCommentLikeListParams) => string;
204
203
  getApiAlphaCommentLikeList: (params: import("./schemas").GetApiAlphaCommentLikeListParams, options?: RequestInit) => Promise<import("./schemas").ListCommentLikesResponse>;
205
204
  getGetApiAlphaAdminRegistrationApplicationListUrl: (params?: import("./schemas").GetApiAlphaAdminRegistrationApplicationListParams) => string;
206
- getApiAlphaAdminRegistrationApplicationList: (params?: import("./schemas").GetApiAlphaAdminRegistrationApplicationListParams, options?: RequestInit /**
207
- * Create a client bound to a specific PieFed instance.
208
- *
209
- * @example
210
- * const client = createClient('https://piefed.social');
211
- * const site = await client.getApiAlphaSite();
212
- *
213
- * // With auth:
214
- * const client = createClient('https://piefed.social', {
215
- * headers: { Authorization: 'Bearer <token>' },
216
- * });
217
- *
218
- * // Two instances at the same time:
219
- * const a = createClient('https://instance-a.com');
220
- * const b = createClient('https://instance-b.com');
221
- */) => Promise<import("./schemas").GetRegistrationListResponse>;
205
+ getApiAlphaAdminRegistrationApplicationList: (params?: import("./schemas").GetApiAlphaAdminRegistrationApplicationListParams, options?: RequestInit) => Promise<import("./schemas").GetRegistrationListResponse>;
222
206
  getPutApiAlphaAdminRegistrationApplicationApproveUrl: () => string;
223
207
  putApiAlphaAdminRegistrationApplicationApprove: (registrationApproveRequest: import("./schemas").RegistrationApproveRequest, options?: RequestInit) => Promise<void>;
224
208
  };
225
209
  type AsyncFn = (...args: any[]) => Promise<any>;
226
- type ApiFunctions = {
227
- [K in keyof typeof allFns as (typeof allFns)[K] extends AsyncFn ? K : never]: (typeof allFns)[K];
228
- };
210
+ type AsyncKeys = {
211
+ [K in keyof typeof allFns]: (typeof allFns)[K] extends AsyncFn ? K : never;
212
+ }[keyof typeof allFns];
213
+ type ApiFunctions = Pick<typeof allFns, AsyncKeys>;
229
214
  interface CreateClientOptions extends Omit<RequestInit, 'body' | 'method'> {
230
215
  /** Default headers merged into every request (e.g. Authorization). */
231
216
  headers?: Record<string, string>;
@@ -1 +1 @@
1
- {"version":3,"file":"create-client.d.ts","sourceRoot":"","sources":["../src/create-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-client.d.ts","sourceRoot":"","sources":["../src/create-client.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"create-client.js","sourceRoot":"","sources":["../src/create-client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDA,oCA+BC;AApFD,4DAA8C;AAC9C,kEAAoD;AACpD,wEAA0D;AAC1D,yDAA2C;AAC3C,yDAA2C;AAC3C,yDAA2C;AAC3C,yFAA2E;AAC3E,yDAA2C;AAC3C,4DAA8C;AAC9C,+DAAiD;AACjD,yDAA2C;AAE3C,MAAM,MAAM,GAAG;IACb,GAAG,KAAK;IACR,GAAG,OAAO;IACV,GAAG,SAAS;IACZ,GAAG,IAAI;IACP,GAAG,IAAI;IACP,GAAG,IAAI;IACP,GAAG,cAAc;IACjB,GAAG,IAAI;IACP,GAAG,KAAK;IACR,GAAG,MAAM;IACT,GAAG,IAAI;CACR,CAAC;AAaF;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,YAAY,CAAC,OAAe,EAAE,UAA+B,EAAE;IAC7E,MAAM,QAAQ,GAAG,EAA6B,CAAC;IAE/C,KAAK,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/C,IAAI,OAAO,EAAE,KAAK,UAAU;YAAE,SAAS;QAEvC,uEAAuE;QACvE,MAAM,YAAY,GAAI,EAAc,CAAC,MAAM,GAAG,CAAC,CAAC;QAEhD,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;YACrC,gDAAgD;YAChD,OAAO,IAAI,CAAC,MAAM,IAAI,YAAY;gBAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAEzD,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,WAAW,EAAE,GAAG,OAAO,CAAC;YAC5D,MAAM,KAAK,GAAsC,EAAE,GAAG,WAAW,EAAE,OAAO,EAAE,CAAC;YAC7E,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAqD,CAAC;YAExF,IAAI,CAAC,YAAY,CAAC,GAAG;gBACnB,GAAG,KAAK;gBACR,GAAG,QAAQ;gBACX,OAAO,EAAE;oBACP,GAAG,cAAc;oBACjB,GAAI,QAAQ,EAAE,OAA8C;iBAC7D;aACF,CAAC;YAEF,OAAQ,EAAc,CAAC,GAAG,IAAI,CAAC,CAAC;QAClC,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,QAAwB,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"create-client.js","sourceRoot":"","sources":["../src/create-client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoDA,oCA+BC;AAnFD,4DAA8C;AAC9C,kEAAoD;AACpD,wEAA0D;AAC1D,yDAA2C;AAC3C,yDAA2C;AAC3C,yDAA2C;AAC3C,yFAA2E;AAC3E,yDAA2C;AAC3C,4DAA8C;AAC9C,+DAAiD;AACjD,yDAA2C;AAE3C,MAAM,MAAM,GAAG;IACb,GAAG,KAAK;IACR,GAAG,OAAO;IACV,GAAG,SAAS;IACZ,GAAG,IAAI;IACP,GAAG,IAAI;IACP,GAAG,IAAI;IACP,GAAG,cAAc;IACjB,GAAG,IAAI;IACP,GAAG,KAAK;IACR,GAAG,MAAM;IACT,GAAG,IAAI;CACR,CAAC;AAYF;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,YAAY,CAAC,OAAe,EAAE,UAA+B,EAAE;IAC7E,MAAM,QAAQ,GAAG,EAA6B,CAAC;IAE/C,KAAK,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/C,IAAI,OAAO,EAAE,KAAK,UAAU;YAAE,SAAS;QAEvC,uEAAuE;QACvE,MAAM,YAAY,GAAI,EAAc,CAAC,MAAM,GAAG,CAAC,CAAC;QAEhD,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;YACrC,gDAAgD;YAChD,OAAO,IAAI,CAAC,MAAM,IAAI,YAAY;gBAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAEzD,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,WAAW,EAAE,GAAG,OAAO,CAAC;YAC5D,MAAM,KAAK,GAAsC,EAAE,GAAG,WAAW,EAAE,OAAO,EAAE,CAAC;YAC7E,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAqD,CAAC;YAExF,IAAI,CAAC,YAAY,CAAC,GAAG;gBACnB,GAAG,KAAK;gBACR,GAAG,QAAQ;gBACX,OAAO,EAAE;oBACP,GAAG,cAAc;oBACjB,GAAI,QAAQ,EAAE,OAA8C;iBAC7D;aACF,CAAC;YAEF,OAAQ,EAAc,CAAC,GAAG,IAAI,CAAC,CAAC;QAClC,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,QAAwB,CAAC;AAClC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { configure, ApiError } from './mutator/custom-fetch';
1
+ export { ApiError } from './mutator/custom-fetch';
2
2
  export { createClient } from './create-client';
3
3
  export * from './schemas/index';
4
4
  export * from './client/admin/admin';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,cAAc,iBAAiB,CAAC;AAGhC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0CAA0C,CAAC;AACzD,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,cAAc,iBAAiB,CAAC;AAGhC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0CAA0C,CAAC;AACzD,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC"}
package/dist/index.js CHANGED
@@ -14,10 +14,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.createClient = exports.ApiError = exports.configure = void 0;
17
+ exports.createClient = exports.ApiError = void 0;
18
18
  // Configuration and client factory
19
19
  var custom_fetch_1 = require("./mutator/custom-fetch");
20
- Object.defineProperty(exports, "configure", { enumerable: true, get: function () { return custom_fetch_1.configure; } });
21
20
  Object.defineProperty(exports, "ApiError", { enumerable: true, get: function () { return custom_fetch_1.ApiError; } });
22
21
  var create_client_1 = require("./create-client");
23
22
  Object.defineProperty(exports, "createClient", { enumerable: true, get: function () { return create_client_1.createClient; } });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,mCAAmC;AACnC,uDAA6D;AAApD,yGAAA,SAAS,OAAA;AAAE,wGAAA,QAAQ,OAAA;AAC5B,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AAErB,+CAA+C;AAC/C,kDAAgC;AAEhC,0DAA0D;AAC1D,uDAAqC;AACrC,2DAAyC;AACzC,+DAA6C;AAC7C,qDAAmC;AACnC,qDAAmC;AACnC,qDAAmC;AACnC,2EAAyD;AACzD,qDAAmC;AACnC,uDAAqC;AACrC,yDAAuC;AACvC,qDAAmC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,mCAAmC;AACnC,uDAAkD;AAAzC,wGAAA,QAAQ,OAAA;AACjB,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AAErB,+CAA+C;AAC/C,kDAAgC;AAEhC,0DAA0D;AAC1D,uDAAqC;AACrC,2DAAyC;AACzC,+DAA6C;AAC7C,qDAAmC;AACnC,qDAAmC;AACnC,qDAAmC;AACnC,2EAAyD;AACzD,qDAAmC;AACnC,uDAAqC;AACrC,yDAAuC;AACvC,qDAAmC"}
@@ -4,9 +4,6 @@ declare global {
4
4
  baseUrl?: string;
5
5
  }
6
6
  }
7
- export declare function configure(options: {
8
- baseUrl: string;
9
- }): void;
10
7
  export declare class ApiError extends Error {
11
8
  readonly status: number;
12
9
  readonly data: unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"custom-fetch.d.ts","sourceRoot":"","sources":["../../src/mutator/custom-fetch.ts"],"names":[],"mappings":"AAEA,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,WAAW;QACnB,2DAA2D;QAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB;CACF;AAID,wBAAgB,SAAS,CAAC,OAAO,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,QAErD;AAED,qBAAa,QAAS,SAAQ,KAAK;aAEf,MAAM,EAAE,MAAM;aACd,IAAI,EAAE,OAAO;gBADb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,OAAO;CAKhC;AAED,eAAO,MAAM,WAAW,GAAU,CAAC,EACjC,KAAK,MAAM,EACX,UAAU,WAAW,KACpB,OAAO,CAAC,CAAC,CAaX,CAAC"}
1
+ {"version":3,"file":"custom-fetch.d.ts","sourceRoot":"","sources":["../../src/mutator/custom-fetch.ts"],"names":[],"mappings":"AAEA,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,WAAW;QACnB,2DAA2D;QAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB;CACF;AAED,qBAAa,QAAS,SAAQ,KAAK;aAEf,MAAM,EAAE,MAAM;aACd,IAAI,EAAE,OAAO;gBADb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,OAAO;CAKhC;AAED,eAAO,MAAM,WAAW,GAAU,CAAC,EACjC,KAAK,MAAM,EACX,UAAU,WAAW,KACpB,OAAO,CAAC,CAAC,CAcX,CAAC"}
@@ -1,11 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.customFetch = exports.ApiError = void 0;
4
- exports.configure = configure;
5
- let _defaultBaseUrl = 'https://piefed.social';
6
- function configure(options) {
7
- _defaultBaseUrl = options.baseUrl.replace(/\/$/, '');
8
- }
9
4
  class ApiError extends Error {
10
5
  status;
11
6
  data;
@@ -18,7 +13,9 @@ class ApiError extends Error {
18
13
  }
19
14
  exports.ApiError = ApiError;
20
15
  const customFetch = async (url, options) => {
21
- const { baseUrl = _defaultBaseUrl, ...fetchOptions } = options ?? {};
16
+ const { baseUrl, ...fetchOptions } = options ?? {};
17
+ if (!baseUrl)
18
+ throw new Error('baseUrl is required — use createClient() to make requests');
22
19
  const base = baseUrl.replace(/\/$/, '');
23
20
  const res = await fetch(`${base}${url}`, fetchOptions);
24
21
  const body = [204, 205, 304].includes(res.status) ? null : await res.text();
@@ -1 +1 @@
1
- {"version":3,"file":"custom-fetch.js","sourceRoot":"","sources":["../../src/mutator/custom-fetch.ts"],"names":[],"mappings":";;;AAWA,8BAEC;AAJD,IAAI,eAAe,GAAG,uBAAuB,CAAC;AAE9C,SAAgB,SAAS,CAAC,OAA4B;IACpD,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,MAAa,QAAS,SAAQ,KAAK;IAEf;IACA;IAFlB,YACkB,MAAc,EACd,IAAa;QAE7B,KAAK,CAAC,aAAa,MAAM,EAAE,CAAC,CAAC;QAHb,WAAM,GAAN,MAAM,CAAQ;QACd,SAAI,GAAJ,IAAI,CAAS;QAG7B,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF;AARD,4BAQC;AAEM,MAAM,WAAW,GAAG,KAAK,EAC9B,GAAW,EACX,OAAqB,EACT,EAAE;IACd,MAAM,EAAE,OAAO,GAAG,eAAe,EAAE,GAAG,YAAY,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IACrE,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAExC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,YAAY,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC5E,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE1C,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,IAAS,CAAC;AACnB,CAAC,CAAC;AAhBW,QAAA,WAAW,eAgBtB"}
1
+ {"version":3,"file":"custom-fetch.js","sourceRoot":"","sources":["../../src/mutator/custom-fetch.ts"],"names":[],"mappings":";;;AASA,MAAa,QAAS,SAAQ,KAAK;IAEf;IACA;IAFlB,YACkB,MAAc,EACd,IAAa;QAE7B,KAAK,CAAC,aAAa,MAAM,EAAE,CAAC,CAAC;QAHb,WAAM,GAAN,MAAM,CAAQ;QACd,SAAI,GAAJ,IAAI,CAAS;QAG7B,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF;AARD,4BAQC;AAEM,MAAM,WAAW,GAAG,KAAK,EAC9B,GAAW,EACX,OAAqB,EACT,EAAE;IACd,MAAM,EAAE,OAAO,EAAE,GAAG,YAAY,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IACnD,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC3F,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAExC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,YAAY,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC5E,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE1C,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,IAAS,CAAC;AACnB,CAAC,CAAC;AAjBW,QAAA,WAAW,eAiBtB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blorp-labs/piefed-api-client",
3
- "version": "0.0.0-774e8e8",
3
+ "version": "0.0.0-7b3ed49",
4
4
  "description": "Typed TypeScript client for the PieFed API, generated from the OpenAPI spec",
5
5
  "packageManager": "pnpm@10.6.5",
6
6
  "main": "./dist/index.js",
@@ -22,14 +22,16 @@
22
22
  "scripts": {
23
23
  "generate": "orval --config orval.config.ts",
24
24
  "build": "tsc",
25
- "prepublishOnly": "pnpm build"
25
+ "prepublishOnly": "pnpm build",
26
+ "test": "vitest run"
26
27
  },
27
28
  "dependencies": {
28
29
  "zod": "^3.23.8"
29
30
  },
30
31
  "devDependencies": {
31
32
  "orval": "^7.3.0",
32
- "typescript": "^5.7.3"
33
+ "typescript": "^5.7.3",
34
+ "vitest": "^2.0.0"
33
35
  },
34
36
  "repository": {
35
37
  "type": "git",
@@ -0,0 +1,269 @@
1
+ import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
2
+ import { createClient } from '../create-client';
3
+ import { ApiError } from '../mutator/custom-fetch';
4
+
5
+ const BASE_URL = 'https://test.example.com';
6
+
7
+ function makeResponse(body: unknown, status = 200) {
8
+ return new Response(JSON.stringify(body), {
9
+ status,
10
+ headers: { 'Content-Type': 'application/json' },
11
+ });
12
+ }
13
+
14
+ let fetchSpy: ReturnType<typeof vi.fn>;
15
+
16
+ beforeEach(() => {
17
+ fetchSpy = vi.fn().mockImplementation(() => Promise.resolve(makeResponse({ ok: true })));
18
+ vi.stubGlobal('fetch', fetchSpy);
19
+ });
20
+
21
+ afterEach(() => vi.unstubAllGlobals());
22
+
23
+ // ---------------------------------------------------------------------------
24
+ // Helpers
25
+ // ---------------------------------------------------------------------------
26
+
27
+ function lastCall() {
28
+ return fetchSpy.mock.calls[fetchSpy.mock.calls.length - 1] as [string, RequestInit];
29
+ }
30
+
31
+ function lastUrl() {
32
+ return lastCall()[0];
33
+ }
34
+
35
+ function lastOptions() {
36
+ return lastCall()[1];
37
+ }
38
+
39
+ function lastHeaders(): Record<string, string> {
40
+ return (lastOptions().headers ?? {}) as Record<string, string>;
41
+ }
42
+
43
+ // ---------------------------------------------------------------------------
44
+ // GET no-params (fn.length = 1): getApiAlphaSite(options?)
45
+ // ---------------------------------------------------------------------------
46
+
47
+ describe('getApiAlphaSite — GET, no params', () => {
48
+ it('forwards default headers', async () => {
49
+ const client = createClient(BASE_URL, {
50
+ headers: { Authorization: 'Bearer tok' },
51
+ });
52
+ await client.getApiAlphaSite();
53
+ expect(lastHeaders()['Authorization']).toBe('Bearer tok');
54
+ });
55
+
56
+ it('merges per-call headers on top of defaults (per-call wins)', async () => {
57
+ const client = createClient(BASE_URL, {
58
+ headers: { Authorization: 'Bearer default', 'X-Custom': 'base' },
59
+ });
60
+ await client.getApiAlphaSite({ headers: { Authorization: 'Bearer override' } });
61
+ expect(lastHeaders()['Authorization']).toBe('Bearer override');
62
+ expect(lastHeaders()['X-Custom']).toBe('base');
63
+ });
64
+
65
+ it('forwards default RequestInit options (e.g. cache)', async () => {
66
+ const client = createClient(BASE_URL, { cache: 'no-store' });
67
+ await client.getApiAlphaSite();
68
+ expect(lastOptions().cache).toBe('no-store');
69
+ });
70
+
71
+ it('per-call RequestInit options override defaults', async () => {
72
+ const client = createClient(BASE_URL, { cache: 'no-store' });
73
+ await client.getApiAlphaSite({ cache: 'force-cache' });
74
+ expect(lastOptions().cache).toBe('force-cache');
75
+ });
76
+
77
+ it('prepends baseUrl to the path', async () => {
78
+ const client = createClient(BASE_URL);
79
+ await client.getApiAlphaSite();
80
+ expect(lastUrl()).toBe(`${BASE_URL}/api/alpha/site`);
81
+ });
82
+ });
83
+
84
+ // ---------------------------------------------------------------------------
85
+ // GET optional-params (fn.length = 2): getApiAlphaPostList(params?, options?)
86
+ // ---------------------------------------------------------------------------
87
+
88
+ describe('getApiAlphaPostList — GET, optional params', () => {
89
+ it('forwards default headers when params are provided', async () => {
90
+ const client = createClient(BASE_URL, {
91
+ headers: { Authorization: 'Bearer tok' },
92
+ });
93
+ await client.getApiAlphaPostList({ page: 1 });
94
+ expect(lastHeaders()['Authorization']).toBe('Bearer tok');
95
+ });
96
+
97
+ it('forwards default headers when params are omitted', async () => {
98
+ const client = createClient(BASE_URL, {
99
+ headers: { Authorization: 'Bearer tok' },
100
+ });
101
+ await client.getApiAlphaPostList();
102
+ expect(lastHeaders()['Authorization']).toBe('Bearer tok');
103
+ });
104
+
105
+ it('merges per-call headers (options as second arg)', async () => {
106
+ const client = createClient(BASE_URL, {
107
+ headers: { Authorization: 'Bearer default' },
108
+ });
109
+ await client.getApiAlphaPostList(
110
+ { page: 1 },
111
+ { headers: { Authorization: 'Bearer override' } },
112
+ );
113
+ expect(lastHeaders()['Authorization']).toBe('Bearer override');
114
+ });
115
+
116
+ it('constructs correct URL with query params', async () => {
117
+ const client = createClient(BASE_URL);
118
+ await client.getApiAlphaPostList({ page: 2 });
119
+ expect(lastUrl()).toContain(`${BASE_URL}/api/alpha/post/list`);
120
+ expect(lastUrl()).toContain('page=2');
121
+ });
122
+ });
123
+
124
+ // ---------------------------------------------------------------------------
125
+ // GET required-params (fn.length = 2): getApiAlphaPost(params, options?)
126
+ // ---------------------------------------------------------------------------
127
+
128
+ describe('getApiAlphaPost — GET, required params', () => {
129
+ const params = { id: 42 };
130
+
131
+ it('forwards default headers', async () => {
132
+ const client = createClient(BASE_URL, {
133
+ headers: { Authorization: 'Bearer tok' },
134
+ });
135
+ await client.getApiAlphaPost(params);
136
+ expect(lastHeaders()['Authorization']).toBe('Bearer tok');
137
+ });
138
+
139
+ it('merges per-call headers', async () => {
140
+ const client = createClient(BASE_URL, {
141
+ headers: { Authorization: 'Bearer default' },
142
+ });
143
+ await client.getApiAlphaPost(params, { headers: { Authorization: 'Bearer override' } });
144
+ expect(lastHeaders()['Authorization']).toBe('Bearer override');
145
+ });
146
+
147
+ it('forwards default cache option', async () => {
148
+ const client = createClient(BASE_URL, { cache: 'no-store' });
149
+ await client.getApiAlphaPost(params);
150
+ expect(lastOptions().cache).toBe('no-store');
151
+ });
152
+ });
153
+
154
+ // ---------------------------------------------------------------------------
155
+ // POST required-body (fn.length = 2): postApiAlphaSiteBlock(body, options?)
156
+ // ---------------------------------------------------------------------------
157
+
158
+ describe('postApiAlphaSiteBlock — POST, required body', () => {
159
+ const body = { instance: 'spam.example.com', block: true };
160
+
161
+ it('sends the body correctly (not corrupted)', async () => {
162
+ const client = createClient(BASE_URL);
163
+ await client.postApiAlphaSiteBlock(body);
164
+ expect(lastOptions().body).toBe(JSON.stringify(body));
165
+ });
166
+
167
+ it('forwards default headers alongside Content-Type', async () => {
168
+ const client = createClient(BASE_URL, {
169
+ headers: { Authorization: 'Bearer tok' },
170
+ });
171
+ await client.postApiAlphaSiteBlock(body);
172
+ expect(lastHeaders()['Authorization']).toBe('Bearer tok');
173
+ expect(lastHeaders()['Content-Type']).toBe('application/json');
174
+ });
175
+
176
+ it('merges per-call headers without losing body', async () => {
177
+ const client = createClient(BASE_URL, {
178
+ headers: { Authorization: 'Bearer default' },
179
+ });
180
+ await client.postApiAlphaSiteBlock(body, {
181
+ headers: { Authorization: 'Bearer override' },
182
+ });
183
+ expect(lastHeaders()['Authorization']).toBe('Bearer override');
184
+ expect(lastOptions().body).toBe(JSON.stringify(body));
185
+ });
186
+
187
+ it('uses POST method', async () => {
188
+ const client = createClient(BASE_URL);
189
+ await client.postApiAlphaSiteBlock(body);
190
+ expect(lastOptions().method).toBe('POST');
191
+ });
192
+ });
193
+
194
+ // ---------------------------------------------------------------------------
195
+ // Error handling
196
+ // ---------------------------------------------------------------------------
197
+
198
+ describe('ApiError', () => {
199
+ it('throws ApiError with correct status and data on 4xx', async () => {
200
+ fetchSpy.mockImplementation(() => Promise.resolve(makeResponse({ error: 'not found' }, 404)));
201
+ const client = createClient(BASE_URL);
202
+
203
+ await expect(client.getApiAlphaSite()).rejects.toMatchObject({
204
+ name: 'ApiError',
205
+ status: 404,
206
+ data: { error: 'not found' },
207
+ });
208
+ });
209
+
210
+ it('throws ApiError on 5xx', async () => {
211
+ fetchSpy.mockImplementation(() => Promise.resolve(makeResponse({ error: 'server error' }, 500)));
212
+ const client = createClient(BASE_URL);
213
+
214
+ const err = await client.getApiAlphaSite().catch((e) => e);
215
+ expect(err).toBeInstanceOf(ApiError);
216
+ expect(err.status).toBe(500);
217
+ });
218
+ });
219
+
220
+ // ---------------------------------------------------------------------------
221
+ // AbortController
222
+ // ---------------------------------------------------------------------------
223
+
224
+ describe('AbortController', () => {
225
+ it('forwards signal to fetch', async () => {
226
+ const controller = new AbortController();
227
+ const client = createClient(BASE_URL);
228
+ await client.getApiAlphaSite({ signal: controller.signal });
229
+ expect(lastOptions().signal).toBe(controller.signal);
230
+ });
231
+
232
+ it('propagates abort error when signal is already aborted', async () => {
233
+ const controller = new AbortController();
234
+ controller.abort();
235
+ fetchSpy.mockImplementation((_url: string, opts: RequestInit) => {
236
+ if (opts.signal?.aborted) return Promise.reject(new DOMException('Aborted', 'AbortError'));
237
+ return Promise.resolve(makeResponse({ ok: true }));
238
+ });
239
+ const client = createClient(BASE_URL);
240
+ const err = await client.getApiAlphaSite({ signal: controller.signal }).catch((e) => e);
241
+ expect(err.name).toBe('AbortError');
242
+ });
243
+ });
244
+
245
+ // ---------------------------------------------------------------------------
246
+ // baseUrl
247
+ // ---------------------------------------------------------------------------
248
+
249
+ describe('baseUrl construction', () => {
250
+ it('trims trailing slash from baseUrl', async () => {
251
+ const client = createClient('https://test.example.com/');
252
+ await client.getApiAlphaSite();
253
+ expect(lastUrl()).toBe('https://test.example.com/api/alpha/site');
254
+ });
255
+
256
+ it('different clients use their own baseUrl', async () => {
257
+ const a = createClient('https://instance-a.com');
258
+ const b = createClient('https://instance-b.com');
259
+
260
+ await a.getApiAlphaSite();
261
+ const urlA = lastUrl();
262
+
263
+ await b.getApiAlphaSite();
264
+ const urlB = lastUrl();
265
+
266
+ expect(urlA).toBe('https://instance-a.com/api/alpha/site');
267
+ expect(urlB).toBe('https://instance-b.com/api/alpha/site');
268
+ });
269
+ });
@@ -26,9 +26,8 @@ const allFns = {
26
26
 
27
27
  // Only the async API functions (not URL helpers or type exports)
28
28
  type AsyncFn = (...args: any[]) => Promise<any>;
29
- type ApiFunctions = {
30
- [K in keyof typeof allFns as (typeof allFns)[K] extends AsyncFn ? K : never]: (typeof allFns)[K];
31
- };
29
+ type AsyncKeys = { [K in keyof typeof allFns]: (typeof allFns)[K] extends AsyncFn ? K : never }[keyof typeof allFns];
30
+ type ApiFunctions = Pick<typeof allFns, AsyncKeys>;
32
31
 
33
32
  interface CreateClientOptions extends Omit<RequestInit, 'body' | 'method'> {
34
33
  /** Default headers merged into every request (e.g. Authorization). */
package/src/index.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  // Configuration and client factory
2
- export { configure, ApiError } from './mutator/custom-fetch';
2
+ export { ApiError } from './mutator/custom-fetch';
3
3
  export { createClient } from './create-client';
4
4
 
5
5
  // Re-export generated TypeScript types/schemas
@@ -7,12 +7,6 @@ declare global {
7
7
  }
8
8
  }
9
9
 
10
- let _defaultBaseUrl = 'https://piefed.social';
11
-
12
- export function configure(options: { baseUrl: string }) {
13
- _defaultBaseUrl = options.baseUrl.replace(/\/$/, '');
14
- }
15
-
16
10
  export class ApiError extends Error {
17
11
  constructor(
18
12
  public readonly status: number,
@@ -27,7 +21,8 @@ export const customFetch = async <T>(
27
21
  url: string,
28
22
  options?: RequestInit,
29
23
  ): Promise<T> => {
30
- const { baseUrl = _defaultBaseUrl, ...fetchOptions } = options ?? {};
24
+ const { baseUrl, ...fetchOptions } = options ?? {};
25
+ if (!baseUrl) throw new Error('baseUrl is required — use createClient() to make requests');
31
26
  const base = baseUrl.replace(/\/$/, '');
32
27
 
33
28
  const res = await fetch(`${base}${url}`, fetchOptions);