request-iframe 0.0.1 → 0.0.3

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 (96) hide show
  1. package/README.CN.md +271 -12
  2. package/README.md +268 -11
  3. package/library/__tests__/channel.test.ts +420 -0
  4. package/library/__tests__/debug.test.ts +588 -0
  5. package/library/__tests__/dispatcher.test.ts +481 -0
  6. package/library/__tests__/interceptors.test.ts +22 -0
  7. package/library/__tests__/requestIframe.test.ts +2317 -99
  8. package/library/__tests__/server.test.ts +738 -0
  9. package/library/api/client.d.js +5 -0
  10. package/library/api/client.d.ts.map +1 -1
  11. package/library/api/client.js +11 -6
  12. package/library/api/server.d.js +5 -0
  13. package/library/api/server.d.ts +4 -3
  14. package/library/api/server.d.ts.map +1 -1
  15. package/library/api/server.js +25 -7
  16. package/library/constants/index.d.js +36 -0
  17. package/library/constants/index.d.ts +14 -4
  18. package/library/constants/index.d.ts.map +1 -1
  19. package/library/constants/index.js +15 -7
  20. package/library/constants/messages.d.js +5 -0
  21. package/library/constants/messages.d.ts +35 -0
  22. package/library/constants/messages.d.ts.map +1 -1
  23. package/library/constants/messages.js +36 -1
  24. package/library/core/client-server.d.ts +101 -0
  25. package/library/core/client-server.d.ts.map +1 -0
  26. package/library/core/client-server.js +266 -0
  27. package/library/core/client.d.js +5 -0
  28. package/library/core/client.d.ts +38 -6
  29. package/library/core/client.d.ts.map +1 -1
  30. package/library/core/client.js +198 -24
  31. package/library/core/request.d.js +5 -0
  32. package/library/core/response.d.js +5 -0
  33. package/library/core/response.d.ts +5 -1
  34. package/library/core/response.d.ts.map +1 -1
  35. package/library/core/response.js +85 -70
  36. package/library/core/server-client.d.js +5 -0
  37. package/library/core/server-client.d.ts +3 -1
  38. package/library/core/server-client.d.ts.map +1 -1
  39. package/library/core/server-client.js +19 -9
  40. package/library/core/server.d.js +5 -0
  41. package/library/core/server.d.ts +11 -3
  42. package/library/core/server.d.ts.map +1 -1
  43. package/library/core/server.js +112 -54
  44. package/library/index.d.ts +1 -1
  45. package/library/index.js +2 -2
  46. package/library/interceptors/index.d.js +5 -0
  47. package/library/interceptors/index.d.ts +4 -0
  48. package/library/interceptors/index.d.ts.map +1 -1
  49. package/library/interceptors/index.js +7 -0
  50. package/library/message/channel.d.js +5 -0
  51. package/library/message/channel.d.ts +3 -1
  52. package/library/message/channel.d.ts.map +1 -1
  53. package/library/message/dispatcher.d.js +5 -0
  54. package/library/message/dispatcher.d.ts +7 -2
  55. package/library/message/dispatcher.d.ts.map +1 -1
  56. package/library/message/dispatcher.js +47 -2
  57. package/library/message/index.d.js +25 -0
  58. package/library/stream/file-stream.d.js +4 -0
  59. package/library/stream/file-stream.d.ts +5 -0
  60. package/library/stream/file-stream.d.ts.map +1 -1
  61. package/library/stream/file-stream.js +41 -12
  62. package/library/stream/index.d.js +58 -0
  63. package/library/stream/readable-stream.d.js +5 -0
  64. package/library/stream/readable-stream.d.ts.map +1 -1
  65. package/library/stream/readable-stream.js +32 -30
  66. package/library/stream/types.d.js +5 -0
  67. package/library/stream/types.d.ts +18 -0
  68. package/library/stream/types.d.ts.map +1 -1
  69. package/library/stream/writable-stream.d.js +5 -0
  70. package/library/stream/writable-stream.d.ts +1 -0
  71. package/library/stream/writable-stream.d.ts.map +1 -1
  72. package/library/stream/writable-stream.js +7 -2
  73. package/library/types/index.d.js +5 -0
  74. package/library/types/index.d.ts +79 -19
  75. package/library/types/index.d.ts.map +1 -1
  76. package/library/utils/cache.d.js +5 -0
  77. package/library/utils/cache.d.ts +24 -0
  78. package/library/utils/cache.d.ts.map +1 -1
  79. package/library/utils/cache.js +76 -0
  80. package/library/utils/cookie.d.js +5 -0
  81. package/library/utils/debug.d.js +5 -0
  82. package/library/utils/debug.d.ts.map +1 -1
  83. package/library/utils/debug.js +382 -20
  84. package/library/utils/index.d.js +94 -0
  85. package/library/utils/index.d.ts +5 -0
  86. package/library/utils/index.d.ts.map +1 -1
  87. package/library/utils/index.js +14 -1
  88. package/library/utils/path-match.d.js +5 -0
  89. package/library/utils/protocol.d.js +5 -0
  90. package/package.json +16 -2
  91. package/react/library/__tests__/index.test.d.ts +2 -0
  92. package/react/library/__tests__/index.test.d.ts.map +1 -0
  93. package/react/library/__tests__/index.test.tsx +770 -0
  94. package/react/library/index.d.ts +118 -0
  95. package/react/library/index.d.ts.map +1 -0
  96. package/react/library/index.js +232 -0
