request-iframe 0.0.2 → 0.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.
- package/QUICKSTART.CN.md +35 -8
- package/QUICKSTART.md +35 -8
- package/README.CN.md +439 -36
- package/README.md +496 -30
- package/library/__tests__/channel.test.ts +420 -0
- package/library/__tests__/coverage-branches.test.ts +356 -0
- package/library/__tests__/debug.test.ts +588 -0
- package/library/__tests__/dispatcher.test.ts +481 -0
- package/library/__tests__/requestIframe.test.ts +3163 -185
- package/library/__tests__/server.test.ts +738 -0
- package/library/__tests__/stream.test.ts +46 -15
- package/library/api/client.d.ts.map +1 -1
- package/library/api/client.js +12 -6
- package/library/api/server.d.ts +4 -3
- package/library/api/server.d.ts.map +1 -1
- package/library/api/server.js +25 -7
- package/library/constants/index.d.ts +14 -4
- package/library/constants/index.d.ts.map +1 -1
- package/library/constants/index.js +15 -7
- package/library/constants/messages.d.ts +37 -0
- package/library/constants/messages.d.ts.map +1 -1
- package/library/constants/messages.js +38 -1
- package/library/core/client-server.d.ts +105 -0
- package/library/core/client-server.d.ts.map +1 -0
- package/library/core/client-server.js +289 -0
- package/library/core/client.d.ts +53 -10
- package/library/core/client.d.ts.map +1 -1
- package/library/core/client.js +529 -207
- package/library/core/request.d.ts +3 -1
- package/library/core/request.d.ts.map +1 -1
- package/library/core/request.js +2 -1
- package/library/core/response.d.ts +30 -4
- package/library/core/response.d.ts.map +1 -1
- package/library/core/response.js +176 -100
- package/library/core/server-client.d.ts +3 -1
- package/library/core/server-client.d.ts.map +1 -1
- package/library/core/server-client.js +19 -9
- package/library/core/server.d.ts +22 -1
- package/library/core/server.d.ts.map +1 -1
- package/library/core/server.js +304 -55
- package/library/index.d.ts +3 -2
- package/library/index.d.ts.map +1 -1
- package/library/index.js +34 -5
- package/library/interceptors/index.d.ts.map +1 -1
- package/library/message/channel.d.ts +3 -1
- package/library/message/channel.d.ts.map +1 -1
- package/library/message/dispatcher.d.ts +7 -2
- package/library/message/dispatcher.d.ts.map +1 -1
- package/library/message/dispatcher.js +48 -2
- package/library/message/index.d.ts.map +1 -1
- package/library/stream/file-stream.d.ts +5 -0
- package/library/stream/file-stream.d.ts.map +1 -1
- package/library/stream/file-stream.js +41 -12
- package/library/stream/index.d.ts +11 -1
- package/library/stream/index.d.ts.map +1 -1
- package/library/stream/index.js +21 -3
- package/library/stream/readable-stream.d.ts.map +1 -1
- package/library/stream/readable-stream.js +32 -30
- package/library/stream/types.d.ts +20 -2
- package/library/stream/types.d.ts.map +1 -1
- package/library/stream/writable-stream.d.ts +2 -1
- package/library/stream/writable-stream.d.ts.map +1 -1
- package/library/stream/writable-stream.js +13 -10
- package/library/types/index.d.ts +106 -32
- package/library/types/index.d.ts.map +1 -1
- package/library/utils/cache.d.ts +24 -0
- package/library/utils/cache.d.ts.map +1 -1
- package/library/utils/cache.js +76 -0
- package/library/utils/cookie.d.ts.map +1 -1
- package/library/utils/debug.d.ts.map +1 -1
- package/library/utils/debug.js +382 -20
- package/library/utils/index.d.ts +19 -0
- package/library/utils/index.d.ts.map +1 -1
- package/library/utils/index.js +113 -2
- package/library/utils/path-match.d.ts +16 -0
- package/library/utils/path-match.d.ts.map +1 -1
- package/library/utils/path-match.js +65 -0
- package/library/utils/protocol.d.ts.map +1 -1
- package/package.json +4 -1
- package/react/library/__tests__/index.test.tsx +274 -281
- package/react/library/index.d.ts +4 -3
- package/react/library/index.d.ts.map +1 -1
- package/react/library/index.js +225 -158
- package/react/package.json +7 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { MessageRoleValue } from '../constants';
|
|
1
2
|
import { PostMessageData } from '../types';
|
|
2
3
|
import { MessageChannel, type MessageContext } from './channel';
|
|
3
4
|
/**
|
|
@@ -45,6 +46,10 @@ export declare class MessageDispatcher {
|
|
|
45
46
|
readonly secretKey?: string;
|
|
46
47
|
/** Channel type */
|
|
47
48
|
readonly type: MessageChannel['type'];
|
|
49
|
+
/** Role of this dispatcher ('client' or 'server') */
|
|
50
|
+
private readonly role;
|
|
51
|
+
/** Instance ID of the client/server that owns this dispatcher */
|
|
52
|
+
private readonly instanceId?;
|
|
48
53
|
/** Underlying message channel */
|
|
49
54
|
private readonly channel;
|
|
50
55
|
/** Message handler list */
|
|
@@ -53,7 +58,7 @@ export declare class MessageDispatcher {
|
|
|
53
58
|
private readonly boundReceiver;
|
|
54
59
|
/** Reference count (for determining if can be destroyed when cached) */
|
|
55
60
|
private refCount;
|
|
56
|
-
constructor(channel: MessageChannel);
|
|
61
|
+
constructor(channel: MessageChannel, role: MessageRoleValue, instanceId?: string);
|
|
57
62
|
/**
|
|
58
63
|
* Increment reference count
|
|
59
64
|
*/
|
|
@@ -102,7 +107,7 @@ export declare class MessageDispatcher {
|
|
|
102
107
|
* @param requestId request ID
|
|
103
108
|
* @param data additional data
|
|
104
109
|
*/
|
|
105
|
-
sendMessage(target: Window, targetOrigin: string, type: PostMessageData['type'], requestId: string, data?: Partial<Omit<PostMessageData, '__requestIframe__' | 'type' | 'requestId' | 'timestamp'>>): void;
|
|
110
|
+
sendMessage(target: Window, targetOrigin: string, type: PostMessageData['type'], requestId: string, data?: Partial<Omit<PostMessageData, '__requestIframe__' | 'type' | 'requestId' | 'timestamp' | 'role' | 'creatorId'>>): void;
|
|
106
111
|
/**
|
|
107
112
|
* Add path prefix
|
|
108
113
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAChB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;AAExF;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC;AAE/E;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,4DAA4D;IAC5D,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5F;AAkBD;;;;;;;;;;;GAWG;AACH,qBAAa,iBAAiB;IAC5B,uCAAuC;IACvC,SAAgB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnC,mBAAmB;IACnB,SAAgB,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IAE7C,iCAAiC;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IAEzC,2BAA2B;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IAEtD,gDAAgD;IAChD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA2D;IAEzF,wEAAwE;IACxE,OAAO,CAAC,QAAQ,CAAK;gBAEF,OAAO,EAAE,cAAc;
|
|
1
|
+
{"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../src/message/dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EACL,eAAe,EAChB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;AAExF;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC;AAE/E;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,4DAA4D;IAC5D,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5F;AAkBD;;;;;;;;;;;GAWG;AACH,qBAAa,iBAAiB;IAC5B,uCAAuC;IACvC,SAAgB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnC,mBAAmB;IACnB,SAAgB,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IAE7C,qDAAqD;IACrD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmB;IAExC,iEAAiE;IACjE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAS;IAErC,iCAAiC;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IAEzC,2BAA2B;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IAEtD,gDAAgD;IAChD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA2D;IAEzF,wEAAwE;IACxE,OAAO,CAAC,QAAQ,CAAK;gBAEF,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,gBAAgB,EAAE,UAAU,CAAC,EAAE,MAAM;IAkBvF;;OAEG;IACI,MAAM,IAAI,IAAI;IAIrB;;;OAGG;IACI,OAAO,IAAI,MAAM;IAIxB;;OAEG;IACI,WAAW,IAAI,MAAM;IAM5B;;;;;;OAMG;IACI,eAAe,CACpB,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,gBAAgB,EACzB,OAAO,CAAC,EAAE,cAAc,GAAG,MAAM,GAChC,MAAM,IAAI;IAyBb;;OAEG;IACI,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAOzD;;OAEG;IACH,OAAO,CAAC,eAAe;IAkDvB;;OAEG;IACH,OAAO,CAAC,SAAS;IAejB;;;;;OAKG;IACI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,YAAY,GAAE,MAAY,GAAG,IAAI;IAWvF;;;;;;;OAOG;IACI,WAAW,CAChB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,EAC7B,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,mBAAmB,GAAG,MAAM,GAAG,WAAW,GAAG,WAAW,GAAG,MAAM,GAAG,WAAW,CAAC,CAAC,GACrH,IAAI;IAcP;;OAEG;IACI,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIvC;;OAEG;IACI,UAAU,IAAI,cAAc;IAInC;;OAEG;IACI,OAAO,IAAI,IAAI;CAIvB"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
require("core-js/modules/es.symbol.description.js");
|
|
4
|
+
require("core-js/modules/es.array.filter.js");
|
|
4
5
|
require("core-js/modules/es.array.from.js");
|
|
5
6
|
require("core-js/modules/es.array.iterator.js");
|
|
6
7
|
require("core-js/modules/es.array.slice.js");
|
|
8
|
+
require("core-js/modules/es.object.get-own-property-descriptors.js");
|
|
9
|
+
require("core-js/modules/web.dom-collections.for-each.js");
|
|
7
10
|
require("core-js/modules/web.dom-collections.iterator.js");
|
|
8
11
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
9
12
|
Object.defineProperty(exports, "__esModule", {
|
|
@@ -17,7 +20,10 @@ require("core-js/modules/es.regexp.constructor.js");
|
|
|
17
20
|
require("core-js/modules/es.regexp.exec.js");
|
|
18
21
|
require("core-js/modules/es.regexp.to-string.js");
|
|
19
22
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
23
|
+
var _constants = require("../constants");
|
|
20
24
|
var _utils = require("../utils");
|
|
25
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
26
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
21
27
|
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
|
|
22
28
|
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
23
29
|
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
@@ -59,9 +65,11 @@ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length)
|
|
|
59
65
|
* It works with transport-agnostic MessageContext instead of transport-specific MessageEvent.
|
|
60
66
|
*/
|
|
61
67
|
class MessageDispatcher {
|
|
62
|
-
constructor(channel) {
|
|
68
|
+
constructor(channel, role, instanceId) {
|
|
63
69
|
/** Secret key for message isolation */
|
|
64
70
|
/** Channel type */
|
|
71
|
+
/** Role of this dispatcher ('client' or 'server') */
|
|
72
|
+
/** Instance ID of the client/server that owns this dispatcher */
|
|
65
73
|
/** Underlying message channel */
|
|
66
74
|
/** Message handler list */
|
|
67
75
|
(0, _defineProperty2.default)(this, "handlers", []);
|
|
@@ -70,6 +78,8 @@ class MessageDispatcher {
|
|
|
70
78
|
this.channel = channel;
|
|
71
79
|
this.secretKey = channel.secretKey;
|
|
72
80
|
this.type = channel.type;
|
|
81
|
+
this.role = role;
|
|
82
|
+
this.instanceId = instanceId;
|
|
73
83
|
|
|
74
84
|
// Create bound receiver callback
|
|
75
85
|
this.boundReceiver = (data, context) => {
|
|
@@ -150,6 +160,21 @@ class MessageDispatcher {
|
|
|
150
160
|
* Dispatch message to matching handlers
|
|
151
161
|
*/
|
|
152
162
|
dispatchMessage(data, context) {
|
|
163
|
+
// If message has already been handled by another dispatcher, skip processing
|
|
164
|
+
if (context.handledBy) {
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
// Role-based message filtering: only process messages from the opposite role
|
|
169
|
+
// - Server only processes messages from client (role === 'client')
|
|
170
|
+
// - Client only processes messages from server (role === 'server')
|
|
171
|
+
if (data.role !== undefined) {
|
|
172
|
+
var expectedRole = this.role === _constants.MessageRole.CLIENT ? _constants.MessageRole.SERVER : _constants.MessageRole.CLIENT;
|
|
173
|
+
if (data.role !== expectedRole) {
|
|
174
|
+
// Message is from the same role, ignore it to prevent routing confusion
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
153
178
|
var type = data.type;
|
|
154
179
|
var version = (0, _utils.getProtocolVersion)(data);
|
|
155
180
|
var _iterator = _createForOfIteratorHelper(this.handlers),
|
|
@@ -158,6 +183,11 @@ class MessageDispatcher {
|
|
|
158
183
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
159
184
|
var entry = _step.value;
|
|
160
185
|
if (this.matchType(type, entry.matcher)) {
|
|
186
|
+
// If message has been handled by a previous handler, stop processing
|
|
187
|
+
if (context.handledBy) {
|
|
188
|
+
break;
|
|
189
|
+
}
|
|
190
|
+
|
|
161
191
|
// If handler specified version validation
|
|
162
192
|
if (entry.versionValidator && version !== undefined) {
|
|
163
193
|
if (!entry.versionValidator(version)) {
|
|
@@ -169,6 +199,8 @@ class MessageDispatcher {
|
|
|
169
199
|
}
|
|
170
200
|
try {
|
|
171
201
|
entry.handler(data, context);
|
|
202
|
+
// After handler execution, check if it marked the message as handled
|
|
203
|
+
// If context.handledBy is set by the handler, subsequent handlers will be skipped
|
|
172
204
|
} catch (e) {
|
|
173
205
|
// Ignore handler exception, continue executing other handlers
|
|
174
206
|
console.error('[request-iframe] Handler error:', e);
|
|
@@ -207,6 +239,13 @@ class MessageDispatcher {
|
|
|
207
239
|
* @param targetOrigin target origin (defaults to '*')
|
|
208
240
|
*/
|
|
209
241
|
send(target, message, targetOrigin = '*') {
|
|
242
|
+
// Automatically set role and creatorId if not already set (for backward compatibility)
|
|
243
|
+
if (message.role === undefined) {
|
|
244
|
+
message.role = this.role;
|
|
245
|
+
}
|
|
246
|
+
if (message.creatorId === undefined && this.instanceId) {
|
|
247
|
+
message.creatorId = this.instanceId;
|
|
248
|
+
}
|
|
210
249
|
this.channel.send(target, message, targetOrigin);
|
|
211
250
|
}
|
|
212
251
|
|
|
@@ -219,7 +258,14 @@ class MessageDispatcher {
|
|
|
219
258
|
* @param data additional data
|
|
220
259
|
*/
|
|
221
260
|
sendMessage(target, targetOrigin, type, requestId, data) {
|
|
222
|
-
|
|
261
|
+
// Automatically set role, creatorId, and secretKey based on dispatcher's properties
|
|
262
|
+
// Create message with role, creatorId, and secretKey using createPostMessage directly
|
|
263
|
+
var message = (0, _utils.createPostMessage)(type, requestId, _objectSpread(_objectSpread({}, data), {}, {
|
|
264
|
+
role: this.role,
|
|
265
|
+
creatorId: this.instanceId,
|
|
266
|
+
secretKey: this.secretKey
|
|
267
|
+
}));
|
|
268
|
+
this.channel.send(target, message, targetOrigin);
|
|
223
269
|
}
|
|
224
270
|
|
|
225
271
|
// ==================== Utilities ====================
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxD,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,YAAY,EACV,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACf,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/message/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxD,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,YAAY,EACV,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACf,MAAM,cAAc,CAAC"}
|
|
@@ -36,6 +36,11 @@ export declare class IframeFileReadableStream extends IframeReadableStream<Uint8
|
|
|
36
36
|
* Read as Blob
|
|
37
37
|
*/
|
|
38
38
|
readAsBlob(): Promise<Blob>;
|
|
39
|
+
/**
|
|
40
|
+
* Read as File
|
|
41
|
+
* @param fileName Optional file name (if not provided, uses stream's filename)
|
|
42
|
+
*/
|
|
43
|
+
readAsFile(fileName?: string): Promise<File>;
|
|
39
44
|
/**
|
|
40
45
|
* Read as ArrayBuffer
|
|
41
46
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-stream.d.ts","sourceRoot":"","sources":["file-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EAC1B,MAAM,SAAS,CAAC;AA0BjB;;;GAGG;AACH,qBAAa,wBAAyB,SAAQ,oBAAoB;IAChE,SAAgB,QAAQ,EAAE,MAAM,CAAC;IACjC,SAAgB,QAAQ,EAAE,MAAM,CAAC;IACjC,SAAgB,IAAI,CAAC,EAAE,MAAM,CAAC;gBAEX,OAAO,EAAE,yBAAyB;IAiBrD;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM;CAcxC;AAED;;;GAGG;AACH,qBAAa,wBACX,SAAQ,oBAAoB,CAAC,UAAU,CACvC,YAAW,yBAAyB;IAEpC,SAAgB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClC,SAAgB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClC,SAAgB,IAAI,CAAC,EAAE,MAAM,CAAC;gBAG5B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,oBAAoB,EACpC,OAAO,GAAE,yBAA8B;IAYzC;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,GAAG,UAAU;IAa3C;;OAEG;IACH,SAAS,CAAC,WAAW,IAAI,UAAU;IAuBnC;;OAEG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAOxC;;OAEG;IACU,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC;IAQtD;;OAEG;IACU,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;CAK9C"}
|
|
1
|
+
{"version":3,"file":"file-stream.d.ts","sourceRoot":"","sources":["../../src/stream/file-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EAC1B,MAAM,SAAS,CAAC;AA0BjB;;;GAGG;AACH,qBAAa,wBAAyB,SAAQ,oBAAoB;IAChE,SAAgB,QAAQ,EAAE,MAAM,CAAC;IACjC,SAAgB,QAAQ,EAAE,MAAM,CAAC;IACjC,SAAgB,IAAI,CAAC,EAAE,MAAM,CAAC;gBAEX,OAAO,EAAE,yBAAyB;IAiBrD;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM;CAcxC;AAED;;;GAGG;AACH,qBAAa,wBACX,SAAQ,oBAAoB,CAAC,UAAU,CACvC,YAAW,yBAAyB;IAEpC,SAAgB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClC,SAAgB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClC,SAAgB,IAAI,CAAC,EAAE,MAAM,CAAC;gBAG5B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,oBAAoB,EACpC,OAAO,GAAE,yBAA8B;IAYzC;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,GAAG,UAAU;IAa3C;;OAEG;IACH,SAAS,CAAC,WAAW,IAAI,UAAU;IAuBnC;;OAEG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAOxC;;;OAGG;IACU,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQzD;;OAEG;IACU,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC;IAQtD;;OAEG;IACU,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;CAK9C"}
|
|
@@ -188,12 +188,13 @@ class IframeFileReadableStream extends _readableStream.IframeReadableStream {
|
|
|
188
188
|
}
|
|
189
189
|
|
|
190
190
|
/**
|
|
191
|
-
* Read as
|
|
191
|
+
* Read as File
|
|
192
|
+
* @param fileName Optional file name (if not provided, uses stream's filename)
|
|
192
193
|
*/
|
|
193
|
-
|
|
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
|
-
//
|
|
205
|
-
buffer =
|
|
206
|
-
|
|
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
|
|
220
|
+
* Read as ArrayBuffer
|
|
218
221
|
*/
|
|
219
|
-
|
|
222
|
+
readAsArrayBuffer() {
|
|
220
223
|
var _this3 = this;
|
|
221
224
|
return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee3() {
|
|
222
|
-
var data,
|
|
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
|
-
|
|
231
|
-
|
|
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;
|
|
@@ -3,6 +3,8 @@ export { IframeWritableStream } from './writable-stream';
|
|
|
3
3
|
export { IframeFileWritableStream } from './file-stream';
|
|
4
4
|
export { IframeReadableStream, StreamMessageHandler } from './readable-stream';
|
|
5
5
|
export { IframeFileReadableStream } from './file-stream';
|
|
6
|
+
import { IframeFileWritableStream } from './file-stream';
|
|
7
|
+
import { IframeWritableStream } from './writable-stream';
|
|
6
8
|
import { IIframeReadableStream, IIframeFileReadableStream } from './types';
|
|
7
9
|
/**
|
|
8
10
|
* Check if value is an IframeReadableStream
|
|
@@ -11,5 +13,13 @@ export declare function isIframeReadableStream(value: any): value is IIframeRead
|
|
|
11
13
|
/**
|
|
12
14
|
* Check if value is an IframeFileReadableStream (file stream)
|
|
13
15
|
*/
|
|
14
|
-
export declare function
|
|
16
|
+
export declare function isIframeFileReadableStream(value: any): value is IIframeFileReadableStream;
|
|
17
|
+
/**
|
|
18
|
+
* Check if value is an IframeWritableStream (includes IframeFileWritableStream)
|
|
19
|
+
*/
|
|
20
|
+
export declare function isIframeWritableStream(value: any): value is IframeWritableStream;
|
|
21
|
+
/**
|
|
22
|
+
* Check if value is an IframeFileWritableStream (file writable stream)
|
|
23
|
+
*/
|
|
24
|
+
export declare function isIframeFileWritableStream(value: any): value is IframeFileWritableStream;
|
|
15
25
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAGzD,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/stream/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAGzD,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAIzD,OAAO,EAA4B,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAE3E;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,qBAAqB,CAEjF;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,yBAAyB,CAEzF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,oBAAoB,CAEhF;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,wBAAwB,CAExF"}
|
package/library/stream/index.js
CHANGED
|
@@ -6,7 +6,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
var _exportNames = {
|
|
8
8
|
isIframeReadableStream: true,
|
|
9
|
-
|
|
9
|
+
isIframeFileReadableStream: true,
|
|
10
|
+
isIframeWritableStream: true,
|
|
11
|
+
isIframeFileWritableStream: true,
|
|
10
12
|
IframeWritableStream: true,
|
|
11
13
|
IframeFileWritableStream: true,
|
|
12
14
|
IframeFileReadableStream: true,
|
|
@@ -43,8 +45,10 @@ Object.defineProperty(exports, "StreamMessageHandler", {
|
|
|
43
45
|
return _readableStream.StreamMessageHandler;
|
|
44
46
|
}
|
|
45
47
|
});
|
|
46
|
-
exports.
|
|
48
|
+
exports.isIframeFileReadableStream = isIframeFileReadableStream;
|
|
49
|
+
exports.isIframeFileWritableStream = isIframeFileWritableStream;
|
|
47
50
|
exports.isIframeReadableStream = isIframeReadableStream;
|
|
51
|
+
exports.isIframeWritableStream = isIframeWritableStream;
|
|
48
52
|
var _types = require("./types");
|
|
49
53
|
Object.keys(_types).forEach(function (key) {
|
|
50
54
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -78,6 +82,20 @@ function isIframeReadableStream(value) {
|
|
|
78
82
|
/**
|
|
79
83
|
* Check if value is an IframeFileReadableStream (file stream)
|
|
80
84
|
*/
|
|
81
|
-
function
|
|
85
|
+
function isIframeFileReadableStream(value) {
|
|
82
86
|
return value instanceof _fileStream.IframeFileReadableStream;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Check if value is an IframeWritableStream (includes IframeFileWritableStream)
|
|
91
|
+
*/
|
|
92
|
+
function isIframeWritableStream(value) {
|
|
93
|
+
return value instanceof _writableStream.IframeWritableStream || value instanceof _fileStream.IframeFileWritableStream;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Check if value is an IframeFileWritableStream (file writable stream)
|
|
98
|
+
*/
|
|
99
|
+
function isIframeFileWritableStream(value) {
|
|
100
|
+
return value instanceof _fileStream.IframeFileWritableStream;
|
|
83
101
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readable-stream.d.ts","sourceRoot":"","sources":["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;
|
|
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;
|
|
@@ -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
|
|
@@ -73,8 +78,14 @@ export interface StreamBindContext {
|
|
|
73
78
|
targetOrigin: string;
|
|
74
79
|
/** secretKey */
|
|
75
80
|
secretKey?: string;
|
|
76
|
-
/** MessageChannel for sending messages
|
|
77
|
-
channel
|
|
81
|
+
/** MessageChannel for sending messages */
|
|
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":["types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,kBAAkB,EAAE,WAAW,IAAI,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACpG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,kBAAkB,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAC;AAEpF;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,iBAAiB;IACjB,IAAI,EAAE,GAAG,CAAC;IACV,qCAAqC;IACrC,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,yDAAyD;IACzD,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,yFAAyF;IACzF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACpD,gEAAgE;IAChE,IAAI,CAAC,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC;IAChD,sBAAsB;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/stream/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;
|
|
@@ -21,7 +22,7 @@ export declare class IframeWritableStream implements IIframeWritableStream {
|
|
|
21
22
|
*/
|
|
22
23
|
_bind(context: StreamBindContext): void;
|
|
23
24
|
/**
|
|
24
|
-
* Send message to client
|
|
25
|
+
* Send message (to client when server-side stream, to server when client-side stream)
|
|
25
26
|
*/
|
|
26
27
|
private sendMessage;
|
|
27
28
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writable-stream.d.ts","sourceRoot":"","sources":["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;
|
|
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;IAqBnB;;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"}
|