@bikefinder/api-client 0.1.0 → 0.3.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 (127) hide show
  1. package/README.md +56 -13
  2. package/dist/admin/generated/client/client.gen.d.ts +3 -0
  3. package/dist/admin/generated/client/client.gen.d.ts.map +1 -0
  4. package/dist/admin/generated/client/client.gen.js +218 -0
  5. package/dist/admin/generated/client/client.gen.js.map +1 -0
  6. package/dist/admin/generated/client/index.d.ts +11 -0
  7. package/dist/admin/generated/client/index.d.ts.map +1 -0
  8. package/dist/admin/generated/client/index.js +7 -0
  9. package/dist/admin/generated/client/index.js.map +1 -0
  10. package/dist/admin/generated/client/types.gen.d.ts +121 -0
  11. package/dist/admin/generated/client/types.gen.d.ts.map +1 -0
  12. package/dist/admin/generated/client/types.gen.js +3 -0
  13. package/dist/admin/generated/client/types.gen.js.map +1 -0
  14. package/dist/admin/generated/client/utils.gen.d.ts +38 -0
  15. package/dist/admin/generated/client/utils.gen.d.ts.map +1 -0
  16. package/dist/admin/generated/client/utils.gen.js +232 -0
  17. package/dist/admin/generated/client/utils.gen.js.map +1 -0
  18. package/dist/admin/generated/client.gen.d.ts +13 -0
  19. package/dist/admin/generated/client.gen.d.ts.map +1 -0
  20. package/dist/admin/generated/client.gen.js +4 -0
  21. package/dist/admin/generated/client.gen.js.map +1 -0
  22. package/dist/admin/generated/core/auth.gen.d.ts +26 -0
  23. package/dist/admin/generated/core/auth.gen.d.ts.map +1 -0
  24. package/dist/admin/generated/core/auth.gen.js +15 -0
  25. package/dist/admin/generated/core/auth.gen.js.map +1 -0
  26. package/dist/admin/generated/core/bodySerializer.gen.d.ts +26 -0
  27. package/dist/admin/generated/core/bodySerializer.gen.d.ts.map +1 -0
  28. package/dist/admin/generated/core/bodySerializer.gen.js +58 -0
  29. package/dist/admin/generated/core/bodySerializer.gen.js.map +1 -0
  30. package/dist/admin/generated/core/params.gen.d.ts +44 -0
  31. package/dist/admin/generated/core/params.gen.d.ts.map +1 -0
  32. package/dist/admin/generated/core/params.gen.js +113 -0
  33. package/dist/admin/generated/core/params.gen.js.map +1 -0
  34. package/dist/admin/generated/core/pathSerializer.gen.d.ts +34 -0
  35. package/dist/admin/generated/core/pathSerializer.gen.d.ts.map +1 -0
  36. package/dist/admin/generated/core/pathSerializer.gen.js +115 -0
  37. package/dist/admin/generated/core/pathSerializer.gen.js.map +1 -0
  38. package/dist/admin/generated/core/queryKeySerializer.gen.d.ts +19 -0
  39. package/dist/admin/generated/core/queryKeySerializer.gen.d.ts.map +1 -0
  40. package/dist/admin/generated/core/queryKeySerializer.gen.js +100 -0
  41. package/dist/admin/generated/core/queryKeySerializer.gen.js.map +1 -0
  42. package/dist/admin/generated/core/serverSentEvents.gen.d.ts +72 -0
  43. package/dist/admin/generated/core/serverSentEvents.gen.d.ts.map +1 -0
  44. package/dist/admin/generated/core/serverSentEvents.gen.js +137 -0
  45. package/dist/admin/generated/core/serverSentEvents.gen.js.map +1 -0
  46. package/dist/admin/generated/core/types.gen.d.ts +84 -0
  47. package/dist/admin/generated/core/types.gen.d.ts.map +1 -0
  48. package/dist/admin/generated/core/types.gen.js +3 -0
  49. package/dist/admin/generated/core/types.gen.js.map +1 -0
  50. package/dist/admin/generated/core/utils.gen.d.ts +20 -0
  51. package/dist/admin/generated/core/utils.gen.d.ts.map +1 -0
  52. package/dist/admin/generated/core/utils.gen.js +88 -0
  53. package/dist/admin/generated/core/utils.gen.js.map +1 -0
  54. package/dist/admin/generated/index.d.ts +3 -0
  55. package/dist/admin/generated/index.d.ts.map +1 -0
  56. package/dist/admin/generated/index.js +3 -0
  57. package/dist/admin/generated/index.js.map +1 -0
  58. package/dist/admin/generated/sdk.gen.d.ts +74 -0
  59. package/dist/admin/generated/sdk.gen.d.ts.map +1 -0
  60. package/dist/admin/generated/sdk.gen.js +417 -0
  61. package/dist/admin/generated/sdk.gen.js.map +1 -0
  62. package/dist/admin/generated/types.gen.d.ts +2087 -0
  63. package/dist/admin/generated/types.gen.d.ts.map +1 -0
  64. package/dist/admin/generated/types.gen.js +3 -0
  65. package/dist/admin/generated/types.gen.js.map +1 -0
  66. package/dist/admin/generated/zod.gen.d.ts +2786 -0
  67. package/dist/admin/generated/zod.gen.d.ts.map +1 -0
  68. package/dist/admin/generated/zod.gen.js +659 -0
  69. package/dist/admin/generated/zod.gen.js.map +1 -0
  70. package/dist/admin/index.d.ts +15 -0
  71. package/dist/admin/index.d.ts.map +1 -0
  72. package/dist/admin/index.js +19 -0
  73. package/dist/admin/index.js.map +1 -0
  74. package/dist/generated/index.d.ts +1 -1
  75. package/dist/generated/index.d.ts.map +1 -1
  76. package/dist/generated/sdk.gen.d.ts +128 -2
  77. package/dist/generated/sdk.gen.d.ts.map +1 -1
  78. package/dist/generated/sdk.gen.js +468 -5
  79. package/dist/generated/sdk.gen.js.map +1 -1
  80. package/dist/generated/types.gen.d.ts +1867 -0
  81. package/dist/generated/types.gen.d.ts.map +1 -1
  82. package/dist/generated/zod.gen.d.ts +1063 -0
  83. package/dist/generated/zod.gen.d.ts.map +1 -1
  84. package/dist/generated/zod.gen.js +801 -0
  85. package/dist/generated/zod.gen.js.map +1 -1
  86. package/dist/http-client.d.ts +1 -1
  87. package/dist/http-client.d.ts.map +1 -1
  88. package/dist/http-client.js +3 -3
  89. package/dist/http-client.js.map +1 -1
  90. package/dist/index.d.ts +2 -0
  91. package/dist/index.d.ts.map +1 -1
  92. package/dist/index.js +3 -2
  93. package/dist/index.js.map +1 -1
  94. package/dist/realtime/watch.d.ts +21 -0
  95. package/dist/realtime/watch.d.ts.map +1 -0
  96. package/dist/realtime/{watch-trackers.js → watch.js} +13 -11
  97. package/dist/realtime/watch.js.map +1 -0
  98. package/package.json +7 -2
  99. package/src/admin/generated/client/client.gen.ts +300 -0
  100. package/src/admin/generated/client/index.ts +27 -0
  101. package/src/admin/generated/client/types.gen.ts +238 -0
  102. package/src/admin/generated/client/utils.gen.ts +337 -0
  103. package/src/admin/generated/client.gen.ts +24 -0
  104. package/src/admin/generated/core/auth.gen.ts +49 -0
  105. package/src/admin/generated/core/bodySerializer.gen.ts +96 -0
  106. package/src/admin/generated/core/params.gen.ts +188 -0
  107. package/src/admin/generated/core/pathSerializer.gen.ts +186 -0
  108. package/src/admin/generated/core/queryKeySerializer.gen.ts +134 -0
  109. package/src/admin/generated/core/serverSentEvents.gen.ts +265 -0
  110. package/src/admin/generated/core/types.gen.ts +126 -0
  111. package/src/admin/generated/core/utils.gen.ts +146 -0
  112. package/src/admin/generated/index.ts +237 -0
  113. package/src/admin/generated/sdk.gen.ts +1066 -0
  114. package/src/admin/generated/types.gen.ts +2418 -0
  115. package/src/admin/generated/zod.gen.ts +805 -0
  116. package/src/admin/index.ts +34 -0
  117. package/src/generated/index.ts +232 -0
  118. package/src/generated/sdk.gen.ts +1072 -11
  119. package/src/generated/types.gen.ts +2215 -42
  120. package/src/generated/zod.gen.ts +968 -14
  121. package/src/http-client.ts +6 -3
  122. package/src/index.ts +10 -2
  123. package/src/realtime/watch.ts +158 -0
  124. package/dist/realtime/watch-trackers.d.ts +0 -10
  125. package/dist/realtime/watch-trackers.d.ts.map +0 -1
  126. package/dist/realtime/watch-trackers.js.map +0 -1
  127. package/src/realtime/watch-trackers.ts +0 -114