@@ -6,7 +6,6 @@ require("core-js/modules/es.array.from.js");
6
6
  require("core-js/modules/es.array.slice.js");
7
7
  require("core-js/modules/es.object.get-own-property-descriptors.js");
8
8
  require("core-js/modules/es.regexp.to-string.js");
9
- require("core-js/modules/web.dom-collections.for-each.js");
10
9
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
11
10
  Object.defineProperty(exports, "__esModule", {
12
11
  value: true
@@ -15,12 +14,16 @@ exports.RequestIframeClientImpl = void 0;
15
14
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
16
15
  require("core-js/modules/es.array.iterator.js");
17
16
  require("core-js/modules/es.map.js");
17
+ require("core-js/modules/es.object.entries.js");
18
18
  require("core-js/modules/es.promise.js");
19
19
  require("core-js/modules/es.regexp.exec.js");
20
+ require("core-js/modules/es.string.match.js");
20
21
  require("core-js/modules/es.string.replace.js");
21
22
  require("core-js/modules/es.string.starts-with.js");
23
+ require("core-js/modules/web.dom-collections.for-each.js");
22
24
  require("core-js/modules/web.dom-collections.iterator.js");
23
25
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
26
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
24
27
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
28
  var _utils = require("../utils");
26
29
  var _interceptors = require("../interceptors");
@@ -39,8 +42,14 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
39
42
  * RequestIframeClient implementation (only responsible for initiating requests, reuses server's listener)
40
43
  */
41
44
  class RequestIframeClientImpl {
42
- constructor(targetWindow, targetOrigin, server, options) {
45
+ /**
46
+ * Target server ID (remembered from responses)
47
+ * When a response is received, we remember the server's creatorId as the targetId for future requests
48
+ */
49
+
50
+ constructor(targetWindow, targetOrigin, server, options, instanceId) {
43
51
  var _options$ackTimeout, _options$timeout, _options$asyncTimeout;
52
+ /** Unique instance ID */
44
53
  (0, _defineProperty2.default)(this, "interceptors", {
45
54
  request: new _interceptors.RequestInterceptorManager(),
46
55
  response: new _interceptors.ResponseInterceptorManager()
@@ -57,6 +66,7 @@ class RequestIframeClientImpl {
57
66
  * value: stream message handler function
58
67
  */
59
68
  (0, _defineProperty2.default)(this, "streamHandlers", new Map());
69
+ this.id = instanceId || (0, _utils.generateInstanceId)();
60
70
  this.targetWindow = targetWindow;
61
71
  this.targetOrigin = targetOrigin;
62
72
  this.server = server;
@@ -67,6 +77,9 @@ class RequestIframeClientImpl {
67
77
  this.defaultTimeout = (_options$timeout = options === null || options === void 0 ? void 0 : options.timeout) !== null && _options$timeout !== void 0 ? _options$timeout : _constants.DefaultTimeout.REQUEST;
68
78
  this.defaultAsyncTimeout = (_options$asyncTimeout = options === null || options === void 0 ? void 0 : options.asyncTimeout) !== null && _options$asyncTimeout !== void 0 ? _options$asyncTimeout : _constants.DefaultTimeout.ASYNC;
69
79
 
80
+ // Save initial headers configuration
81
+ this.initialHeaders = options === null || options === void 0 ? void 0 : options.headers;
82
+
70
83
  // Register stream message processing callback
71
84
  this.server.setStreamCallback(data => {
72
85
  this.dispatchStreamMessage(data);
@@ -87,8 +100,8 @@ class RequestIframeClientImpl {
87
100
  this.streamHandlers.delete(streamId);
88
101
  }
89
102
 
90
- /**
91
- * Send message (StreamMessageHandler interface implementation)
103
+ /*
104
+ Send message (StreamMessageHandler interface implementation)
92
105
  */
93
106
  postMessage(message) {
94
107
  this.server.messageDispatcher.send(this.targetWindow, message, this.targetOrigin);
@@ -110,6 +123,45 @@ class RequestIframeClientImpl {
110
123
  }
111
124
  }
112
125
 
126
+ /**
127
+ * Resolve header value (handle function type headers)
128
+ */
129
+ resolveHeaderValue(value, config) {
130
+ if (typeof value === 'function') {
131
+ return value(config);
132
+ }
133
+ return value;
134
+ }
135
+
136
+ /**
137
+ * Merge and resolve headers (initial headers + request headers)
138
+ * Request headers take precedence over initial headers
139
+ */
140
+ mergeHeaders(config) {
141
+ var resolvedHeaders = {};
142
+
143
+ // First, resolve initial headers
144
+ if (this.initialHeaders) {
145
+ for (var _i = 0, _Object$entries = Object.entries(this.initialHeaders); _i < _Object$entries.length; _i++) {
146
+ var _Object$entries$_i = (0, _slicedToArray2.default)(_Object$entries[_i], 2),
147
+ key = _Object$entries$_i[0],
148
+ value = _Object$entries$_i[1];
149
+ resolvedHeaders[key] = this.resolveHeaderValue(value, config);
150
+ }
151
+ }
152
+
153
+ // Then, merge request headers (request headers take precedence)
154
+ if (config.headers) {
155
+ for (var _i2 = 0, _Object$entries2 = Object.entries(config.headers); _i2 < _Object$entries2.length; _i2++) {
156
+ var _Object$entries2$_i = (0, _slicedToArray2.default)(_Object$entries2[_i2], 2),
157
+ _key = _Object$entries2$_i[0],
158
+ _value = _Object$entries2$_i[1];
159
+ resolvedHeaders[_key] = this.resolveHeaderValue(_value, config);
160
+ }
161
+ }
162
+ return resolvedHeaders;
163
+ }
164
+
113
165
  /**
114
166
  * Check if server is reachable
115
167
  */
@@ -149,7 +201,7 @@ class RequestIframeClientImpl {
149
201
  send(path, body, options) {
150
202
  var _this = this;
151
203
  return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee() {
152
- var config, processedConfig, processedPath, processedBody, processedHeaders, processedCookies, _processedConfig$ackT, ackTimeout, _processedConfig$time, timeout, _processedConfig$asyn, asyncTimeout, _processedConfig$requ, requestId;
204
+ var config, processedConfig, mergedHeaders, processedPath, processedBody, processedCookies, userTargetId, _processedConfig$ackT, ackTimeout, _processedConfig$time, timeout, _processedConfig$asyn, asyncTimeout, _processedConfig$requ, requestId, targetId;
153
205
  return _regenerator.default.wrap(function (_context) {
154
206
  while (1) switch (_context.prev = _context.next) {
155
207
  case 0:
@@ -161,7 +213,10 @@ class RequestIframeClientImpl {
161
213
  return (0, _interceptors.runRequestInterceptors)(_this.interceptors.request, config);
162
214
  case 1:
163
215
  processedConfig = _context.sent;
164
- processedPath = processedConfig.path, processedBody = processedConfig.body, processedHeaders = processedConfig.headers, processedCookies = processedConfig.cookies, _processedConfig$ackT = processedConfig.ackTimeout, ackTimeout = _processedConfig$ackT === void 0 ? _this.defaultAckTimeout : _processedConfig$ackT, _processedConfig$time = processedConfig.timeout, timeout = _processedConfig$time === void 0 ? _this.defaultTimeout : _processedConfig$time, _processedConfig$asyn = processedConfig.asyncTimeout, asyncTimeout = _processedConfig$asyn === void 0 ? _this.defaultAsyncTimeout : _processedConfig$asyn, _processedConfig$requ = processedConfig.requestId, requestId = _processedConfig$requ === void 0 ? (0, _utils.generateRequestId)() : _processedConfig$requ;
216
+ // Merge and resolve headers (initial headers + request headers)
217
+ mergedHeaders = _this.mergeHeaders(processedConfig);
218
+ processedPath = processedConfig.path, processedBody = processedConfig.body, processedCookies = processedConfig.cookies, userTargetId = processedConfig.targetId, _processedConfig$ackT = processedConfig.ackTimeout, ackTimeout = _processedConfig$ackT === void 0 ? _this.defaultAckTimeout : _processedConfig$ackT, _processedConfig$time = processedConfig.timeout, timeout = _processedConfig$time === void 0 ? _this.defaultTimeout : _processedConfig$time, _processedConfig$asyn = processedConfig.asyncTimeout, asyncTimeout = _processedConfig$asyn === void 0 ? _this.defaultAsyncTimeout : _processedConfig$asyn, _processedConfig$requ = processedConfig.requestId, requestId = _processedConfig$requ === void 0 ? (0, _utils.generateRequestId)() : _processedConfig$requ; // Use user-specified targetId, or remembered target server ID, or undefined
219
+ targetId = userTargetId || _this._targetServerId;
165
220
  return _context.abrupt("return", new Promise((resolve, reject) => {
166
221
  var prefixedPath = _this.prefixPath(processedPath);
167
222
  var done = false;
@@ -174,7 +229,23 @@ class RequestIframeClientImpl {
174
229
  if (done) return;
175
230
  done = true;
176
231
  cleanup();
177
- reject(error);
232
+ // Run response interceptors to allow error logging
233
+ Promise.reject(error).catch(err => {
234
+ // Run through response interceptors' rejected callbacks
235
+ var promise = Promise.reject(err);
236
+ _this.interceptors.response.forEach(interceptor => {
237
+ promise = promise.catch(e => {
238
+ if (interceptor.rejected) {
239
+ return interceptor.rejected(e);
240
+ }
241
+ return Promise.reject(e);
242
+ });
243
+ });
244
+ return promise;
245
+ }).catch(() => {
246
+ // After interceptors, reject with original error
247
+ reject(error);
248
+ });
178
249
  };
179
250
  var setAckTimeout = () => {
180
251
  if (timeoutId) clearTimeout(timeoutId);
@@ -216,6 +287,10 @@ class RequestIframeClientImpl {
216
287
 
217
288
  // Received ACK: server has received request
218
289
  if (data.type === _constants.MessageType.ACK) {
290
+ // Remember server's creatorId as target server ID for future requests
291
+ if (data.creatorId && !_this._targetServerId) {
292
+ _this._targetServerId = data.creatorId;
293
+ }
219
294
  // Switch to request timeout
220
295
  setRequestTimeout();
221
296
  return;
@@ -223,6 +298,10 @@ class RequestIframeClientImpl {
223
298
 
224
299
  // Received ASYNC notification: this is an async task
225
300
  if (data.type === _constants.MessageType.ASYNC) {
301
+ // Remember server's creatorId as target server ID for future requests
302
+ if (data.creatorId && !_this._targetServerId) {
303
+ _this._targetServerId = data.creatorId;
304
+ }
226
305
  // Switch to async timeout
227
306
  setAsyncTimeout();
228
307
  return;
@@ -230,7 +309,7 @@ class RequestIframeClientImpl {
230
309
 
231
310
  // Received stream start message
232
311
  if (data.type === _constants.MessageType.STREAM_START) {
233
- var _streamBody$chunked;
312
+ var _streamBody$chunked, _streamBody$autoResol;
234
313
  done = true;
235
314
  cleanup();
236
315
  var streamBody = data.body;
@@ -238,24 +317,68 @@ class RequestIframeClientImpl {
238
317
  var streamType = streamBody.type || _constants.StreamType.DATA;
239
318
  var streamChunked = (_streamBody$chunked = streamBody.chunked) !== null && _streamBody$chunked !== void 0 ? _streamBody$chunked : true;
240
319
  var streamMetadata = streamBody.metadata;
320
+ var autoResolve = (_streamBody$autoResol = streamBody.autoResolve) !== null && _streamBody$autoResol !== void 0 ? _streamBody$autoResol : false;
241
321
 
242
322
  // Create corresponding readable stream based on stream type
243
- var readableStream;
244
323
  if (streamType === _constants.StreamType.FILE) {
245
- readableStream = new _stream.IframeFileReadableStream(streamId, requestId, _this, {
324
+ var _readableStream = new _stream.IframeFileReadableStream(streamId, requestId, _this, {
246
325
  chunked: streamChunked,
247
326
  metadata: streamMetadata,
248
327
  filename: streamMetadata === null || streamMetadata === void 0 ? void 0 : streamMetadata.filename,
249
328
  mimeType: streamMetadata === null || streamMetadata === void 0 ? void 0 : streamMetadata.mimeType,
250
329
  size: streamMetadata === null || streamMetadata === void 0 ? void 0 : streamMetadata.size
251
330
  });
252
- } else {
253
- readableStream = new _stream.IframeReadableStream(streamId, requestId, _this, {
254
- type: streamType,
255
- chunked: streamChunked,
256
- metadata: streamMetadata
257
- });
331
+
332
+ // If autoResolve is enabled, automatically read and convert to File/Blob
333
+ if (autoResolve) {
334
+ var _data$headers;
335
+ // Extract fileName from headers if available
336
+ var contentDisposition = (_data$headers = data.headers) === null || _data$headers === void 0 ? void 0 : _data$headers[_constants.HttpHeader.CONTENT_DISPOSITION];
337
+ var fileName;
338
+ if (contentDisposition) {
339
+ var disposition = typeof contentDisposition === 'string' ? contentDisposition : contentDisposition[0];
340
+ var filenameMatch = disposition.match(/filename="?([^"]+)"?/i);
341
+ if (filenameMatch) {
342
+ fileName = filenameMatch[1];
343
+ }
344
+ }
345
+ // Fallback to stream metadata if not found in headers
346
+ fileName = fileName || (streamMetadata === null || streamMetadata === void 0 ? void 0 : streamMetadata.filename) || _readableStream.filename;
347
+
348
+ // Use stream's readAsFile or readAsBlob method
349
+ var fileDataPromise = fileName ? _readableStream.readAsFile(fileName) : _readableStream.readAsBlob();
350
+ fileDataPromise.then(fileData => {
351
+ var resp = {
352
+ data: fileData,
353
+ status: data.status || _constants.HttpStatus.OK,
354
+ statusText: data.statusText || _constants.HttpStatusText[_constants.HttpStatus.OK],
355
+ requestId,
356
+ headers: data.headers
357
+ };
358
+ return (0, _interceptors.runResponseInterceptors)(_this.interceptors.response, resp);
359
+ }).then(resolve).catch(reject);
360
+ return;
361
+ }
362
+
363
+ // Non-autoResolve: return file stream directly
364
+ var _resp = {
365
+ data: undefined,
366
+ status: data.status || _constants.HttpStatus.OK,
367
+ statusText: data.statusText || _constants.HttpStatusText[_constants.HttpStatus.OK],
368
+ requestId,
369
+ headers: data.headers,
370
+ stream: _readableStream
371
+ };
372
+ (0, _interceptors.runResponseInterceptors)(_this.interceptors.response, _resp).then(resolve).catch(reject);
373
+ return;
258
374
  }
375
+
376
+ // Non-file stream: create regular readable stream
377
+ var readableStream = new _stream.IframeReadableStream(streamId, requestId, _this, {
378
+ type: streamType,
379
+ chunked: streamChunked,
380
+ metadata: streamMetadata
381
+ });
259
382
  var resp = {
260
383
  data: undefined,
261
384
  status: data.status || _constants.HttpStatus.OK,
@@ -279,10 +402,16 @@ class RequestIframeClientImpl {
279
402
  done = true;
280
403
  cleanup();
281
404
 
405
+ // Remember server's creatorId as target server ID for future requests
406
+ if (data.creatorId && !_this._targetServerId) {
407
+ _this._targetServerId = data.creatorId;
408
+ }
409
+
282
410
  // If server requires acknowledgment, send received message
283
411
  if (data.requireAck) {
284
412
  _this.server.messageDispatcher.sendMessage(_this.targetWindow, _this.targetOrigin, _constants.MessageType.RECEIVED, requestId, {
285
- path: prefixedPath
413
+ path: prefixedPath,
414
+ targetId: data.creatorId
286
415
  });
287
416
  }
288
417
 
@@ -303,25 +432,30 @@ class RequestIframeClientImpl {
303
432
  _iterator.f();
304
433
  }
305
434
  }
306
- var _resp = {
435
+ var _resp2 = {
307
436
  data: data.data,
308
437
  status: data.status || _constants.HttpStatus.OK,
309
438
  statusText: data.statusText || _constants.HttpStatusText[_constants.HttpStatus.OK],
310
439
  requestId,
311
- headers: data.headers,
312
- fileData: data.fileData
440
+ headers: data.headers
313
441
  };
314
- (0, _interceptors.runResponseInterceptors)(_this.interceptors.response, _resp).then(resolve).catch(reject);
442
+ (0, _interceptors.runResponseInterceptors)(_this.interceptors.response, _resp2).then(resolve).catch(reject);
315
443
  return;
316
444
  }
317
445
 
318
446
  // Received error
319
447
  if (data.type === _constants.MessageType.ERROR) {
320
448
  var _data$error, _data$error2;
449
+ // Remember server's creatorId as target server ID for future requests
450
+ if (data.creatorId && !_this._targetServerId) {
451
+ _this._targetServerId = data.creatorId;
452
+ }
453
+
321
454
  // If server requires acknowledgment, send received message
322
455
  if (data.requireAck) {
323
456
  _this.server.messageDispatcher.sendMessage(_this.targetWindow, _this.targetOrigin, _constants.MessageType.RECEIVED, requestId, {
324
- path: prefixedPath
457
+ path: prefixedPath,
458
+ targetId: data.creatorId
325
459
  });
326
460
  }
327
461
  var err = {
@@ -357,8 +491,9 @@ class RequestIframeClientImpl {
357
491
  _this.server.messageDispatcher.sendMessage(_this.targetWindow, _this.targetOrigin, _constants.MessageType.REQUEST, requestId, {
358
492
  path: prefixedPath,
359
493
  body: processedBody,
360
- headers: processedHeaders,
361
- cookies: mergedCookies
494
+ headers: mergedHeaders,
495
+ cookies: mergedCookies,
496
+ targetId
362
497
  });
363
498
  }));
364
499
  case 2:
@@ -379,6 +514,45 @@ class RequestIframeClientImpl {
379
514
  return this.server;
380
515
  }
381
516
 
517
+ /**
518
+ * Whether message handling is enabled
519
+ */
520
+ get isOpen() {
521
+ return this.server.isOpen;
522
+ }
523
+
524
+ /**
525
+ * Enable message handling (register message handlers)
526
+ */
527
+ open() {
528
+ this.server.open();
529
+ }
530
+
531
+ /**
532
+ * Disable message handling (unregister message handlers, but don't release resources)
533
+ */
534
+ close() {
535
+ this.server.close();
536
+ }
537
+
538
+ /**
539
+ * Destroy client (close and release all resources)
540
+ */
541
+ destroy() {
542
+ // Clear cookies
543
+ this._cookieStore.clear();
544
+
545
+ // Clear stream handlers
546
+ this.streamHandlers.clear();
547
+
548
+ // Clear interceptors
549
+ this.interceptors.request.clear();
550
+ this.interceptors.response.clear();
551
+
552
+ // Destroy server (this will also release the message channel)
553
+ this.server.destroy();
554
+ }
555
+
382
556
  /**
383
557
  * Get all cookies matching specified path
384
558
  * @param path Request path, returns all cookies if not provided
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -17,9 +17,13 @@ export declare class ServerResponseImpl implements ServerResponse {
17
17
  private readonly targetWindow;
18
18
  private readonly targetOrigin;
19
19
  private readonly channel?;
20
+ /** Target client ID (usually the creatorId of the original request) */
21
+ private readonly targetId?;
22
+ /** Server instance ID (for creatorId in responses) */
23
+ private readonly serverId?;
20
24
  private onAckCallback?;
21
25
  _sent: boolean;
22
- constructor(requestId: string, path: string, secretKey: string | undefined, targetWindow: Window, targetOrigin: string, channel?: MessageChannel);
26
+ constructor(requestId: string, path: string, secretKey: string | undefined, targetWindow: Window, targetOrigin: string, channel?: MessageChannel, serverId?: string, targetId?: string);
23
27
  /**
24
28
  * Send message via channel or direct postMessage
25
29
  */
@@ -1 +1 @@
1
- {"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../src/core/response.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAGvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAI5C;;GAEG;AACH,KAAK,WAAW,GAAG,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;AAE/C;;GAEG;AACH,qBAAa,kBAAmB,YAAW,cAAc;IAChD,UAAU,EAAE,MAAM,CAAiB;IACnC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAM;IACvD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAiB;IAC1C,OAAO,CAAC,aAAa,CAAC,CAAc;IAC7B,KAAK,UAAS;gBAGnB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,cAAc;IAU1B;;OAEG;IACH,OAAO,CAAC,WAAW;IAQnB;;OAEG;IACI,iBAAiB,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI;IAIrD;;OAEG;IACI,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAOpC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAwCxD,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAKlD,QAAQ,CACnB,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,EAC7B,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,OAAO,CAAC;IAyDnB;;;OAGG;IACU,UAAU,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB7D,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc;IAKpC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAwBhE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,cAAc;IAMpE,MAAM,CACX,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,aAAa,GACtB,cAAc;IA4BV,WAAW,CAChB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,aAAa,GACtB,cAAc;YAkBH,YAAY;CAa3B"}
1
+ {"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../src/core/response.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAGvF,OAAO,EAAE,oBAAoB,EAA4B,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAI5C;;GAEG;AACH,KAAK,WAAW,GAAG,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;AAE/C;;GAEG;AACH,qBAAa,kBAAmB,YAAW,cAAc;IAChD,UAAU,EAAE,MAAM,CAAiB;IACnC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAM;IACvD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAiB;IAC1C,uEAAuE;IACvE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAS;IACnC,sDAAsD;IACtD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAS;IACnC,OAAO,CAAC,aAAa,CAAC,CAAc;IAC7B,KAAK,UAAS;gBAGnB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,cAAc,EACxB,QAAQ,CAAC,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM;IAYnB;;OAEG;IACH,OAAO,CAAC,WAAW;IAQnB;;OAEG;IACI,iBAAiB,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI;IAIrD;;OAEG;IACI,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAOpC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IA8CxD,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAKlD,QAAQ,CACnB,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,EAC7B,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,OAAO,CAAC;IAoDnB;;;OAGG;IACU,UAAU,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB7D,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc;IAKpC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAwBhE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,cAAc;IAMpE,MAAM,CACX,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,aAAa,GACtB,cAAc;IA4BV,WAAW,CAChB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,aAAa,GACtB,cAAc;YAkBH,YAAY;CAa3B"}