@equinor/fusion-framework-module-http 8.0.3 → 8.0.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.
Files changed (111) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/esm/configurator.js +7 -1
  3. package/dist/esm/configurator.js.map +1 -1
  4. package/dist/esm/errors/ClientNotFoundException.js +10 -0
  5. package/dist/esm/errors/ClientNotFoundException.js.map +1 -0
  6. package/dist/esm/errors/HttpJsonResponseError.js +26 -0
  7. package/dist/esm/errors/HttpJsonResponseError.js.map +1 -0
  8. package/dist/esm/errors/HttpResponseError.js +19 -0
  9. package/dist/esm/errors/HttpResponseError.js.map +1 -0
  10. package/dist/esm/errors/ServerSentEventResponseError.js +25 -0
  11. package/dist/esm/errors/ServerSentEventResponseError.js.map +1 -0
  12. package/dist/esm/errors/index.js +5 -0
  13. package/dist/esm/errors/index.js.map +1 -0
  14. package/dist/esm/index.js +2 -1
  15. package/dist/esm/index.js.map +1 -1
  16. package/dist/esm/lib/client/client-msal.js +1 -0
  17. package/dist/esm/lib/client/client-msal.js.map +1 -1
  18. package/dist/esm/lib/client/client.js +40 -4
  19. package/dist/esm/lib/client/client.js.map +1 -1
  20. package/dist/esm/lib/operators/{http-request-handler.js → HttpRequestHandler.js} +3 -3
  21. package/dist/esm/lib/operators/HttpRequestHandler.js.map +1 -0
  22. package/dist/esm/lib/operators/{http-response-handler.js → HttpResponseHandler.js} +2 -2
  23. package/dist/esm/lib/operators/HttpResponseHandler.js.map +1 -0
  24. package/dist/esm/lib/operators/{process-operators.js → ProcessOperators.js} +4 -1
  25. package/dist/esm/lib/operators/ProcessOperators.js.map +1 -0
  26. package/dist/esm/lib/operators/{capitalize-request-method.operator.js → capitalize-request-method-operator.js} +4 -2
  27. package/dist/esm/lib/operators/capitalize-request-method-operator.js.map +1 -0
  28. package/dist/esm/lib/operators/{fetch-request.schema.js → fetch-request.schemas.js} +1 -1
  29. package/dist/esm/lib/operators/fetch-request.schemas.js.map +1 -0
  30. package/dist/esm/lib/operators/index.js +6 -6
  31. package/dist/esm/lib/operators/index.js.map +1 -1
  32. package/dist/esm/lib/operators/{request-validation.operator.js → request-validation-operator.js} +3 -2
  33. package/dist/esm/lib/operators/{request-validation.operator.js.map → request-validation-operator.js.map} +1 -1
  34. package/dist/esm/lib/operators/{sse.operator.js → sse-map.operator.js} +5 -3
  35. package/dist/esm/lib/operators/sse-map.operator.js.map +1 -0
  36. package/dist/esm/lib/selectors/blob-selector.js +3 -2
  37. package/dist/esm/lib/selectors/blob-selector.js.map +1 -1
  38. package/dist/esm/lib/selectors/{sse-selector.js → create-sse-selector.js} +20 -5
  39. package/dist/esm/lib/selectors/create-sse-selector.js.map +1 -0
  40. package/dist/esm/lib/selectors/index.js +1 -1
  41. package/dist/esm/lib/selectors/index.js.map +1 -1
  42. package/dist/esm/lib/selectors/json-selector.js +1 -1
  43. package/dist/esm/lib/selectors/json-selector.js.map +1 -1
  44. package/dist/esm/module.js +4 -1
  45. package/dist/esm/module.js.map +1 -1
  46. package/dist/esm/provider.js +14 -8
  47. package/dist/esm/provider.js.map +1 -1
  48. package/dist/esm/version.js +1 -1
  49. package/dist/tsconfig.tsbuildinfo +1 -1
  50. package/dist/types/configurator.d.ts +5 -1
  51. package/dist/types/errors/ClientNotFoundException.d.ts +9 -0
  52. package/dist/types/errors/HttpJsonResponseError.d.ts +23 -0
  53. package/dist/types/errors/HttpResponseError.d.ts +15 -0
  54. package/dist/types/errors/ServerSentEventResponseError.d.ts +23 -0
  55. package/dist/types/errors/index.d.ts +4 -0
  56. package/dist/types/index.d.ts +2 -1
  57. package/dist/types/lib/client/client-msal.d.ts +1 -0
  58. package/dist/types/lib/client/client.d.ts +33 -3
  59. package/dist/types/lib/operators/{http-request-handler.d.ts → HttpRequestHandler.d.ts} +1 -1
  60. package/dist/types/lib/operators/{http-response-handler.d.ts → HttpResponseHandler.d.ts} +1 -1
  61. package/dist/types/lib/operators/index.d.ts +6 -6
  62. package/dist/types/lib/operators/{sse.operator.d.ts → sse-map.operator.d.ts} +1 -1
  63. package/dist/types/lib/selectors/index.d.ts +2 -2
  64. package/dist/types/provider.d.ts +7 -8
  65. package/dist/types/version.d.ts +1 -1
  66. package/package.json +7 -7
  67. package/src/configurator.ts +7 -1
  68. package/src/errors/ClientNotFoundException.ts +9 -0
  69. package/src/errors/HttpJsonResponseError.ts +31 -0
  70. package/src/errors/HttpResponseError.ts +21 -0
  71. package/src/errors/ServerSentEventResponseError.ts +30 -0
  72. package/src/errors/index.ts +4 -0
  73. package/src/index.ts +2 -1
  74. package/src/lib/client/client-msal.ts +1 -0
  75. package/src/lib/client/client.ts +40 -4
  76. package/src/lib/operators/{http-request-handler.ts → HttpRequestHandler.ts} +2 -2
  77. package/src/lib/operators/{http-response-handler.ts → HttpResponseHandler.ts} +1 -1
  78. package/src/lib/operators/{process-operators.ts → ProcessOperators.ts} +3 -0
  79. package/src/lib/operators/{capitalize-request-method.operator.ts → capitalize-request-method-operator.ts} +3 -1
  80. package/src/lib/operators/index.ts +6 -6
  81. package/src/lib/operators/{request-validation.operator.ts → request-validation-operator.ts} +2 -1
  82. package/src/lib/operators/{sse.operator.ts → sse-map.operator.ts} +2 -1
  83. package/src/lib/operators/types.ts +1 -0
  84. package/src/lib/selectors/blob-selector.ts +3 -2
  85. package/src/lib/selectors/{sse-selector.ts → create-sse-selector.ts} +34 -17
  86. package/src/lib/selectors/index.ts +2 -2
  87. package/src/lib/selectors/json-selector.ts +1 -1
  88. package/src/module.ts +4 -1
  89. package/src/provider.ts +14 -8
  90. package/src/version.ts +1 -1
  91. package/tests/HttpClient.test.ts +2 -2
  92. package/tests/operators.test.ts +5 -1
  93. package/tests/sse.selector.test.ts +34 -21
  94. package/vitest.config.ts +1 -1
  95. package/dist/esm/errors.js +0 -58
  96. package/dist/esm/errors.js.map +0 -1
  97. package/dist/esm/lib/operators/capitalize-request-method.operator.js.map +0 -1
  98. package/dist/esm/lib/operators/fetch-request.schema.js.map +0 -1
  99. package/dist/esm/lib/operators/http-request-handler.js.map +0 -1
  100. package/dist/esm/lib/operators/http-response-handler.js.map +0 -1
  101. package/dist/esm/lib/operators/process-operators.js.map +0 -1
  102. package/dist/esm/lib/operators/sse.operator.js.map +0 -1
  103. package/dist/esm/lib/selectors/sse-selector.js.map +0 -1
  104. package/dist/types/errors.d.ts +0 -51
  105. package/src/errors.ts +0 -69
  106. package/dist/types/lib/operators/{process-operators.d.ts → ProcessOperators.d.ts} +0 -0
  107. package/dist/types/lib/operators/{capitalize-request-method.operator.d.ts → capitalize-request-method-operator.d.ts} +0 -0
  108. package/dist/types/lib/operators/{fetch-request.schema.d.ts → fetch-request.schemas.d.ts} +26 -26
  109. /package/dist/types/lib/operators/{request-validation.operator.d.ts → request-validation-operator.d.ts} +0 -0
  110. /package/dist/types/lib/selectors/{sse-selector.d.ts → create-sse-selector.d.ts} +0 -0
  111. /package/src/lib/operators/{fetch-request.schema.ts → fetch-request.schemas.ts} +0 -0
