request-iframe 0.0.6 → 0.1.1
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/README.CN.md +220 -21
- package/README.md +221 -24
- package/esm/api/client.js +80 -0
- package/esm/api/server.js +61 -0
- package/esm/constants/index.js +289 -0
- package/esm/constants/messages.js +157 -0
- package/esm/core/client-server.js +294 -0
- package/esm/core/client.js +873 -0
- package/esm/core/request.js +27 -0
- package/esm/core/response.js +459 -0
- package/esm/core/server.js +776 -0
- package/esm/index.js +21 -0
- package/esm/interceptors/index.js +122 -0
- package/esm/message/channel.js +182 -0
- package/esm/message/dispatcher.js +418 -0
- package/esm/message/index.js +2 -0
- package/esm/stream/file-stream.js +289 -0
- package/esm/stream/index.js +44 -0
- package/esm/stream/readable-stream.js +539 -0
- package/esm/stream/stream-core.js +204 -0
- package/esm/stream/types.js +1 -0
- package/esm/stream/writable-stream.js +836 -0
- package/esm/types/index.js +1 -0
- package/esm/utils/ack.js +36 -0
- package/esm/utils/cache.js +147 -0
- package/esm/utils/cookie.js +352 -0
- package/esm/utils/debug.js +521 -0
- package/esm/utils/error.js +27 -0
- package/esm/utils/index.js +180 -0
- package/esm/utils/origin.js +30 -0
- package/esm/utils/path-match.js +148 -0
- package/esm/utils/protocol.js +157 -0
- package/library/api/client.d.ts.map +1 -1
- package/library/api/client.js +13 -5
- package/library/api/server.d.ts.map +1 -1
- package/library/api/server.js +6 -1
- package/library/constants/index.d.ts +59 -4
- package/library/constants/index.d.ts.map +1 -1
- package/library/constants/index.js +67 -9
- package/library/constants/messages.d.ts +8 -1
- package/library/constants/messages.d.ts.map +1 -1
- package/library/constants/messages.js +8 -1
- package/library/core/client-server.d.ts +7 -15
- package/library/core/client-server.d.ts.map +1 -1
- package/library/core/client-server.js +56 -44
- package/library/core/client.d.ts +4 -1
- package/library/core/client.d.ts.map +1 -1
- package/library/core/client.js +74 -31
- package/library/core/response.d.ts +21 -3
- package/library/core/response.d.ts.map +1 -1
- package/library/core/response.js +55 -7
- package/library/core/server.d.ts +34 -3
- package/library/core/server.d.ts.map +1 -1
- package/library/core/server.js +191 -21
- package/library/message/channel.d.ts +6 -0
- package/library/message/channel.d.ts.map +1 -1
- package/library/message/channel.js +2 -1
- package/library/message/dispatcher.d.ts +32 -0
- package/library/message/dispatcher.d.ts.map +1 -1
- package/library/message/dispatcher.js +131 -1
- package/library/stream/file-stream.d.ts +4 -0
- package/library/stream/file-stream.d.ts.map +1 -1
- package/library/stream/file-stream.js +61 -33
- package/library/stream/index.d.ts.map +1 -1
- package/library/stream/index.js +2 -0
- package/library/stream/readable-stream.d.ts +30 -11
- package/library/stream/readable-stream.d.ts.map +1 -1
- package/library/stream/readable-stream.js +368 -73
- package/library/stream/stream-core.d.ts +65 -0
- package/library/stream/stream-core.d.ts.map +1 -0
- package/library/stream/stream-core.js +211 -0
- package/library/stream/types.d.ts +203 -3
- package/library/stream/types.d.ts.map +1 -1
- package/library/stream/writable-stream.d.ts +59 -13
- package/library/stream/writable-stream.d.ts.map +1 -1
- package/library/stream/writable-stream.js +647 -197
- package/library/types/index.d.ts +70 -4
- package/library/types/index.d.ts.map +1 -1
- package/library/utils/ack.d.ts +2 -0
- package/library/utils/ack.d.ts.map +1 -0
- package/library/utils/ack.js +44 -0
- package/library/utils/debug.js +1 -1
- package/library/utils/index.d.ts +1 -0
- package/library/utils/index.d.ts.map +1 -1
- package/library/utils/index.js +19 -2
- package/library/utils/origin.d.ts +14 -0
- package/library/utils/origin.d.ts.map +1 -0
- package/library/utils/origin.js +35 -0
- package/package.json +30 -7
- package/react/README.md +16 -0
- package/react/esm/index.js +284 -0
- package/react/library/index.d.ts +1 -1
- package/react/library/index.d.ts.map +1 -1
- package/react/library/index.js +3 -3
- package/react/package.json +24 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,cAAc,EACd,QAAQ,EAGR,mBAAmB,EACnB,eAAe,EACf,aAAa,EAEb,aAAa,EACb,eAAe,EAChB,MAAM,UAAU,CAAC;AASlB,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAG3B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAa5D,OAAO,EAGL,oBAAoB,EAEpB,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,WAAW,CAAC;AAGnB;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,eAAe;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,cAAc,CAAC,EAAE,eAAe,CAAC;CAClC;AAED;;GAEG;AACH,qBAAa,uBAAwB,YAAW,mBAAmB,EAAE,oBAAoB;IACvF,yBAAyB;IACzB,SAAgB,EAAE,EAAE,MAAM,CAAC;IAEpB,YAAY;;;MAGjB;IAEF,SAAgB,YAAY,EAAE,MAAM,CAAC;IACrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAA8E;IAE/G,oCAAoC;IACpC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;IAE7C,uCAAuC;IACvC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAU;IAE5C,oCAAoC;IACpC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAgB;IAEhD;;;;OAIG;IACH,OAAO,CAAC,YAAY,CAAkC;IAEtD;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwD;IAEvF;;;OAGG;IACH,OAAO,CAAC,eAAe,CAAC,CAAS;gBAG/B,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,yBAAyB,EACjC,OAAO,CAAC,EAAE,aAAa,EACvB,UAAU,CAAC,EAAE,MAAM;IAoCrB;;OAEG;IACI,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,GAAG,IAAI;IAIhG;;OAEG;IACI,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAO/C,WAAW,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI;IAKtC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA+B7B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAO1B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAIhC;;OAEG;IACH,OAAO,CAAC,SAAS;IAKjB;;;;OAIG;IACH,OAAO,CAAC,YAAY;IA4BpB;;OAEG;IACI,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAmEvB,IAAI,CAAC,CAAC,GAAG,GAAG,EACvB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,GAAG,EACV,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAgD3B;;OAEG;IACU,QAAQ,CAAC,CAAC,GAAG,GAAG,EAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,EAC7B,OAAO,CAAC,EAAE,cAAc,GAAG;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,GACzF,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAuB3B;;;OAGG;IACU,UAAU,CAAC,CAAC,GAAG,GAAG,EAC7B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,oBAAoB,EAC5B,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAgD3B;;OAEG;IACH,OAAO,CAAC,YAAY;IA6WpB;;OAEG;IACI,SAAS,IAAI,yBAAyB;IAI7C;;OAEG;IACH,IAAW,MAAM,IAAI,OAAO,CAE3B;IAED;;;OAGG;IACI,WAAW,IAAI,OAAO;IAI7B;;OAEG;IACI,IAAI,IAAI,IAAI;IAInB;;OAEG;IACI,KAAK,IAAI,IAAI;IAIpB;;OAEG;IACI,OAAO,IAAI,IAAI;IAetB;;;OAGG;IACI,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAOxD;;;;OAIG;IACI,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIjE;;;;;OAKG;IACI,SAAS,CACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,IAAI,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC3D,IAAI;IAgBP;;;;OAIG;IACI,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAItD;;OAEG;IACI,YAAY,IAAI,IAAI;CAG5B"}
|
package/library/core/client.js
CHANGED
|
@@ -27,6 +27,7 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
|
|
|
27
27
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
28
28
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
29
29
|
var _utils = require("../utils");
|
|
30
|
+
var _ack = require("../utils/ack");
|
|
30
31
|
var _interceptors = require("../interceptors");
|
|
31
32
|
var _constants = require("../constants");
|
|
32
33
|
var _stream = require("../stream");
|
|
@@ -74,6 +75,17 @@ class RequestIframeClientImpl {
|
|
|
74
75
|
this.server = server;
|
|
75
76
|
this.secretKey = options === null || options === void 0 ? void 0 : options.secretKey;
|
|
76
77
|
|
|
78
|
+
// Provide fallback target for auto-ack (useful when MessageEvent.source is missing in tests)
|
|
79
|
+
this.server.messageDispatcher.setFallbackTarget(this.targetWindow, this.targetOrigin);
|
|
80
|
+
|
|
81
|
+
// Build origin validator (incoming messages)
|
|
82
|
+
if (options !== null && options !== void 0 && options.validateOrigin) {
|
|
83
|
+
this.originValidator = (origin, data, context) => options.validateOrigin(origin, data, context);
|
|
84
|
+
} else if (options !== null && options !== void 0 && options.allowedOrigins) {
|
|
85
|
+
var matcher = options.allowedOrigins;
|
|
86
|
+
this.originValidator = origin => (0, _utils.matchOrigin)(origin, matcher);
|
|
87
|
+
}
|
|
88
|
+
|
|
77
89
|
// Set default timeout configuration
|
|
78
90
|
this.defaultAckTimeout = (_options$ackTimeout = options === null || options === void 0 ? void 0 : options.ackTimeout) !== null && _options$ackTimeout !== void 0 ? _options$ackTimeout : _constants.DefaultTimeout.ACK;
|
|
79
91
|
this.defaultTimeout = (_options$timeout = options === null || options === void 0 ? void 0 : options.timeout) !== null && _options$timeout !== void 0 ? _options$timeout : _constants.DefaultTimeout.REQUEST;
|
|
@@ -86,8 +98,8 @@ class RequestIframeClientImpl {
|
|
|
86
98
|
this.initialHeaders = options === null || options === void 0 ? void 0 : options.headers;
|
|
87
99
|
|
|
88
100
|
// Register stream message processing callback
|
|
89
|
-
this.server.setStreamCallback(data => {
|
|
90
|
-
this.dispatchStreamMessage(data);
|
|
101
|
+
this.server.setStreamCallback((data, context) => {
|
|
102
|
+
this.dispatchStreamMessage(data, context);
|
|
91
103
|
});
|
|
92
104
|
}
|
|
93
105
|
|
|
@@ -116,11 +128,29 @@ class RequestIframeClientImpl {
|
|
|
116
128
|
/**
|
|
117
129
|
* Dispatch stream message to corresponding handler
|
|
118
130
|
*/
|
|
119
|
-
dispatchStreamMessage(data) {
|
|
131
|
+
dispatchStreamMessage(data, context) {
|
|
132
|
+
// Validate origin for stream messages (stream_data/stream_end/stream_error/stream_cancel)
|
|
133
|
+
if (context) {
|
|
134
|
+
if (this.originValidator) {
|
|
135
|
+
try {
|
|
136
|
+
if (!this.originValidator(context.origin, data, context)) {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
} catch (_unused) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
} else if (this.targetOrigin !== _constants.OriginConstant.ANY && context.origin !== this.targetOrigin) {
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
120
146
|
var body = data.body;
|
|
121
147
|
if (!body || !body.streamId) return;
|
|
122
148
|
var handler = this.streamHandlers.get(body.streamId);
|
|
123
149
|
if (handler) {
|
|
150
|
+
if (context && !context.handledBy) {
|
|
151
|
+
context.accepted = true;
|
|
152
|
+
context.handledBy = this.id;
|
|
153
|
+
}
|
|
124
154
|
// Extract message type (remove stream_ prefix)
|
|
125
155
|
var messageType = data.type.replace('stream_', '');
|
|
126
156
|
handler(_objectSpread(_objectSpread({}, body), {}, {
|
|
@@ -219,7 +249,11 @@ class RequestIframeClientImpl {
|
|
|
219
249
|
}
|
|
220
250
|
this.server._registerPendingRequest(requestId, data => {
|
|
221
251
|
if (done) return;
|
|
222
|
-
if (data.type === _constants.MessageType.PONG) {
|
|
252
|
+
if (data.type === _constants.MessageType.ACK || data.type === _constants.MessageType.PONG) {
|
|
253
|
+
// Remember server's creatorId as target server ID for future requests
|
|
254
|
+
if (data.creatorId && !this._targetServerId) {
|
|
255
|
+
this._targetServerId = data.creatorId;
|
|
256
|
+
}
|
|
223
257
|
done = true;
|
|
224
258
|
cleanup();
|
|
225
259
|
resolve(true);
|
|
@@ -229,7 +263,7 @@ class RequestIframeClientImpl {
|
|
|
229
263
|
done = true;
|
|
230
264
|
cleanup();
|
|
231
265
|
resolve(false);
|
|
232
|
-
}, this.targetOrigin);
|
|
266
|
+
}, this.targetOrigin, this.originValidator);
|
|
233
267
|
timeoutId = setTimeout(() => {
|
|
234
268
|
if (done) return;
|
|
235
269
|
done = true;
|
|
@@ -238,7 +272,10 @@ class RequestIframeClientImpl {
|
|
|
238
272
|
}, this.defaultAckTimeout);
|
|
239
273
|
|
|
240
274
|
// Send ping via MessageDispatcher
|
|
241
|
-
this.server.messageDispatcher.sendMessage(this.targetWindow, this.targetOrigin, _constants.MessageType.PING, requestId
|
|
275
|
+
this.server.messageDispatcher.sendMessage(this.targetWindow, this.targetOrigin, _constants.MessageType.PING, requestId, {
|
|
276
|
+
requireAck: true,
|
|
277
|
+
targetId: this._targetServerId
|
|
278
|
+
});
|
|
242
279
|
});
|
|
243
280
|
}
|
|
244
281
|
send(path, body, options) {
|
|
@@ -380,6 +417,9 @@ class RequestIframeClientImpl {
|
|
|
380
417
|
targetOrigin: _this3.targetOrigin,
|
|
381
418
|
secretKey: _this3.secretKey,
|
|
382
419
|
channel: _this3.server.messageDispatcher.getChannel(),
|
|
420
|
+
registerStreamHandler: _this3.registerStreamHandler.bind(_this3),
|
|
421
|
+
unregisterStreamHandler: _this3.unregisterStreamHandler.bind(_this3),
|
|
422
|
+
heartbeat: () => _this3.isConnect(),
|
|
383
423
|
clientId: _this3.id,
|
|
384
424
|
targetId
|
|
385
425
|
});
|
|
@@ -413,6 +453,10 @@ class RequestIframeClientImpl {
|
|
|
413
453
|
timeout = _processedConfig$time === void 0 ? this.defaultTimeout : _processedConfig$time,
|
|
414
454
|
_processedConfig$asyn = processedConfig.asyncTimeout,
|
|
415
455
|
asyncTimeout = _processedConfig$asyn === void 0 ? this.defaultAsyncTimeout : _processedConfig$asyn,
|
|
456
|
+
_processedConfig$requ3 = processedConfig.requireAck,
|
|
457
|
+
requireAck = _processedConfig$requ3 === void 0 ? true : _processedConfig$requ3,
|
|
458
|
+
streamTimeout = processedConfig.streamTimeout,
|
|
459
|
+
ack = processedConfig.ack,
|
|
416
460
|
_processedConfig$retu = processedConfig.returnData,
|
|
417
461
|
returnData = _processedConfig$retu === void 0 ? this.defaultReturnData : _processedConfig$retu;
|
|
418
462
|
return new Promise((resolve, reject) => {
|
|
@@ -486,6 +530,10 @@ class RequestIframeClientImpl {
|
|
|
486
530
|
|
|
487
531
|
// Received ACK: server has received request
|
|
488
532
|
if (data.type === _constants.MessageType.ACK) {
|
|
533
|
+
// Optional ack match (ignore mismatched ACK)
|
|
534
|
+
if (ack !== undefined && !(0, _ack.isAckMatch)(ack, data.ack)) {
|
|
535
|
+
return;
|
|
536
|
+
}
|
|
489
537
|
// Remember server's creatorId as target server ID for future requests
|
|
490
538
|
if (data.creatorId && !this._targetServerId) {
|
|
491
539
|
this._targetServerId = data.creatorId;
|
|
@@ -514,6 +562,7 @@ class RequestIframeClientImpl {
|
|
|
514
562
|
var streamBody = data.body;
|
|
515
563
|
var streamId = streamBody.streamId;
|
|
516
564
|
var streamType = streamBody.type || _constants.StreamType.DATA;
|
|
565
|
+
var streamMode = streamBody.mode;
|
|
517
566
|
var streamChunked = (_streamBody$chunked = streamBody.chunked) !== null && _streamBody$chunked !== void 0 ? _streamBody$chunked : true;
|
|
518
567
|
var streamMetadata = streamBody.metadata;
|
|
519
568
|
var autoResolve = (_streamBody$autoResol = streamBody.autoResolve) !== null && _streamBody$autoResol !== void 0 ? _streamBody$autoResol : false;
|
|
@@ -523,6 +572,10 @@ class RequestIframeClientImpl {
|
|
|
523
572
|
var _readableStream = new _stream.IframeFileReadableStream(streamId, requestId, this, {
|
|
524
573
|
chunked: streamChunked,
|
|
525
574
|
metadata: streamMetadata,
|
|
575
|
+
secretKey: this.secretKey,
|
|
576
|
+
idleTimeout: streamTimeout,
|
|
577
|
+
heartbeat: () => this.isConnect(),
|
|
578
|
+
mode: streamMode,
|
|
526
579
|
filename: streamMetadata === null || streamMetadata === void 0 ? void 0 : streamMetadata.filename,
|
|
527
580
|
mimeType: streamMetadata === null || streamMetadata === void 0 ? void 0 : streamMetadata.mimeType,
|
|
528
581
|
size: streamMetadata === null || streamMetadata === void 0 ? void 0 : streamMetadata.size
|
|
@@ -579,8 +632,12 @@ class RequestIframeClientImpl {
|
|
|
579
632
|
// Non-file stream: create regular readable stream
|
|
580
633
|
var readableStream = new _stream.IframeReadableStream(streamId, requestId, this, {
|
|
581
634
|
type: streamType,
|
|
635
|
+
mode: streamMode,
|
|
582
636
|
chunked: streamChunked,
|
|
583
|
-
metadata: streamMetadata
|
|
637
|
+
metadata: streamMetadata,
|
|
638
|
+
secretKey: this.secretKey,
|
|
639
|
+
idleTimeout: streamTimeout,
|
|
640
|
+
heartbeat: () => this.isConnect()
|
|
584
641
|
});
|
|
585
642
|
var resp = {
|
|
586
643
|
data: undefined,
|
|
@@ -612,17 +669,6 @@ class RequestIframeClientImpl {
|
|
|
612
669
|
this._targetServerId = data.creatorId;
|
|
613
670
|
}
|
|
614
671
|
|
|
615
|
-
// If server requires acknowledgment, send received message
|
|
616
|
-
if (data.requireAck) {
|
|
617
|
-
// Check if target window is still available before sending
|
|
618
|
-
if ((0, _utils.isWindowAvailable)(this.targetWindow)) {
|
|
619
|
-
this.server.messageDispatcher.sendMessage(this.targetWindow, this.targetOrigin, _constants.MessageType.RECEIVED, requestId, {
|
|
620
|
-
path: requestPath,
|
|
621
|
-
targetId: data.creatorId
|
|
622
|
-
});
|
|
623
|
-
}
|
|
624
|
-
}
|
|
625
|
-
|
|
626
672
|
// Parse and save server-set cookies (from Set-Cookie header)
|
|
627
673
|
if (data.headers && data.headers[_constants.HttpHeader.SET_COOKIE]) {
|
|
628
674
|
var setCookies = data.headers[_constants.HttpHeader.SET_COOKIE];
|
|
@@ -660,15 +706,6 @@ class RequestIframeClientImpl {
|
|
|
660
706
|
if (data.creatorId && !this._targetServerId) {
|
|
661
707
|
this._targetServerId = data.creatorId;
|
|
662
708
|
}
|
|
663
|
-
|
|
664
|
-
// If server requires acknowledgment, send received message
|
|
665
|
-
if (data.requireAck) {
|
|
666
|
-
// Window check is handled in MessageDispatcher
|
|
667
|
-
this.server.messageDispatcher.sendMessage(this.targetWindow, this.targetOrigin, _constants.MessageType.RECEIVED, requestId, {
|
|
668
|
-
path: requestPath,
|
|
669
|
-
targetId: data.creatorId
|
|
670
|
-
});
|
|
671
|
-
}
|
|
672
709
|
fail(new _utils.RequestIframeError({
|
|
673
710
|
message: ((_data$error = data.error) === null || _data$error === void 0 ? void 0 : _data$error.message) || _constants.Messages.REQUEST_FAILED,
|
|
674
711
|
code: ((_data$error2 = data.error) === null || _data$error2 === void 0 ? void 0 : _data$error2.code) || _constants.ErrorCode.REQUEST_ERROR,
|
|
@@ -688,10 +725,14 @@ class RequestIframeClientImpl {
|
|
|
688
725
|
config: processedConfig,
|
|
689
726
|
requestId
|
|
690
727
|
}));
|
|
691
|
-
}, this.targetOrigin);
|
|
728
|
+
}, this.targetOrigin, this.originValidator);
|
|
692
729
|
|
|
693
|
-
// Set ACK timeout
|
|
694
|
-
|
|
730
|
+
// Set ACK timeout (delivery stage). If disabled, start request timeout immediately.
|
|
731
|
+
if (requireAck === false) {
|
|
732
|
+
setRequestTimeout();
|
|
733
|
+
} else {
|
|
734
|
+
setAckTimeout();
|
|
735
|
+
}
|
|
695
736
|
|
|
696
737
|
// Get cookies matching request path and merge with user-provided cookies (user-provided takes precedence)
|
|
697
738
|
var pathMatchedCookies = this._cookieStore.getForPath(requestPath);
|
|
@@ -703,7 +744,9 @@ class RequestIframeClientImpl {
|
|
|
703
744
|
body,
|
|
704
745
|
headers: mergedHeaders,
|
|
705
746
|
cookies: mergedCookies,
|
|
706
|
-
targetId
|
|
747
|
+
targetId,
|
|
748
|
+
requireAck,
|
|
749
|
+
ack
|
|
707
750
|
};
|
|
708
751
|
if (extraPayload !== null && extraPayload !== void 0 && extraPayload.streamId) {
|
|
709
752
|
payload.streamId = extraPayload.streamId;
|
|
@@ -4,7 +4,8 @@ import { MessageChannel } from '../message';
|
|
|
4
4
|
/**
|
|
5
5
|
* Callback waiting for client acknowledgment
|
|
6
6
|
*/
|
|
7
|
-
type AckCallback = (received: boolean) => void;
|
|
7
|
+
type AckCallback = (received: boolean, ack?: any) => void;
|
|
8
|
+
type OnSentCallback = () => void;
|
|
8
9
|
/**
|
|
9
10
|
* ServerResponse implementation
|
|
10
11
|
*/
|
|
@@ -17,13 +18,22 @@ export declare class ServerResponseImpl implements ServerResponse {
|
|
|
17
18
|
private readonly targetWindow;
|
|
18
19
|
private readonly targetOrigin;
|
|
19
20
|
private readonly channel;
|
|
21
|
+
private readonly registerStreamHandler?;
|
|
22
|
+
private readonly unregisterStreamHandler?;
|
|
23
|
+
private readonly heartbeat?;
|
|
20
24
|
/** Target client ID (usually the creatorId of the original request) */
|
|
21
25
|
private readonly targetId?;
|
|
22
26
|
/** Server instance ID (for creatorId in responses) */
|
|
23
27
|
private readonly serverId?;
|
|
24
28
|
private onAckCallback?;
|
|
29
|
+
private onSentCallback?;
|
|
25
30
|
_sent: boolean;
|
|
26
|
-
constructor(requestId: string, path: string, secretKey: string | undefined, targetWindow: Window, targetOrigin: string, channel: MessageChannel, serverId?: string, targetId?: string
|
|
31
|
+
constructor(requestId: string, path: string, secretKey: string | undefined, targetWindow: Window, targetOrigin: string, channel: MessageChannel, serverId?: string, targetId?: string, options?: {
|
|
32
|
+
registerStreamHandler?: (streamId: string, handler: (data: any) => void) => void;
|
|
33
|
+
unregisterStreamHandler?: (streamId: string) => void;
|
|
34
|
+
heartbeat?: () => Promise<boolean>;
|
|
35
|
+
onSent?: OnSentCallback;
|
|
36
|
+
});
|
|
27
37
|
/**
|
|
28
38
|
* Send message via channel
|
|
29
39
|
*/
|
|
@@ -48,7 +58,15 @@ export declare class ServerResponseImpl implements ServerResponse {
|
|
|
48
58
|
/**
|
|
49
59
|
* Trigger client acknowledgment callback
|
|
50
60
|
*/
|
|
51
|
-
_triggerAck(received: boolean): void;
|
|
61
|
+
_triggerAck(received: boolean, ack?: any): void;
|
|
62
|
+
/**
|
|
63
|
+
* Mark response as sent (and trigger onSent callback once).
|
|
64
|
+
*/
|
|
65
|
+
private markSent;
|
|
66
|
+
/**
|
|
67
|
+
* Internal: mark as sent for manual error responses.
|
|
68
|
+
*/
|
|
69
|
+
_markSent(): void;
|
|
52
70
|
/**
|
|
53
71
|
* Internal method: send raw data (used by send after type detection)
|
|
54
72
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../src/core/response.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAGvF,OAAO,EAAE,oBAAoB,EAAoD,MAAM,WAAW,CAAC;AACnG,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../src/core/response.ts"],"names":[],"mappings":"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"}
|
package/library/core/response.js
CHANGED
|
@@ -17,6 +17,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
17
17
|
var _utils = require("../utils");
|
|
18
18
|
var _constants = require("../constants");
|
|
19
19
|
var _stream = require("../stream");
|
|
20
|
+
var _ack2 = require("../utils/ack");
|
|
20
21
|
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; }
|
|
21
22
|
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
23
|
/**
|
|
@@ -27,7 +28,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
27
28
|
* ServerResponse implementation
|
|
28
29
|
*/
|
|
29
30
|
class ServerResponseImpl {
|
|
30
|
-
constructor(requestId, path, secretKey, targetWindow, targetOrigin, channel, serverId, targetId) {
|
|
31
|
+
constructor(requestId, path, secretKey, targetWindow, targetOrigin, channel, serverId, targetId, options) {
|
|
31
32
|
(0, _defineProperty2.default)(this, "statusCode", _constants.HttpStatus.OK);
|
|
32
33
|
(0, _defineProperty2.default)(this, "headers", {});
|
|
33
34
|
(0, _defineProperty2.default)(this, "_sent", false);
|
|
@@ -39,6 +40,10 @@ class ServerResponseImpl {
|
|
|
39
40
|
this.channel = channel;
|
|
40
41
|
this.serverId = serverId;
|
|
41
42
|
this.targetId = targetId;
|
|
43
|
+
this.registerStreamHandler = options === null || options === void 0 ? void 0 : options.registerStreamHandler;
|
|
44
|
+
this.unregisterStreamHandler = options === null || options === void 0 ? void 0 : options.unregisterStreamHandler;
|
|
45
|
+
this.heartbeat = options === null || options === void 0 ? void 0 : options.heartbeat;
|
|
46
|
+
this.onSentCallback = options === null || options === void 0 ? void 0 : options.onSent;
|
|
42
47
|
}
|
|
43
48
|
|
|
44
49
|
/**
|
|
@@ -89,21 +94,50 @@ class ServerResponseImpl {
|
|
|
89
94
|
/**
|
|
90
95
|
* Trigger client acknowledgment callback
|
|
91
96
|
*/
|
|
92
|
-
_triggerAck(received) {
|
|
97
|
+
_triggerAck(received, ack) {
|
|
93
98
|
if (this.onAckCallback) {
|
|
94
|
-
this.onAckCallback(received);
|
|
99
|
+
this.onAckCallback(received, ack);
|
|
95
100
|
this.onAckCallback = undefined;
|
|
96
101
|
}
|
|
97
102
|
}
|
|
98
103
|
|
|
104
|
+
/**
|
|
105
|
+
* Mark response as sent (and trigger onSent callback once).
|
|
106
|
+
*/
|
|
107
|
+
markSent() {
|
|
108
|
+
if (this._sent) return;
|
|
109
|
+
this._sent = true;
|
|
110
|
+
if (this.onSentCallback) {
|
|
111
|
+
var cb = this.onSentCallback;
|
|
112
|
+
this.onSentCallback = undefined;
|
|
113
|
+
cb();
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Internal: mark as sent for manual error responses.
|
|
119
|
+
*/
|
|
120
|
+
_markSent() {
|
|
121
|
+
this.markSent();
|
|
122
|
+
}
|
|
123
|
+
|
|
99
124
|
/**
|
|
100
125
|
* Internal method: send raw data (used by send after type detection)
|
|
101
126
|
*/
|
|
102
127
|
_sendRaw(data, options) {
|
|
103
|
-
var _options$requireAck;
|
|
128
|
+
var _options$requireAck, _ack;
|
|
104
129
|
if (this._sent) return Promise.resolve(false);
|
|
105
|
-
this.
|
|
130
|
+
this.markSent();
|
|
106
131
|
var requireAck = (_options$requireAck = options === null || options === void 0 ? void 0 : options.requireAck) !== null && _options$requireAck !== void 0 ? _options$requireAck : false;
|
|
132
|
+
/**
|
|
133
|
+
* When requireAck is enabled, attach a unique ack payload by default so ACK can be
|
|
134
|
+
* unambiguously associated with this send.
|
|
135
|
+
*
|
|
136
|
+
* NOTE: ack is an internal reserved field (not part of public API).
|
|
137
|
+
*/
|
|
138
|
+
var expectedAck = (_ack = options === null || options === void 0 ? void 0 : options.ack) !== null && _ack !== void 0 ? _ack : requireAck ? {
|
|
139
|
+
id: (0, _utils.generateRequestId)()
|
|
140
|
+
} : undefined;
|
|
107
141
|
try {
|
|
108
142
|
// If acknowledgment not required, send directly and return true
|
|
109
143
|
if (!requireAck) {
|
|
@@ -125,7 +159,17 @@ class ServerResponseImpl {
|
|
|
125
159
|
// Acknowledgment required, wait for client response
|
|
126
160
|
return new Promise((resolve, reject) => {
|
|
127
161
|
try {
|
|
128
|
-
this._setOnAckCallback(
|
|
162
|
+
this._setOnAckCallback((received, receivedAckMeta) => {
|
|
163
|
+
if (!received) {
|
|
164
|
+
resolve(false);
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
if (expectedAck !== undefined && !(0, _ack2.isAckMatch)(expectedAck, receivedAckMeta)) {
|
|
168
|
+
resolve(false);
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
resolve(true);
|
|
172
|
+
});
|
|
129
173
|
this.sendMessage((0, _utils.createPostMessage)(_constants.MessageType.RESPONSE, this.requestId, {
|
|
130
174
|
path: this.path,
|
|
131
175
|
secretKey: this.secretKey,
|
|
@@ -134,6 +178,7 @@ class ServerResponseImpl {
|
|
|
134
178
|
statusText: (0, _constants.getStatusText)(this.statusCode),
|
|
135
179
|
headers: this.headers,
|
|
136
180
|
requireAck: true,
|
|
181
|
+
ack: expectedAck,
|
|
137
182
|
role: _constants.MessageRole.SERVER,
|
|
138
183
|
creatorId: this.serverId,
|
|
139
184
|
targetId: this.targetId
|
|
@@ -317,7 +362,7 @@ class ServerResponseImpl {
|
|
|
317
362
|
}
|
|
318
363
|
return _context4.abrupt("return");
|
|
319
364
|
case 1:
|
|
320
|
-
_this3.
|
|
365
|
+
_this3.markSent();
|
|
321
366
|
|
|
322
367
|
// Window check is handled in MessageDispatcher when stream sends messages
|
|
323
368
|
|
|
@@ -328,6 +373,9 @@ class ServerResponseImpl {
|
|
|
328
373
|
targetOrigin: _this3.targetOrigin,
|
|
329
374
|
secretKey: _this3.secretKey,
|
|
330
375
|
channel: _this3.channel,
|
|
376
|
+
registerStreamHandler: _this3.registerStreamHandler,
|
|
377
|
+
unregisterStreamHandler: _this3.unregisterStreamHandler,
|
|
378
|
+
heartbeat: _this3.heartbeat,
|
|
331
379
|
serverId: _this3.serverId,
|
|
332
380
|
targetId: _this3.targetId
|
|
333
381
|
});
|
package/library/core/server.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ServerHandler, RequestIframeServer, Middleware, PathMatcher } from '../types';
|
|
1
|
+
import type { ServerHandler, RequestIframeServer, Middleware, PathMatcher, OriginMatcher, OriginValidator } from '../types';
|
|
2
2
|
import { MessageDispatcher, VersionValidator } from '../message';
|
|
3
3
|
/**
|
|
4
4
|
* Server configuration options
|
|
@@ -12,8 +12,21 @@ export interface ServerOptions {
|
|
|
12
12
|
ackTimeout?: number;
|
|
13
13
|
/** Protocol version validator (optional, uses built-in validator by default) */
|
|
14
14
|
versionValidator?: VersionValidator;
|
|
15
|
+
/** Allowed origins for incoming messages */
|
|
16
|
+
allowedOrigins?: OriginMatcher;
|
|
17
|
+
/** Custom origin validator (higher priority than allowedOrigins) */
|
|
18
|
+
validateOrigin?: OriginValidator;
|
|
15
19
|
/** Whether to automatically open when creating the server. Default is true. */
|
|
16
20
|
autoOpen?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Max concurrent in-flight requests per client (per origin + creatorId).
|
|
23
|
+
* Used to mitigate message explosion caused by abnormal code or attacks.
|
|
24
|
+
*/
|
|
25
|
+
maxConcurrentRequestsPerClient?: number;
|
|
26
|
+
/** Advanced: auto-ack echo limit for ack.meta length (internal). */
|
|
27
|
+
autoAckMaxMetaLength?: number;
|
|
28
|
+
/** Advanced: auto-ack echo limit for ack.id length (internal). */
|
|
29
|
+
autoAckMaxIdLength?: number;
|
|
17
30
|
}
|
|
18
31
|
/**
|
|
19
32
|
* RequestIframeServer implementation
|
|
@@ -27,8 +40,13 @@ export declare class RequestIframeServerImpl implements RequestIframeServer {
|
|
|
27
40
|
private readonly versionValidator;
|
|
28
41
|
private readonly handlers;
|
|
29
42
|
private readonly middlewares;
|
|
43
|
+
private readonly originValidator?;
|
|
44
|
+
private readonly maxConcurrentRequestsPerClient;
|
|
45
|
+
private readonly inFlightByClientKey;
|
|
30
46
|
/** Responses waiting for client acknowledgment */
|
|
31
47
|
private readonly pendingAcks;
|
|
48
|
+
/** Pending pings waiting for client PONG (server -> client heartbeat) */
|
|
49
|
+
private readonly pendingPongs;
|
|
32
50
|
/** Pending requests waiting for client stream_start (streamId present) */
|
|
33
51
|
private readonly pendingStreamRequests;
|
|
34
52
|
/** Stream message handlers (streamId -> handler) for client→server streams */
|
|
@@ -38,6 +56,17 @@ export declare class RequestIframeServerImpl implements RequestIframeServer {
|
|
|
38
56
|
/** Whether it is open */
|
|
39
57
|
private _isOpen;
|
|
40
58
|
constructor(options?: ServerOptions);
|
|
59
|
+
/**
|
|
60
|
+
* Check whether an incoming message origin is allowed.
|
|
61
|
+
*/
|
|
62
|
+
private isOriginAllowed;
|
|
63
|
+
/**
|
|
64
|
+
* Build a per-client key used for concurrency limiting.
|
|
65
|
+
* We intentionally include origin to prevent cross-origin collisions.
|
|
66
|
+
*/
|
|
67
|
+
private getClientKey;
|
|
68
|
+
private incInFlight;
|
|
69
|
+
private decInFlight;
|
|
41
70
|
/**
|
|
42
71
|
* Open message processing (register message handlers)
|
|
43
72
|
*/
|
|
@@ -65,10 +94,12 @@ export declare class RequestIframeServerImpl implements RequestIframeServer {
|
|
|
65
94
|
* Handle ping message
|
|
66
95
|
*/
|
|
67
96
|
private handlePing;
|
|
97
|
+
private handlePong;
|
|
98
|
+
private pingClient;
|
|
68
99
|
/**
|
|
69
|
-
* Handle
|
|
100
|
+
* Handle ACK (receipt confirmation for responses when requireAck === true).
|
|
70
101
|
*/
|
|
71
|
-
private
|
|
102
|
+
private handleAck;
|
|
72
103
|
/** Get secretKey */
|
|
73
104
|
get secretKey(): string | undefined;
|
|
74
105
|
/** Get the underlying MessageDispatcher */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/core/server.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/core/server.ts"],"names":[],"mappings":"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"}
|