request-iframe 0.2.0 → 0.2.2

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 (93) hide show
  1. package/QUICKSTART.CN.md +33 -11
  2. package/QUICKSTART.md +33 -11
  3. package/README.CN.md +157 -44
  4. package/README.md +159 -41
  5. package/cdn/request-iframe.umd.js +4814 -4026
  6. package/cdn/request-iframe.umd.js.map +1 -1
  7. package/cdn/request-iframe.umd.min.js +2 -2
  8. package/cdn/request-iframe.umd.min.js.map +1 -1
  9. package/esm/api/client.js +45 -22
  10. package/esm/api/endpoint.js +30 -13
  11. package/esm/api/server.js +22 -13
  12. package/esm/constants/warn-once.js +7 -1
  13. package/esm/endpoint/index.js +1 -2
  14. package/esm/endpoint/infra/inbox.js +5 -4
  15. package/esm/endpoint/infra/outbox.js +8 -8
  16. package/esm/endpoint/stream/file-auto-resolve.js +9 -8
  17. package/esm/impl/client.js +3 -2
  18. package/esm/impl/response.js +4 -2
  19. package/esm/impl/server.js +8 -6
  20. package/esm/message/channel.js +15 -3
  21. package/esm/message/dispatcher.js +27 -0
  22. package/esm/stream/file-stream.js +311 -72
  23. package/esm/stream/writable-stream.js +21 -4
  24. package/esm/utils/blob.js +17 -0
  25. package/esm/utils/debug-lazy.js +76 -0
  26. package/esm/utils/logger.js +33 -1
  27. package/esm/utils/strict-mode.js +85 -0
  28. package/esm/utils/warn-once.js +30 -0
  29. package/esm/utils/warnings.js +47 -0
  30. package/library/api/client.d.ts.map +1 -1
  31. package/library/api/client.js +45 -22
  32. package/library/api/endpoint.d.ts.map +1 -1
  33. package/library/api/endpoint.js +30 -13
  34. package/library/api/server.d.ts.map +1 -1
  35. package/library/api/server.js +22 -13
  36. package/library/constants/warn-once.d.ts +6 -0
  37. package/library/constants/warn-once.d.ts.map +1 -1
  38. package/library/constants/warn-once.js +7 -1
  39. package/library/endpoint/index.d.ts +0 -1
  40. package/library/endpoint/index.d.ts.map +1 -1
  41. package/library/endpoint/index.js +1 -8
  42. package/library/endpoint/infra/inbox.d.ts.map +1 -1
  43. package/library/endpoint/infra/inbox.js +4 -3
  44. package/library/endpoint/infra/outbox.d.ts +2 -0
  45. package/library/endpoint/infra/outbox.d.ts.map +1 -1
  46. package/library/endpoint/infra/outbox.js +7 -7
  47. package/library/endpoint/stream/file-auto-resolve.d.ts +1 -1
  48. package/library/endpoint/stream/file-auto-resolve.d.ts.map +1 -1
  49. package/library/endpoint/stream/file-auto-resolve.js +8 -8
  50. package/library/impl/client.d.ts +2 -0
  51. package/library/impl/client.d.ts.map +1 -1
  52. package/library/impl/client.js +3 -2
  53. package/library/impl/response.d.ts.map +1 -1
  54. package/library/impl/response.js +4 -2
  55. package/library/impl/server.d.ts.map +1 -1
  56. package/library/impl/server.js +7 -5
  57. package/library/message/channel.d.ts +2 -2
  58. package/library/message/channel.d.ts.map +1 -1
  59. package/library/message/channel.js +15 -3
  60. package/library/message/dispatcher.d.ts.map +1 -1
  61. package/library/message/dispatcher.js +27 -0
  62. package/library/stream/file-stream.d.ts +70 -5
  63. package/library/stream/file-stream.d.ts.map +1 -1
  64. package/library/stream/file-stream.js +310 -70
  65. package/library/stream/types.d.ts +2 -0
  66. package/library/stream/types.d.ts.map +1 -1
  67. package/library/stream/writable-stream.d.ts.map +1 -1
  68. package/library/stream/writable-stream.js +21 -4
  69. package/library/types/index.d.ts +38 -0
  70. package/library/types/index.d.ts.map +1 -1
  71. package/library/utils/blob.d.ts +7 -0
  72. package/library/utils/blob.d.ts.map +1 -1
  73. package/library/utils/blob.js +18 -0
  74. package/library/utils/debug-lazy.d.ts +26 -0
  75. package/library/utils/debug-lazy.d.ts.map +1 -0
  76. package/library/utils/debug-lazy.js +85 -0
  77. package/library/utils/logger.d.ts +20 -0
  78. package/library/utils/logger.d.ts.map +1 -1
  79. package/library/utils/logger.js +34 -1
  80. package/library/utils/strict-mode.d.ts +37 -0
  81. package/library/utils/strict-mode.d.ts.map +1 -0
  82. package/library/utils/strict-mode.js +94 -0
  83. package/library/utils/warn-once.d.ts +9 -0
  84. package/library/utils/warn-once.d.ts.map +1 -0
  85. package/library/utils/warn-once.js +36 -0
  86. package/library/utils/warnings.d.ts +48 -0
  87. package/library/utils/warnings.d.ts.map +1 -0
  88. package/library/utils/warnings.js +54 -0
  89. package/package.json +1 -1
  90. package/esm/endpoint/stream/file-writable.js +0 -105
  91. package/library/endpoint/stream/file-writable.d.ts +0 -33
  92. package/library/endpoint/stream/file-writable.d.ts.map +0 -1
  93. package/library/endpoint/stream/file-writable.js +0 -115
@@ -1,4 +1,5 @@
1
1
  import { LogLevel } from '../constants';
