@rest-vir/define-service 0.5.3 → 0.6.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.
@@ -5,7 +5,7 @@ import type { CommonWebSocket } from '../web-socket/common-web-socket.js';
5
5
  import { ClientWebSocket, GenericConnectWebSocketParams } from '../web-socket/overwrite-web-socket-methods.js';
6
6
  import type { WebSocketDefinition } from '../web-socket/web-socket-definition.js';
7
7
  import { CollapsedConnectWebSocketParams } from './connect-web-socket.js';
8
- import { CollapsedFetchEndpointParams, FetchEndpointOutput } from './fetch-endpoint.js';
8
+ import { CollapsedFetchEndpointParams, FetchEndpointOutput, GenericFetchEndpointParams } from './fetch-endpoint.js';
9
9
  /**
10
10
  * An API generated by {@link generateApi}. This can be easily mocked by wrapping this API in
11
11
  * {@link makeMockApi}.
@@ -28,6 +28,17 @@ export type RestVirApi<SpecificService extends ServiceDefinition> = {
28
28
  } : never;
29
29
  };
30
30
  };
31
+ /**
32
+ * Options for {@link generateApi}.
33
+ *
34
+ * @category Internal
35
+ * @category Package : @rest-vir/define-service
36
+ * @package [`@rest-vir/define-service`](https://www.npmjs.com/package/@rest-vir/define-service)
37
+ */
38
+ export type GenerateApiOptions = Readonly<PartialWithUndefined<{
39
+ endpointFetch: Readonly<Pick<GenericFetchEndpointParams, 'options' | 'fetch'>>;
40
+ webSocketConnect: Readonly<Pick<GenericConnectWebSocketParams<CommonWebSocket>, 'listeners' | 'protocols' | 'webSocketConstructor'>>;
41
+ }>>;
31
42
  /**
32
43
  * Creates an API from the given service definition, with automatically generated endpoint fetch and
33
44
  * WebSocket connect methods.
@@ -52,7 +63,7 @@ export type RestVirApi<SpecificService extends ServiceDefinition> = {
52
63
  *
53
64
  * @package [`@rest-vir/define-service`](https://www.npmjs.com/package/@rest-vir/define-service)
54
65
  */
55
- export declare function generateApi<const SpecificService extends ServiceDefinition>(service: SpecificService): RestVirApi<SpecificService>;
66
+ export declare function generateApi<const SpecificService extends ServiceDefinition>(service: SpecificService, { endpointFetch, webSocketConnect }?: Readonly<GenerateApiOptions>): RestVirApi<SpecificService>;
56
67
  /**
57
68
  * Mock inputs for {@link makeMockApi}.
58
69
  *
@@ -25,13 +25,16 @@ import { fetchEndpoint, } from './fetch-endpoint.js';
25
25
  *
26
26
  * @package [`@rest-vir/define-service`](https://www.npmjs.com/package/@rest-vir/define-service)
27
27
  */
28
- export function generateApi(service) {
28
+ export function generateApi(service, { endpointFetch, webSocketConnect } = {}) {
29
29
  return {
30
30
  endpoints: mapObjectValues(service.endpoints, (endpointPath, endpointDefinition) => {
31
31
  return {
32
32
  ...endpointDefinition,
33
33
  fetch: (...params) => {
34
- return fetchEndpoint(endpointDefinition, ...params);
34
+ return fetchEndpoint(endpointDefinition, {
35
+ ...endpointFetch,
36
+ ...params[0],
37
+ });
35
38
  },
36
39
  };
37
40
  }),
@@ -39,7 +42,10 @@ export function generateApi(service) {
39
42
  return {
40
43
  ...webSocketDefinition,
41
44
  connect: (...params) => {
42
- return connectWebSocket(webSocketDefinition, ...params);
45
+ return connectWebSocket(webSocketDefinition, {
46
+ ...webSocketConnect,
47
+ ...params[0],
48
+ });
43
49
  },
44
50
  };
45
51
  }),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rest-vir/define-service",
3
- "version": "0.5.3",
3
+ "version": "0.6.0",
4
4
  "description": "Define an connect to a declarative and type safe REST and WebSocket service.",
5
5
  "keywords": [
6
6
  "rest",