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
@@ -188,12 +188,13 @@ class IframeFileReadableStream extends _readableStream.IframeReadableStream {
188
188
  }
189
189
 
190
190
  /**
191
- * Read as ArrayBuffer
191
+ * Read as File
192
+ * @param fileName Optional file name (if not provided, uses stream's filename)
192
193
  */
193
- readAsArrayBuffer() {
194
+ readAsFile(fileName) {
194
195
  var _this2 = this;
195
196
  return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2() {
196
- var data, buffer;
197
+ var data, buffer, name;
197
198
  return _regenerator.default.wrap(function (_context2) {
198
199
  while (1) switch (_context2.prev = _context2.next) {
199
200
  case 0:
@@ -201,10 +202,12 @@ class IframeFileReadableStream extends _readableStream.IframeReadableStream {
201
202
  return _this2.read();
202
203
  case 1:
203
204
  data = _context2.sent;
204
- // Create a new ArrayBuffer copy
205
- buffer = new ArrayBuffer(data.byteLength);
206
- new Uint8Array(buffer).set(data);
207
- return _context2.abrupt("return", buffer);
205
+ // Use slice to create a pure ArrayBuffer copy to avoid type issues
206
+ buffer = data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);
207
+ name = fileName || _this2.filename || 'file';
208
+ return _context2.abrupt("return", new File([buffer], name, {
209
+ type: _this2.mimeType || 'application/octet-stream'
210
+ }));
208
211
  case 2:
209
212
  case "end":
210
213
  return _context2.stop();
@@ -214,12 +217,12 @@ class IframeFileReadableStream extends _readableStream.IframeReadableStream {
214
217
  }
215
218
 
216
219
  /**
217
- * Read as Data URL
220
+ * Read as ArrayBuffer
218
221
  */
219
- readAsDataURL() {
222
+ readAsArrayBuffer() {
220
223
  var _this3 = this;
221
224
  return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee3() {
222
- var data, base64;
225
+ var data, buffer;
223
226
  return _regenerator.default.wrap(function (_context3) {
224
227
  while (1) switch (_context3.prev = _context3.next) {
225
228
  case 0:
@@ -227,8 +230,10 @@ class IframeFileReadableStream extends _readableStream.IframeReadableStream {
227
230
  return _this3.read();
228
231
  case 1:
229
232
  data = _context3.sent;
230
- base64 = uint8ArrayToBase64(data);
231
- return _context3.abrupt("return", `data:${_this3.mimeType || 'application/octet-stream'};base64,${base64}`);
233
+ // Create a new ArrayBuffer copy
234
+ buffer = new ArrayBuffer(data.byteLength);
235
+ new Uint8Array(buffer).set(data);
236
+ return _context3.abrupt("return", buffer);
232
237
  case 2:
233
238
  case "end":
234
239
  return _context3.stop();
@@ -236,5 +241,29 @@ class IframeFileReadableStream extends _readableStream.IframeReadableStream {
236
241
  }, _callee3);
237
242
  }))();
238
243
  }
244
+
245
+ /**
246
+ * Read as Data URL
247
+ */
248
+ readAsDataURL() {
249
+ var _this4 = this;
250
+ return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee4() {
251
+ var data, base64;
252
+ return _regenerator.default.wrap(function (_context4) {
253
+ while (1) switch (_context4.prev = _context4.next) {
254
+ case 0:
255
+ _context4.next = 1;
256
+ return _this4.read();
257
+ case 1:
258
+ data = _context4.sent;
259
+ base64 = uint8ArrayToBase64(data);
260
+ return _context4.abrupt("return", `data:${_this4.mimeType || 'application/octet-stream'};base64,${base64}`);
261
+ case 2:
262
+ case "end":
263
+ return _context4.stop();
264
+ }
265
+ }, _callee4);
266
+ }))();
267
+ }
239
268
  }
240
269
  exports.IframeFileReadableStream = IframeFileReadableStream;
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/web.dom-collections.for-each.js");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ var _exportNames = {
8
+ IframeWritableStream: true,
9
+ IframeFileWritableStream: true,
10
+ IframeFileReadableStream: true,
11
+ IframeReadableStream: true,
12
+ StreamMessageHandler: true
13
+ };
14
+ Object.defineProperty(exports, "IframeFileReadableStream", {
15
+ enumerable: true,
16
+ get: function get() {
17
+ return _fileStream.IframeFileReadableStream;
18
+ }
19
+ });
20
+ Object.defineProperty(exports, "IframeFileWritableStream", {
21
+ enumerable: true,
22
+ get: function get() {
23
+ return _fileStream.IframeFileWritableStream;
24
+ }
25
+ });
26
+ Object.defineProperty(exports, "IframeReadableStream", {
27
+ enumerable: true,
28
+ get: function get() {
29
+ return _readableStream.IframeReadableStream;
30
+ }
31
+ });
32
+ Object.defineProperty(exports, "IframeWritableStream", {
33
+ enumerable: true,
34
+ get: function get() {
35
+ return _writableStream.IframeWritableStream;
36
+ }
37
+ });
38
+ Object.defineProperty(exports, "StreamMessageHandler", {
39
+ enumerable: true,
40
+ get: function get() {
41
+ return _readableStream.StreamMessageHandler;
42
+ }
43
+ });
44
+ var _types = require("./types");
45
+ Object.keys(_types).forEach(function (key) {
46
+ if (key === "default" || key === "__esModule") return;
47
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
48
+ if (key in exports && exports[key] === _types[key]) return;
49
+ Object.defineProperty(exports, key, {
50
+ enumerable: true,
51
+ get: function get() {
52
+ return _types[key];
53
+ }
54
+ });
55
+ });
56
+ var _writableStream = require("./writable-stream");
57
+ var _fileStream = require("./file-stream");
58
+ var _readableStream = require("./readable-stream");
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -1 +1 @@
1
- {"version":3,"file":"readable-stream.d.ts","sourceRoot":"","sources":["../../src/stream/readable-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,WAAW,EACX,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAIjB;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,sCAAsC;IACtC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,GAAG,IAAI,CAAC;IAC1F,yBAAyB;IACzB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAChD,mBAAmB;IACnB,WAAW,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC;CACjC;AAED;;;GAGG;AACH,qBAAa,oBAAoB,CAAC,CAAC,GAAG,GAAG,CAAE,YAAW,qBAAqB,CAAC,CAAC,CAAC;IAC5E,SAAgB,QAAQ,EAAE,MAAM,CAAC;IACjC,SAAgB,IAAI,EAAE,UAAU,CAAC;IACjC,SAAgB,OAAO,EAAE,OAAO,CAAC;IACjC,SAAgB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE/C,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAClC,OAAO,CAAC,WAAW,CAAC,CAAqB;IACzC,OAAO,CAAC,UAAU,CAAC,CAAyB;IAC5C,OAAO,CAAC,aAAa,CAAC,CAAa;IACnC,OAAO,CAAC,eAAe,CAAC,CAAyB;IACjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAuB;IACtD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAS;gBAGlC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,oBAAoB,EACpC,OAAO,GAAE,qBAA0B;IAcrC,uBAAuB;IACvB,IAAW,KAAK,IAAI,WAAW,CAE9B;IAED;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;OAEG;IACH,OAAO,CAAC,UAAU;IAYlB;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC;IAIlC;;OAEG;IACH,OAAO,CAAC,SAAS;IAiBjB;;OAEG;IACH,SAAS,CAAC,WAAW,IAAI,CAAC;IAW1B;;OAEG;IACH,OAAO,CAAC,WAAW;IAenB;;OAEG;IACH,OAAO,CAAC,YAAY;IAgBpB;;OAEG;IACI,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC;IAiBzB;;OAEG;IACI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC;IAoBjD;;OAEG;IACI,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAkBpC;;OAEG;IACI,KAAK,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAOxC;;OAEG;IACI,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI;CAGvD"}
1
+ {"version":3,"file":"readable-stream.d.ts","sourceRoot":"","sources":["../../src/stream/readable-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,WAAW,EACX,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAIjB;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,sCAAsC;IACtC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,GAAG,IAAI,CAAC;IAC1F,yBAAyB;IACzB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAChD,mBAAmB;IACnB,WAAW,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC;CACjC;AAED;;;GAGG;AACH,qBAAa,oBAAoB,CAAC,CAAC,GAAG,GAAG,CAAE,YAAW,qBAAqB,CAAC,CAAC,CAAC;IAC5E,SAAgB,QAAQ,EAAE,MAAM,CAAC;IACjC,SAAgB,IAAI,EAAE,UAAU,CAAC;IACjC,SAAgB,OAAO,EAAE,OAAO,CAAC;IACjC,SAAgB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE/C,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAClC,OAAO,CAAC,WAAW,CAAC,CAAqB;IACzC,OAAO,CAAC,UAAU,CAAC,CAAyB;IAC5C,OAAO,CAAC,aAAa,CAAC,CAAa;IACnC,OAAO,CAAC,eAAe,CAAC,CAAyB;IACjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAuB;IACtD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAS;gBAGlC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,oBAAoB,EACpC,OAAO,GAAE,qBAA0B;IAcrC,uBAAuB;IACvB,IAAW,KAAK,IAAI,WAAW,CAE9B;IAED;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;OAEG;IACH,OAAO,CAAC,UAAU;IAYlB;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC;IAIlC;;OAEG;IACH,OAAO,CAAC,SAAS;IAiBjB;;OAEG;IACH,SAAS,CAAC,WAAW,IAAI,CAAC;IAW1B;;OAEG;IACH,OAAO,CAAC,WAAW;IAenB;;OAEG;IACH,OAAO,CAAC,YAAY;IAgBpB;;OAEG;IACI,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC;IAiBzB;;OAEG;IACI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC;IAoBjD;;OAEG;IACI,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAoBpC;;OAEG;IACI,KAAK,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAOxC;;OAEG;IACI,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI;CAGvD"}
@@ -12,13 +12,13 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
12
12
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
13
  var _utils = require("../utils");
14
14
  var _constants = require("../constants");
15
- /**
16
- * Stream message handler interface
15
+ /**
16
+ * Stream message handler interface
17
17
  */
18
18
 
19
- /**
20
- * IframeReadableStream - Client-side readable stream
21
- * Used to receive stream data sent from the server
19
+ /**
20
+ * IframeReadableStream - Client-side readable stream
21
+ * Used to receive stream data sent from the server
22
22
  */
23
23
  class IframeReadableStream {
24
24
  constructor(streamId, requestId, messageHandler, options = {}) {
@@ -42,8 +42,8 @@ class IframeReadableStream {
42
42
  return this._state;
43
43
  }
44
44
 
45
- /**
46
- * Handle stream message
45
+ /**
46
+ * Handle stream message
47
47
  */
48
48
  handleStreamMessage(data) {
49
49
  switch (data.type) {
@@ -62,8 +62,8 @@ class IframeReadableStream {
62
62
  }
63
63
  }
64
64
 
65
- /**
66
- * Handle data chunk (internal method)
65
+ /**
66
+ * Handle data chunk (internal method)
67
67
  */
68
68
  handleData(data, done) {
69
69
  if (this._state !== _constants.StreamState.PENDING && this._state !== _constants.StreamState.STREAMING) return;
@@ -75,15 +75,15 @@ class IframeReadableStream {
75
75
  }
76
76
  }
77
77
 
78
- /**
79
- * Decode data (subclasses can override, e.g., FileStream needs Base64 decoding)
78
+ /**
79
+ * Decode data (subclasses can override, e.g., FileStream needs Base64 decoding)
80
80
  */
81
81
  decodeData(data) {
82
82
  return data;
83
83
  }
84
84
 
85
- /**
86
- * Stream ended (internal handling)
85
+ /**
86
+ * Stream ended (internal handling)
87
87
  */
88
88
  handleEnd() {
89
89
  var _this$onEndCallback;
@@ -100,8 +100,8 @@ class IframeReadableStream {
100
100
  (_this$onEndCallback = this.onEndCallback) === null || _this$onEndCallback === void 0 || _this$onEndCallback.call(this);
101
101
  }
102
102
 
103
- /**
104
- * Merge data chunks (subclasses can override)
103
+ /**
104
+ * Merge data chunks (subclasses can override)
105
105
  */
106
106
  mergeChunks() {
107
107
  if (this.chunks.length === 0) {
@@ -114,8 +114,8 @@ class IframeReadableStream {
114
114
  return this.chunks;
115
115
  }
116
116
 
117
- /**
118
- * Stream error (internal method)
117
+ /**
118
+ * Stream error (internal method)
119
119
  */
120
120
  handleError(error) {
121
121
  var _this$onErrorCallback;
@@ -130,8 +130,8 @@ class IframeReadableStream {
130
130
  (_this$onErrorCallback = this.onErrorCallback) === null || _this$onErrorCallback === void 0 || _this$onErrorCallback.call(this, error);
131
131
  }
132
132
 
133
- /**
134
- * Stream cancelled (internal method)
133
+ /**
134
+ * Stream cancelled (internal method)
135
135
  */
136
136
  handleCancel(reason) {
137
137
  var _this$onErrorCallback2;
@@ -147,8 +147,8 @@ class IframeReadableStream {
147
147
  (_this$onErrorCallback2 = this.onErrorCallback) === null || _this$onErrorCallback2 === void 0 || _this$onErrorCallback2.call(this, error);
148
148
  }
149
149
 
150
- /**
151
- * Read all data
150
+ /**
151
+ * Read all data
152
152
  */
153
153
  read() {
154
154
  return new Promise((resolve, reject) => {
@@ -165,8 +165,8 @@ class IframeReadableStream {
165
165
  });
166
166
  }
167
167
 
168
- /**
169
- * Async iterator
168
+ /**
169
+ * Async iterator
170
170
  */
171
171
  [Symbol.asyncIterator]() {
172
172
  var index = 0;
@@ -210,8 +210,8 @@ class IframeReadableStream {
210
210
  };
211
211
  }
212
212
 
213
- /**
214
- * Cancel stream
213
+ /**
214
+ * Cancel stream
215
215
  */
216
216
  cancel(reason) {
217
217
  if (this._state !== _constants.StreamState.PENDING && this._state !== _constants.StreamState.STREAMING) return;
@@ -223,14 +223,16 @@ class IframeReadableStream {
223
223
  body: {
224
224
  streamId: this.streamId,
225
225
  reason
226
- }
226
+ },
227
+ role: _constants.MessageRole.CLIENT,
228
+ creatorId: this.messageHandler.id
227
229
  });
228
230
  this.messageHandler.postMessage(message);
229
231
  this.messageHandler.unregisterStreamHandler(this.streamId);
230
232
  }
231
233
 
232
- /**
233
- * Listen for stream end
234
+ /**
235
+ * Listen for stream end
234
236
  */
235
237
  onEnd(callback) {
236
238
  this.onEndCallback = callback;
@@ -239,8 +241,8 @@ class IframeReadableStream {
239
241
  }
240
242
  }
241
243
 
242
- /**
243
- * Listen for stream error
244
+ /**
245
+ * Listen for stream error
244
246
  */
245
247
  onError(callback) {
246
248
  this.onErrorCallback = callback;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -27,6 +27,11 @@ export interface WritableStreamOptions {
27
27
  next?: () => Promise<StreamChunk> | StreamChunk;
28
28
  /** Stream metadata */
29
29
  metadata?: Record<string, any>;
30
+ /**
31
+ * Whether to auto-resolve on client side
32
+ * If true, client will automatically read the stream and return fileData instead of stream
33
+ */
34
+ autoResolve?: boolean;
30
35
  }
31
36
  /**
32
37
  * Readable stream configuration options
@@ -75,6 +80,12 @@ export interface StreamBindContext {
75
80
  secretKey?: string;
76
81
  /** MessageChannel for sending messages (optional, uses direct postMessage if not provided) */
77
82
  channel?: MessageChannel;
83
+ /** Server instance ID (for server-side streams, used as creatorId) */
84
+ serverId?: string;
85
+ /** Client instance ID (for client-side streams, used as creatorId) */
86
+ clientId?: string;
87
+ /** Target instance ID (for routing messages to the correct instance) */
88
+ targetId?: string;
78
89
  }
79
90
  /**
80
91
  * Stream state
@@ -136,6 +147,8 @@ export interface IIframeFileReadableStream extends IIframeReadableStream<Uint8Ar
136
147
  readonly size?: number;
137
148
  /** Read as Blob */
138
149
  readAsBlob(): Promise<Blob>;
150
+ /** Read as File */
151
+ readAsFile(fileName?: string): Promise<File>;
139
152
  /** Read as ArrayBuffer */
140
153
  readAsArrayBuffer(): Promise<ArrayBuffer>;
141
154
  /** Read as Data URL */
@@ -161,5 +174,10 @@ export interface StreamMessageData {
161
174
  reason?: string;
162
175
  /** Metadata */
163
176
  metadata?: Record<string, any>;
177
+ /**
178
+ * Whether to auto-resolve on client side
179
+ * If true, client will automatically read the stream and return fileData instead of stream
180
+ */
181
+ autoResolve?: boolean;
164
182
  }
165
183
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/stream/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/stream/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -12,6 +12,7 @@ export declare class IframeWritableStream implements IIframeWritableStream {
12
12
  private readonly iterator?;
13
13
  private readonly nextFn?;
14
14
  private readonly metadata?;
15
+ private readonly autoResolve?;
15
16
  constructor(options?: WritableStreamOptions);
16
17
  /** Get stream state */
17
18
  get state(): StreamState;
@@ -1 +1 @@
1
- {"version":3,"file":"writable-stream.d.ts","sourceRoot":"","sources":["../../src/stream/writable-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EAEtB,MAAM,SAAS,CAAC;AAWjB;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,qBAAqB;IAChE,SAAgB,QAAQ,EAAE,MAAM,CAAC;IACjC,SAAgB,IAAI,EAAE,UAAU,CAAC;IACjC,SAAgB,OAAO,EAAE,OAAO,CAAC;IAEjC,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAA2C;IACrE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAA2C;IACnE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAsB;gBAE7B,OAAO,GAAE,qBAA0B;IAStD,uBAAuB;IACvB,IAAW,KAAK,IAAI,WAAW,CAE9B;IAED;;;OAGG;IACI,KAAK,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAI9C;;OAEG;IACH,OAAO,CAAC,WAAW;IAqBnB;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAkCnC;;OAEG;YACW,kBAAkB;IAuBhC;;OAEG;YACW,cAAc;IAsB5B;;OAEG;IACH,OAAO,CAAC,QAAQ;IAOhB;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG;IAIpC;;OAEG;IACH,OAAO,CAAC,GAAG;IAOX;;OAEG;IACH,OAAO,CAAC,KAAK;IASb;;OAEG;IACI,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;CAWrC"}
1
+ {"version":3,"file":"writable-stream.d.ts","sourceRoot":"","sources":["../../src/stream/writable-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EAEtB,MAAM,SAAS,CAAC;AAWjB;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,qBAAqB;IAChE,SAAgB,QAAQ,EAAE,MAAM,CAAC;IACjC,SAAgB,IAAI,EAAE,UAAU,CAAC;IACjC,SAAgB,OAAO,EAAE,OAAO,CAAC;IAEjC,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAA2C;IACrE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAA2C;IACnE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAsB;IAChD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAU;gBAEpB,OAAO,GAAE,qBAA0B;IAUtD,uBAAuB;IACvB,IAAW,KAAK,IAAI,WAAW,CAE9B;IAED;;;OAGG;IACI,KAAK,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAI9C;;OAEG;IACH,OAAO,CAAC,WAAW;IAwBnB;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAmCnC;;OAEG;YACW,kBAAkB;IAuBhC;;OAEG;YACW,cAAc;IAsB5B;;OAEG;IACH,OAAO,CAAC,QAAQ;IAOhB;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG;IAIpC;;OAEG;IACH,OAAO,CAAC,GAAG;IAOX;;OAEG;IACH,OAAO,CAAC,KAAK;IASb;;OAEG;IACI,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;CAWrC"}
@@ -46,6 +46,7 @@ class IframeWritableStream {
46
46
  this.iterator = options.iterator;
47
47
  this.nextFn = options.next;
48
48
  this.metadata = options.metadata;
49
+ this.autoResolve = options.autoResolve;
49
50
  }
50
51
 
51
52
  /** Get stream state */
@@ -72,7 +73,10 @@ class IframeWritableStream {
72
73
  secretKey: this.context.secretKey,
73
74
  body: _objectSpread({
74
75
  streamId: this.streamId
75
- }, data)
76
+ }, data),
77
+ role: _constants.MessageRole.SERVER,
78
+ creatorId: this.context.serverId,
79
+ targetId: this.context.targetId
76
80
  });
77
81
 
78
82
  // Use channel if available, otherwise use direct postMessage
@@ -111,7 +115,8 @@ class IframeWritableStream {
111
115
  _this.sendMessage(_constants.MessageType.STREAM_START, {
112
116
  type: _this.type,
113
117
  chunked: _this.chunked,
114
- metadata: _this.metadata
118
+ metadata: _this.metadata,
119
+ autoResolve: _this.autoResolve
115
120
  });
116
121
  _context.prev = 3;
117
122
  if (!_this.iterator) {
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -1,25 +1,43 @@
1
+ import { MessageRoleValue } from '../constants';
1
2
  /**
2
3
  * Request default configuration
3
4
  * Can be set when creating requestIframeClient, and can be overridden on each request
4
5
  */
5
6
  export interface RequestDefaults {
6
- /** ACK confirmation timeout (milliseconds), timeout for waiting for the other party to acknowledge the message, default 500 */
7
+ /** ACK confirmation timeout (milliseconds), timeout for waiting for the other party to acknowledge the message, default 1000 */
7
8
  ackTimeout?: number;
8
9
  /** Request timeout (milliseconds), timeout for waiting for the server to return the result, default 5000 */
9
10
  timeout?: number;
10
11
  /** Async request timeout (milliseconds), timeout after the server indicates it's an async task, default 120000 */
11
12
  asyncTimeout?: number;
12
13
  }
14
+ /**
15
+ * Headers value type (supports static value or dynamic function)
16
+ */
17
+ export type HeaderValue = string | string[] | ((config: RequestConfig) => string | string[]);
18
+ /**
19
+ * Headers configuration type
20
+ */
21
+ export type HeadersConfig = Record<string, HeaderValue>;
13
22
  /**
14
23
  * sender.send configuration options
15
24
  */
16
25
  export interface RequestOptions extends RequestDefaults {
17
26
  /** Custom request ID */
18
27
  requestId?: string;
19
- /** Request headers */
20
- headers?: Record<string, string>;
28
+ /**
29
+ * Request headers (can override initial headers from RequestIframeClientOptions).
30
+ * Values can be static strings/arrays or functions that dynamically generate headers based on request config.
31
+ */
32
+ headers?: HeadersConfig;
21
33
  /** Request cookies */
22
34
  cookies?: Record<string, string>;
35
+ /**
36
+ * Target server instance ID
37
+ * If specified, the request will only be handled by the server instance with this ID.
38
+ * This allows clients to target a specific server instance when multiple instances exist.
39
+ */
40
+ targetId?: string;
23
41
  }
24
42
  /**
25
43
  * sender.send request configuration (internal use)
@@ -30,7 +48,7 @@ export interface RequestConfig extends RequestOptions {
30
48
  /** Request body */
31
49
  body?: Record<string, any>;
32
50
  /** Request headers */
33
- headers?: Record<string, string>;
51
+ headers?: HeadersConfig;
34
52
  /** Request cookies */
35
53
  cookies?: Record<string, string>;
36
54
  }
@@ -48,12 +66,6 @@ export interface Response<T = any> {
48
66
  requestId: string;
49
67
  /** Response headers (Set-Cookie is a string array) */
50
68
  headers?: Record<string, string | string[]>;
51
- /** File data (if response is a file) */
52
- fileData?: {
53
- content: string;
54
- mimeType?: string;
55
- fileName?: string;
56
- };
57
69
  /** Stream data (if response is a stream) */
58
70
  stream?: import('../stream').IIframeReadableStream<T>;
59
71
  }
@@ -144,12 +156,6 @@ export interface PostMessageData {
144
156
  cookies?: Record<string, string>;
145
157
  /** Response data */
146
158
  data?: any;
147
- /** File data (base64 encoded, used for sendFile) */
148
- fileData?: {
149
- content: string;
150
- mimeType?: string;
151
- fileName?: string;
152
- };
153
159
  /** Error information */
154
160
  error?: {
155
161
  message: string;
@@ -161,6 +167,25 @@ export interface PostMessageData {
161
167
  statusText?: string;
162
168
  /** Whether client confirmation of receipt is required (for response/error messages) */
163
169
  requireAck?: boolean;
170
+ /**
171
+ * Message sender role
172
+ * - 'client': message sent by client
173
+ * - 'server': message sent by server
174
+ * Used to prevent message routing confusion when client and server are in the same window
175
+ */
176
+ role?: MessageRoleValue;
177
+ /**
178
+ * ID of the instance that created this message
179
+ * Used to identify which client/server instance created the message
180
+ */
181
+ creatorId?: string;
182
+ /**
183
+ * ID of the target instance that should handle this message
184
+ * - For requests: ID of the target server instance (if specified, only that server will process it)
185
+ * - For responses/acks: ID of the target client instance (usually the creatorId of the original request)
186
+ * Used to ensure messages are routed to the correct instance and avoid message confusion
187
+ */
188
+ targetId?: string;
164
189
  }
165
190
  /**
166
191
  * Server Request object (similar to express)
@@ -290,6 +315,14 @@ export type ServerEventName = 'request' | 'ack' | 'async' | 'response' | 'error'
290
315
  * Client interface
291
316
  */
292
317
  export interface RequestIframeClient {
318
+ /** Unique instance ID */
319
+ readonly id: string;
320
+ /** Whether message handling is enabled */
321
+ readonly isOpen: boolean;
322
+ /** Enable message handling (register message handler) */
323
+ open(): void;
324
+ /** Disable message handling (unregister message handler, but don't release resources) */
325
+ close(): void;
293
326
  /** Interceptors (only effective for send) */
294
327
  interceptors: {
295
328
  request: import('../interceptors').RequestInterceptorManager;
@@ -331,6 +364,8 @@ export interface RequestIframeClient {
331
364
  * Clear all cookies
332
365
  */
333
366
  clearCookies(): void;
367
+ /** Destroy client (close and release resources) */
368
+ destroy(): void;
334
369
  }
335
370
  /**
336
371
  * Client server interface (used on client side, handles responses only)
@@ -351,6 +386,8 @@ export interface RequestIframeClientServer {
351
386
  * Server interface (used on server side, handles requests and responses)
352
387
  */
353
388
  export interface RequestIframeServer {
389
+ /** Unique instance ID */
390
+ readonly id: string;
354
391
  /** Message isolation key (read-only) */
355
392
  readonly secretKey?: string;
356
393
  /** Whether message handling is enabled */
@@ -367,11 +404,11 @@ export interface RequestIframeServer {
367
404
  use(middleware: Middleware): void;
368
405
  use(path: PathMatcher, middleware: Middleware): void;
369
406
  /** Register route handler */
370
- on(path: string, handler: ServerHandler): void;
407
+ on(path: string, handler: ServerHandler): (() => void);
371
408
  /** Unregister route handler */
372
- off(path: string): void;
409
+ off(path: string | string[]): void;
373
410
  /** Batch register route handlers (via key: value object) */
374
- map(handlers: Record<string, ServerHandler>): void;
411
+ map(handlers: Record<string, ServerHandler>): (() => void);
375
412
  /** Destroy server (close and release resources) */
376
413
  destroy(): void;
377
414
  }
@@ -389,6 +426,17 @@ export interface RequestIframeClientOptions extends RequestDefaults {
389
426
  * If true, logs will be printed at various points such as before and after requests.
390
427
  */
391
428
  trace?: boolean;
429
+ /**
430
+ * Initial request headers.
431
+ * Values can be static strings/arrays or functions that dynamically generate headers based on request config.
432
+ * Headers from individual requests will override these initial headers.
433
+ */
434
+ headers?: HeadersConfig;
435
+ /**
436
+ * Whether to automatically open (start message handling) when creating the client.
437
+ * Default is true. If set to false, you need to manually call client.open() to start message handling.
438
+ */
439
+ autoOpen?: boolean;
392
440
  }
393
441
  /**
394
442
  * requestIframeServer entry options
@@ -399,10 +447,22 @@ export interface RequestIframeServerOptions extends Pick<RequestDefaults, 'ackTi
399
447
  * If configured, automatically adds a unified prefix to the path of all messages (to avoid conflicts between different businesses), and only processes framework messages with the same secretKey.
400
448
  */
401
449
  secretKey?: string;
450
+ /**
451
+ * Custom server instance ID.
452
+ * If specified, the server will use this ID instead of generating a random one.
453
+ * Servers with the same id (and secretKey) will be cached and reused (singleton pattern).
454
+ * This allows clients to target a specific server instance by its ID.
455
+ */
456
+ id?: string;
402
457
  /**
403
458
  * Whether to enable trace mode.
404
459
  * If true, logs will be printed at various points such as before and after requests, server receive/respond, etc.
405
460
  */
406
461
  trace?: boolean;
462
+ /**
463
+ * Whether to automatically open (start message handling) when creating the server.
464
+ * Default is true. If set to false, you need to manually call server.open() to start message handling.
465
+ */
466
+ autoOpen?: boolean;
407
467
  }
408
468
  //# sourceMappingURL=index.d.ts.map