@dynamic-labs-wallet/browser-wallet-client 1.0.31 → 1.0.32
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/index.cjs +60 -5
- package/index.esm.js +60 -5
- package/package.json +2 -2
- package/src/client/iframeManager/IframeManager.d.ts.map +1 -1
- package/src/services/createIframeWaasSDKContainer.d.ts.map +1 -1
- package/src/services/nonRetryableIframeLoadError.d.ts +8 -0
- package/src/services/nonRetryableIframeLoadError.d.ts.map +1 -0
package/index.cjs
CHANGED
|
@@ -272,6 +272,19 @@ const setupMessageTransportBridge = (messageTransport$1, iframe, iframeOrigin)=>
|
|
|
272
272
|
};
|
|
273
273
|
};
|
|
274
274
|
|
|
275
|
+
const NON_RETRYABLE_IFRAME_LOAD_ERROR_NAME = 'NonRetryableIframeLoadError';
|
|
276
|
+
/**
|
|
277
|
+
* Tags an iframe load failure that retrying cannot fix (e.g. the embedding
|
|
278
|
+
* page's CSP refusing to load our iframe) so IframeManager rejects the load
|
|
279
|
+
* immediately instead of waiting out the timeout and burning retries.
|
|
280
|
+
*/ const createNonRetryableIframeLoadError = (message)=>{
|
|
281
|
+
const error = new Error(message);
|
|
282
|
+
error.name = NON_RETRYABLE_IFRAME_LOAD_ERROR_NAME;
|
|
283
|
+
return error;
|
|
284
|
+
};
|
|
285
|
+
// Name-based check (not instanceof) so the tag survives bundler module duplication.
|
|
286
|
+
const isNonRetryableIframeLoadError = (error)=>error instanceof Error && error.name === NON_RETRYABLE_IFRAME_LOAD_ERROR_NAME;
|
|
287
|
+
|
|
275
288
|
const createIframeWaasSDKContainer = ()=>{
|
|
276
289
|
let iframe = null;
|
|
277
290
|
const messageHandlers = new Set();
|
|
@@ -308,19 +321,51 @@ const createIframeWaasSDKContainer = ()=>{
|
|
|
308
321
|
}
|
|
309
322
|
};
|
|
310
323
|
const cspViolationListener = (event)=>{
|
|
311
|
-
var _event_blockedURI, _event_violatedDirective, _event_violatedDirective1;
|
|
312
324
|
const iframeOrigin = (iframe == null ? void 0 : iframe.src) ? new URL(iframe.src).origin : undefined;
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
325
|
+
let blockedOrigin;
|
|
326
|
+
try {
|
|
327
|
+
blockedOrigin = event.blockedURI ? new URL(event.blockedURI).origin : undefined;
|
|
328
|
+
} catch (e) {
|
|
329
|
+
// blockedURI can be a non-URL keyword ("inline", "eval", "data", ...)
|
|
330
|
+
blockedOrigin = undefined;
|
|
331
|
+
}
|
|
332
|
+
// Violations for other origins (third-party widgets, analytics) are noise
|
|
333
|
+
// we never act on and dominated this log's volume — only OUR iframe
|
|
334
|
+
// origin is relevant.
|
|
335
|
+
if (!iframeOrigin || blockedOrigin !== iframeOrigin) return;
|
|
336
|
+
const context = {
|
|
316
337
|
blockedURI: event.blockedURI,
|
|
317
338
|
violatedDirective: event.violatedDirective,
|
|
339
|
+
disposition: event.disposition,
|
|
318
340
|
originalPolicy: event.originalPolicy,
|
|
319
341
|
sourceFile: event.sourceFile,
|
|
320
342
|
lineNumber: event.lineNumber,
|
|
321
343
|
columnNumber: event.columnNumber,
|
|
322
344
|
iframeOrigin
|
|
323
|
-
}
|
|
345
|
+
};
|
|
346
|
+
// Report-only policies (Content-Security-Policy-Report-Only) fire the
|
|
347
|
+
// same violation event but do NOT block anything — keep them visible and
|
|
348
|
+
// filterable without polluting error streams or aborting the load.
|
|
349
|
+
if (event.disposition === 'report') {
|
|
350
|
+
logger.info('Report-only CSP violation for the wallet iframe origin:', context);
|
|
351
|
+
return;
|
|
352
|
+
}
|
|
353
|
+
logger.error('CSP violation detected that may affect iframe loading:', context);
|
|
354
|
+
var _event_violatedDirective;
|
|
355
|
+
const directive = (_event_violatedDirective = event.violatedDirective) != null ? _event_violatedDirective : '';
|
|
356
|
+
const remediation = `the embedding page's Content-Security-Policy must allow ${iframeOrigin} ` + 'in both the frame-src (or child-src) and connect-src directives';
|
|
357
|
+
if (directive.includes('frame-src') || directive.includes('child-src')) {
|
|
358
|
+
// Hard block: the browser refuses to load the iframe at all, so the
|
|
359
|
+
// pending load can only end in a timeout. Fail it now with a
|
|
360
|
+
// non-retryable error — retrying cannot succeed until the CSP changes.
|
|
361
|
+
const message = `Dynamic wallet iframe blocked by CSP (${directive}): ${remediation}`;
|
|
362
|
+
logger.error(message);
|
|
363
|
+
fireError(createNonRetryableIframeLoadError(message));
|
|
364
|
+
} else if (directive.includes('connect-src')) {
|
|
365
|
+
// The iframe itself can still load, but requests to the wallet backend
|
|
366
|
+
// are blocked so wallet operations will fail. Warn — do not abort.
|
|
367
|
+
logger.warn(`Dynamic wallet requests blocked by CSP (connect-src): ${remediation}`);
|
|
368
|
+
}
|
|
324
369
|
};
|
|
325
370
|
return {
|
|
326
371
|
async setUrl (url) {
|
|
@@ -870,6 +915,16 @@ class IframeManager {
|
|
|
870
915
|
unsubscribeHandshake();
|
|
871
916
|
unsubscribeError();
|
|
872
917
|
waasSDKContainer.destroy();
|
|
918
|
+
// A non-retryable failure (e.g. the embedding page's CSP blocking
|
|
919
|
+
// the iframe) can only repeat — reject now instead of retrying or
|
|
920
|
+
// waiting out the remaining timeout.
|
|
921
|
+
if (isNonRetryableIframeLoadError(error)) {
|
|
922
|
+
this.logger.error('Iframe failed to load with a non-retryable error: ', error);
|
|
923
|
+
this.resetSharedWaasSDKContainer();
|
|
924
|
+
IframeManager.iframeLoadAttempts = 0;
|
|
925
|
+
reject(error);
|
|
926
|
+
return;
|
|
927
|
+
}
|
|
873
928
|
// Check if we should retry
|
|
874
929
|
if (IframeManager.iframeLoadAttempts <= IframeManager.maxRetryAttempts) {
|
|
875
930
|
const errorMsg = error instanceof Error ? error.message : String(error);
|
package/index.esm.js
CHANGED
|
@@ -271,6 +271,19 @@ const setupMessageTransportBridge = (messageTransport, iframe, iframeOrigin)=>{
|
|
|
271
271
|
};
|
|
272
272
|
};
|
|
273
273
|
|
|
274
|
+
const NON_RETRYABLE_IFRAME_LOAD_ERROR_NAME = 'NonRetryableIframeLoadError';
|
|
275
|
+
/**
|
|
276
|
+
* Tags an iframe load failure that retrying cannot fix (e.g. the embedding
|
|
277
|
+
* page's CSP refusing to load our iframe) so IframeManager rejects the load
|
|
278
|
+
* immediately instead of waiting out the timeout and burning retries.
|
|
279
|
+
*/ const createNonRetryableIframeLoadError = (message)=>{
|
|
280
|
+
const error = new Error(message);
|
|
281
|
+
error.name = NON_RETRYABLE_IFRAME_LOAD_ERROR_NAME;
|
|
282
|
+
return error;
|
|
283
|
+
};
|
|
284
|
+
// Name-based check (not instanceof) so the tag survives bundler module duplication.
|
|
285
|
+
const isNonRetryableIframeLoadError = (error)=>error instanceof Error && error.name === NON_RETRYABLE_IFRAME_LOAD_ERROR_NAME;
|
|
286
|
+
|
|
274
287
|
const createIframeWaasSDKContainer = ()=>{
|
|
275
288
|
let iframe = null;
|
|
276
289
|
const messageHandlers = new Set();
|
|
@@ -307,19 +320,51 @@ const createIframeWaasSDKContainer = ()=>{
|
|
|
307
320
|
}
|
|
308
321
|
};
|
|
309
322
|
const cspViolationListener = (event)=>{
|
|
310
|
-
var _event_blockedURI, _event_violatedDirective, _event_violatedDirective1;
|
|
311
323
|
const iframeOrigin = (iframe == null ? void 0 : iframe.src) ? new URL(iframe.src).origin : undefined;
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
324
|
+
let blockedOrigin;
|
|
325
|
+
try {
|
|
326
|
+
blockedOrigin = event.blockedURI ? new URL(event.blockedURI).origin : undefined;
|
|
327
|
+
} catch (e) {
|
|
328
|
+
// blockedURI can be a non-URL keyword ("inline", "eval", "data", ...)
|
|
329
|
+
blockedOrigin = undefined;
|
|
330
|
+
}
|
|
331
|
+
// Violations for other origins (third-party widgets, analytics) are noise
|
|
332
|
+
// we never act on and dominated this log's volume — only OUR iframe
|
|
333
|
+
// origin is relevant.
|
|
334
|
+
if (!iframeOrigin || blockedOrigin !== iframeOrigin) return;
|
|
335
|
+
const context = {
|
|
315
336
|
blockedURI: event.blockedURI,
|
|
316
337
|
violatedDirective: event.violatedDirective,
|
|
338
|
+
disposition: event.disposition,
|
|
317
339
|
originalPolicy: event.originalPolicy,
|
|
318
340
|
sourceFile: event.sourceFile,
|
|
319
341
|
lineNumber: event.lineNumber,
|
|
320
342
|
columnNumber: event.columnNumber,
|
|
321
343
|
iframeOrigin
|
|
322
|
-
}
|
|
344
|
+
};
|
|
345
|
+
// Report-only policies (Content-Security-Policy-Report-Only) fire the
|
|
346
|
+
// same violation event but do NOT block anything — keep them visible and
|
|
347
|
+
// filterable without polluting error streams or aborting the load.
|
|
348
|
+
if (event.disposition === 'report') {
|
|
349
|
+
logger.info('Report-only CSP violation for the wallet iframe origin:', context);
|
|
350
|
+
return;
|
|
351
|
+
}
|
|
352
|
+
logger.error('CSP violation detected that may affect iframe loading:', context);
|
|
353
|
+
var _event_violatedDirective;
|
|
354
|
+
const directive = (_event_violatedDirective = event.violatedDirective) != null ? _event_violatedDirective : '';
|
|
355
|
+
const remediation = `the embedding page's Content-Security-Policy must allow ${iframeOrigin} ` + 'in both the frame-src (or child-src) and connect-src directives';
|
|
356
|
+
if (directive.includes('frame-src') || directive.includes('child-src')) {
|
|
357
|
+
// Hard block: the browser refuses to load the iframe at all, so the
|
|
358
|
+
// pending load can only end in a timeout. Fail it now with a
|
|
359
|
+
// non-retryable error — retrying cannot succeed until the CSP changes.
|
|
360
|
+
const message = `Dynamic wallet iframe blocked by CSP (${directive}): ${remediation}`;
|
|
361
|
+
logger.error(message);
|
|
362
|
+
fireError(createNonRetryableIframeLoadError(message));
|
|
363
|
+
} else if (directive.includes('connect-src')) {
|
|
364
|
+
// The iframe itself can still load, but requests to the wallet backend
|
|
365
|
+
// are blocked so wallet operations will fail. Warn — do not abort.
|
|
366
|
+
logger.warn(`Dynamic wallet requests blocked by CSP (connect-src): ${remediation}`);
|
|
367
|
+
}
|
|
323
368
|
};
|
|
324
369
|
return {
|
|
325
370
|
async setUrl (url) {
|
|
@@ -869,6 +914,16 @@ class IframeManager {
|
|
|
869
914
|
unsubscribeHandshake();
|
|
870
915
|
unsubscribeError();
|
|
871
916
|
waasSDKContainer.destroy();
|
|
917
|
+
// A non-retryable failure (e.g. the embedding page's CSP blocking
|
|
918
|
+
// the iframe) can only repeat — reject now instead of retrying or
|
|
919
|
+
// waiting out the remaining timeout.
|
|
920
|
+
if (isNonRetryableIframeLoadError(error)) {
|
|
921
|
+
this.logger.error('Iframe failed to load with a non-retryable error: ', error);
|
|
922
|
+
this.resetSharedWaasSDKContainer();
|
|
923
|
+
IframeManager.iframeLoadAttempts = 0;
|
|
924
|
+
reject(error);
|
|
925
|
+
return;
|
|
926
|
+
}
|
|
872
927
|
// Check if we should retry
|
|
873
928
|
if (IframeManager.iframeLoadAttempts <= IframeManager.maxRetryAttempts) {
|
|
874
929
|
const errorMsg = error instanceof Error ? error.message : String(error);
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs-wallet/browser-wallet-client",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.32",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
7
|
-
"@dynamic-labs-wallet/core": "1.0.
|
|
7
|
+
"@dynamic-labs-wallet/core": "1.0.32",
|
|
8
8
|
"@dynamic-labs/logger": "^4.45.2",
|
|
9
9
|
"@dynamic-labs/message-transport": "^4.45.2"
|
|
10
10
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IframeManager.d.ts","sourceRoot":"","sources":["../../../src/client/iframeManager/IframeManager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAGR,KAAK,sBAAsB,EAK3B,KAAK,qBAAqB,EAG1B,KAAK,oBAAoB,EAEzB,KAAK,gBAAgB,EACtB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAOL,KAAK,iCAAiC,EACtC,KAAK,cAAc,EAEpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"IframeManager.d.ts","sourceRoot":"","sources":["../../../src/client/iframeManager/IframeManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createIframeWaasSDKContainer.d.ts","sourceRoot":"","sources":["../../src/services/createIframeWaasSDKContainer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"createIframeWaasSDKContainer.d.ts","sourceRoot":"","sources":["../../src/services/createIframeWaasSDKContainer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAIlE,eAAO,MAAM,4BAA4B,QAAO,gBA4L/C,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tags an iframe load failure that retrying cannot fix (e.g. the embedding
|
|
3
|
+
* page's CSP refusing to load our iframe) so IframeManager rejects the load
|
|
4
|
+
* immediately instead of waiting out the timeout and burning retries.
|
|
5
|
+
*/
|
|
6
|
+
export declare const createNonRetryableIframeLoadError: (message: string) => Error;
|
|
7
|
+
export declare const isNonRetryableIframeLoadError: (error: unknown) => error is Error;
|
|
8
|
+
//# sourceMappingURL=nonRetryableIframeLoadError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nonRetryableIframeLoadError.d.ts","sourceRoot":"","sources":["../../src/services/nonRetryableIframeLoadError.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,eAAO,MAAM,iCAAiC,YAAa,MAAM,KAAG,KAInE,CAAC;AAGF,eAAO,MAAM,6BAA6B,UAAW,OAAO,KAAG,KAAK,IAAI,KACO,CAAC"}
|