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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["server.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,EACb,mBAAmB,EACnB,UAAU,EACV,WAAW,EACZ,MAAM,UAAU,CAAC;AAKlB,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAkB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/core/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,EACb,mBAAmB,EACnB,UAAU,EACV,WAAW,EACZ,MAAM,UAAU,CAAC;AAKlB,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAkB,MAAM,YAAY,CAAC;AAiDjF;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,mCAAmC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kGAAkG;IAClG,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,2BAA2B;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,mBAAmB;IACjE,yBAAyB;IACzB,SAAgB,EAAE,EAAE,MAAM,CAAC;IAE3B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoC;IAC7D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAwB;IAEpD,kDAAkD;IAClD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiC;IAE7D,0EAA0E;IAC1E,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA2C;IAEjF,8EAA8E;IAC9E,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwD;IAEvF,+CAA+C;IAC/C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAyB;IAEvD,yBAAyB;IACzB,OAAO,CAAC,OAAO,CAAS;gBAEL,OAAO,CAAC,EAAE,aAAa;IAgB1C;;OAEG;IACI,IAAI,IAAI,IAAI;IAMnB;;OAEG;IACI,KAAK,IAAI,IAAI;IASpB;;OAEG;IACH,IAAW,MAAM,IAAI,OAAO,CAE3B;IAED;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkDxB,qEAAqE;IACrE,OAAO,CAAC,iBAAiB;IAgHzB,OAAO,CAAC,qBAAqB;IAU7B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqB1B;;OAEG;IACH,OAAO,CAAC,UAAU;IAUlB;;OAEG;IACH,OAAO,CAAC,cAAc;IAStB,oBAAoB;IACpB,IAAW,SAAS,IAAI,MAAM,GAAG,SAAS,CAEzC;IAED,2CAA2C;IAC3C,IAAW,iBAAiB,IAAI,iBAAiB,CAEhD;IAED,OAAO,CAAC,kBAAkB;IAmC1B,OAAO,CAAC,mBAAmB;IA4B3B;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAuBnB;;OAEG;IACH,OAAO,CAAC,aAAa;IAwIrB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAanB,GAAG,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IACjC,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI;IAepD,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,IAAI;IAU3D,OAAO,CAAC,cAAc;IA4Cf,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAYlC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC;IAUjE;;OAEG;IACI,OAAO,IAAI,IAAI;CAgBvB"}
|
package/library/core/server.js
CHANGED
|
@@ -1,16 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
require("core-js/modules/es.symbol.description.js");
|
|
4
|
+
require("core-js/modules/es.array.filter.js");
|
|
5
|
+
require("core-js/modules/es.array.from.js");
|
|
6
|
+
require("core-js/modules/es.array.slice.js");
|
|
7
|
+
require("core-js/modules/es.object.get-own-property-descriptors.js");
|
|
8
|
+
require("core-js/modules/es.regexp.to-string.js");
|
|
3
9
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
10
|
Object.defineProperty(exports, "__esModule", {
|
|
5
11
|
value: true
|
|
6
12
|
});
|
|
7
13
|
exports.RequestIframeServerImpl = void 0;
|
|
14
|
+
require("core-js/modules/es.array.includes.js");
|
|
8
15
|
require("core-js/modules/es.array.iterator.js");
|
|
9
16
|
require("core-js/modules/es.map.js");
|
|
10
17
|
require("core-js/modules/es.object.entries.js");
|
|
11
18
|
require("core-js/modules/es.promise.js");
|
|
19
|
+
require("core-js/modules/es.regexp.exec.js");
|
|
20
|
+
require("core-js/modules/es.string.includes.js");
|
|
21
|
+
require("core-js/modules/es.string.match.js");
|
|
22
|
+
require("core-js/modules/es.string.replace.js");
|
|
23
|
+
require("core-js/modules/es.string.starts-with.js");
|
|
12
24
|
require("core-js/modules/web.dom-collections.for-each.js");
|
|
13
25
|
require("core-js/modules/web.dom-collections.iterator.js");
|
|
26
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
14
27
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
28
|
var _utils = require("../utils");
|
|
16
29
|
var _pathMatch = require("../utils/path-match");
|
|
@@ -19,6 +32,12 @@ var _response = require("./response");
|
|
|
19
32
|
var _message = require("../message");
|
|
20
33
|
var _cache = require("../utils/cache");
|
|
21
34
|
var _constants = require("../constants");
|
|
35
|
+
var _stream = require("../stream");
|
|
36
|
+
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; } } }; }
|
|
37
|
+
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; } }
|
|
38
|
+
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; }
|
|
39
|
+
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; }
|
|
40
|
+
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; }
|
|
22
41
|
/**
|
|
23
42
|
* Middleware item (contains path matcher and middleware function)
|
|
24
43
|
*/
|
|
@@ -27,6 +46,8 @@ var _constants = require("../constants");
|
|
|
27
46
|
* Pending acknowledgment
|
|
28
47
|
*/
|
|
29
48
|
|
|
49
|
+
/** Pending request waiting for client stream (streamId present) */
|
|
50
|
+
|
|
30
51
|
/**
|
|
31
52
|
* Server configuration options
|
|
32
53
|
*/
|
|
@@ -38,23 +59,32 @@ var _constants = require("../constants");
|
|
|
38
59
|
class RequestIframeServerImpl {
|
|
39
60
|
constructor(options) {
|
|
40
61
|
var _options$ackTimeout, _options$versionValid;
|
|
62
|
+
/** Unique instance ID */
|
|
41
63
|
(0, _defineProperty2.default)(this, "handlers", new Map());
|
|
42
64
|
(0, _defineProperty2.default)(this, "middlewares", []);
|
|
43
65
|
/** Responses waiting for client acknowledgment */
|
|
44
66
|
(0, _defineProperty2.default)(this, "pendingAcks", new Map());
|
|
67
|
+
/** Pending requests waiting for client stream_start (streamId present) */
|
|
68
|
+
(0, _defineProperty2.default)(this, "pendingStreamRequests", new Map());
|
|
69
|
+
/** Stream message handlers (streamId -> handler) for client→server streams */
|
|
70
|
+
(0, _defineProperty2.default)(this, "streamHandlers", new Map());
|
|
45
71
|
/** List of functions to unregister handlers */
|
|
46
72
|
(0, _defineProperty2.default)(this, "unregisterFns", []);
|
|
47
73
|
/** Whether it is open */
|
|
48
74
|
(0, _defineProperty2.default)(this, "_isOpen", false);
|
|
49
|
-
|
|
75
|
+
// Use custom id if provided, otherwise generate one
|
|
76
|
+
this.id = (options === null || options === void 0 ? void 0 : options.id) || (0, _utils.generateInstanceId)();
|
|
77
|
+
this.ackTimeout = (_options$ackTimeout = options === null || options === void 0 ? void 0 : options.ackTimeout) !== null && _options$ackTimeout !== void 0 ? _options$ackTimeout : _constants.DefaultTimeout.ACK;
|
|
50
78
|
this.versionValidator = (_options$versionValid = options === null || options === void 0 ? void 0 : options.versionValidator) !== null && _options$versionValid !== void 0 ? _options$versionValid : _utils.isCompatibleVersion;
|
|
51
79
|
|
|
52
80
|
// Get or create shared channel and create dispatcher
|
|
53
81
|
var channel = (0, _cache.getOrCreateMessageChannel)(options === null || options === void 0 ? void 0 : options.secretKey);
|
|
54
|
-
this.dispatcher = new _message.MessageDispatcher(channel);
|
|
82
|
+
this.dispatcher = new _message.MessageDispatcher(channel, _constants.MessageRole.SERVER, this.id);
|
|
55
83
|
|
|
56
|
-
// Auto-open by default
|
|
57
|
-
|
|
84
|
+
// Auto-open by default (unless explicitly set to false)
|
|
85
|
+
if ((options === null || options === void 0 ? void 0 : options.autoOpen) !== false) {
|
|
86
|
+
this.open();
|
|
87
|
+
}
|
|
58
88
|
}
|
|
59
89
|
|
|
60
90
|
/**
|
|
@@ -102,6 +132,122 @@ class RequestIframeServerImpl {
|
|
|
102
132
|
|
|
103
133
|
// Handle RECEIVED messages (for confirming response delivery)
|
|
104
134
|
this.unregisterFns.push(this.dispatcher.registerHandler(_constants.MessageType.RECEIVED, data => this.handleReceived(data), handlerOptions));
|
|
135
|
+
|
|
136
|
+
// Handle stream_* messages (client→server stream)
|
|
137
|
+
this.unregisterFns.push(this.dispatcher.registerHandler(_constants.MessageType.STREAM_START, (data, ctx) => this.handleStreamStart(data, ctx), handlerOptions));
|
|
138
|
+
this.unregisterFns.push(this.dispatcher.registerHandler(type => type.startsWith('stream_') && type !== _constants.MessageType.STREAM_START, (data, _context) => this.dispatchStreamMessage(data), handlerOptions));
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/** Handle stream_start from client (stream request with streamId) */
|
|
142
|
+
handleStreamStart(data, _context) {
|
|
143
|
+
var _body$chunked;
|
|
144
|
+
if (data.role !== _constants.MessageRole.CLIENT) return;
|
|
145
|
+
var body = data.body;
|
|
146
|
+
if (!(body !== null && body !== void 0 && body.streamId)) return;
|
|
147
|
+
var pending = this.pendingStreamRequests.get(data.requestId);
|
|
148
|
+
if (!pending || pending.streamId !== body.streamId) return;
|
|
149
|
+
this.pendingStreamRequests.delete(data.requestId);
|
|
150
|
+
var targetWindow = pending.targetWindow,
|
|
151
|
+
targetOrigin = pending.targetOrigin,
|
|
152
|
+
res = pending.res,
|
|
153
|
+
reqData = pending.data,
|
|
154
|
+
reqContext = pending.context,
|
|
155
|
+
handlerFn = pending.handlerFn;
|
|
156
|
+
var streamHandler = {
|
|
157
|
+
registerStreamHandler: (streamId, handler) => {
|
|
158
|
+
this.streamHandlers.set(streamId, handler);
|
|
159
|
+
},
|
|
160
|
+
unregisterStreamHandler: streamId => {
|
|
161
|
+
this.streamHandlers.delete(streamId);
|
|
162
|
+
},
|
|
163
|
+
postMessage: message => {
|
|
164
|
+
this.dispatcher.send(targetWindow, message, targetOrigin);
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
var streamType = body.type || _constants.StreamType.DATA;
|
|
168
|
+
var streamChunked = (_body$chunked = body.chunked) !== null && _body$chunked !== void 0 ? _body$chunked : true;
|
|
169
|
+
var streamMetadata = body.metadata;
|
|
170
|
+
var req = new _request.ServerRequestImpl(reqData, reqContext, res, pending.params);
|
|
171
|
+
|
|
172
|
+
// File stream: optionally auto-resolve to File/Blob before calling handler
|
|
173
|
+
if (streamType === _constants.StreamType.FILE) {
|
|
174
|
+
var _body$autoResolve;
|
|
175
|
+
var fileStream = new _stream.IframeFileReadableStream(body.streamId, data.requestId, streamHandler, {
|
|
176
|
+
chunked: streamChunked,
|
|
177
|
+
metadata: streamMetadata,
|
|
178
|
+
filename: streamMetadata === null || streamMetadata === void 0 ? void 0 : streamMetadata.filename,
|
|
179
|
+
mimeType: streamMetadata === null || streamMetadata === void 0 ? void 0 : streamMetadata.mimeType,
|
|
180
|
+
size: streamMetadata === null || streamMetadata === void 0 ? void 0 : streamMetadata.size
|
|
181
|
+
});
|
|
182
|
+
var autoResolve = (_body$autoResolve = body.autoResolve) !== null && _body$autoResolve !== void 0 ? _body$autoResolve : false;
|
|
183
|
+
if (autoResolve) {
|
|
184
|
+
var name = fileStream.filename || (streamMetadata === null || streamMetadata === void 0 ? void 0 : streamMetadata.filename);
|
|
185
|
+
var promise = name ? fileStream.readAsFile(name) : fileStream.readAsBlob();
|
|
186
|
+
promise.then(fileData => {
|
|
187
|
+
req.body = fileData;
|
|
188
|
+
req.stream = undefined;
|
|
189
|
+
this.runMiddlewares(req, res, () => {
|
|
190
|
+
try {
|
|
191
|
+
var result = handlerFn(req, res);
|
|
192
|
+
if ((0, _utils.isPromise)(result)) {
|
|
193
|
+
this.dispatcher.sendMessage(targetWindow, targetOrigin, _constants.MessageType.ASYNC, data.requestId, {
|
|
194
|
+
path: reqData.path,
|
|
195
|
+
targetId: data.creatorId
|
|
196
|
+
});
|
|
197
|
+
result.then(this.handleRequestResult.bind(this, res, targetWindow, targetOrigin, reqData)).catch(this.handleRequestError.bind(this, res, targetWindow, targetOrigin, reqData));
|
|
198
|
+
} else {
|
|
199
|
+
this.handleRequestResult(res, targetWindow, targetOrigin, reqData, result);
|
|
200
|
+
}
|
|
201
|
+
} catch (error) {
|
|
202
|
+
this.handleRequestError(res, targetWindow, targetOrigin, reqData, error);
|
|
203
|
+
}
|
|
204
|
+
});
|
|
205
|
+
}).catch(error => {
|
|
206
|
+
this.handleRequestError(res, targetWindow, targetOrigin, reqData, error);
|
|
207
|
+
});
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
// Non-autoResolve: expose stream directly
|
|
212
|
+
req.body = fileStream;
|
|
213
|
+
req.stream = fileStream;
|
|
214
|
+
} else {
|
|
215
|
+
// Non-file stream
|
|
216
|
+
var readableStream = new _stream.IframeReadableStream(body.streamId, data.requestId, streamHandler, {
|
|
217
|
+
type: streamType,
|
|
218
|
+
chunked: streamChunked,
|
|
219
|
+
metadata: streamMetadata
|
|
220
|
+
});
|
|
221
|
+
req.body = undefined;
|
|
222
|
+
req.stream = readableStream;
|
|
223
|
+
}
|
|
224
|
+
this.runMiddlewares(req, res, () => {
|
|
225
|
+
try {
|
|
226
|
+
var result = handlerFn(req, res);
|
|
227
|
+
if ((0, _utils.isPromise)(result)) {
|
|
228
|
+
this.dispatcher.sendMessage(targetWindow, targetOrigin, _constants.MessageType.ASYNC, data.requestId, {
|
|
229
|
+
path: reqData.path,
|
|
230
|
+
targetId: data.creatorId
|
|
231
|
+
});
|
|
232
|
+
result.then(this.handleRequestResult.bind(this, res, targetWindow, targetOrigin, reqData)).catch(this.handleRequestError.bind(this, res, targetWindow, targetOrigin, reqData));
|
|
233
|
+
} else {
|
|
234
|
+
this.handleRequestResult(res, targetWindow, targetOrigin, reqData, result);
|
|
235
|
+
}
|
|
236
|
+
} catch (error) {
|
|
237
|
+
this.handleRequestError(res, targetWindow, targetOrigin, reqData, error);
|
|
238
|
+
}
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
dispatchStreamMessage(data) {
|
|
242
|
+
var body = data.body;
|
|
243
|
+
if (!(body !== null && body !== void 0 && body.streamId)) return;
|
|
244
|
+
var handler = this.streamHandlers.get(body.streamId);
|
|
245
|
+
if (handler) {
|
|
246
|
+
var messageType = data.type.replace('stream_', '');
|
|
247
|
+
handler(_objectSpread(_objectSpread({}, body), {}, {
|
|
248
|
+
type: messageType
|
|
249
|
+
}));
|
|
250
|
+
}
|
|
105
251
|
}
|
|
106
252
|
|
|
107
253
|
/**
|
|
@@ -151,22 +297,112 @@ class RequestIframeServerImpl {
|
|
|
151
297
|
get messageDispatcher() {
|
|
152
298
|
return this.dispatcher;
|
|
153
299
|
}
|
|
300
|
+
handleRequestError(res, targetWindow, targetOrigin, data, err) {
|
|
301
|
+
if (!res._sent) {
|
|
302
|
+
/**
|
|
303
|
+
* Use INTERNAL_SERVER_ERROR (500) for handler errors unless a different error status code was explicitly set.
|
|
304
|
+
* If statusCode is still the default OK (200), override it to INTERNAL_SERVER_ERROR.
|
|
305
|
+
*/
|
|
306
|
+
var errorStatus = res.statusCode === _constants.HttpStatus.OK ? _constants.HttpStatus.INTERNAL_SERVER_ERROR : res.statusCode;
|
|
307
|
+
this.dispatcher.sendMessage(targetWindow, targetOrigin, _constants.MessageType.ERROR, data.requestId, {
|
|
308
|
+
path: data.path,
|
|
309
|
+
error: {
|
|
310
|
+
message: err && err.message || _constants.Messages.REQUEST_FAILED,
|
|
311
|
+
code: err && err.code || _constants.ErrorCode.REQUEST_ERROR
|
|
312
|
+
},
|
|
313
|
+
status: errorStatus,
|
|
314
|
+
statusText: _constants.HttpStatusText[errorStatus] || _constants.HttpStatusText[_constants.HttpStatus.INTERNAL_SERVER_ERROR],
|
|
315
|
+
headers: res.headers,
|
|
316
|
+
targetId: data.creatorId
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
handleRequestResult(res, targetWindow, targetOrigin, data, result) {
|
|
321
|
+
if (!res._sent && result !== undefined) {
|
|
322
|
+
res.send(result);
|
|
323
|
+
} else if (!res._sent) {
|
|
324
|
+
this.dispatcher.sendMessage(targetWindow, targetOrigin, _constants.MessageType.ERROR, data.requestId, {
|
|
325
|
+
path: data.path,
|
|
326
|
+
error: {
|
|
327
|
+
message: _constants.Messages.NO_RESPONSE_SENT,
|
|
328
|
+
code: _constants.ErrorCode.NO_RESPONSE
|
|
329
|
+
},
|
|
330
|
+
status: _constants.HttpStatus.INTERNAL_SERVER_ERROR,
|
|
331
|
+
statusText: _constants.HttpStatusText[_constants.HttpStatus.INTERNAL_SERVER_ERROR],
|
|
332
|
+
headers: res.headers
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
/**
|
|
338
|
+
* Find matching handler and extract path parameters
|
|
339
|
+
* @param requestPath The actual request path
|
|
340
|
+
* @returns Handler function and extracted parameters, or null if not found
|
|
341
|
+
*/
|
|
342
|
+
findHandler(requestPath) {
|
|
343
|
+
var prefixedRequestPath = this.dispatcher.prefixPath(requestPath);
|
|
344
|
+
|
|
345
|
+
// First try exact match (for backward compatibility and performance)
|
|
346
|
+
var exactHandler = this.handlers.get(prefixedRequestPath);
|
|
347
|
+
if (exactHandler) {
|
|
348
|
+
return {
|
|
349
|
+
handler: exactHandler,
|
|
350
|
+
params: {}
|
|
351
|
+
};
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
// Then try parameter matching (e.g., '/api/users/:id' matches '/api/users/123')
|
|
355
|
+
var _iterator = _createForOfIteratorHelper(this.handlers.entries()),
|
|
356
|
+
_step;
|
|
357
|
+
try {
|
|
358
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
359
|
+
var _step$value = (0, _slicedToArray2.default)(_step.value, 2),
|
|
360
|
+
registeredPath = _step$value[0],
|
|
361
|
+
handler = _step$value[1];
|
|
362
|
+
// Check if registered path contains parameters
|
|
363
|
+
if (registeredPath.includes(':')) {
|
|
364
|
+
var matchResult = (0, _pathMatch.matchPathWithParams)(prefixedRequestPath, registeredPath);
|
|
365
|
+
if (matchResult.match) {
|
|
366
|
+
return {
|
|
367
|
+
handler,
|
|
368
|
+
params: matchResult.params
|
|
369
|
+
};
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
} catch (err) {
|
|
374
|
+
_iterator.e(err);
|
|
375
|
+
} finally {
|
|
376
|
+
_iterator.f();
|
|
377
|
+
}
|
|
378
|
+
return null;
|
|
379
|
+
}
|
|
154
380
|
|
|
155
381
|
/**
|
|
156
382
|
* Handle request
|
|
157
383
|
*/
|
|
158
384
|
handleRequest(data, context) {
|
|
159
|
-
if
|
|
385
|
+
// If targetId is specified, only process if it matches this server's id
|
|
386
|
+
if (!data.path || data.targetId && data.targetId !== this.id) return;
|
|
160
387
|
if (!context.source) return;
|
|
388
|
+
|
|
389
|
+
// If message has already been handled by another server instance, skip processing
|
|
390
|
+
if (context.handledBy) {
|
|
391
|
+
return;
|
|
392
|
+
}
|
|
161
393
|
var targetWindow = context.source;
|
|
162
394
|
var targetOrigin = context.origin;
|
|
163
395
|
|
|
164
|
-
//
|
|
165
|
-
this.
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
396
|
+
// Find matching handler and extract path parameters
|
|
397
|
+
var handlerMatch = this.findHandler(data.path);
|
|
398
|
+
if (!handlerMatch) {
|
|
399
|
+
// No handler found in this instance
|
|
400
|
+
// Mark as handled by this instance (using special marker) to prevent other instances from processing
|
|
401
|
+
// This ensures only one instance sends the error response
|
|
402
|
+
context.handledBy = this.id;
|
|
403
|
+
|
|
404
|
+
// Send METHOD_NOT_FOUND error
|
|
405
|
+
// Use request's creatorId as targetId to route back to the correct client
|
|
170
406
|
this.dispatcher.sendMessage(targetWindow, targetOrigin, _constants.MessageType.ERROR, data.requestId, {
|
|
171
407
|
path: data.path,
|
|
172
408
|
error: {
|
|
@@ -174,13 +410,27 @@ class RequestIframeServerImpl {
|
|
|
174
410
|
code: _constants.ErrorCode.METHOD_NOT_FOUND
|
|
175
411
|
},
|
|
176
412
|
status: _constants.HttpStatus.NOT_FOUND,
|
|
177
|
-
statusText: _constants.HttpStatusText[_constants.HttpStatus.NOT_FOUND]
|
|
413
|
+
statusText: _constants.HttpStatusText[_constants.HttpStatus.NOT_FOUND],
|
|
414
|
+
targetId: data.creatorId
|
|
178
415
|
});
|
|
179
416
|
return;
|
|
180
417
|
}
|
|
418
|
+
var handlerFn = handlerMatch.handler,
|
|
419
|
+
params = handlerMatch.params;
|
|
420
|
+
|
|
421
|
+
// Mark message as handled by this server instance to prevent other server instances from processing it
|
|
422
|
+
context.handledBy = this.id;
|
|
423
|
+
|
|
424
|
+
// Send ACK immediately via dispatcher
|
|
425
|
+
// Use request's creatorId as targetId to route back to the correct client
|
|
426
|
+
this.dispatcher.sendMessage(targetWindow, targetOrigin, _constants.MessageType.ACK, data.requestId, {
|
|
427
|
+
path: data.path,
|
|
428
|
+
targetId: data.creatorId
|
|
429
|
+
});
|
|
181
430
|
|
|
182
431
|
// Create response object with channel reference
|
|
183
|
-
|
|
432
|
+
// Pass request's creatorId as targetId so responses are routed back to the correct client
|
|
433
|
+
var res = new _response.ServerResponseImpl(data.requestId, data.path || '', data.secretKey, targetWindow, targetOrigin, this.dispatcher.getChannel(), this.id, data.creatorId);
|
|
184
434
|
|
|
185
435
|
// Register callback waiting for client acknowledgment
|
|
186
436
|
this.registerPendingAck(data.requestId, received => {
|
|
@@ -189,51 +439,46 @@ class RequestIframeServerImpl {
|
|
|
189
439
|
res._triggerAck(false);
|
|
190
440
|
});
|
|
191
441
|
|
|
192
|
-
//
|
|
193
|
-
|
|
442
|
+
// Client sends body as stream: wait for stream_start, then create readable stream and call handler
|
|
443
|
+
// If streamId is present, this is a stream request
|
|
444
|
+
var streamId = data.streamId;
|
|
445
|
+
if (streamId) {
|
|
446
|
+
this.pendingStreamRequests.set(data.requestId, {
|
|
447
|
+
path: data.path || '',
|
|
448
|
+
requestId: data.requestId,
|
|
449
|
+
streamId,
|
|
450
|
+
handlerFn,
|
|
451
|
+
targetWindow,
|
|
452
|
+
targetOrigin,
|
|
453
|
+
res,
|
|
454
|
+
data,
|
|
455
|
+
context,
|
|
456
|
+
params
|
|
457
|
+
});
|
|
458
|
+
return;
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
// Create request object with path parameters
|
|
462
|
+
var req = new _request.ServerRequestImpl(data, context, res, params);
|
|
194
463
|
|
|
195
464
|
// Execute middleware chain
|
|
196
465
|
this.runMiddlewares(req, res, () => {
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
message: _constants.Messages.NO_RESPONSE_SENT,
|
|
211
|
-
code: _constants.ErrorCode.NO_RESPONSE
|
|
212
|
-
},
|
|
213
|
-
status: _constants.HttpStatus.INTERNAL_SERVER_ERROR,
|
|
214
|
-
statusText: _constants.HttpStatusText[_constants.HttpStatus.INTERNAL_SERVER_ERROR],
|
|
215
|
-
headers: res.headers
|
|
216
|
-
});
|
|
217
|
-
}
|
|
218
|
-
}).catch(err => {
|
|
219
|
-
if (!res._sent) {
|
|
220
|
-
this.dispatcher.sendMessage(targetWindow, targetOrigin, _constants.MessageType.ERROR, data.requestId, {
|
|
221
|
-
path: data.path,
|
|
222
|
-
error: {
|
|
223
|
-
message: err && err.message || _constants.Messages.REQUEST_FAILED,
|
|
224
|
-
code: err && err.code || _constants.ErrorCode.REQUEST_ERROR
|
|
225
|
-
},
|
|
226
|
-
status: res.statusCode || _constants.HttpStatus.INTERNAL_SERVER_ERROR,
|
|
227
|
-
statusText: _constants.HttpStatusText[_constants.HttpStatus.INTERNAL_SERVER_ERROR],
|
|
228
|
-
headers: res.headers
|
|
229
|
-
});
|
|
230
|
-
}
|
|
231
|
-
});
|
|
232
|
-
} else {
|
|
233
|
-
// Synchronous processing
|
|
234
|
-
if (!res._sent && result !== undefined) {
|
|
235
|
-
res.send(result);
|
|
466
|
+
try {
|
|
467
|
+
var result = handlerFn(req, res);
|
|
468
|
+
if ((0, _utils.isPromise)(result)) {
|
|
469
|
+
// Async task
|
|
470
|
+
// Use request's creatorId as targetId to route back to the correct client
|
|
471
|
+
this.dispatcher.sendMessage(targetWindow, targetOrigin, _constants.MessageType.ASYNC, data.requestId, {
|
|
472
|
+
path: data.path,
|
|
473
|
+
targetId: data.creatorId
|
|
474
|
+
});
|
|
475
|
+
result.then(this.handleRequestResult.bind(this, res, targetWindow, targetOrigin, data)).catch(this.handleRequestError.bind(this, res, targetWindow, targetOrigin, data));
|
|
476
|
+
} else {
|
|
477
|
+
// Synchronous processing
|
|
478
|
+
this.handleRequestResult(res, targetWindow, targetOrigin, data, result);
|
|
236
479
|
}
|
|
480
|
+
} catch (error) {
|
|
481
|
+
this.handleRequestError(res, targetWindow, targetOrigin, data, error);
|
|
237
482
|
}
|
|
238
483
|
});
|
|
239
484
|
}
|
|
@@ -324,9 +569,13 @@ class RequestIframeServerImpl {
|
|
|
324
569
|
}
|
|
325
570
|
}
|
|
326
571
|
map(handlers) {
|
|
572
|
+
var unregisterFns = [];
|
|
327
573
|
Object.entries(handlers).forEach(([path, h]) => {
|
|
328
|
-
this.on(path, h);
|
|
574
|
+
unregisterFns.push(this.on(path, h));
|
|
329
575
|
});
|
|
576
|
+
return () => {
|
|
577
|
+
unregisterFns.forEach(fn => fn());
|
|
578
|
+
};
|
|
330
579
|
}
|
|
331
580
|
|
|
332
581
|
/**
|
package/library/index.d.ts
CHANGED
|
@@ -2,15 +2,16 @@ export { requestIframeClient, clearRequestIframeClientCache } from './api/client
|
|
|
2
2
|
export { requestIframeServer, clearRequestIframeServerCache } from './api/server';
|
|
3
3
|
export { RequestIframeClientImpl } from './core/client';
|
|
4
4
|
export { RequestIframeServerImpl } from './core/server';
|
|
5
|
-
export { RequestIframeClientServer } from './core/server
|
|
5
|
+
export { RequestIframeClientServer } from './core/client-server';
|
|
6
6
|
export { MessageChannel, ChannelType, MessageDispatcher } from './message';
|
|
7
7
|
export type { MessageContext, MessageHandlerFn, MessageTypeMatcher, VersionValidator, HandlerOptions, ChannelType as ChannelTypeValue } from './message';
|
|
8
8
|
export { getOrCreateMessageChannel, releaseMessageChannel, clearMessageChannelCache, } from './utils/cache';
|
|
9
9
|
export { ServerRequestImpl } from './core/request';
|
|
10
10
|
export { ServerResponseImpl } from './core/response';
|
|
11
|
-
export { IframeWritableStream, IframeReadableStream, IframeFileWritableStream, IframeFileReadableStream, isIframeReadableStream,
|
|
11
|
+
export { IframeWritableStream, IframeReadableStream, IframeFileWritableStream, IframeFileReadableStream, isIframeReadableStream, isIframeFileReadableStream, isIframeFileWritableStream, isIframeWritableStream } from './stream';
|
|
12
12
|
export type { StreamType, StreamState, StreamChunk, WritableStreamOptions, ReadableStreamOptions, FileWritableStreamOptions, FileReadableStreamOptions, StreamBindContext, IIframeWritableStream, IIframeReadableStream, IIframeFileReadableStream, StreamMessageData } from './stream';
|
|
13
13
|
export * from './types';
|
|
14
|
+
export { detectContentType, blobToBase64 } from './utils';
|
|
14
15
|
export { InterceptorManager, RequestInterceptorManager, ResponseInterceptorManager } from './interceptors';
|
|
15
16
|
export * from './constants';
|
|
16
17
|
//# sourceMappingURL=index.d.ts.map
|
package/library/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AAElF,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC3E,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,WAAW,IAAI,gBAAgB,EAChC,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AAElF,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC3E,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,WAAW,IAAI,gBAAgB,EAChC,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,0BAA0B,EAC1B,0BAA0B,EAC1B,sBAAsB,EACvB,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,UAAU,EACV,WAAW,EACX,WAAW,EACX,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EACzB,yBAAyB,EACzB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EACzB,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAElB,cAAc,SAAS,CAAC;AACxB,OAAO,EACL,iBAAiB,EACjB,YAAY,EACb,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAE3G,cAAc,aAAa,CAAC"}
|
package/library/index.js
CHANGED
|
@@ -25,7 +25,11 @@ var _exportNames = {
|
|
|
25
25
|
IframeFileWritableStream: true,
|
|
26
26
|
IframeFileReadableStream: true,
|
|
27
27
|
isIframeReadableStream: true,
|
|
28
|
-
|
|
28
|
+
isIframeFileReadableStream: true,
|
|
29
|
+
isIframeFileWritableStream: true,
|
|
30
|
+
isIframeWritableStream: true,
|
|
31
|
+
detectContentType: true,
|
|
32
|
+
blobToBase64: true,
|
|
29
33
|
InterceptorManager: true,
|
|
30
34
|
RequestInterceptorManager: true,
|
|
31
35
|
ResponseInterceptorManager: true
|
|
@@ -87,7 +91,7 @@ Object.defineProperty(exports, "RequestIframeClientImpl", {
|
|
|
87
91
|
Object.defineProperty(exports, "RequestIframeClientServer", {
|
|
88
92
|
enumerable: true,
|
|
89
93
|
get: function get() {
|
|
90
|
-
return
|
|
94
|
+
return _clientServer.RequestIframeClientServer;
|
|
91
95
|
}
|
|
92
96
|
});
|
|
93
97
|
Object.defineProperty(exports, "RequestIframeServerImpl", {
|
|
@@ -120,6 +124,12 @@ Object.defineProperty(exports, "ServerResponseImpl", {
|
|
|
120
124
|
return _response.ServerResponseImpl;
|
|
121
125
|
}
|
|
122
126
|
});
|
|
127
|
+
Object.defineProperty(exports, "blobToBase64", {
|
|
128
|
+
enumerable: true,
|
|
129
|
+
get: function get() {
|
|
130
|
+
return _utils.blobToBase64;
|
|
131
|
+
}
|
|
132
|
+
});
|
|
123
133
|
Object.defineProperty(exports, "clearMessageChannelCache", {
|
|
124
134
|
enumerable: true,
|
|
125
135
|
get: function get() {
|
|
@@ -138,16 +148,28 @@ Object.defineProperty(exports, "clearRequestIframeServerCache", {
|
|
|
138
148
|
return _server.clearRequestIframeServerCache;
|
|
139
149
|
}
|
|
140
150
|
});
|
|
151
|
+
Object.defineProperty(exports, "detectContentType", {
|
|
152
|
+
enumerable: true,
|
|
153
|
+
get: function get() {
|
|
154
|
+
return _utils.detectContentType;
|
|
155
|
+
}
|
|
156
|
+
});
|
|
141
157
|
Object.defineProperty(exports, "getOrCreateMessageChannel", {
|
|
142
158
|
enumerable: true,
|
|
143
159
|
get: function get() {
|
|
144
160
|
return _cache.getOrCreateMessageChannel;
|
|
145
161
|
}
|
|
146
162
|
});
|
|
147
|
-
Object.defineProperty(exports, "
|
|
163
|
+
Object.defineProperty(exports, "isIframeFileReadableStream", {
|
|
148
164
|
enumerable: true,
|
|
149
165
|
get: function get() {
|
|
150
|
-
return _stream.
|
|
166
|
+
return _stream.isIframeFileReadableStream;
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
Object.defineProperty(exports, "isIframeFileWritableStream", {
|
|
170
|
+
enumerable: true,
|
|
171
|
+
get: function get() {
|
|
172
|
+
return _stream.isIframeFileWritableStream;
|
|
151
173
|
}
|
|
152
174
|
});
|
|
153
175
|
Object.defineProperty(exports, "isIframeReadableStream", {
|
|
@@ -156,6 +178,12 @@ Object.defineProperty(exports, "isIframeReadableStream", {
|
|
|
156
178
|
return _stream.isIframeReadableStream;
|
|
157
179
|
}
|
|
158
180
|
});
|
|
181
|
+
Object.defineProperty(exports, "isIframeWritableStream", {
|
|
182
|
+
enumerable: true,
|
|
183
|
+
get: function get() {
|
|
184
|
+
return _stream.isIframeWritableStream;
|
|
185
|
+
}
|
|
186
|
+
});
|
|
159
187
|
Object.defineProperty(exports, "releaseMessageChannel", {
|
|
160
188
|
enumerable: true,
|
|
161
189
|
get: function get() {
|
|
@@ -178,7 +206,7 @@ var _client = require("./api/client");
|
|
|
178
206
|
var _server = require("./api/server");
|
|
179
207
|
var _client2 = require("./core/client");
|
|
180
208
|
var _server2 = require("./core/server");
|
|
181
|
-
var
|
|
209
|
+
var _clientServer = require("./core/client-server");
|
|
182
210
|
var _message = require("./message");
|
|
183
211
|
var _cache = require("./utils/cache");
|
|
184
212
|
var _request = require("./core/request");
|
|
@@ -196,6 +224,7 @@ Object.keys(_types).forEach(function (key) {
|
|
|
196
224
|
}
|
|
197
225
|
});
|
|
198
226
|
});
|
|
227
|
+
var _utils = require("./utils");
|
|
199
228
|
var _interceptors = require("./interceptors");
|
|
200
229
|
var _constants = require("./constants");
|
|
201
230
|
Object.keys(_constants).forEach(function (key) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,QAAQ,EACR,mBAAmB,EACpB,MAAM,UAAU,CAAC;AAElB;;GAEG;AACH,qBAAa,kBAAkB,CAAC,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAGR;IAER;;OAEG;IACH,GAAG,CACD,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC,EACjC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,GAC7B,MAAM;IAKT;;OAEG;IACH,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAMvB;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE;QAAE,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAA;KAAE,KAAK,IAAI,GAAG,IAAI;CAO5G;AAED;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,kBAAkB,CAAC,aAAa,CAAC;CAAG;AAEnF;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,kBAAkB,CAAC,QAAQ,CAAC;CAAG;AAE/E;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,YAAY,EAAE,yBAAyB,EACvC,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,aAAa,CAAC,CAgBxB;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,YAAY,EAAE,0BAA0B,EACxC,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,QAAQ,CAAC,CAgBnB"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interceptors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,QAAQ,EACR,mBAAmB,EACpB,MAAM,UAAU,CAAC;AAElB;;GAEG;AACH,qBAAa,kBAAkB,CAAC,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAGR;IAER;;OAEG;IACH,GAAG,CACD,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC,EACjC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,GAC7B,MAAM;IAKT;;OAEG;IACH,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAMvB;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE;QAAE,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAA;KAAE,KAAK,IAAI,GAAG,IAAI;CAO5G;AAED;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,kBAAkB,CAAC,aAAa,CAAC;CAAG;AAEnF;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,kBAAkB,CAAC,QAAQ,CAAC;CAAG;AAE/E;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,YAAY,EAAE,yBAAyB,EACvC,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,aAAa,CAAC,CAgBxB;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,YAAY,EAAE,0BAA0B,EACxC,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,QAAQ,CAAC,CAgBnB"}
|
|
@@ -7,6 +7,8 @@ export interface MessageContext {
|
|
|
7
7
|
source?: Window;
|
|
8
8
|
/** Origin of the message */
|
|
9
9
|
origin: string;
|
|
10
|
+
/** ID of the instance that handled this message (if handled) */
|
|
11
|
+
handledBy?: string;
|
|
10
12
|
}
|
|
11
13
|
/**
|
|
12
14
|
* Message receiver callback
|
|
@@ -94,7 +96,7 @@ export declare class MessageChannel {
|
|
|
94
96
|
* @param requestId request ID
|
|
95
97
|
* @param data additional data
|
|
96
98
|
*/
|
|
97
|
-
sendMessage(target: Window, targetOrigin: string, type: PostMessageData['type'], requestId: string, data?: Partial<Omit<PostMessageData, '__requestIframe__' | 'type' | 'requestId' | 'timestamp'>>): void;
|
|
99
|
+
sendMessage(target: Window, targetOrigin: string, type: PostMessageData['type'], requestId: string, data?: Partial<Omit<PostMessageData, '__requestIframe__' | 'type' | 'requestId' | 'timestamp' | 'role'>>): void;
|
|
98
100
|
/**
|
|
99
101
|
* Add path prefix (for secretKey isolation)
|
|
100
102
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["channel.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAChB,MAAM,UAAU,CAAC;AAGlB;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/message/channel.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAChB,MAAM,UAAU,CAAC;AAGlB;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;AAEvF;;GAEG;AACH,eAAO,MAAM,WAAW;IACtB,+BAA+B;;CAEvB,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AAEvE;;;;;;;;;;;;GAYG;AACH,qBAAa,cAAc;IACzB,8CAA8C;IAC9C,SAAgB,IAAI,EAAE,WAAW,CAAC;IAElC,uCAAuC;IACvC,SAAgB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnC,8DAA8D;IAC9D,OAAO,CAAC,SAAS,CAAmC;IAEpD,gDAAgD;IAChD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgC;IAE/D,6CAA6C;IAC7C,OAAO,CAAC,QAAQ,CAAK;gBAEF,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,GAAE,WAAsC;IAOnF;;;OAGG;IACI,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAInD;;OAEG;IACI,cAAc,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAItD;;OAEG;IACI,MAAM,IAAI,IAAI;IAIrB;;;OAGG;IACI,OAAO,IAAI,MAAM;IAIxB;;OAEG;IACI,WAAW,IAAI,MAAM;IAI5B;;;OAGG;IACH,OAAO,CAAC,cAAc;IAOtB;;OAEG;IACH,OAAO,CAAC,SAAS;IA4BjB;;;;;OAKG;IACI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,YAAY,GAAE,MAAY,GAAG,IAAI;IAIvF;;;;;;;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,CAAC,CAAC,GACvG,IAAI;IAQP;;OAEG;IACI,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIvC;;OAEG;IACI,OAAO,IAAI,IAAI;CAIvB"}
|