@remkoj/hey-api-wrapper 6.0.0-rc.3 → 6.0.0-rc.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1 +1,86 @@
1
- # hey-api-wrapper
1
+ # @remkoj/hey-api-wrapper
2
+
3
+ > **Internal package.** Used by `@remkoj/optimizely-cms-api`. Not intended for direct use in application code.
4
+
5
+ Wraps a [`@hey-api`](https://heyapi.dev)-generated SDK into a single typed client class. Instead of calling raw operation functions, consumers get an object instance whose methods map one-to-one to the SDK operations, with authentication and error handling handled centrally.
6
+
7
+ ## How it works
8
+
9
+ `@hey-api` generates a flat module of async operation functions (e.g. `listContent`, `createContentType`). This package provides two building blocks:
10
+
11
+ - **`ApiClient`** — abstract base class that holds the configuration and a `@hey-api` network client. Installs request/response logging interceptors when `debug: true`.
12
+ - **`withOperations`** — mixin factory that extends any `ApiClient` subclass with one method per generated operation. Each method injects the instance's network client, converts error results into `ApiError` throws, and returns the unwrapped `data` payload.
13
+
14
+ ## Usage
15
+
16
+ ```typescript
17
+ import { ApiClient, withOperations, ApiError } from '@remkoj/hey-api-wrapper'
18
+ import type { ApiClientConfig } from '@remkoj/hey-api-wrapper'
19
+ import { createClient } from '@hey-api/client-fetch'
20
+ import * as SdkOps from './client/sdk.gen'
21
+
22
+ // 1. Define your config type (extend ApiClientConfig to add your own fields)
23
+ type MyConfig = ApiClientConfig & {
24
+ baseUrl: string
25
+ }
26
+
27
+ // 2. Create a concrete client class with all SDK operations attached
28
+ class MyApiClient extends withOperations(ApiClient, SdkOps) {
29
+ constructor(config: MyConfig) {
30
+ super(config, createClient({ baseUrl: config.baseUrl }))
31
+ }
32
+ }
33
+
34
+ // 3. Use it — each SDK operation is available as a method
35
+ const api = new MyApiClient({ baseUrl: 'https://api.example.com', debug: true })
36
+ const result = await api.listContent({ query: { pageSize: 10 } })
37
+ ```
38
+
39
+ ## API
40
+
41
+ ### `ApiClient`
42
+
43
+ Abstract base class. Subclass it (via `withOperations`) to build a concrete client.
44
+
45
+ | Member | Description |
46
+ |---|---|
47
+ | `debug` | `true` when request/response logging is active |
48
+ | `name` | Display name used in log output (from config, defaults to `'API Client'`) |
49
+ | `client` | The underlying `@hey-api` network client |
50
+
51
+ Constructor signature: `new ApiClient(config: ApiClientConfig, client: NetworkClient)`.
52
+
53
+ ### `withOperations(Base, Operations)`
54
+
55
+ Mixin factory. Returns a new class that combines `Base` with one method per operation in `Operations`.
56
+
57
+ - Each method forwards its arguments to the corresponding operation, injecting `client` automatically.
58
+ - On success, returns the `data` field of the response (falls back to the full result when `data` is absent).
59
+ - On error, throws `ApiError`.
60
+
61
+ ### `ApiError`
62
+
63
+ Thrown by operation methods when the server returns an error response.
64
+
65
+ | Property | Type | Description |
66
+ |---|---|---|
67
+ | `message` | `string` | Human-readable error (uses the error string or HTTP status) |
68
+ | `data` | `unknown` | Raw error payload from the response |
69
+ | `status` | `number` | HTTP status code |
70
+ | `statusText` | `string` | HTTP status text |
71
+ | `request` | `unknown` | The originating HTTP request |
72
+ | `response` | `unknown` | The originating HTTP response |
73
+
74
+ ### Types
75
+
76
+ | Type | Description |
77
+ |---|---|
78
+ | `ApiClientConfig` | Base config: `{ debug?: boolean; name?: string }` |
79
+ | `OperationsList<T>` | Extracts the function-valued keys from an SDK module type |
80
+ | `ApiClientFunctions<L>` | Maps `OperationsList` entries to their unwrapped return types |
81
+ | `ClassWithMixin<TBase, Mixin>` | Result type of `withOperations` — `TBase` instance augmented with `Mixin` |
82
+
83
+ ## License
84
+
85
+ Apache-2.0
86
+
package/dist/index.js CHANGED
@@ -45,8 +45,8 @@ function withOperations(Base, Operations) {
45
45
  const operationArgs = [...args];
46
46
  operationArgs[0] = {
47
47
  throwOnError: false,
48
- ...args,
49
- client: this._client
48
+ client: this._client,
49
+ ...args[0]
50
50
  };
51
51
  //@ts-expect-error TypeScript can't check this as TOperations is dynamic
52
52
  const result = await Operations[propName](...operationArgs);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AA8BA,wCAsCC;AAhED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,SAAgB,cAAc,CAAoE,IAAW,EAAE,UAAuB;IAEpI,oFAAoF;IACpF,aAAa;IACb,MAAM,QAAS,SAAQ,IAA6C;QAClE,YAAmB,GAAG,IAAW;YAC/B,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QACjB,CAAC;KACF;IAED,2CAA2C;IAC3C,MAAM,mBAAmB,GAAG,yBAAyB,CAAC,UAAU,CAAC,CAAC;IAElE,sBAAsB;IACtB,CAAC;IAAC,MAAM,CAAC,mBAAmB,CAAC,UAAU,CAA8B,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAEnH,KAAK,UAAU,OAAO,CAAkB,GAAG,IAAW;YAEpD,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;YAChC,aAAa,CAAC,CAAC,CAAC,GAAG;gBACjB,YAAY,EAAE,KAAK;gBACnB,GAAG,IAAI;gBACP,MAAM,EAAE,IAAI,CAAC,OAAO;aACrB,CAAA;YAED,wEAAwE;YACxE,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,aAAa,CAAC,CAAA;YAC3D,IAAI,MAAM,CAAC,KAAK;gBACd,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;YAC5B,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;QAC5C,CAAC;QAED,yFAAyF;QACzF,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,uBAAuB;IACvB,OAAO,QAA6E,CAAA;AACtF,CAAC;AAED;;;;;;GAMG;AACH,SAAS,yBAAyB,CAA2B,QAAW;IACtE,OAAO,CAAC,QAA8B,EAAuB,EAAE;QAC7D,OAAO,OAAO,CAAC,QAAQ,CAAC,QAAmB,CAAC,CAAC,IAAI,UAAU,CAAA;IAC7D,CAAC,CAAA;AACH,CAAC;AA8BD;;;;;;;GAOG;AACH,MAAsB,SAAS;IAK7B;;;OAGG;IACgB,OAAO,CAAc;IAExC;;;OAGG;IACgB,OAAO,CAAK;IAE/B,wDAAwD;IACxD,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC;IACrC,CAAC;IAED,gEAAgE;IAChE,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,YAAY,CAAC;IAC3C,CAAC;IAED,gEAAgE;IAChE,IAAW,MAAM;QAEf,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;OAGG;IACH,YAAmB,MAAS,EAAE,MAAU;QACtC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QAEtB,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,YAAY,CAAC;YAC/C,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;gBACtD,OAAO,CAAC,GAAG,CAAC,OAAQ,IAAK,aAAa,OAAO,CAAC,MAAM,eAAe,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;gBACjF,OAAO,OAAO,CAAA;YAChB,CAAC,CAAC,CAAA;YACF,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE;gBAC3D,OAAO,CAAC,GAAG,CAAC,iCAAiC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,YAAY,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,SAAS,QAAQ,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;gBACtK,OAAO,QAAQ,CAAA;YACjB,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACO,eAAe,CAAC,MAAgB;QAExC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YACxB,OAAO,KAAK,CAAC;QACf,OAAO,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IAC1E,CAAC;IAED;;;;;;OAMG;IACO,cAAc,CAAe,MAAgB;QAErD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YACxB,OAAO,KAAK,CAAC;QACf,OAAO,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IACzE,CAAC;IAED;;;;;OAKG;IACO,QAAQ,CAAC,MAAgB;QAEjC,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,CAAA;IACtD,CAAC;CACF;AA5FD,8BA4FC;AAED;;;;GAIG;AACH,MAAa,QAAS,SAAQ,KAAK;IACjC,6HAA6H;IACnH,IAAI,CAA6D;IAE3E;;OAEG;IACH,YAAY,IAAiE;QAC3E,IAAI,OAAO,IAAI,CAAC,KAAK,IAAI,QAAQ;YAC/B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;;YAEjB,KAAK,CAAC,6BAA6B,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,UAAU,IAAI,eAAe,EAAE,CAAC,CAAA;QACpH,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,mDAAmD;IACnD,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAA;IACxB,CAAC;IAED;;OAEG;IACH,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAA;IACxB,CAAC;IAED,gDAAgD;IAChD,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAA;IAC1B,CAAC;IAED,iDAAiD;IACjD,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAA;IAC3B,CAAC;IAED,4CAA4C;IAC5C,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,CAAA;IAC1C,CAAC;IAED,4CAA4C;IAC5C,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,IAAI,eAAe,CAAA;IAC1D,CAAC;CACF;AA9CD,4BA8CC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@remkoj/hey-api-wrapper",
3
3
  "displayName": "Wrap an Hey-API generated SDK into a single client object",
4
4
  "description": "A compatibility package that wraps an Hey-API generated SDK into a single client object, providing a more convenient interface for users.",
5
- "version": "6.0.0-rc.3",
5
+ "version": "6.0.0-rc.4",
6
6
  "license": "Apache-2.0",
7
7
  "repository": {
8
8
  "type": "git",