@@ -1,6 +1,6 @@
1
1
  import { EMPTY, from, fromEvent } from 'rxjs';
2
2
  import { finalize, takeUntil } from 'rxjs/operators';
3
- import { ServerSentEventResponseError } from '../../errors.js';
3
+ import { ServerSentEventResponseError } from '../../errors/index.js';
4
4
  const defaultDataParser = (data) => {
5
5
  try {
6
6
  return JSON.parse(data);
@@ -94,28 +94,38 @@ async function* readStream(reader, options) {
94
94
  : [options.eventFilter]
95
95
  : null;
96
96
  const decoder = new TextDecoder();
97
+ // keep reading chunks from the stream until the reader signals completion
97
98
  while (true) {
98
99
  const { done, value } = await reader.read();
100
+ // the underlying stream has ended, nothing more to read
99
101
  if (done) {
102
+ // exit the read loop rather than yielding any further events
100
103
  break;
101
104
  }
102
105
  const text = decoder.decode(value, { stream: true });
103
106
  const events = parseEvents(text, { dataParser: options?.dataParser });
107
+ // a chunk may contain multiple complete SSE events, emit each in turn
104
108
  for (const event of events) {
109
+ // a retry directive reconfigures the reconnection delay rather than being a data event
105
110
  if (event.retry) {
106
111
  await new Promise((resolve) => setTimeout(resolve, Number.parseInt(event.retry ?? '300', 10)));
112
+ // nothing to yield for a retry-only event
107
113
  continue;
108
114
  }
115
+ // heartbeat filtering is opt-in via the skipHeartbeats option
109
116
  if (skipHeartbeats) {
110
117
  // Skip comment-based heartbeats (no event, data, or id)
111
118
  if (!event.event && !event.data && !event.id) {
119
+ // this event carries no payload, so treat it as a heartbeat and skip it
112
120
  continue;
113
121
  }
114
122
  // Skip named heartbeat events (e.g., event: heartbeat or event: ping)
115
123
  if (event.event && ['heartbeat', 'ping'].includes(event.event)) {
124
+ // an explicitly named heartbeat/ping event should also be skipped
116
125
  continue;
117
126
  }
118
127
  }
128
+ // only emit events that pass the caller-provided event type filter, if any
119
129
  if (!eventFilter || (event.event && eventFilter.includes(event.event))) {
120
130
  yield event;
121
131
  }
@@ -135,21 +145,26 @@ async function* readStream(reader, options) {
135
145
  */
136
146
  export const createSseSelector = (options) => {
137
147
  return (response) => {
148
+ // an unsuccessful HTTP status means there is no valid SSE stream to read
138
149
  if (!response.ok) {
139
150
  throw new ServerSentEventResponseError(`HTTP error! Status: ${response.status}`, response);
140
151
  }
152
+ // a missing body means there is nothing to stream from
141
153
  if (!response.body) {
142
154
  throw new ServerSentEventResponseError('Response body is not readable', response);
143
155
  }
156
+ // guard against consuming a non-SSE response as if it were an event stream
144
157
  if (!response.headers.get('Content-Type')?.includes('text/event-stream')) {
145
158
  throw new ServerSentEventResponseError('Response is not a text/event-stream', response);
146
159
  }
147
160
  const reader = response.body.getReader();
148
- return from(readStream(reader, {
161
+ return (from(readStream(reader, {
149
162
  dataParser: options?.dataParser,
150
163
  skipHeartbeats: options?.skipHeartbeats,
151
164
  eventFilter: options?.eventFilter,
152
- })).pipe(
165
+ }))
166
+ // stop the stream on abort and always release the underlying reader when done
167
+ .pipe(
153
168
  // Stop reading if the abort signal is triggered
154
169
  takeUntil(options?.abortSignal ? fromEvent(options.abortSignal, 'abort') : EMPTY), finalize(async () => {
155
170
  // cancel just in case of a pre-mature exit
@@ -157,8 +172,8 @@ export const createSseSelector = (options) => {
157
172
  /** ignore cancellation errors */
158
173
  });
159
174
  reader.releaseLock();
160
- }));
175
+ })));
161
176
  };
162
177
  };
163
178
  export default createSseSelector;
164
- //# sourceMappingURL=sse-selector.js.map
179
+ //# sourceMappingURL=create-sse-selector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-sse-selector.js","sourceRoot":"","sources":["../../../../src/lib/selectors/create-sse-selector.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  export { jsonSelector } from './json-selector';
2
2
  export { blobSelector } from './blob-selector';
3
- export { createSseSelector } from './sse-selector';
3
+ export { createSseSelector } from './create-sse-selector';
4
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/selectors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/selectors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { HttpJsonResponseError } from '../../errors';
1
+ import { HttpJsonResponseError } from '../../errors/index.js';
2
2
  /**
3
3
  * Asynchronously parses the JSON data from a given HTTP response.
4
4
  *
@@ -1 +1 @@
1
- {"version":3,"file":"json-selector.js","sourceRoot":"","sources":["../../../../src/lib/selectors/json-selector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,YAAY,GAAqB,KAAK,EAIjD,QAAmB,EACH,EAAE;IAClB,2DAA2D;IAC3D,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,OAAO,OAAO,CAAC,OAAO,EAAoB,CAAC;IAC7C,CAAC;IAED,IAAI,CAAC;QACH,+BAA+B;QAC/B,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEnC,uCAAuC;QACvC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,2CAA2C;YAC3C,MAAM,IAAI,qBAAqB,CAAC,6BAA6B,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACrF,CAAC;QAED,yBAAyB;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,uDAAuD;QACvD,IAAI,KAAK,YAAY,qBAAqB,EAAE,CAAC;YAC3C,MAAM,KAAK,CAAC;QACd,CAAC;QAED,sEAAsE;QACtE,MAAM,IAAI,qBAAqB,CAAC,0BAA0B,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACnF,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"json-selector.js","sourceRoot":"","sources":["../../../../src/lib/selectors/json-selector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,YAAY,GAAqB,KAAK,EAIjD,QAAmB,EACH,EAAE;IAClB,2DAA2D;IAC3D,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,OAAO,OAAO,CAAC,OAAO,EAAoB,CAAC;IAC7C,CAAC;IAED,IAAI,CAAC;QACH,+BAA+B;QAC/B,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEnC,uCAAuC;QACvC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,2CAA2C;YAC3C,MAAM,IAAI,qBAAqB,CAAC,6BAA6B,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACrF,CAAC;QAED,yBAAyB;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,uDAAuD;QACvD,IAAI,KAAK,YAAY,qBAAqB,EAAE,CAAC;YAC3C,MAAM,KAAK,CAAC;QACd,CAAC;QAED,sEAAsE;QACtE,MAAM,IAAI,qBAAqB,CAAC,0BAA0B,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACnF,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -35,15 +35,18 @@ export const module = {
35
35
  */
36
36
  initialize: async ({ config, hasModule, requireInstance, }) => {
37
37
  const httpProvider = new HttpClientProvider(config);
38
+ // wire up an MSAL bearer-token handler only when the auth module is registered
38
39
  if (hasModule('auth')) {
39
40
  const authProvider = await requireInstance('auth');
40
41
  httpProvider.defaultHttpRequestHandler.set('MSAL', async (request) => {
41
42
  const { scopes = [] } = request;
43
+ // only attempt to acquire a token when the request actually declares scopes
42
44
  if (scopes.length) {
43
- /** TODO should be try catch, check caller for handling */
45
+ /** TODO(#5143): should be try catch, check caller for handling */
44
46
  const accessToken = await authProvider.acquireAccessToken({
45
47
  request: { scopes },
46
48
  });
49
+ // without a token there's nothing to attach, fall through to the default request
47
50
  if (accessToken) {
48
51
  const headers = new Headers(request.headers);
49
52
  headers.set('Authorization', `Bearer ${accessToken}`);
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/module.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAEL,sBAAsB,GAEvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAA4B,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAkC1E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,MAAM,GAAmB;IACpC,IAAI,EAAE,MAAM;IACZ;;;;;;;;OAQG;IACH,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,sBAAsB,CAAC,cAAc,CAAC;IAE3D;;;;;;;;;;;OAWG;IACH,UAAU,EAAE,KAAK,EAAE,EACjB,MAAM,EACN,SAAS,EACT,eAAe,GAChB,EAA+C,EAAE;QAChD,MAAM,YAAY,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACtB,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,CAAC;YACnD,YAAY,CAAC,yBAAyB,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;gBACnE,MAAM,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;gBAChC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBAClB,0DAA0D;oBAC1D,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,kBAAkB,CAAC;wBACxD,OAAO,EAAE,EAAE,MAAM,EAAE;qBACpB,CAAC,CAAC;oBACH,IAAI,WAAW,EAAE,CAAC;wBAChB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;wBAC7C,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,WAAW,EAAE,CAAC,CAAC;wBACtD,OAAO,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,CAAC;oBACjC,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;CACF,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,SAAyE,EAC9B,EAAE,CAAC,CAAC;IAC/C,MAAM;IACN,SAAS;CACV,CAAC,CAAC;AAEH;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,IAAY,EACZ,IAAuC,EACI,EAAE,CAAC,CAAC;IAC/C,MAAM;IACN,SAAS,EAAE,CAAC,MAAwC,EAAE,EAAE;QACtD,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;CACF,CAAC,CAAC;AAWH,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/module.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAEL,sBAAsB,GAEvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAA4B,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAkC1E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,MAAM,GAAmB;IACpC,IAAI,EAAE,MAAM;IACZ;;;;;;;;OAQG;IACH,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,sBAAsB,CAAC,cAAc,CAAC;IAE3D;;;;;;;;;;;OAWG;IACH,UAAU,EAAE,KAAK,EAAE,EACjB,MAAM,EACN,SAAS,EACT,eAAe,GAChB,EAA+C,EAAE;QAChD,MAAM,YAAY,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACpD,+EAA+E;QAC/E,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACtB,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,CAAC;YACnD,YAAY,CAAC,yBAAyB,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;gBACnE,MAAM,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;gBAChC,4EAA4E;gBAC5E,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBAClB,kEAAkE;oBAClE,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,kBAAkB,CAAC;wBACxD,OAAO,EAAE,EAAE,MAAM,EAAE;qBACpB,CAAC,CAAC;oBACH,iFAAiF;oBACjF,IAAI,WAAW,EAAE,CAAC;wBAChB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;wBAC7C,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,WAAW,EAAE,CAAC,CAAC;wBACtD,OAAO,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,CAAC;oBACjC,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;CACF,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,SAAyE,EAC9B,EAAE,CAAC,CAAC;IAC/C,MAAM;IACN,SAAS;CACV,CAAC,CAAC;AAEH;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,IAAY,EACZ,IAAuC,EACI,EAAE,CAAC,CAAC;IAC/C,MAAM;IACN,SAAS,EAAE,CAAC,MAAwC,EAAE,EAAE;QACtD,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;CACF,CAAC,CAAC;AAWH,eAAe,MAAM,CAAC"}
@@ -1,13 +1,6 @@
1
1
  import { BaseModuleProvider } from '@equinor/fusion-framework-module/provider';
2
2
  import { version } from './version';
3
- /**
4
- * Thrown when `createClient(name)` is called with an unknown client key.
5
- *
6
- * This is only used when the provided string is neither a registered client name
7
- * nor an absolute `http:` or `https:` URL.
8
- */
9
- export class ClientNotFoundException extends Error {
10
- }
3
+ import { ClientNotFoundException } from './errors/index.js';
11
4
  /** URL protocols accepted as valid ad-hoc base URIs. */
12
5
  const SUPPORTED_PROTOCOLS = ['http:', 'https:', 'ws:', 'wss:'];
13
6
  /**
@@ -45,6 +38,10 @@ export class HttpClientProvider extends BaseModuleProvider {
45
38
  get defaultHttpRequestHandler() {
46
39
  return this.config.defaultHttpRequestHandler;
47
40
  }
41
+ /**
42
+ * Creates a new `HttpClientProvider`.
43
+ * @param config - The configurator providing client definitions and defaults.
44
+ */
48
45
  constructor(config) {
49
46
  super({
50
47
  version,
@@ -81,6 +78,7 @@ export class HttpClientProvider extends BaseModuleProvider {
81
78
  const { baseUri, defaultScopes = [], onCreate, ctor = this.config.defaultHttpClientCtor, requestHandler = this.defaultHttpRequestHandler, responseHandler, } = config;
82
79
  const options = { requestHandler, responseHandler };
83
80
  const instance = new ctor(baseUri || '', options);
81
+ // attach the resolved default scopes onto the instance without overwriting other own properties
84
82
  Object.assign(instance, { defaultScopes });
85
83
  onCreate?.(instance);
86
84
  return instance;
@@ -88,6 +86,7 @@ export class HttpClientProvider extends BaseModuleProvider {
88
86
  /**
89
87
  * Creates a client instance and returns it as the requested custom client type.
90
88
  *
89
+ * @template T - The custom `HttpClient` implementation type to cast the created instance to.
91
90
  * @param key - The key of the pre-configured HTTP client to create.
92
91
  * @returns The created HTTP client instance, cast to the specified type `T`.
93
92
  *
@@ -98,6 +97,8 @@ export class HttpClientProvider extends BaseModuleProvider {
98
97
  * is configured to use a different implementation.
99
98
  */
100
99
  createCustomClient(key) {
100
+ // `createClient` always returns the provider's configured `HttpClient` implementation —
101
+ // cast through `unknown` to hand back the caller-requested implementation type `T`.
101
102
  return this.createClient(key);
102
103
  }
103
104
  /**
@@ -109,14 +110,19 @@ export class HttpClientProvider extends BaseModuleProvider {
109
110
  *
110
111
  * @param keyOrConfig - The key or configuration object for the HTTP client.
111
112
  * @returns The resolved HTTP client configuration.
113
+ * @throws {ClientNotFoundException} When `keyOrConfig` is a string that is neither a registered
114
+ * client key nor a URL-like value.
112
115
  */
113
116
  _resolveConfig(keyOrConfig) {
117
+ // a string may reference a registered client key or an ad-hoc URL; anything else is used as-is
114
118
  if (typeof keyOrConfig === 'string') {
115
119
  const config = this.config.clients[keyOrConfig];
120
+ // an absolute http(s) URL can be used directly as an ad-hoc baseUri
116
121
  if (!config && isURL(keyOrConfig)) {
117
122
  return { baseUri: keyOrConfig };
118
123
  }
119
124
  else if (!config && looksLikeURL(keyOrConfig)) {
125
+ // recover from a missing protocol instead of failing outright, but warn so it can be fixed
120
126
  console.warn(`[HttpClientProvider] "${keyOrConfig}" looks like a URL but is missing the http:// or https:// protocol. ` +
121
127
  `Treating it as "https://${keyOrConfig}". ` +
122
128
  `Pass a fully-qualified URL to silence this warning.`);
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/provider.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  // Generated by genversion.
2
- export const version = '8.0.3';
2
+ export const version = '8.0.4';
3
3
  //# sourceMappingURL=version.js.map