request-iframe 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/README.CN.md +1 -1
  2. package/README.md +1 -1
  3. package/package.json +5 -4
  4. package/react/library/index.d.ts.map +1 -1
  5. package/react/library/index.js +4 -1
  6. package/library/__tests__/channel.test.ts +0 -432
  7. package/library/__tests__/coverage-branches.test.ts +0 -356
  8. package/library/__tests__/debug.test.ts +0 -610
  9. package/library/__tests__/dispatcher.test.ts +0 -485
  10. package/library/__tests__/interceptors.test.ts +0 -146
  11. package/library/__tests__/requestIframe.test.ts +0 -5590
  12. package/library/__tests__/server.test.ts +0 -738
  13. package/library/__tests__/stream.test.ts +0 -726
  14. package/library/__tests__/utils.test.ts +0 -473
  15. package/library/api/client.d.js +0 -5
  16. package/library/api/server.d.js +0 -5
  17. package/library/constants/index.d.js +0 -36
  18. package/library/constants/messages.d.js +0 -5
  19. package/library/core/client.d.js +0 -5
  20. package/library/core/message-handler.d.ts +0 -110
  21. package/library/core/message-handler.d.ts.map +0 -1
  22. package/library/core/message-handler.js +0 -320
  23. package/library/core/request-response.d.ts +0 -59
  24. package/library/core/request-response.d.ts.map +0 -1
  25. package/library/core/request-response.js +0 -337
  26. package/library/core/request.d.js +0 -5
  27. package/library/core/response.d.js +0 -5
  28. package/library/core/server-base.d.ts +0 -86
  29. package/library/core/server-base.d.ts.map +0 -1
  30. package/library/core/server-base.js +0 -257
  31. package/library/core/server-client.d.js +0 -5
  32. package/library/core/server-client.d.ts +0 -101
  33. package/library/core/server-client.d.ts.map +0 -1
  34. package/library/core/server-client.js +0 -266
  35. package/library/core/server.d.js +0 -5
  36. package/library/interceptors/index.d.js +0 -5
  37. package/library/message/channel.d.js +0 -5
  38. package/library/message/dispatcher.d.js +0 -5
  39. package/library/message/index.d.js +0 -25
  40. package/library/stream/file-stream.d.js +0 -4
  41. package/library/stream/index.d.js +0 -58
  42. package/library/stream/readable-stream.d.js +0 -5
  43. package/library/stream/types.d.js +0 -5
  44. package/library/stream/writable-stream.d.js +0 -5
  45. package/library/types/index.d.js +0 -5
  46. package/library/utils/cache.d.js +0 -5
  47. package/library/utils/cookie.d.js +0 -5
  48. package/library/utils/debug.d.js +0 -5
  49. package/library/utils/index.d.js +0 -94
  50. package/library/utils/path-match.d.js +0 -5
  51. package/library/utils/protocol.d.js +0 -5
  52. package/react/library/__tests__/index.test.d.ts +0 -2
  53. package/react/library/__tests__/index.test.d.ts.map +0 -1
  54. package/react/library/__tests__/index.test.tsx +0 -792