2
+ import { warnOnce } from './warn-once';
2
3
 
3
4
  /**
4
5
  * Built-in leveled logger for request-iframe.
@@ -52,4 +53,35 @@ export function requestIframeLog(level, message, data) {
52
53
  } else {
53
54
  console[method](`%c${prefix}%c ${message}`, prefixStyle, messageStyle);
54
55
  }
55
- }
56
+ }
57
+
58
+ /**
59
+ * Unified logger facade.
60
+ *
61
+ * Notes:
62
+ * - This is a thin wrapper around existing functions (kept for backward compatibility).
63
+ * - `once()` is useful for configuration/security hints to avoid noisy logs.
64
+ */
65
+ export var logger = {
66
+ getLevel: getRequestIframeLogLevel,
67
+ setLevel: setRequestIframeLogLevel,
68
+ ensureLevel: ensureRequestIframeLogLevel,
69
+ trace(message, data) {
70
+ requestIframeLog(LogLevel.TRACE, message, data);
71
+ },
72
+ info(message, data) {
73
+ requestIframeLog(LogLevel.INFO, message, data);
74
+ },
75
+ warn(message, data) {
76
+ requestIframeLog(LogLevel.WARN, message, data);
77
+ },
78
+ error(message, data) {
79
+ requestIframeLog(LogLevel.ERROR, message, data);
80
+ },
81
+ /**
82
+ * Log once by key (deduped across bundles/versions).
83
+ */
84
+ once(level, key, message, data) {
85
+ warnOnce(key, () => requestIframeLog(level, message, data));
86
+ }
87
+ };
@@ -0,0 +1,85 @@
1
+ import "core-js/modules/es.array.filter.js";
2
+ import "core-js/modules/es.object.get-own-property-descriptors.js";
3
+ import "core-js/modules/web.dom-collections.for-each.js";
4
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
5
+ 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; }
6
+ 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) { _defineProperty(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; }
7
+ /**
8
+ * Security defaults helper for "strict mode".
9
+ *
10
+ * Goal:
11
+ * - Reduce boilerplate in common same-origin usage.
12
+ * - Provide safer defaults when user does NOT configure origin constraints explicitly.
13
+ *
14
+ * Behavior (when strict === true):
15
+ * - Client-like options:
16
+ * - If targetOrigin is not provided, default to window.location.origin (same-origin only).
17
+ * - If neither allowedOrigins nor validateOrigin is provided, default allowedOrigins to [window.location.origin].
18
+ * - Server-like options:
19
+ * - If neither allowedOrigins nor validateOrigin is provided, default allowedOrigins to [window.location.origin].
20
+ *
21
+ * Notes:
22
+ * - This intentionally makes cross-origin setups fail fast unless user explicitly configures
23
+ * targetOrigin and allowedOrigins/validateOrigin.
24
+ */
25
+
26
+ export function getCurrentWindowOrigin() {
27
+ try {
28
+ var _window$location;
29
+ if (typeof window === 'undefined') return undefined;
30
+ var origin = (_window$location = window.location) === null || _window$location === void 0 ? void 0 : _window$location.origin;
31
+ if (typeof origin === 'string' && origin) return origin;
32
+ } catch (_unused) {
33
+ /** ignore */
34
+ }
35
+ return undefined;
36
+ }
37
+ export function applyStrictClientSecurityDefaults(defaultTargetOrigin, options) {
38
+ var _options$targetOrigin;
39
+ var strict = (options === null || options === void 0 ? void 0 : options.strict) === true;
40
+ var targetOrigin = (_options$targetOrigin = options === null || options === void 0 ? void 0 : options.targetOrigin) !== null && _options$targetOrigin !== void 0 ? _options$targetOrigin : defaultTargetOrigin;
41
+ var allowedOrigins = options === null || options === void 0 ? void 0 : options.allowedOrigins;
42
+ if (strict) {
43
+ var currentOrigin = getCurrentWindowOrigin();
44
+ if (currentOrigin) {
45
+ if (!(options !== null && options !== void 0 && options.targetOrigin)) {
46
+ targetOrigin = currentOrigin;
47
+ }
48
+ if (!(options !== null && options !== void 0 && options.allowedOrigins) && !(options !== null && options !== void 0 && options.validateOrigin)) {
49
+ allowedOrigins = [currentOrigin];
50
+ }
51
+ }
52
+ }
53
+ if (!options) {
54
+ return {
55
+ targetOrigin,
56
+ options: options
57
+ };
58
+ }
59
+ if (targetOrigin === options.targetOrigin && allowedOrigins === options.allowedOrigins) {
60
+ return {
61
+ targetOrigin,
62
+ options
63
+ };
64
+ }
65
+ return {
66
+ targetOrigin,
67
+ options: _objectSpread(_objectSpread(_objectSpread({}, options), targetOrigin !== options.targetOrigin ? {
68
+ targetOrigin
69
+ } : null), allowedOrigins !== options.allowedOrigins ? {
70
+ allowedOrigins
71
+ } : null)
72
+ };
73
+ }
74
+ export function applyStrictServerSecurityDefaults(options) {
75
+ var strict = (options === null || options === void 0 ? void 0 : options.strict) === true;
76
+ if (!strict) return options;
77
+ if (options !== null && options !== void 0 && options.allowedOrigins || options !== null && options !== void 0 && options.validateOrigin) {
78
+ return options;
79
+ }
80
+ var currentOrigin = getCurrentWindowOrigin();
81
+ if (!currentOrigin) return options;
82
+ return _objectSpread(_objectSpread({}, options), {}, {
83
+ allowedOrigins: [currentOrigin]
84
+ });
85
+ }
@@ -0,0 +1,30 @@
1
+ import "core-js/modules/es.array.iterator.js";
2
+ import "core-js/modules/es.set.js";
3
+ import "core-js/modules/esnext.global-this.js";
4
+ import "core-js/modules/web.dom-collections.iterator.js";
5
+ /**
6
+ * A simple global warn-once helper.
7
+ *
8
+ * Why:
9
+ * - Some warnings need to fire before a hub/client/server instance exists (e.g. api factory functions).
10
+ * - We use Symbol.for() so multiple bundles/versions can share the same dedupe storage.
11
+ */
12
+
13
+ var WARN_ONCE_SYMBOL = Symbol.for('__requestIframeWarnOnce__');
14
+ function getHost() {
15
+ if (typeof window !== 'undefined') return window;
16
+ return globalThis;
17
+ }
18
+ function getWarnOnceSet() {
19
+ var host = getHost();
20
+ if (!(WARN_ONCE_SYMBOL in host)) {
21
+ host[WARN_ONCE_SYMBOL] = new Set();
22
+ }
23
+ return host[WARN_ONCE_SYMBOL];
24
+ }
25
+ export function warnOnce(key, fn) {
26
+ var set = getWarnOnceSet();
27
+ if (set.has(key)) return;
28
+ set.add(key);
29
+ fn();
30
+ }
@@ -0,0 +1,47 @@
1
+ import { LogLevel, OriginConstant, WarnOnceKey, buildWarnOnceKey, Messages, formatMessage } from '../constants';
2
+ import { logger } from './logger';
3
+
4
+ /**
5
+ * Minimal "warnOnce host" interface.
6
+ *
7
+ * Why:
8
+ * - We want to reuse the hub-level warnOnce mechanism without importing endpoint internals here.
9
+ */
10
+
11
+ /**
12
+ * Warn when using `targetOrigin="*"` for Window targets without any incoming origin validation.
13
+ *
14
+ * Why:
15
+ * - For `Window` targets, default `targetOrigin` is '*'.
16
+ * - If user does not configure `allowedOrigins` / `validateOrigin`, origin validation is effectively disabled.
17
+ * - This is a best-practice/security warning and is logged once (INFO level) to avoid noise.
18
+ */
19
+ export function warnUnsafeTargetOriginForWindow(params) {
20
+ if (params.isIframeTarget) return;
21
+ if (params.targetOrigin !== OriginConstant.ANY) return;
22
+ if (params.allowedOrigins || params.validateOrigin) return;
23
+ logger.once(LogLevel.INFO, buildWarnOnceKey(WarnOnceKey.TARGET_ORIGIN_ANY_WITHOUT_ORIGIN_VALIDATION), '[Security] targetOrigin is "*" for Window targets and no allowedOrigins/validateOrigin is configured. ' + 'Consider setting a strict targetOrigin and allowedOrigins/validateOrigin.');
24
+ }
25
+
26
+ /**
27
+ * Warn once when a client-side endpoint is already closed/destroyed and an inbound message arrives
28
+ * without a matching pending request.
29
+ *
30
+ * This is a debugging hint (warn level) because it often indicates lifecycle issues:
31
+ * - the client/server instance was recreated/unmounted before the response arrived
32
+ */
33
+ export function warnClientServerIgnoredMessageWhenClosedOnce(host, params) {
34
+ host.warnOnce(buildWarnOnceKey(WarnOnceKey.INBOX_MISSING_PENDING_WHEN_CLOSED, params.requestId), () => {
35
+ logger.warn(formatMessage(Messages.CLIENT_SERVER_IGNORED_MESSAGE_WHEN_CLOSED, params.type, params.requestId));
36
+ });
37
+ }
38
+
39
+ /**
40
+ * Warn once when a server-side endpoint is already closed/destroyed and it receives a message
41
+ * that cannot be matched to a pending waiter (e.g. ack/pong/stream control frames).
42
+ */
43
+ export function warnServerIgnoredMessageWhenClosedOnce(host, params) {
44
+ host.warnOnce(buildWarnOnceKey(WarnOnceKey.SERVER_MISSING_PENDING_WHEN_CLOSED, params.type, params.requestId), () => {
45
+ logger.warn(formatMessage(Messages.SERVER_IGNORED_MESSAGE_WHEN_CLOSED, params.type, params.requestId));
46
+ });
47
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAS1F;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,iBAAiB,GAAG,MAAM,EAClC,OAAO,CAAC,EAAE,0BAA0B,GACnC,mBAAmB,CA2DrB;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAQtE"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAW1F;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,iBAAiB,GAAG,MAAM,EAClC,OAAO,CAAC,EAAE,0BAA0B,GACnC,mBAAmB,CAgFrB;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAQtE"}
@@ -8,10 +8,12 @@ exports.requestIframeClient = requestIframeClient;
8
8
  var _iframe = require("../utils/iframe");
9
9
  var _id = require("../utils/id");
10
10
  var _client = require("../impl/client");
11
- var _debug = require("../utils/debug");
12
11
  var _logger = require("../utils/logger");
13
12
  var _constants = require("../constants");
14
13
  var _channelCache = require("../message/channel-cache");
14
+ var _warnings = require("../utils/warnings");
15
+ var _debugLazy = require("../utils/debug-lazy");
16
+ var _strictMode = require("../utils/strict-mode");
15
17
  /**
16
18
  * Create a client (for sending requests)
17
19
  *
@@ -21,12 +23,13 @@ var _channelCache = require("../message/channel-cache");
21
23
  * - This allows different versions of the library to coexist
22
24
  */
23
25
  function requestIframeClient(target, options) {
26
+ var _resolved$options;
24
27
  var targetWindow = null;
25
- var targetOrigin = _constants.OriginConstant.ANY;
28
+ var defaultTargetOrigin = _constants.OriginConstant.ANY;
26
29
  if (target.tagName === 'IFRAME') {
27
30
  var iframe = target;
28
31
  targetWindow = iframe.contentWindow;
29
- targetOrigin = (0, _iframe.getIframeTargetOrigin)(iframe);
32
+ defaultTargetOrigin = (0, _iframe.getIframeTargetOrigin)(iframe);
30
33
  if (!targetWindow) {
31
34
  throw {
32
35
  message: _constants.Messages.IFRAME_NOT_READY,
@@ -35,16 +38,26 @@ function requestIframeClient(target, options) {
35
38
  }
36
39
  } else {
37
40
  targetWindow = target;
38
- targetOrigin = _constants.OriginConstant.ANY;
41
+ defaultTargetOrigin = _constants.OriginConstant.ANY;
39
42
  }
43
+ var resolved = (0, _strictMode.applyStrictClientSecurityDefaults)(defaultTargetOrigin, options);
44
+ var targetOrigin = resolved.targetOrigin;
45
+ var resolvedOptions = (_resolved$options = resolved.options) !== null && _resolved$options !== void 0 ? _resolved$options : options;
40
46
 
41
- // Allow user to override targetOrigin explicitly
42
- if (options !== null && options !== void 0 && options.targetOrigin) {
43
- targetOrigin = options.targetOrigin;
44
- }
47
+ /**
48
+ * P1: warn on unsafe default targetOrigin for Window targets.
49
+ * - If targetOrigin is '*' and user did not configure allowedOrigins/validateOrigin,
50
+ * incoming message origin validation is effectively disabled.
51
+ */
52
+ (0, _warnings.warnUnsafeTargetOriginForWindow)({
53
+ isIframeTarget: target.tagName === 'IFRAME',
54
+ targetOrigin,
55
+ allowedOrigins: resolvedOptions === null || resolvedOptions === void 0 ? void 0 : resolvedOptions.allowedOrigins,
56
+ validateOrigin: resolvedOptions === null || resolvedOptions === void 0 ? void 0 : resolvedOptions.validateOrigin
57
+ });
45
58
 
46
59
  // Determine secretKey
47
- var secretKey = options === null || options === void 0 ? void 0 : options.secretKey;
60
+ var secretKey = resolvedOptions === null || resolvedOptions === void 0 ? void 0 : resolvedOptions.secretKey;
48
61
 
49
62
  // Generate instance ID first (will be used by both client and server)
50
63
  var instanceId = (0, _id.generateInstanceId)();
@@ -52,16 +65,16 @@ function requestIframeClient(target, options) {
52
65
  // Create client instance (internally creates its core message server)
53
66
  var client = new _client.RequestIframeClientImpl(targetWindow, targetOrigin, {
54
67
  secretKey,
55
- ackTimeout: options === null || options === void 0 ? void 0 : options.ackTimeout,
56
- timeout: options === null || options === void 0 ? void 0 : options.timeout,
57
- asyncTimeout: options === null || options === void 0 ? void 0 : options.asyncTimeout,
58
- returnData: options === null || options === void 0 ? void 0 : options.returnData,
59
- headers: options === null || options === void 0 ? void 0 : options.headers,
60
- allowedOrigins: options === null || options === void 0 ? void 0 : options.allowedOrigins,
61
- validateOrigin: options === null || options === void 0 ? void 0 : options.validateOrigin,
62
- autoOpen: options === null || options === void 0 ? void 0 : options.autoOpen,
63
- autoAckMaxMetaLength: options === null || options === void 0 ? void 0 : options.autoAckMaxMetaLength,
64
- autoAckMaxIdLength: options === null || options === void 0 ? void 0 : options.autoAckMaxIdLength
68
+ ackTimeout: resolvedOptions === null || resolvedOptions === void 0 ? void 0 : resolvedOptions.ackTimeout,
69
+ timeout: resolvedOptions === null || resolvedOptions === void 0 ? void 0 : resolvedOptions.timeout,
70
+ asyncTimeout: resolvedOptions === null || resolvedOptions === void 0 ? void 0 : resolvedOptions.asyncTimeout,
71
+ returnData: resolvedOptions === null || resolvedOptions === void 0 ? void 0 : resolvedOptions.returnData,
72
+ headers: resolvedOptions === null || resolvedOptions === void 0 ? void 0 : resolvedOptions.headers,
73
+ allowedOrigins: resolvedOptions === null || resolvedOptions === void 0 ? void 0 : resolvedOptions.allowedOrigins,
74
+ validateOrigin: resolvedOptions === null || resolvedOptions === void 0 ? void 0 : resolvedOptions.validateOrigin,
75
+ autoOpen: resolvedOptions === null || resolvedOptions === void 0 ? void 0 : resolvedOptions.autoOpen,
76
+ autoAckMaxMetaLength: resolvedOptions === null || resolvedOptions === void 0 ? void 0 : resolvedOptions.autoAckMaxMetaLength,
77
+ autoAckMaxIdLength: resolvedOptions === null || resolvedOptions === void 0 ? void 0 : resolvedOptions.autoAckMaxIdLength
65
78
  }, instanceId);
66
79
 
67
80
  /**
@@ -69,11 +82,21 @@ function requestIframeClient(target, options) {
69
82
  * - default: only warn/error will be printed (logger default)
70
83
  * - if trace enabled: raise log level and (optionally) enable detailed debug interceptors
71
84
  */
72
- if (options !== null && options !== void 0 && options.trace) {
73
- var level = options.trace === true ? _constants.LogLevel.TRACE : options.trace;
85
+ if (resolvedOptions !== null && resolvedOptions !== void 0 && resolvedOptions.trace) {
86
+ var level = resolvedOptions.trace === true ? _constants.LogLevel.TRACE : resolvedOptions.trace;
74
87
  (0, _logger.setRequestIframeLogLevel)(level);
75
88
  if (level === _constants.LogLevel.TRACE || level === _constants.LogLevel.INFO) {
76
- (0, _debug.setupClientDebugInterceptors)(client);
89
+ /**
90
+ * Lazy-load debug hooks to keep main bundle smaller, but still ensure
91
+ * the first request in trace mode won't miss debug interceptors.
92
+ */
93
+ (0, _debugLazy.wrapClientMethodsForDebug)(client);
94
+ // Preheat import early (best-effort)
95
+ void (0, _debugLazy.loadDebugModule)().catch(() => {
96
+ /** ignore */
97
+ });
98
+ // Attach ASAP (best-effort)
99
+ void (0, _debugLazy.ensureClientDebugInterceptors)(client);
77
100
  }
78
101
  }
79
102
  return client;
@@ -1 +1 @@
1
- {"version":3,"file":"endpoint.d.ts","sourceRoot":"","sources":["../../src/api/endpoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,mBAAmB,EACnB,mBAAmB,EACnB,0BAA0B,EAC1B,0BAA0B,EAC3B,MAAM,UAAU,CAAC;AAUlB;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,mBAAmB,GAAG,mBAAmB,CAAC;AAE9E;;;;;;;GAOG;AACH,MAAM,MAAM,4BAA4B,GAAG,0BAA0B,GAAG,0BAA0B,CAAC;AA8LnG;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,iBAAiB,GAAG,MAAM,EAClC,OAAO,CAAC,EAAE,4BAA4B,GACrC,qBAAqB,CAoCvB"}
1
+ {"version":3,"file":"endpoint.d.ts","sourceRoot":"","sources":["../../src/api/endpoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,mBAAmB,EACnB,mBAAmB,EACnB,0BAA0B,EAC1B,0BAA0B,EAC3B,MAAM,UAAU,CAAC;AAYlB;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,mBAAmB,GAAG,mBAAmB,CAAC;AAE9E;;;;;;;GAOG;AACH,MAAM,MAAM,4BAA4B,GAAG,0BAA0B,GAAG,0BAA0B,CAAC;AAsMnG;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,iBAAiB,GAAG,MAAM,EAClC,OAAO,CAAC,EAAE,4BAA4B,GACrC,qBAAqB,CA8CvB"}
@@ -12,9 +12,11 @@ var _id = require("../utils/id");
12
12
  var _window = require("../utils/window");
13
13
  var _client = require("../impl/client");
14
14
  var _server = require("../impl/server");
15
- var _debug = require("../utils/debug");
16
15
  var _logger = require("../utils/logger");
17
16
  var _constants = require("../constants");
17
+ var _warnings = require("../utils/warnings");
18
+ var _debugLazy = require("../utils/debug-lazy");
19
+ var _strictMode = require("../utils/strict-mode");
18
20
  /**
19
21
  * Endpoint facade type (client + server).
20
22
  */
@@ -77,7 +79,11 @@ class RequestIframeEndpointApiFacade {
77
79
  var level = options.trace === true ? _constants.LogLevel.TRACE : options.trace;
78
80
  (0, _logger.setRequestIframeLogLevel)(level);
79
81
  if (level === _constants.LogLevel.TRACE || level === _constants.LogLevel.INFO) {
80
- (0, _debug.setupClientDebugInterceptors)(client);
82
+ (0, _debugLazy.wrapClientMethodsForDebug)(client);
83
+ void (0, _debugLazy.loadDebugModule)().catch(() => {
84
+ /** ignore */
85
+ });
86
+ void (0, _debugLazy.ensureClientDebugInterceptors)(client);
81
87
  }
82
88
  }
83
89
  this.client_ = client;
@@ -112,7 +118,9 @@ class RequestIframeEndpointApiFacade {
112
118
  var level = options.trace === true ? _constants.LogLevel.TRACE : options.trace;
113
119
  (0, _logger.setRequestIframeLogLevel)(level);
114
120
  if (level === _constants.LogLevel.TRACE || level === _constants.LogLevel.INFO) {
115
- (0, _debug.setupServerDebugListeners)(server);
121
+ void (0, _debugLazy.loadDebugModule)().then(m => m.setupServerDebugListeners(server)).catch(() => {
122
+ /** ignore */
123
+ });
116
124
  }
117
125
  }
118
126
  this.server_ = server;
@@ -198,13 +206,13 @@ class RequestIframeEndpointApiFacade {
198
206
  * - handle requests from the peer (server)
199
207
  */
200
208
  function requestIframeEndpoint(target, options) {
201
- var _options$id;
209
+ var _applyStrictServerSec, _resolvedClient$optio, _resolvedClient$optio2, _resolvedOptions$id;
202
210
  var targetWindow = null;
203
- var targetOrigin = _constants.OriginConstant.ANY;
211
+ var defaultTargetOrigin = _constants.OriginConstant.ANY;
204
212
  if (target.tagName === 'IFRAME') {
205
213
  var iframe = target;
206
214
  targetWindow = iframe.contentWindow;
207
- targetOrigin = (0, _iframe.getIframeTargetOrigin)(iframe);
215
+ defaultTargetOrigin = (0, _iframe.getIframeTargetOrigin)(iframe);
208
216
  if (!targetWindow) {
209
217
  throw {
210
218
  message: _constants.Messages.IFRAME_NOT_READY,
@@ -213,23 +221,32 @@ function requestIframeEndpoint(target, options) {
213
221
  }
214
222
  } else {
215
223
  targetWindow = target;
216
- targetOrigin = _constants.OriginConstant.ANY;
224
+ defaultTargetOrigin = _constants.OriginConstant.ANY;
217
225
  }
226
+ var resolvedClient = (0, _strictMode.applyStrictClientSecurityDefaults)(defaultTargetOrigin, options);
227
+ var targetOrigin = resolvedClient.targetOrigin;
228
+ var resolvedOptions = (_applyStrictServerSec = (0, _strictMode.applyStrictServerSecurityDefaults)((_resolvedClient$optio = resolvedClient.options) !== null && _resolvedClient$optio !== void 0 ? _resolvedClient$optio : options)) !== null && _applyStrictServerSec !== void 0 ? _applyStrictServerSec : (_resolvedClient$optio2 = resolvedClient.options) !== null && _resolvedClient$optio2 !== void 0 ? _resolvedClient$optio2 : options;
218
229
 
219
- /** Allow user to override targetOrigin explicitly */
220
- if (options !== null && options !== void 0 && options.targetOrigin) {
221
- targetOrigin = options.targetOrigin;
222
- }
230
+ /**
231
+ * P1: warn on unsafe default targetOrigin for Window targets.
232
+ * Endpoint facade is lazy (client/server created later), so warn here.
233
+ */
234
+ (0, _warnings.warnUnsafeTargetOriginForWindow)({
235
+ isIframeTarget: target.tagName === 'IFRAME',
236
+ targetOrigin,
237
+ allowedOrigins: resolvedOptions === null || resolvedOptions === void 0 ? void 0 : resolvedOptions.allowedOrigins,
238
+ validateOrigin: resolvedOptions === null || resolvedOptions === void 0 ? void 0 : resolvedOptions.validateOrigin
239
+ });
223
240
 
224
241
  /**
225
242
  * Endpoint uses ONE shared id by default, so it behaves like a single endpoint.
226
243
  * If options.id is provided, it becomes the shared id for both client+server.
227
244
  */
228
- var endpointId = (_options$id = options === null || options === void 0 ? void 0 : options.id) !== null && _options$id !== void 0 ? _options$id : (0, _id.generateInstanceId)();
245
+ var endpointId = (_resolvedOptions$id = resolvedOptions === null || resolvedOptions === void 0 ? void 0 : resolvedOptions.id) !== null && _resolvedOptions$id !== void 0 ? _resolvedOptions$id : (0, _id.generateInstanceId)();
229
246
  return new RequestIframeEndpointApiFacade({
230
247
  targetWindow,
231
248
  targetOrigin,
232
- options,
249
+ options: resolvedOptions,
233
250
  endpointId
234
251
  });
235
252
  }
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/api/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAO3E;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,CAAC,EAAE,0BAA0B,GACnC,mBAAmB,CA6CrB;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,GAAG,CAAC,EAAE,MAAM,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,GACjD,IAAI,CAGN"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/api/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAQ3E;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,CAAC,EAAE,0BAA0B,GACnC,mBAAmB,CAsDrB;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,GAAG,CAAC,EAAE,MAAM,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,GACjD,IAAI,CAGN"}
@@ -6,10 +6,11 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.clearRequestIframeServerCache = clearRequestIframeServerCache;
7
7
  exports.requestIframeServer = requestIframeServer;
8
8
  var _server = require("../impl/server");
9
- var _debug = require("../utils/debug");
10
9
  var _logger = require("../utils/logger");
11
10
  var _cache = require("../utils/cache");
12
11
  var _constants = require("../constants");
12
+ var _debugLazy = require("../utils/debug-lazy");
13
+ var _strictMode = require("../utils/strict-mode");
13
14
  /**
14
15
  * Create a server (for receiving and handling requests)
15
16
  *
@@ -20,9 +21,11 @@ var _constants = require("../constants");
20
21
  * - This allows different versions of the library to coexist
21
22
  */
22
23
  function requestIframeServer(options) {
24
+ var _applyStrictServerSec;
25
+ var resolvedOptions = (_applyStrictServerSec = (0, _strictMode.applyStrictServerSecurityDefaults)(options)) !== null && _applyStrictServerSec !== void 0 ? _applyStrictServerSec : options;
23
26
  // Determine secretKey and id
24
- var secretKey = options === null || options === void 0 ? void 0 : options.secretKey;
25
- var id = options === null || options === void 0 ? void 0 : options.id;
27
+ var secretKey = resolvedOptions === null || resolvedOptions === void 0 ? void 0 : resolvedOptions.secretKey;
28
+ var id = resolvedOptions === null || resolvedOptions === void 0 ? void 0 : resolvedOptions.id;
26
29
 
27
30
  // If id is specified, check cache first
28
31
  if (id) {
@@ -36,13 +39,13 @@ function requestIframeServer(options) {
36
39
  var server = new _server.RequestIframeServerImpl({
37
40
  secretKey,
38
41
  id,
39
- ackTimeout: options === null || options === void 0 ? void 0 : options.ackTimeout,
40
- autoOpen: options === null || options === void 0 ? void 0 : options.autoOpen,
41
- allowedOrigins: options === null || options === void 0 ? void 0 : options.allowedOrigins,
42
- validateOrigin: options === null || options === void 0 ? void 0 : options.validateOrigin,
43
- maxConcurrentRequestsPerClient: options === null || options === void 0 ? void 0 : options.maxConcurrentRequestsPerClient,
44
- autoAckMaxMetaLength: options === null || options === void 0 ? void 0 : options.autoAckMaxMetaLength,
45
- autoAckMaxIdLength: options === null || options === void 0 ? void 0 : options.autoAckMaxIdLength
42
+ ackTimeout: resolvedOptions === null || resolvedOptions === void 0 ? void 0 : resolvedOptions.ackTimeout,
43
+ autoOpen: resolvedOptions === null || resolvedOptions === void 0 ? void 0 : resolvedOptions.autoOpen,
44
+ allowedOrigins: resolvedOptions === null || resolvedOptions === void 0 ? void 0 : resolvedOptions.allowedOrigins,
45
+ validateOrigin: resolvedOptions === null || resolvedOptions === void 0 ? void 0 : resolvedOptions.validateOrigin,
46
+ maxConcurrentRequestsPerClient: resolvedOptions === null || resolvedOptions === void 0 ? void 0 : resolvedOptions.maxConcurrentRequestsPerClient,
47
+ autoAckMaxMetaLength: resolvedOptions === null || resolvedOptions === void 0 ? void 0 : resolvedOptions.autoAckMaxMetaLength,
48
+ autoAckMaxIdLength: resolvedOptions === null || resolvedOptions === void 0 ? void 0 : resolvedOptions.autoAckMaxIdLength
46
49
  });
47
50
 
48
51
  /**
@@ -50,11 +53,17 @@ function requestIframeServer(options) {
50
53
  * - default: only warn/error will be printed (logger default)
51
54
  * - if trace enabled: raise log level and (optionally) enable detailed debug listeners
52
55
  */
53
- if (options !== null && options !== void 0 && options.trace) {
54
- var level = options.trace === true ? _constants.LogLevel.TRACE : options.trace;
56
+ if (resolvedOptions !== null && resolvedOptions !== void 0 && resolvedOptions.trace) {
57
+ var level = resolvedOptions.trace === true ? _constants.LogLevel.TRACE : resolvedOptions.trace;
55
58
  (0, _logger.setRequestIframeLogLevel)(level);
56
59
  if (level === _constants.LogLevel.TRACE || level === _constants.LogLevel.INFO) {
57
- (0, _debug.setupServerDebugListeners)(server);
60
+ /**
61
+ * Lazy-load debug hooks to keep main bundle smaller.
62
+ * Best-effort: ignore dynamic import errors.
63
+ */
64
+ void (0, _debugLazy.loadDebugModule)().then(m => m.setupServerDebugListeners(server)).catch(() => {
65
+ /** ignore */
66
+ });
58
67
  }
59
68
  }
60
69
 
@@ -6,6 +6,12 @@
6
6
  export declare const WarnOnceKey: {
7
7
  readonly INBOX_MISSING_PENDING_WHEN_CLOSED: "inbox:missingPendingWhenClosed";
8
8
  readonly SERVER_MISSING_PENDING_WHEN_CLOSED: "server:missingPendingWhenClosed";
9
+ /**
10
+ * Security warning:
11
+ * - targetOrigin is '*'
12
+ * - and no allowedOrigins/validateOrigin is configured
13
+ */
14
+ readonly TARGET_ORIGIN_ANY_WITHOUT_ORIGIN_VALIDATION: "targetOrigin:anyWithoutOriginValidation";
9
15
  };
10
16
  export type WarnOnceKeyValue = typeof WarnOnceKey[keyof typeof WarnOnceKey];
11
17
  export declare function buildWarnOnceKey(prefix: WarnOnceKeyValue, ...parts: Array<string | number>): string;
@@ -1 +1 @@
1
- {"version":3,"file":"warn-once.d.ts","sourceRoot":"","sources":["../../src/constants/warn-once.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,WAAW;;;CAGd,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,OAAO,WAAW,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AAE5E,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,CAGnG"}
1
+ {"version":3,"file":"warn-once.d.ts","sourceRoot":"","sources":["../../src/constants/warn-once.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,WAAW;;;IAGtB;;;;OAIG;;CAEK,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,OAAO,WAAW,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AAE5E,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,CAGnG"}
@@ -14,7 +14,13 @@ require("core-js/modules/es.array.map.js");
14
14
 
15
15
  var WarnOnceKey = exports.WarnOnceKey = {
16
16
  INBOX_MISSING_PENDING_WHEN_CLOSED: 'inbox:missingPendingWhenClosed',
17
- SERVER_MISSING_PENDING_WHEN_CLOSED: 'server:missingPendingWhenClosed'
17
+ SERVER_MISSING_PENDING_WHEN_CLOSED: 'server:missingPendingWhenClosed',
18
+ /**
19
+ * Security warning:
20
+ * - targetOrigin is '*'
21
+ * - and no allowedOrigins/validateOrigin is configured
22
+ */
23
+ TARGET_ORIGIN_ANY_WITHOUT_ORIGIN_VALIDATION: 'targetOrigin:anyWithoutOriginValidation'
18
24
  };
19
25
  function buildWarnOnceKey(prefix, ...parts) {
20
26
  if (!parts.length) return prefix;
@@ -12,5 +12,4 @@ export { RequestIframeEndpointFacade } from './facade';
12
12
  export { createStreamMessageHandler } from './stream/handler';
13
13
  export { buildStreamStartTimeoutErrorPayload } from './stream/errors';
14
14
  export { autoResolveIframeFileReadableStream, parseFilenameFromContentDisposition } from './stream/file-auto-resolve';
15
- export { createIframeFileWritableStreamFromContent } from './stream/file-writable';
16
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/endpoint/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,YAAY,EAAE,+BAA+B,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,8BAA8B,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AACnF,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,mCAAmC,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,mCAAmC,EAAE,mCAAmC,EAAE,MAAM,4BAA4B,CAAC;AACtH,OAAO,EAAE,yCAAyC,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/endpoint/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,YAAY,EAAE,+BAA+B,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,8BAA8B,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AACnF,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,mCAAmC,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,mCAAmC,EAAE,mCAAmC,EAAE,MAAM,4BAA4B,CAAC"}
@@ -57,12 +57,6 @@ Object.defineProperty(exports, "buildStreamStartTimeoutErrorPayload", {
57
57
  return _errors.buildStreamStartTimeoutErrorPayload;
58
58
  }
59
59
  });
60
- Object.defineProperty(exports, "createIframeFileWritableStreamFromContent", {
61
- enumerable: true,
62
- get: function get() {
63
- return _fileWritable.createIframeFileWritableStreamFromContent;
64
- }
65
- });
66
60
  Object.defineProperty(exports, "createPingResponder", {
67
61
  enumerable: true,
68
62
  get: function get() {
@@ -110,5 +104,4 @@ var _factory = require("./stream/factory");
110
104
  var _facade = require("./facade");
111
105
  var _handler = require("./stream/handler");
112
106
  var _errors = require("./stream/errors");
113
- var _fileAutoResolve = require("./stream/file-auto-resolve");
114
- var _fileWritable = require("./stream/file-writable");
107
+ var _fileAutoResolve = require("./stream/file-auto-resolve");
@@ -1 +1 @@
1
- {"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../../../src/endpoint/infra/inbox.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,OAAO,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AAoB5D;;;;;;;;GAQG;AACH,qBAAa,0BAA0B;IACrC,gBAAuB,gBAAgB,2BAA2B;IAClE,gBAAuB,kBAAkB,4BAA4B;IAErE,SAAgB,KAAK;;;qBAEkD,MAAM;;;;;MAI3E;IAEF,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA2B;IAC/C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;gBAEjC,GAAG,EAAE,wBAAwB,EAAE,gBAAgB,CAAC,EAAE,gBAAgB;IAKrF;;OAEG;IACI,gBAAgB,IAAI,IAAI;IAe/B;;;;;OAKG;IACI,aAAa,CAAC,MAAM,EAAE;QAC3B,IAAI,EAAE,2BAA2B,CAAC;QAClC,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;QACrC,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC;KAC/F,GAAG,OAAO,CAAC,OAAO,CAAC;IAoBpB;;OAEG;IACI,sBAAsB,CAC3B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,EACxC,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,EAC9B,MAAM,CAAC,EAAE,MAAM,EACf,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,cAAc,KAAK,OAAO,GAC5F,IAAI;IAKP;;OAEG;IACI,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKxD,OAAO,CAAC,UAAU;IAUlB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAW1B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAuE5B;;;;OAIG;IACH,OAAO,CAAC,UAAU;CAiCnB"}
1
+ {"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../../../src/endpoint/infra/inbox.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,OAAO,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AAqB5D;;;;;;;;GAQG;AACH,qBAAa,0BAA0B;IACrC,gBAAuB,gBAAgB,2BAA2B;IAClE,gBAAuB,kBAAkB,4BAA4B;IAErE,SAAgB,KAAK;;;qBAEkD,MAAM;;;;;MAI3E;IAEF,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA2B;IAC/C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;gBAEjC,GAAG,EAAE,wBAAwB,EAAE,gBAAgB,CAAC,EAAE,gBAAgB;IAKrF;;OAEG;IACI,gBAAgB,IAAI,IAAI;IAe/B;;;;;OAKG;IACI,aAAa,CAAC,MAAM,EAAE;QAC3B,IAAI,EAAE,2BAA2B,CAAC;QAClC,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;QACrC,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC;KAC/F,GAAG,OAAO,CAAC,OAAO,CAAC;IAoBpB;;OAEG;IACI,sBAAsB,CAC3B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,EACxC,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,EAC9B,MAAM,CAAC,EAAE,MAAM,EACf,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,cAAc,KAAK,OAAO,GAC5F,IAAI;IAKP;;OAEG;IACI,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKxD,OAAO,CAAC,UAAU;IAUlB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAW1B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAqE5B;;;;OAIG;IACH,OAAO,CAAC,UAAU;CAiCnB"}
@@ -12,7 +12,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
12
12
  var _constants = require("../../constants");
13
13
  var _ping = require("../heartbeat/ping");
14
14
  var _hooks = require("../../utils/hooks");
15
- var _logger = require("../../utils/logger");
15
+ var _warnings = require("../../utils/warnings");
16
16
  /**
17
17
  * Pending request awaiting response
18
18
  */
@@ -168,8 +168,9 @@ class RequestIframeEndpointInbox {
168
168
  */
169
169
  if (!this.hub.isOpen) {
170
170
  this.hooks.missingPending.call(data, context);
171
- this.hub.warnOnce((0, _constants.buildWarnOnceKey)(_constants.WarnOnceKey.INBOX_MISSING_PENDING_WHEN_CLOSED, data.requestId), () => {
172
- (0, _logger.requestIframeLog)('warn', (0, _constants.formatMessage)(_constants.Messages.CLIENT_SERVER_IGNORED_MESSAGE_WHEN_CLOSED, data.type, data.requestId));
171
+ (0, _warnings.warnClientServerIgnoredMessageWhenClosedOnce)(this.hub, {
172
+ type: data.type,
173
+ requestId: data.requestId
173
174
  });
174
175
  }
175
176
  return;
@@ -53,6 +53,8 @@ export interface RequestIframeOutboxSendFileParams<TResult> extends RequestIfram
53
53
  fileName?: string;
54
54
  mimeType?: string;
55
55
  chunked?: boolean;
56
+ /** Chunk size in bytes (only used when chunked is true). */
57
+ chunkSize?: number;
56
58
  autoResolve?: boolean;
57
59
  defaultFileName?: string;
58
60
  defaultMimeType?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"outbox.d.ts","sourceRoot":"","sources":["../../../src/endpoint/infra/outbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"outbox.d.ts","sourceRoot":"","sources":["../../../src/endpoint/infra/outbox.ts"],"names":[],"mappings":"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"}