package/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  TypeScript client for BikeFinder's authenticated API. Hey API generates REST and SSE operations, payload types and Zod validators from the server's OpenAPI document. RxJS adds shared subscriptions and reconnect policy around the generated stream. The package has no Firebase, React or Expo dependency. Configure custom transports on `createBikeFinderClient({ fetch })`; per-request `fetch` overrides are rejected so authentication and transport policy cannot be bypassed.
4
4
 
5
+ The customer API introduced in `0.2.0` covers account preferences, notifications, subscriptions, tracker telemetry/history/photos and commands. The additive `0.3.0` candidate adds a separate admin entry point for Support Hub. Admin endpoints and the matching SDK still need deployment/publication before releasing that integration; publishing types does not deploy endpoints. Customer imports and operations remain compatible.
6
+
5
7
  ## Use the client
6
8
 
7
9
  ```ts
@@ -32,7 +34,52 @@ subscription.unsubscribe();
32
34
 
33
35
  `getToken` supplies the consumer's current Firebase **ID token**, not an Auth0 access token or Firebase custom sign-in token. `true` requests a forced refresh after a rejected token. The SDK gets a current token for every REST call and stream connection and performs at most one forced refresh after a `401`. Provider errors are exposed as `AuthenticationError` without their original message or cause. REST HTTP errors are returned as typed `error` results with an optional `response`; transport, cancellation and token-provider failures reject the promise. Generated validators reject malformed successful JSON responses. A supplied per-call `throwOnError: true` also throws HTTP errors.
34
36
 
35
- All endpoint paths, query/path parameters, payload types and validators come from the generated contract. `api.requests` exposes the generated methods, including `getTracker({ path: { trackerId } })` and the native `subscribeTrackers()` async stream. Use `api.watchTrackers()` for application subscriptions: it adds sharing, authentication recovery and reconnection after normal server closure. Existing Firebase callable commands, tracker location and observation history are outside this first API slice.
37
+ All endpoint paths, query/path parameters, payload types and validators come from the generated contract. `api.requests` exposes the generated methods, including `getTracker({ path: { trackerId } })`, account and tracker commands, observation/history reads, gallery uploads and native SSE methods. `api.watch(operation, options)` adds sharing, authentication recovery and reconnection around any generated subscription operation; `api.watchTrackers(query)` remains a convenience for tracker pages.
38
+
39
+ ```ts
40
+ const positions = api.watch("subscribeTrackerPositions", {
41
+ path: { trackerId },
42
+ });
43
+ const subscription = positions.subscribe((state) => {
44
+ replacePositions(state.latest, state.lastPrecise);
45
+ });
46
+ subscription.unsubscribe();
47
+ ```
48
+
49
+ The API resolves legacy and split device layouts to the same public contracts. Consumers do not select Firestore document paths or inspect layout markers. Existing Firebase paths and callable functions remain available for older app versions; adopting this SDK does not migrate device data. A command being exposed through HTTP does not imply its business logic has moved out of existing backend functions.
50
+
51
+ ## Admin client for Support Hub
52
+
53
+ Admin operations have a separate OpenAPI document and generated SDK. Import them explicitly; the customer entry point does not expose admin requests or schemas:
54
+
55
+ ```ts
56
+ import { createBikeFinderAdminClient } from "@bikefinder/api-client/admin";
57
+
58
+ const admin = createBikeFinderAdminClient({
59
+ baseUrl: "https://api.bikefinder.com",
60
+ getToken: (forceRefresh) => auth.currentUser!.getIdToken(forceRefresh),
61
+ });
62
+ const { data, error } = await admin.requests.adminGetSession();
63
+ if (error) throw new Error(error.title ?? "Could not load operator access");
64
+ console.log(data.canRead, data.canWrite);
65
+ ```
66
+
67
+ The factory uses the same bearer refresh, origin restriction, cancellation and validation policy as the customer client. Server authorization decides operator access on every request; importing this subpath grants no permissions. `admin.requests` provides generated operations. Inspection responses preserve typed stored values through the generated `AdminSupportValue` contract rather than exposing Firebase SDK objects.
68
+
69
+ Subscribe to an active tracker view when live root/state changes are useful:
70
+
71
+ ```ts
72
+ const liveView = admin.watch("adminSubscribeTracker", {
73
+ path: { trackerId },
74
+ });
75
+ const subscription = liveView.subscribe((view) => replaceTracker(view));
76
+ // Cancel on view or signed-in identity changes.
77
+ subscription.unsubscribe();
78
+ ```
79
+
80
+ Admin subscriptions reuse the same generated SSE transport and RxJS lifecycle as customer subscriptions. Reuse the observable across consumers, and unsubscribe when no view needs it. Search and paged history remain explicit requests; they do not start unbounded history listeners.
81
+
82
+ `npm run generate` regenerates both `src/generated/` from the customer contract and `src/admin/generated/` from `api/openapi/bikefinder-admin-api.json`. Do not add admin endpoints to the customer contract or edit generated files manually.
36
83
 
37
84
  ## Expo and browsers
38
85
 
@@ -53,11 +100,11 @@ Expo's [Fetch and Web Streams documentation](https://docs.expo.dev/versions/v57.
53
100
 
54
101
  ## Realtime behavior
55
102
 
56
- A returned observable shares one connection across its subscribers and replays its current snapshot to new subscribers. Reuse that observable when multiple consumers need the same page. Separate calls to `watchTrackers` create separate observables. The last unsubscribe cancels the connection and reconnect timer; a later subscription starts fresh. Unsubscribe on logout or account changes.
103
+ A returned observable shares one connection across its subscribers and replays its current snapshot to new subscribers. Reuse that observable when multiple consumers need the same view. Separate calls to `watch` or `watchTrackers` create separate observables. The last unsubscribe cancels the connection and reconnect timer; a later subscription starts fresh. Unsubscribe on logout or account changes, and bind the token provider to that identity so an old subscription cannot reconnect as another user.
57
104
 
58
- Each `snapshot` replaces the full current page. Heartbeats are ignored. The client never sends `Last-Event-ID` or promises historical replay. When disconnected, its internal replay cache is cleared; a new subscriber waits for a fresh snapshot. Existing screens can choose whether to keep their last rendered view while reconnecting.
105
+ Each `snapshot` replaces the full subscribed view. Tracker streams are paged: follow every returned cursor to display all trackers, and discard an old tail when a page boundary changes. Position snapshots contain both `latest` and `lastPrecise`; gallery, account preference and subscription streams have their own generated response types. Heartbeats are ignored. The client never sends `Last-Event-ID` or promises historical replay. When disconnected, its internal replay cache is cleared; a new subscriber waits for a fresh snapshot. Existing screens can choose whether to keep their last rendered view while reconnecting.
59
106
 
60
- Normal server closure, network errors, HTTP `408`, `429` and `5xx` responses reconnect with a jittered exponential delay capped at 30 seconds. Eight consecutive retries exhaust the budget and error the observable; a valid snapshot resets the budget. Subscribe again to retry after exhaustion. Invalid payloads/content types and other HTTP errors stop immediately. `ApiStreamError` exposes safe `code` and optional HTTP `status` values. Additional snapshot fields are stripped for compatibility; required fields are validated with the generated Zod schema. The generated SSE response type includes null for heartbeat payloads; `watchTrackers()` emits only validated tracker pages.
107
+ Normal server closure, network errors, HTTP `408`, `429` and `5xx` responses reconnect with a jittered exponential delay capped at 30 seconds. Eight consecutive retries exhaust the budget and error the observable; a valid snapshot resets the budget. Subscribe again to retry after exhaustion. Invalid payloads/content types and other HTTP errors stop immediately. `ApiStreamError` exposes safe `code` and optional HTTP `status` values. Additional snapshot fields are stripped for compatibility; required fields are validated with the generated Zod schema. Generated SSE response types include null for heartbeat payloads; `watch()` emits only validated snapshots. The API closes connections at token expiry or after 15 minutes, so consumers must expect reconnects during normal use.
61
108
 
62
109
  REST requests accept an `AbortSignal` through their normal request options. Realtime connections stop through RxJS unsubscription. Token-provider calls already in progress cannot themselves be cancelled, but no connection is opened after unsubscription.
63
110
 
@@ -78,11 +125,12 @@ Source responsibilities:
78
125
  | Path | Responsibility |
79
126
  | -------------------- | ------------------------------------------------------------------------------------------------- |
80
127
  | `src/generated/` | Generated REST/SSE SDK, HTTP/SSE runtime, types and Zod validators; regenerate instead of editing |
128
+ | `src/admin/` | Admin factory and separate generated REST SDK, types and validators |
81
129
  | `src/types.ts` | Public generated types and convenient contract aliases |
82
130
  | `src/options.ts` | Client configuration and authentication-provider boundary |
83
131
  | `src/http-client.ts` | Generated client setup and error/interceptor policy |
84
132
  | `src/transport.ts` | Shared bearer refresh, origin restriction and Expo transport policy |
85
- | `src/realtime/` | SSE transport, RxJS lifecycle and snapshot validation |
133
+ | `src/realtime/` | Generic generated-stream adapter, RxJS sharing, heartbeat filtering and reconnect policy |
86
134
  | `src/index.ts` | Public factory and package exports |
87
135
  | `tests/` | Authentication, REST, stream/reconnect and cancellation checks |
88
136
 
@@ -93,18 +141,13 @@ The package emits ESM JavaScript and TypeScript declarations into `dist/`. Build
93
141
  The package targets public npm as `@bikefinder/api-client`. The API repository stays private; the published tarball contains the SDK source and built client, not the server or infrastructure. Consumers install it without registry credentials:
94
142
 
95
143
  ```sh