@@ -1,320 +0,0 @@
1
- "use strict";
2
-
3
- require("core-js/modules/es.array.filter.js");
4
- require("core-js/modules/es.object.get-own-property-descriptors.js");
5
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
- Object.defineProperty(exports, "__esModule", {
7
- value: true
8
- });
9
- exports.IframeMessageHandler = void 0;
10
- require("core-js/modules/es.array.iterator.js");
11
- require("core-js/modules/es.map.js");
12
- require("core-js/modules/es.set.js");
13
- require("core-js/modules/es.string.starts-with.js");
14
- require("core-js/modules/web.dom-collections.for-each.js");
15
- require("core-js/modules/web.dom-collections.iterator.js");
16
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
- var _utils = require("../utils");
18
- var _constants = require("../constants");
19
- 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; }
20
- 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
- /**
22
- * 消息处理器配置
23
- */
24
-
25
- /**
26
- * 消息处理回调
27
- */
28
-
29
- /**
30
- * 事件监听器集合
31
- */
32
-
33
- /**
34
- * 等待确认的响应
35
- */
36
-
37
- /**
38
- * 等待响应的请求
39
- */
40
-
41
- /**
42
- * IframeMessageHandler - 底层消息处理器
43
- * 负责 postMessage 监听、协议验证、uniqueKey 隔离、事件分发
44
- */
45
- class IframeMessageHandler {
46
- /** 消息监听函数(绑定 this) */
47
-
48
- constructor(options) {
49
- var _options$ackTimeout;
50
- (0, _defineProperty2.default)(this, "listeners", {
51
- request: new Set(),
52
- ack: new Set(),
53
- async: new Set(),
54
- response: new Set(),
55
- error: new Set(),
56
- received: new Set(),
57
- ping: new Set(),
58
- pong: new Set()
59
- });
60
- /** 等待客户端确认的响应 */
61
- (0, _defineProperty2.default)(this, "pendingAcks", new Map());
62
- /** 等待响应的请求 */
63
- (0, _defineProperty2.default)(this, "pendingRequests", new Map());
64
- /** 消息处理回调 */
65
- (0, _defineProperty2.default)(this, "callbacks", {});
66
- this.uniqueKey = options === null || options === void 0 ? void 0 : options.uniqueKey;
67
- this.ackTimeout = (_options$ackTimeout = options === null || options === void 0 ? void 0 : options.ackTimeout) !== null && _options$ackTimeout !== void 0 ? _options$ackTimeout : _constants.DefaultTimeout.SERVER_ACK;
68
- this.boundOnMessage = this.onMessage.bind(this);
69
- window.addEventListener('message', this.boundOnMessage);
70
- }
71
-
72
- /**
73
- * 设置消息处理回调
74
- */
75
- setCallbacks(callbacks) {
76
- this.callbacks = _objectSpread(_objectSpread({}, this.callbacks), callbacks);
77
- }
78
-
79
- /**
80
- * 消息处理入口
81
- */
82
- onMessage(event) {
83
- var data = event.data;
84
-
85
- // 检查是否是 request-iframe 框架的消息
86
- if (!(0, _utils.isValidPostMessage)(data)) {
87
- return;
88
- }
89
-
90
- // 检查协议版本兼容性
91
- var version = (0, _utils.getProtocolVersion)(data);
92
- if (version !== undefined && !(0, _utils.isCompatibleVersion)(version)) {
93
- this.sendProtocolError(data, event, version);
94
- return;
95
- }
96
-
97
- // uniqueKey 隔离
98
- if (this.uniqueKey) {
99
- if (data.uniqueKey !== this.uniqueKey) return;
100
- } else {
101
- if (data.uniqueKey) return;
102
- }
103
-
104
- // 触发事件监听器
105
- this.emit(data.type, data, event);
106
-
107
- // 分发到具体处理器
108
- this.dispatchMessage(data, event);
109
- }
110
-
111
- /**
112
- * 分发消息到具体处理器
113
- */
114
- dispatchMessage(data, event) {
115
- var type = data.type;
116
-
117
- // 请求
118
- if (type === _constants.MessageType.REQUEST) {
119
- var _this$callbacks$onReq, _this$callbacks;
120
- (_this$callbacks$onReq = (_this$callbacks = this.callbacks).onRequest) === null || _this$callbacks$onReq === void 0 || _this$callbacks$onReq.call(_this$callbacks, data, event);
121
- return;
122
- }
123
-
124
- // 客户端响应
125
- if (type === _constants.MessageType.RESPONSE || type === _constants.MessageType.ERROR || type === _constants.MessageType.ACK || type === _constants.MessageType.ASYNC) {
126
- var _this$callbacks$onCli, _this$callbacks2;
127
- this.handleClientResponse(data, event);
128
- (_this$callbacks$onCli = (_this$callbacks2 = this.callbacks).onClientResponse) === null || _this$callbacks$onCli === void 0 || _this$callbacks$onCli.call(_this$callbacks2, data, event);
129
- return;
130
- }
131
-
132
- // received 确认
133
- if (type === _constants.MessageType.RECEIVED) {
134
- var _this$callbacks$onRec, _this$callbacks3;
135
- this.handleReceived(data);
136
- (_this$callbacks$onRec = (_this$callbacks3 = this.callbacks).onReceived) === null || _this$callbacks$onRec === void 0 || _this$callbacks$onRec.call(_this$callbacks3, data, event);
137
- return;
138
- }
139
-
140
- // ping
141
- if (type === _constants.MessageType.PING) {
142
- var _this$callbacks$onPin, _this$callbacks4;
143
- this.handlePing(data, event);
144
- (_this$callbacks$onPin = (_this$callbacks4 = this.callbacks).onPing) === null || _this$callbacks$onPin === void 0 || _this$callbacks$onPin.call(_this$callbacks4, data, event);
145
- return;
146
- }
147
-
148
- // pong
149
- if (type === _constants.MessageType.PONG) {
150
- var _this$callbacks$onPon, _this$callbacks5;
151
- this.handlePong(data, event);
152
- (_this$callbacks$onPon = (_this$callbacks5 = this.callbacks).onPong) === null || _this$callbacks$onPon === void 0 || _this$callbacks$onPon.call(_this$callbacks5, data, event);
153
- return;
154
- }
155
-
156
- // 流消息(stream_start, stream_data, stream_end, stream_error, stream_cancel)
157
- if (type.startsWith('stream_')) {
158
- var _this$callbacks$onStr, _this$callbacks6;
159
- (_this$callbacks$onStr = (_this$callbacks6 = this.callbacks).onStream) === null || _this$callbacks$onStr === void 0 || _this$callbacks$onStr.call(_this$callbacks6, data, event);
160
- return;
161
- }
162
- }
163
-
164
- /**
165
- * 处理客户端响应
166
- */
167
- handleClientResponse(data, event) {
168
- var pending = this.pendingRequests.get(data.requestId);
169
- if (pending) {
170
- // 验证 origin
171
- if (pending.origin && pending.origin !== '*' && event.origin !== pending.origin) {
172
- return;
173
- }
174
- // ack 和 async 不删除 pending
175
- if (data.type === _constants.MessageType.ACK || data.type === _constants.MessageType.ASYNC) {
176
- pending.resolve(data);
177
- return;
178
- }
179
- // response 和 error 删除 pending
180
- this.pendingRequests.delete(data.requestId);
181
- pending.resolve(data);
182
- }
183
- }
184
-
185
- /**
186
- * 处理 received 确认
187
- */
188
- handleReceived(data) {
189
- var pending = this.pendingAcks.get(data.requestId);
190
- if (pending) {
191
- clearTimeout(pending.timeoutId);
192
- this.pendingAcks.delete(data.requestId);
193
- pending.resolve(true);
194
- }
195
- }
196
-
197
- /**
198
- * 处理 ping
199
- */
200
- handlePing(data, event) {
201
- if (!event.source) return;
202
- event.source.postMessage((0, _utils.createPostMessage)(_constants.MessageType.PONG, data.requestId, {
203
- uniqueKey: data.uniqueKey
204
- }), event.origin);
205
- }
206
-
207
- /**
208
- * 处理 pong
209
- */
210
- handlePong(data, event) {
211
- var pending = this.pendingRequests.get(data.requestId);
212
- if (pending) {
213
- if (pending.origin && pending.origin !== '*' && event.origin !== pending.origin) {
214
- return;
215
- }
216
- this.pendingRequests.delete(data.requestId);
217
- pending.resolve(data);
218
- }
219
- }
220
-
221
- /**
222
- * 注册等待确认的响应
223
- */
224
- registerPendingAck(requestId, resolve, reject) {
225
- var timeoutId = setTimeout(() => {
226
- this.pendingAcks.delete(requestId);
227
- resolve(false);
228
- }, this.ackTimeout);
229
- this.pendingAcks.set(requestId, {
230
- resolve,
231
- reject,
232
- timeoutId
233
- });
234
- }
235
-
236
- /**
237
- * 注册等待响应的请求
238
- */
239
- registerPendingRequest(requestId, resolve, reject, origin) {
240
- this.pendingRequests.set(requestId, {
241
- resolve,
242
- reject,
243
- origin
244
- });
245
- }
246
-
247
- /**
248
- * 取消等待响应
249
- */
250
- unregisterPendingRequest(requestId) {
251
- this.pendingRequests.delete(requestId);
252
- }
253
-
254
- /**
255
- * 监听事件
256
- */
257
- on(event, fn) {
258
- this.listeners[event].add(fn);
259
- }
260
-
261
- /**
262
- * 取消监听
263
- */
264
- off(event, fn) {
265
- if (!fn) {
266
- this.listeners[event].clear();
267
- return;
268
- }
269
- this.listeners[event].delete(fn);
270
- }
271
-
272
- /**
273
- * 触发事件
274
- */
275
- emit(event, payload, messageEvent) {
276
- this.listeners[event].forEach(fn => {
277
- try {
278
- fn(payload, messageEvent);
279
- } catch (e) {
280
- // 忽略监听器异常
281
- }
282
- });
283
- }
284
-
285
- /**
286
- * 添加 path 前缀
287
- */
288
- prefixPath(path) {
289
- return this.uniqueKey ? `${this.uniqueKey}:${path}` : path;
290
- }
291
-
292
- /**
293
- * 发送协议版本错误
294
- */
295
- sendProtocolError(data, event, remoteVersion) {
296
- if (!event.source) return;
297
- event.source.postMessage((0, _utils.createPostMessage)(_constants.MessageType.ERROR, data.requestId, {
298
- path: data.path,
299
- uniqueKey: data.uniqueKey,
300
- status: _constants.HttpStatus.BAD_REQUEST,
301
- statusText: _constants.Messages.PROTOCOL_VERSION_UNSUPPORTED,
302
- error: {
303
- message: (0, _constants.formatMessage)(_constants.Messages.PROTOCOL_VERSION_TOO_LOW, remoteVersion, _constants.ProtocolVersion.MIN_SUPPORTED),
304
- code: _constants.ErrorCode.PROTOCOL_UNSUPPORTED
305
- }
306
- }), event.origin);
307
- }
308
-
309
- /**
310
- * 销毁
311
- */
312
- destroy() {
313
- window.removeEventListener('message', this.boundOnMessage);
314
- this.pendingRequests.clear();
315
- this.pendingAcks.forEach(pending => clearTimeout(pending.timeoutId));
316
- this.pendingAcks.clear();
317
- Object.keys(this.listeners).forEach(k => this.listeners[k].clear());
318
- }
319
- }
320
- exports.IframeMessageHandler = IframeMessageHandler;
@@ -1,59 +0,0 @@
1
- import { ServerRequest, ServerResponse, PostMessageData, CookieOptions, SendOptions, SendFileOptions } from '../types';
2
- import { IframeWritableStream } from '../stream';
3
- /**
4
- * ServerRequest 实现
5
- */
6
- export declare class ServerRequestImpl implements ServerRequest {
7
- body: any;
8
- headers: Record<string, string>;
9
- cookies: Record<string, string>;
10
- path: string;
11
- requestId: string;
12
- origin: string;
13
- source: Window;
14
- res: ServerResponse;
15
- constructor(data: PostMessageData, event: MessageEvent, response: ServerResponse);
16
- }
17
- /**
18
- * 等待客户端确认收到的回调
19
- */
20
- type AckCallback = (received: boolean) => void;
21
- /**
22
- * ServerResponse 实现
23
- */
24
- export declare class ServerResponseImpl implements ServerResponse {
25
- statusCode: number;
26
- headers: Record<string, string | string[]>;
27
- private readonly requestId;
28
- private readonly path;
29
- private readonly uniqueKey?;
30
- private readonly targetWindow;
31
- private readonly targetOrigin;
32
- private onAckCallback?;
33
- _sent: boolean;
34
- constructor(requestId: string, path: string, uniqueKey: string | undefined, targetWindow: Window, targetOrigin: string);
35
- /**
36
- * 设置等待客户端确认的回调
37
- */
38
- _setOnAckCallback(callback: AckCallback): void;
39
- /**
40
- * 触发客户端确认回调
41
- */
42
- _triggerAck(received: boolean): void;
43
- send(data: any, options?: SendOptions): Promise<boolean>;
44
- json(data: any, options?: SendOptions): Promise<boolean>;
45
- sendFile(content: string | Blob | File, options?: SendFileOptions): Promise<boolean>;
46
- /**
47
- * 发送流响应
48
- * 将流绑定到当前请求上下文并启动流传输
49
- */
50
- sendStream(stream: IframeWritableStream): Promise<void>;
51
- status(code: number): ServerResponse;
52
- setHeader(name: string, value: string | number | string[]): void;
53
- set(name: string, value: string | number | string[]): ServerResponse;
54
- cookie(name: string, value: string, options?: CookieOptions): ServerResponse;
55
- clearCookie(name: string, options?: CookieOptions): ServerResponse;
56
- private blobToBase64;
57
- }
58
- export {};
59
- //# sourceMappingURL=request-response.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"request-response.d.ts","sourceRoot":"","sources":["../../src/core/request-response.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAGvH,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEjD;;GAEG;AACH,qBAAa,iBAAkB,YAAW,aAAa;IAC9C,IAAI,EAAE,GAAG,CAAC;IACV,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,cAAc,CAAC;gBAGzB,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,cAAc;CAiB3B;AAED;;GAEG;AACH,KAAK,WAAW,GAAG,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;AAE/C;;GAEG;AACH,qBAAa,kBAAmB,YAAW,cAAc;IAChD,UAAU,EAAE,MAAM,CAAiB;IACnC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAM;IACvD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,aAAa,CAAC,CAAc;IAC7B,KAAK,UAAS;gBAGnB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM;IAStB;;OAEG;IACI,iBAAiB,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI;IAIrD;;OAEG;IACI,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAOpC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IA0CxD,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAKlD,QAAQ,CACnB,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,EAC7B,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,OAAO,CAAC;IAyDnB;;;OAGG;IACU,UAAU,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB7D,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc;IAKpC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAwBhE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,cAAc;IAMpE,MAAM,CACX,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,aAAa,GACtB,cAAc;IA4BV,WAAW,CAChB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,aAAa,GACtB,cAAc;YAkBH,YAAY;CAa3B"}