96
- npm install @bikefinder/api-client@0.1.0
144
+ npm install @bikefinder/api-client@0.2.0
97
145
  ```
98
146
 
99
147
  Remove any previous `@bikefinder:registry=https://npm.pkg.github.com` npm configuration so the scope resolves through the public npm registry. Public installation does not grant access to tracker data: callers still supply an authenticated API token.
100
148
 
101
- Change `client/package.json` and its lockfile together, then publish a GitHub release with matching tag `client-v<version>`. The release workflow validates generated output and tests before publishing. Prereleases use the `next` npm tag. Main-branch pushes do not publish npm packages.
102
-
103
- ### Initial npm setup
149
+ Change `client/package.json` and its lockfile together, then publish a GitHub release with matching tag `client-v<version>`. The release workflow validates generated output and tests before publishing. Prereleases use the `next` npm tag. Main-branch pushes do not publish npm packages. The candidate's API deployment and SDK publication are separate prerequisites for its app release; publishing types alone does not deploy endpoints.
104
150
 
105
- 1. Create the `bikefinder` organization on npm using its free public-packages plan. The GitHub organization does not reserve the npm scope.
106
- 2. For the first publication from GitHub Actions, add a short-lived granular npm token with permission to publish this package as the repository Actions secret `NPM_TOKEN`. Direct token publishing requires bypass 2FA permission. Never put credentials in source or chat.
107
- 3. Publish the matching GitHub release. After the package exists, open its npm settings and add a GitHub Actions trusted publisher with organization `bikefinder`, repository `bikefinder-api`, workflow filename `publish-client.yml`, and no environment name. Enable direct `npm publish` for that publisher.
108
- 4. Delete the `NPM_TOKEN` repository secret and revoke the bootstrap token. Subsequent releases use short-lived OIDC credentials through the workflow's `id-token: write` permission. Complete the next successful OIDC publication within npm's two-day validation window after configuring the publisher.
151
+ The package already exists on public npm. Its trusted-publisher configuration uses GitHub organization `bikefinder`, repository `bikefinder-api` and workflow `publish-client.yml`, with no environment name. OIDC publishing uses the workflow's `id-token: write` permission; any bootstrap token should be removed and revoked after trusted publishing is verified.
109
152
 
110
153
  npm's [trusted publishing documentation](https://docs.npmjs.com/trusted-publishers/) describes setup and authentication. The workflow uses Node 24 with a compatible npm CLI. Provenance is not generated for private GitHub repositories; publishing the SDK does not require changing repository visibility. The package remains `UNLICENSED`; public availability does not add an open-source license.
@@ -0,0 +1,3 @@
1
+ import type { Client, Config } from "./types.gen.js";
2
+ export declare const createClient: (config?: Config) => Client;
3
+ //# sourceMappingURL=client.gen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.gen.d.ts","sourceRoot":"","sources":["../../../../src/admin/generated/client/client.gen.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,MAAM,EACN,MAAM,EAGP,MAAM,gBAAgB,CAAC;AAgBxB,eAAO,MAAM,YAAY,GAAI,SAAQ,MAAW,KAAG,MAiRlD,CAAC"}
@@ -0,0 +1,218 @@
1
+ // This file is auto-generated by @hey-api/openapi-ts
2
+ import { createSseClient } from "../core/serverSentEvents.gen.js";
3
+ import { getValidRequestBody } from "../core/utils.gen.js";
4
+ import { buildUrl, createConfig, createInterceptors, getParseAs, mergeConfigs, mergeHeaders, setAuthParams, } from "./utils.gen.js";
5
+ export const createClient = (config = {}) => {
6
+ let _config = mergeConfigs(createConfig(), config);
7
+ const getConfig = () => ({ ..._config });
8
+ const setConfig = (config) => {
9
+ _config = mergeConfigs(_config, config);
10
+ return getConfig();
11
+ };
12
+ const interceptors = createInterceptors();
13
+ const beforeRequest = async (options) => {
14
+ const opts = {
15
+ ..._config,
16
+ ...options,
17
+ fetch: options.fetch ?? _config.fetch ?? globalThis.fetch,
18
+ headers: mergeHeaders(_config.headers, options.headers),
19
+ serializedBody: undefined,
20
+ };
21
+ if (opts.security) {
22
+ await setAuthParams(opts);
23
+ }
24
+ if (opts.requestValidator) {
25
+ await opts.requestValidator(opts);
26
+ }
27
+ if (opts.body !== undefined && opts.bodySerializer) {
28
+ opts.serializedBody = opts.bodySerializer(opts.body);
29
+ }
30
+ // remove Content-Type header if body is empty to avoid sending invalid requests
31
+ if (opts.body === undefined || opts.serializedBody === "") {
32
+ opts.headers.delete("Content-Type");
33
+ }
34
+ const resolvedOpts = opts;
35
+ const url = buildUrl(resolvedOpts);
36
+ return { opts: resolvedOpts, url };
37
+ };
38
+ const request = async (options) => {
39
+ const throwOnError = options.throwOnError ?? _config.throwOnError;
40
+ const responseStyle = options.responseStyle ?? _config.responseStyle;
41
+ let request;
42
+ let response;
43
+ try {
44
+ const { opts, url } = await beforeRequest(options);
45
+ const requestInit = {
46
+ redirect: "follow",
47
+ ...opts,
48
+ body: getValidRequestBody(opts),
49
+ };
50
+ request = new Request(url, requestInit);
51
+ for (const fn of interceptors.request.fns) {
52
+ if (fn) {
53
+ request = await fn(request, opts);
54
+ }
55
+ }
56
+ // fetch must be assigned here, otherwise it would throw the error:
57
+ // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation
58
+ const _fetch = opts.fetch;
59
+ response = await _fetch(request);
60
+ for (const fn of interceptors.response.fns) {
61
+ if (fn) {
62
+ response = await fn(response, request, opts);
63
+ }
64
+ }
65
+ const result = {
66
+ request,
67
+ response,
68
+ };
69
+ if (response.ok) {
70
+ const parseAs = (opts.parseAs === "auto"
71
+ ? getParseAs(response.headers.get("Content-Type"))
72
+ : opts.parseAs) ?? "json";
73
+ if (response.status === 204 ||
74
+ response.headers.get("Content-Length") === "0") {
75
+ let emptyData;
76
+ switch (parseAs) {
77
+ case "arrayBuffer":
78
+ case "blob":
79
+ case "text":
80
+ emptyData = await response[parseAs]();
81
+ break;
82
+ case "formData":
83
+ emptyData = new FormData();
84
+ break;
85
+ case "stream":
86
+ emptyData = response.body;
87
+ break;
88
+ case "json":
89
+ default:
90
+ emptyData = {};
91
+ break;
92
+ }
93
+ return opts.responseStyle === "data"
94
+ ? emptyData
95
+ : {
96
+ data: emptyData,
97
+ ...result,
98
+ };
99
+ }
100
+ let data;
101
+ switch (parseAs) {
102
+ case "arrayBuffer":
103
+ case "blob":
104
+ case "formData":
105
+ case "text":
106
+ data = await response[parseAs]();
107
+ break;
108
+ case "json": {
109
+ // Some servers return 200 with no Content-Length and empty body.
110
+ // response.json() would throw; read as text and parse if non-empty.
111
+ const text = await response.text();
112
+ data = text ? JSON.parse(text) : {};
113
+ break;
114
+ }
115
+ case "stream":
116
+ return opts.responseStyle === "data"
117
+ ? response.body
118
+ : {
119
+ data: response.body,
120
+ ...result,
121
+ };
122
+ }
123
+ if (parseAs === "json") {
124
+ if (opts.responseValidator) {
125
+ await opts.responseValidator(data);
126
+ }
127
+ if (opts.responseTransformer) {
128
+ data = await opts.responseTransformer(data);
129
+ }
130
+ }
131
+ return opts.responseStyle === "data"
132
+ ? data
133
+ : {
134
+ data,
135
+ ...result,
136
+ };
137
+ }
138
+ const textError = await response.text();
139
+ let jsonError;
140
+ try {
141
+ jsonError = JSON.parse(textError);
142
+ }
143
+ catch {
144
+ // noop
145
+ }
146
+ throw jsonError ?? textError;
147
+ }
148
+ catch (error) {
149
+ let finalError = error;
150
+ for (const fn of interceptors.error.fns) {
151
+ if (fn) {
152
+ finalError = await fn(finalError, response, request, options);
153
+ }
154
+ }
155
+ finalError = finalError || {};
156
+ if (throwOnError) {
157
+ throw finalError;
158
+ }
159
+ // TODO: we probably want to return error and improve types
160
+ return responseStyle === "data"
161
+ ? undefined
162
+ : {
163
+ error: finalError,
164
+ request,
165
+ response,
166
+ };
167
+ }
168
+ };
169
+ const makeMethodFn = (method) => (options) => request({ ...options, method });
170
+ const makeSseFn = (method) => async (options) => {
171
+ const { opts, url } = await beforeRequest(options);
172
+ return createSseClient({
173
+ ...opts,
174
+ body: opts.body,
175
+ method,
176
+ onRequest: async (url, init) => {
177
+ let request = new Request(url, init);
178
+ for (const fn of interceptors.request.fns) {
179
+ if (fn) {
180
+ request = await fn(request, opts);
181
+ }
182
+ }
183
+ return request;
184
+ },
185
+ serializedBody: getValidRequestBody(opts),
186
+ url,
187
+ });
188
+ };
189
+ const _buildUrl = (options) => buildUrl({ ..._config, ...options });
190
+ return {
191
+ buildUrl: _buildUrl,
192
+ connect: makeMethodFn("CONNECT"),
193
+ delete: makeMethodFn("DELETE"),
194
+ get: makeMethodFn("GET"),
195
+ getConfig,
196
+ head: makeMethodFn("HEAD"),
197
+ interceptors,
198
+ options: makeMethodFn("OPTIONS"),
199
+ patch: makeMethodFn("PATCH"),
200
+ post: makeMethodFn("POST"),
201
+ put: makeMethodFn("PUT"),
202
+ request,
203
+ setConfig,
204
+ sse: {
205
+ connect: makeSseFn("CONNECT"),
206
+ delete: makeSseFn("DELETE"),
207
+ get: makeSseFn("GET"),
208
+ head: makeSseFn("HEAD"),
209
+ options: makeSseFn("OPTIONS"),
210
+ patch: makeSseFn("PATCH"),
211
+ post: makeSseFn("POST"),
212
+ put: makeSseFn("PUT"),
213
+ trace: makeSseFn("TRACE"),
214
+ },
215
+ trace: makeMethodFn("TRACE"),
216
+ };
217
+ };
218
+ //# sourceMappingURL=client.gen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.gen.js","sourceRoot":"","sources":["../../../../src/admin/generated/client/client.gen.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export type { Auth } from "../core/auth.gen.js";
2
+ export type { QuerySerializerOptions } from "../core/bodySerializer.gen.js";
3
+ export { formDataBodySerializer, jsonBodySerializer, urlSearchParamsBodySerializer, } from "../core/bodySerializer.gen.js";
4
+ export { buildClientParams } from "../core/params.gen.js";
5
+ export { serializeQueryKeyValue } from "../core/queryKeySerializer.gen.js";
6
+ export type { ServerSentEventsResult } from "../core/serverSentEvents.gen.js";
7
+ export type { ClientMeta } from "../core/types.gen.js";
8
+ export { createClient } from "./client.gen.js";
9
+ export type { Client, ClientOptions, Config, CreateClientConfig, Options, RequestOptions, RequestResult, ResolvedRequestOptions, ResponseStyle, TDataShape, } from "./types.gen.js";
10
+ export { createConfig, mergeHeaders } from "./utils.gen.js";
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/admin/generated/client/index.ts"],"names":[],"mappings":"AAEA,YAAY,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAChD,YAAY,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,6BAA6B,GAC9B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,YAAY,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAC9E,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EACV,MAAM,EACN,aAAa,EACb,MAAM,EACN,kBAAkB,EAClB,OAAO,EACP,cAAc,EACd,aAAa,EACb,sBAAsB,EACtB,aAAa,EACb,UAAU,GACX,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,7 @@
1
+ // This file is auto-generated by @hey-api/openapi-ts
2
+ export { formDataBodySerializer, jsonBodySerializer, urlSearchParamsBodySerializer, } from "../core/bodySerializer.gen.js";
3
+ export { buildClientParams } from "../core/params.gen.js";
4
+ export { serializeQueryKeyValue } from "../core/queryKeySerializer.gen.js";
5
+ export { createClient } from "./client.gen.js";
6
+ export { createConfig, mergeHeaders } from "./utils.gen.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/admin/generated/client/index.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAIrD,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,6BAA6B,GAC9B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAG3E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAa/C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,121 @@
1
+ import type { Auth } from "../core/auth.gen.js";
2
+ import type { ServerSentEventsOptions, ServerSentEventsResult } from "../core/serverSentEvents.gen.js";
3
+ import type { Client as CoreClient, Config as CoreConfig } from "../core/types.gen.js";
4
+ import type { Middleware } from "./utils.gen.js";
5
+ export type ResponseStyle = "data" | "fields";
6
+ export interface Config<T extends ClientOptions = ClientOptions> extends Omit<RequestInit, "body" | "headers" | "method">, CoreConfig {
7
+ /**
8
+ * Base URL for all requests made by this client.
9
+ */
10
+ baseUrl?: T["baseUrl"];
11
+ /**
12
+ * Fetch API implementation. You can use this option to provide a custom
13
+ * fetch instance.
14
+ *
15
+ * @default globalThis.fetch
16
+ */
17
+ fetch?: typeof fetch;
18
+ /**
19
+ * Please don't use the Fetch client for Next.js applications. The `next`
20
+ * options won't have any effect.
21
+ *
22
+ * Install {@link https://www.npmjs.com/package/@hey-api/client-next `@hey-api/client-next`} instead.
23
+ */
24
+ next?: never;
25
+ /**
26
+ * Return the response data parsed in a specified format. By default, `auto`
27
+ * will infer the appropriate method from the `Content-Type` response header.
28
+ * You can override this behavior with any of the {@link Body} methods.
29
+ * Select `stream` if you don't want to parse response data at all.
30
+ *
31
+ * @default 'auto'
32
+ */
33
+ parseAs?: "arrayBuffer" | "auto" | "blob" | "formData" | "json" | "stream" | "text";
34
+ /**
35
+ * Should we return only data or multiple fields (data, error, response, etc.)?
36
+ *
37
+ * @default 'fields'
38
+ */
39
+ responseStyle?: ResponseStyle;
40
+ /**
41
+ * Throw an error instead of returning it in the response?
42
+ *
43
+ * @default false
44
+ */
45
+ throwOnError?: T["throwOnError"];
46
+ }
47
+ export interface RequestOptions<TData = unknown, TResponseStyle extends ResponseStyle = "fields", ThrowOnError extends boolean = boolean, Url extends string = string> extends Config<{
48
+ responseStyle: TResponseStyle;
49
+ throwOnError: ThrowOnError;
50
+ }>, Pick<ServerSentEventsOptions<TData>, "onRequest" | "onSseError" | "onSseEvent" | "sseDefaultRetryDelay" | "sseMaxRetryAttempts" | "sseMaxRetryDelay"> {
51
+ /**
52
+ * Any body that you want to add to your request.
53
+ *
54
+ * {@link https://developer.mozilla.org/docs/Web/API/fetch#body}
55
+ */
56
+ body?: unknown;
57
+ path?: Record<string, unknown>;
58
+ query?: Record<string, unknown>;
59
+ /**
60
+ * Security mechanism(s) to use for the request.
61
+ */
62
+ security?: ReadonlyArray<Auth>;
63
+ url: Url;
64
+ }
65
+ export interface ResolvedRequestOptions<TResponseStyle extends ResponseStyle = "fields", ThrowOnError extends boolean = boolean, Url extends string = string> extends RequestOptions<unknown, TResponseStyle, ThrowOnError, Url> {
66
+ headers: Headers;
67
+ serializedBody?: string;
68
+ }
69
+ export type RequestResult<TData = unknown, TError = unknown, ThrowOnError extends boolean = boolean, TResponseStyle extends ResponseStyle = "fields"> = ThrowOnError extends true ? Promise<TResponseStyle extends "data" ? TData extends Record<string, unknown> ? TData[keyof TData] : TData : {
70
+ data: TData extends Record<string, unknown> ? TData[keyof TData] : TData;
71
+ request: Request;
72
+ response: Response;
73
+ }> : Promise<TResponseStyle extends "data" ? (TData extends Record<string, unknown> ? TData[keyof TData] : TData) | undefined : ({
74
+ data: TData extends Record<string, unknown> ? TData[keyof TData] : TData;
75
+ error: undefined;
76
+ } | {
77
+ data: undefined;
78
+ error: TError extends Record<string, unknown> ? TError[keyof TError] : TError;
79
+ }) & {
80
+ /** request may be undefined, because error may be from building the request object itself */
81
+ request?: Request;
82
+ /** response may be undefined, because error may be from building the request object itself or from a network error */
83
+ response?: Response;
84
+ }>;
85
+ export interface ClientOptions {
86
+ baseUrl?: string;
87
+ responseStyle?: ResponseStyle;
88
+ throwOnError?: boolean;
89
+ }
90
+ type MethodFn = <TData = unknown, TError = unknown, ThrowOnError extends boolean = false, TResponseStyle extends ResponseStyle = "fields">(options: Omit<RequestOptions<TData, TResponseStyle, ThrowOnError>, "method">) => RequestResult<TData, TError, ThrowOnError, TResponseStyle>;
91
+ type SseFn = <TData = unknown, _TError = unknown, ThrowOnError extends boolean = false, TResponseStyle extends ResponseStyle = "fields">(options: Omit<RequestOptions<never, TResponseStyle, ThrowOnError>, "method">) => Promise<ServerSentEventsResult<TData>>;
92
+ type RequestFn = <TData = unknown, TError = unknown, ThrowOnError extends boolean = false, TResponseStyle extends ResponseStyle = "fields">(options: Omit<RequestOptions<TData, TResponseStyle, ThrowOnError>, "method"> & Pick<Required<RequestOptions<TData, TResponseStyle, ThrowOnError>>, "method">) => RequestResult<TData, TError, ThrowOnError, TResponseStyle>;
93
+ type BuildUrlFn = <TData extends {
94
+ body?: unknown;
95
+ path?: Record<string, unknown>;
96
+ query?: Record<string, unknown>;
97
+ url: string;
98
+ }>(options: TData & Options<TData>) => string;
99
+ export type Client = CoreClient<RequestFn, Config, MethodFn, BuildUrlFn, SseFn> & {
100
+ interceptors: Middleware<Request, Response, unknown, ResolvedRequestOptions>;
101
+ };
102
+ /**
103
+ * The `createClientConfig()` function will be called on client initialization
104
+ * and the returned object will become the client's initial configuration.
105
+ *
106
+ * You may want to initialize your client this way instead of calling
107
+ * `setConfig()`. This is useful for example if you're using Next.js
108
+ * to ensure your client always has the correct values.
109
+ */
110
+ export type CreateClientConfig<T extends ClientOptions = ClientOptions> = (override?: Config<ClientOptions & T>) => Config<Required<ClientOptions> & T>;
111
+ export interface TDataShape {
112
+ body?: unknown;
113
+ headers?: unknown;
114
+ path?: unknown;
115
+ query?: unknown;
116
+ url: string;
117
+ }
118
+ type OmitKeys<T, K> = Pick<T, Exclude<keyof T, K>>;
119
+ export type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean, TResponse = unknown, TResponseStyle extends ResponseStyle = "fields"> = OmitKeys<RequestOptions<TResponse, TResponseStyle, ThrowOnError>, "body" | "path" | "query" | "url"> & ([TData] extends [never] ? unknown : Omit<TData, "url">);
120
+ export {};
121
+ //# sourceMappingURL=types.gen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.gen.d.ts","sourceRoot":"","sources":["../../../../src/admin/generated/client/types.gen.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ // This file is auto-generated by @hey-api/openapi-ts
2
+ export {};
3
+ //# sourceMappingURL=types.gen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.gen.js","sourceRoot":"","sources":["../../../../src/admin/generated/client/types.gen.ts"],"names":[],"mappings":"AAAA,qDAAqD"}
@@ -0,0 +1,38 @@
1
+ import type { QuerySerializerOptions } from "../core/bodySerializer.gen.js";
2
+ import type { Client, ClientOptions, Config, RequestOptions } from "./types.gen.js";
3
+ export declare const createQuerySerializer: <T = unknown>({ parameters, ...args }?: QuerySerializerOptions) => ((queryParams: T) => string);
4
+ /**
5
+ * Infers parseAs value from provided Content-Type header.
6
+ */
7
+ export declare const getParseAs: (contentType: string | null) => Exclude<Config["parseAs"], "auto">;
8
+ export declare function setAuthParams(options: Pick<RequestOptions, "auth" | "query" | "security"> & {
9
+ headers: Headers;
10
+ }): Promise<void>;
11
+ export declare const buildUrl: Client["buildUrl"];
12
+ export declare const mergeConfigs: (a: Config, b: Config) => Config;
13
+ export declare const mergeHeaders: (...headers: Array<Required<Config>["headers"] | undefined>) => Headers;
14
+ type ErrInterceptor<Err, Res, Req, Options> = (error: Err,
15
+ /** response may be undefined due to a network error where no response object is produced */
16
+ response: Res | undefined,
17
+ /** request may be undefined, because error may be from building the request object itself */
18
+ request: Req | undefined, options: Options) => Err | Promise<Err>;
19
+ type ReqInterceptor<Req, Options> = (request: Req, options: Options) => Req | Promise<Req>;
20
+ type ResInterceptor<Res, Req, Options> = (response: Res, request: Req, options: Options) => Res | Promise<Res>;
21
+ declare class Interceptors<Interceptor> {
22
+ fns: Array<Interceptor | null>;
23
+ clear(): void;
24
+ eject(id: number | Interceptor): void;
25
+ exists(id: number | Interceptor): boolean;
26
+ getInterceptorIndex(id: number | Interceptor): number;
27
+ update(id: number | Interceptor, fn: Interceptor): number | Interceptor | false;
28
+ use(fn: Interceptor): number;
29
+ }
30
+ export interface Middleware<Req, Res, Err, Options> {
31
+ error: Interceptors<ErrInterceptor<Err, Res, Req, Options>>;
32
+ request: Interceptors<ReqInterceptor<Req, Options>>;
33
+ response: Interceptors<ResInterceptor<Res, Req, Options>>;
34
+ }
35
+ export declare const createInterceptors: <Req, Res, Err, Options>() => Middleware<Req, Res, Err, Options>;
36
+ export declare const createConfig: <T extends ClientOptions = ClientOptions>(override?: Config<Omit<ClientOptions, keyof T> & T>) => Config<Omit<ClientOptions, keyof T> & T>;
37
+ export {};
38
+ //# sourceMappingURL=utils.gen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.gen.d.ts","sourceRoot":"","sources":["../../../../src/admin/generated/client/utils.gen.ts"],"names":[],"mappings":"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"}