Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@phantasma/connect-react

Package Overview
Dependencies
Maintainers
2
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@phantasma/connect-react - npm Package Compare versions

Comparing version
0.1.1
to
0.1.2
+12
-0
components/AccountWidgetV1.tsx

@@ -17,2 +17,11 @@ "use client"

ctx.restore()
const onPageHide = () => {
if (ctx.cancel_connecting) {
void ctx.cancel_connecting()
}
}
window.addEventListener("pagehide", onPageHide)
return () => {
window.removeEventListener("pagehide", onPageHide)
}
}, [])

@@ -90,2 +99,5 @@

},
cancel_connecting: () => {
state.abort_pending_connect()
},
is_connecting: state.is_connecting,

@@ -92,0 +104,0 @@ wallet: state.conn == null ? undefined : pha_econn_to_conn_wallet(state.conn)

@@ -16,2 +16,11 @@ "use client";

ctx.restore();
const onPageHide = () => {
if (ctx.cancel_connecting) {
void ctx.cancel_connecting();
}
};
window.addEventListener("pagehide", onPageHide);
return () => {
window.removeEventListener("pagehide", onPageHide);
};
}, []);

@@ -45,2 +54,5 @@ function Connect() {

},
cancel_connecting: () => {
state.abort_pending_connect();
},
is_connecting: state.is_connecting,

@@ -47,0 +59,0 @@ wallet: state.conn == null ? undefined : (0, index_1.pha_econn_to_conn_wallet)(state.conn)

+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"AccountWidgetV1.js","sourceRoot":"","sources":["../../components/AccountWidgetV1.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;;;;AACZ,iCAAiC;AACjC,oDAAgD;AAChD,kEAAgJ;AAChJ,oCAAgF;AAChF,sDAAwD;AAExD,2CAAqC;AAExB,QAAA,eAAe,GAAG,IAAA,qBAAQ,EAAC,CAAC,MAExC,EAAE,EAAE;IACJ,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,CAAA;IAEpB,IAAA,iBAAS,EAAC,GAAG,EAAE;QACd,GAAG,CAAC,OAAO,EAAE,CAAA;IACd,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,SAAS,OAAO;QACf,OAAO,CACN,0CACC,uBAAC,eAAM,IACN,OAAO,EAAC,SAAS,EACjB,OAAO,EAAE,GAAG,EAAE;oBACb,GAAG,CAAC,OAAO,EAAE,CAAA;gBACd,CAAC,YAEA,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,GAC/C,GACJ,CACN,CAAA;IACF,CAAC;IAED,SAAS,GAAG;QACX,IAAI,CAAC,GAAG,GAAG,CAAC,MAAO,CAAC;QACpB,OAAO,CACN,wBAAC,4BAAY,eACZ,uBAAC,mCAAmB,IAAC,OAAO,kBAC3B,uBAAC,eAAM,IAAC,OAAO,EAAC,SAAS,YACxB,4CACC,iCAAW,EACX,0CAAM,IAAA,sBAAO,EAAC,CAAC,CAAC,OAAO,CAAC,GAAO,IAC1B,GACE,GACY,EACtB,wBAAC,mCAAmB,eACnB,uBAAC,gCAAgB,IAChB,OAAO,EAAE,GAAG,EAAE;gCACb,IAAA,wBAAS,EAAC,CAAC,CAAC,OAAO,CAAC,CAAA;4BACrB,CAAC,6BAGiB,EACnB,uBAAC,qCAAqB,KAAG,EACzB,uBAAC,gCAAgB,IAAC,OAAO,EAAC,aAAa,EACtC,OAAO,EAAE,GAAG,EAAE;gCACb,GAAG,CAAC,UAAU,EAAE,CAAA;4BACjB,CAAC,2BAGiB,IACE,IACP,CAEhB,CAAA;IACF,CAAC;IAED,OAAO,CACN,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAC9B,CAAA;AACF,CAAC,CAAC,CAAA;AAEW,QAAA,kBAAkB,GAAG,IAAA,qBAAQ,EAAC,CAAC,MAE3C,EAAE,EAAE;IACJ,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;IACtB,OAAO,CACN,uBAAC,uBAAe,IACf,GAAG,EAAE;YACJ,OAAO,EAAE,GAAG,EAAE;gBACb,KAAK,CAAC,OAAO,EAAE,CAAA;YAChB,CAAC;YACD,UAAU,EAAE,GAAG,EAAE;gBAChB,KAAK,CAAC,UAAU,EAAE,CAAA;YACnB,CAAC;YACD,OAAO,EAAE,GAAG,EAAE;gBACb,KAAK,CAAC,OAAO,EAAE,CAAA;YAChB,CAAC;YACD,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAA,gCAAwB,EAAC,KAAK,CAAC,IAAI,CAAC;SAC7E,GACA,CACF,CAAA;AACF,CAAC,CAAC,CAAA"}
{"version":3,"file":"AccountWidgetV1.js","sourceRoot":"","sources":["../../components/AccountWidgetV1.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;;;;AACZ,iCAAiC;AACjC,oDAAgD;AAChD,kEAAgJ;AAChJ,oCAAgF;AAChF,sDAAwD;AAExD,2CAAqC;AAExB,QAAA,eAAe,GAAG,IAAA,qBAAQ,EAAC,CAAC,MAExC,EAAE,EAAE;IACJ,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,CAAA;IAEpB,IAAA,iBAAS,EAAC,GAAG,EAAE;QACd,GAAG,CAAC,OAAO,EAAE,CAAA;QACb,MAAM,UAAU,GAAG,GAAG,EAAE;YACvB,IAAI,GAAG,CAAC,iBAAiB,EAAE,CAAC;gBAC3B,KAAK,GAAG,CAAC,iBAAiB,EAAE,CAAA;YAC7B,CAAC;QACF,CAAC,CAAA;QACD,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;QAC/C,OAAO,GAAG,EAAE;YACX,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;QACnD,CAAC,CAAA;IACF,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,SAAS,OAAO;QACf,OAAO,CACN,0CACC,uBAAC,eAAM,IACN,OAAO,EAAC,SAAS,EACjB,OAAO,EAAE,GAAG,EAAE;oBACb,GAAG,CAAC,OAAO,EAAE,CAAA;gBACd,CAAC,YAEA,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,GAC/C,GACJ,CACN,CAAA;IACF,CAAC;IAED,SAAS,GAAG;QACX,IAAI,CAAC,GAAG,GAAG,CAAC,MAAO,CAAC;QACpB,OAAO,CACN,wBAAC,4BAAY,eACZ,uBAAC,mCAAmB,IAAC,OAAO,kBAC3B,uBAAC,eAAM,IAAC,OAAO,EAAC,SAAS,YACxB,4CACC,iCAAW,EACX,0CAAM,IAAA,sBAAO,EAAC,CAAC,CAAC,OAAO,CAAC,GAAO,IAC1B,GACE,GACY,EACtB,wBAAC,mCAAmB,eACnB,uBAAC,gCAAgB,IAChB,OAAO,EAAE,GAAG,EAAE;gCACb,IAAA,wBAAS,EAAC,CAAC,CAAC,OAAO,CAAC,CAAA;4BACrB,CAAC,6BAGiB,EACnB,uBAAC,qCAAqB,KAAG,EACzB,uBAAC,gCAAgB,IAAC,OAAO,EAAC,aAAa,EACtC,OAAO,EAAE,GAAG,EAAE;gCACb,GAAG,CAAC,UAAU,EAAE,CAAA;4BACjB,CAAC,2BAGiB,IACE,IACP,CAEhB,CAAA;IACF,CAAC;IAED,OAAO,CACN,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAC9B,CAAA;AACF,CAAC,CAAC,CAAA;AAEW,QAAA,kBAAkB,GAAG,IAAA,qBAAQ,EAAC,CAAC,MAE3C,EAAE,EAAE;IACJ,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;IACtB,OAAO,CACN,uBAAC,uBAAe,IACf,GAAG,EAAE;YACJ,OAAO,EAAE,GAAG,EAAE;gBACb,KAAK,CAAC,OAAO,EAAE,CAAA;YAChB,CAAC;YACD,UAAU,EAAE,GAAG,EAAE;gBAChB,KAAK,CAAC,UAAU,EAAE,CAAA;YACnB,CAAC;YACD,OAAO,EAAE,GAAG,EAAE;gBACb,KAAK,CAAC,OAAO,EAAE,CAAA;YAChB,CAAC;YACD,iBAAiB,EAAE,GAAG,EAAE;gBACvB,KAAK,CAAC,qBAAqB,EAAE,CAAA;YAC9B,CAAC;YACD,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAA,gCAAwB,EAAC,KAAK,CAAC,IAAI,CAAC;SAC7E,GACA,CACF,CAAA;AACF,CAAC,CAAC,CAAA"}

@@ -8,2 +8,10 @@ import { EasyConnect } from "phantasma-sdk-ts";

type FailureClass = "transport" | "wallet";
type SocketHostAttempt = {
host: string | null;
success: boolean;
failure_class: FailureClass | null;
failure_message: string | null;
socket_transport: string | null;
socket_open: boolean;
};
type ConnectOptions = {

@@ -32,3 +40,8 @@ requiredVersion?: number;

local_socket_reachable: boolean | null;
browser_family: string | null;
public_origin: boolean | null;
brave_loopback_permission_suspected: boolean;
socket_host_attempts: SocketHostAttempt[];
socket_transport: string | null;
socket_host: string | null;
socket_open: boolean;

@@ -49,2 +62,3 @@ };

disconnect: () => void | Promise<void>;
cancel_connecting?: () => void | Promise<void>;
is_connecting?: boolean;

@@ -63,2 +77,3 @@ is_disconnecting?: boolean;

last_connect_diagnostics: ConnectAttemptDiagnostics | null;
private pending_conn;
constructor(connectOptions?: ConnectOptions);

@@ -69,5 +84,10 @@ private normalize_transport_mode;

private get connect_attempt_timeout_ms();
private current_origin_hostname;
private is_public_origin;
private detect_browser_family;
private to_sdk_provider_hint;
private classify_failure;
private is_connect_refusal;
private should_suspect_brave_loopback_permission_block;
private append_brave_loopback_permission_hint;
private probe_local_socket;

@@ -78,3 +98,2 @@ private detect_available_transports;

private write_session_config;
private build_auto_transport_queue;
private resolve_persist_config;

@@ -86,2 +105,6 @@ persist_config(): void;

restore(): void;
private safe_disconnect;
abort_pending_connect(): void;
private local_socket_hosts;
private connect_via_transport_host;
private connect_via_transport;

@@ -88,0 +111,0 @@ connect(configOverride?: ConnectOverride): Promise<void>;

@@ -37,2 +37,3 @@ "use strict";

this.last_connect_diagnostics = null;
this.pending_conn = null;
this.connect_options = connectOptions;

@@ -69,2 +70,48 @@ this.selected_transport_mode = this.normalize_transport_mode(connectOptions.transportMode);

}
current_origin_hostname() {
if (typeof window === "undefined") {
return null;
}
try {
return window.location.hostname;
}
catch (_a) {
return null;
}
}
is_public_origin() {
const hostname = this.current_origin_hostname();
if (hostname == null) {
return null;
}
const localHostnames = new Set([
"localhost",
"127.0.0.1",
"::1",
]);
return !localHostnames.has(hostname);
}
detect_browser_family() {
var _a;
if (typeof navigator === "undefined") {
return null;
}
const userAgent = (_a = navigator.userAgent) !== null && _a !== void 0 ? _a : "";
if ("brave" in navigator || /\bBrave\//i.test(userAgent)) {
return "brave";
}
if (/\bFirefox\//i.test(userAgent)) {
return "firefox";
}
if (/\bEdg\//i.test(userAgent)) {
return "edge";
}
if (/\bChrome\//i.test(userAgent)) {
return "chrome";
}
if (/\bSafari\//i.test(userAgent)) {
return "safari";
}
return null;
}
to_sdk_provider_hint(transport) {

@@ -105,2 +152,28 @@ return transport === "injected" ? "ecto" : "poltergeist";

}
should_suspect_brave_loopback_permission_block(transport, attempt) {
if (transport !== "local-socket") {
return false;
}
if (attempt.success || attempt.failureClass !== "transport") {
return false;
}
if (this.detect_browser_family() !== "brave") {
return false;
}
if (this.is_public_origin() !== true) {
return false;
}
if (attempt.socketOpen) {
return false;
}
if (attempt.hostAttempts.length === 0) {
return false;
}
return attempt.hostAttempts.every((hostAttempt) => hostAttempt.success === false &&
hostAttempt.socket_transport === "websocket" &&
hostAttempt.socket_open === false);
}
append_brave_loopback_permission_hint(message) {
return `${message}. Brave may be blocking public-site access to localhost wallet sockets. Allow localhost access for this site in brave://settings/content/localhostAccess or use Browser extension mode.`;
}
async probe_local_socket(timeoutMs = this.transport_detection_timeout_ms) {

@@ -136,7 +209,10 @@ if (typeof window === "undefined" || typeof WebSocket === "undefined") {

}
async detect_available_transports(requestedTransportMode = this.selected_transport_mode) {
async detect_available_transports(requestedTransportMode = this.selected_transport_mode, options = {}) {
var _a;
const includeLocalSocketProbe = (_a = options.includeLocalSocketProbe) !== null && _a !== void 0 ? _a : true;
const injected_transport_detected = typeof window !== "undefined" && "PhantasmaLinkSocket" in window;
// Explicit modes must not poke the other transport endpoint just to populate
// diagnostics. In particular, `I` must not touch the localhost PGL socket.
const local_socket_reachable = requestedTransportMode === "auto" || requestedTransportMode === "local-socket"
const local_socket_reachable = includeLocalSocketProbe &&
(requestedTransportMode === "auto" || requestedTransportMode === "local-socket")
? await this.probe_local_socket()

@@ -185,17 +261,2 @@ : null;

}
build_auto_transport_queue(availableTransports, savedTransport) {
if (savedTransport == null || !availableTransports.includes(savedTransport)) {
return {
queue: [...availableTransports],
selectionReason: "auto-prefer-injected-then-local-socket",
};
}
return {
queue: [
savedTransport,
...availableTransports.filter((transport) => transport !== savedTransport),
],
selectionReason: "auto-prefer-saved-transport-then-fallback",
};
}
resolve_persist_config(conn) {

@@ -219,4 +280,5 @@ return {

// for the next user-initiated connect attempt and must not silently reconnect.
// They also must not preflight localhost on mount, because background wallet
// socket probes change protocol behavior before the user has asked to connect.
if (this.selected_transport_mode !== "auto") {
void this.refresh_available_transports(this.selected_transport_mode);
return;

@@ -226,3 +288,2 @@ }

if (config == null) {
void this.refresh_available_transports("auto");
return;

@@ -244,4 +305,27 @@ }

}
async connect_via_transport(transport, options) {
safe_disconnect(conn, message) {
if (conn == null) {
return;
}
try {
conn.disconnect(message);
}
catch (_a) {
// Best-effort cleanup only.
}
}
abort_pending_connect() {
if (this.pending_conn == null) {
return;
}
const conn = this.pending_conn;
this.pending_conn = null;
this.safe_disconnect(conn, "Abort pending wallet connect");
}
local_socket_hosts() {
return ["127.0.0.1:7090", "localhost:7090"];
}
async connect_via_transport_host(transport, options) {
return await new Promise((resolve) => {
var _a, _b;
const conn = new phantasma_sdk_ts_1.EasyConnect([

@@ -252,3 +336,22 @@ String(options.requiredVersion),

]);
if (options.host != null) {
conn.link.host = options.host;
}
this.pending_conn = conn;
let settled = false;
const socketHost = (_b = (_a = conn.link.host) !== null && _a !== void 0 ? _a : options.host) !== null && _b !== void 0 ? _b : null;
const describeTransportFailure = (message) => transport === "local-socket" && socketHost != null
? `${message} (${socketHost})`
: message;
const buildHostAttempt = (result) => {
var _a;
return ({
host: socketHost,
success: result.success,
failure_class: result.success ? null : result.failureClass,
failure_message: result.success ? null : result.message,
socket_transport: (_a = conn.link.socketTransport) !== null && _a !== void 0 ? _a : null,
socket_open: conn.link.socketOpen,
});
};
const finalize = (result) => {

@@ -261,3 +364,9 @@ var _a;

clearTimeout(timer);
resolve(Object.assign(Object.assign({}, result), { socketTransport: (_a = conn.link.socketTransport) !== null && _a !== void 0 ? _a : null, socketOpen: conn.link.socketOpen }));
if (this.pending_conn === conn) {
this.pending_conn = null;
}
if (!result.success) {
this.safe_disconnect(conn, "Close failed wallet connect attempt");
}
resolve(Object.assign(Object.assign({}, result), { hostAttempts: [buildHostAttempt(result)], socketTransport: (_a = conn.link.socketTransport) !== null && _a !== void 0 ? _a : null, socketHost, socketOpen: conn.link.socketOpen }));
};

@@ -269,5 +378,5 @@ const timer = setTimeout(() => {

conn,
message: transportEstablished
message: describeTransportFailure(transportEstablished
? `${transport} transport timed out after connection was established`
: `${transport} transport connection timed out`,
: `${transport} transport connection timed out`),
failureClass: "transport",

@@ -299,3 +408,3 @@ });

conn,
message,
message: describeTransportFailure(message),
failureClass: this.classify_failure(message),

@@ -306,2 +415,26 @@ });

}
async connect_via_transport(transport, options) {
const hosts = transport === "local-socket" ? this.local_socket_hosts() : [null];
let lastAttempt = null;
const hostAttempts = [];
for (let index = 0; index < hosts.length; index++) {
const attempt = await this.connect_via_transport_host(transport, Object.assign(Object.assign({}, options), { host: hosts[index] }));
hostAttempts.push(...attempt.hostAttempts);
lastAttempt = attempt;
if (attempt.success) {
return Object.assign(Object.assign({}, attempt), { hostAttempts });
}
const shouldRetryWithAlternateHost = transport === "local-socket" &&
attempt.failureClass === "transport" &&
!attempt.socketOpen &&
index < hosts.length - 1;
if (!shouldRetryWithAlternateHost) {
return Object.assign(Object.assign({}, attempt), { hostAttempts });
}
}
if (lastAttempt != null) {
return Object.assign(Object.assign({}, lastAttempt), { hostAttempts });
}
throw new Error(`No connection attempts executed for ${transport}`);
}
async connect(configOverride = {}) {

@@ -314,8 +447,15 @@ var _a, _b, _c, _d, _e, _f, _g;

this.selected_transport_mode = requestedTransportMode;
this.abort_pending_connect();
if (this.conn != null) {
const conn = this.conn;
this.conn = null;
this.safe_disconnect(conn, "Replace existing wallet session");
}
this.err_msg = null;
this.conn = null;
this.is_connecting = true;
const detected = await this.detect_available_transports(requestedTransportMode);
// Live connect must not create an extra localhost websocket preflight. That
// preflight races with the real wallet socket and is only safe for explicit
// diagnostics/UI refreshes.
const detected = await this.detect_available_transports(requestedTransportMode, { includeLocalSocketProbe: false });
const savedConfig = requestedTransportMode === "auto" ? this.read_session_config() : null;
const autoTransportSelection = this.build_auto_transport_queue(detected.available_transports, (_f = savedConfig === null || savedConfig === void 0 ? void 0 : savedConfig.transportMode) !== null && _f !== void 0 ? _f : null);
const diagnostics = {

@@ -331,4 +471,4 @@ configured_transport_mode: configuredTransportMode,

selection_reason: requestedTransportMode === "auto"
? autoTransportSelection.selectionReason
: "explicit-transport-mode",
? "auto-connect-without-localhost-preflight"
: "explicit-transport-mode-without-localhost-preflight",
failure_class: null,

@@ -340,3 +480,8 @@ failure_message: null,

local_socket_reachable: detected.local_socket_reachable,
browser_family: this.detect_browser_family(),
public_origin: this.is_public_origin(),
brave_loopback_permission_suspected: false,
socket_host_attempts: [],
socket_transport: null,
socket_host: null,
socket_open: false,

@@ -346,9 +491,22 @@ };

if (requestedTransportMode === "auto") {
transportQueue = autoTransportSelection.queue;
// The quick localhost probe is advisory only. Preserve the historical
// websocket path by still attempting the real local-socket connect when
// auto mode cannot positively detect any transport up front.
if (transportQueue.length === 0) {
const savedTransport = (_f = savedConfig === null || savedConfig === void 0 ? void 0 : savedConfig.transportMode) !== null && _f !== void 0 ? _f : null;
if (savedTransport === "local-socket") {
transportQueue = detected.injected_transport_detected
? ["local-socket", "injected"]
: ["local-socket"];
diagnostics.selection_reason = detected.injected_transport_detected
? "auto-prefer-saved-local-socket-then-injected-without-preflight"
: "auto-prefer-saved-local-socket-without-preflight";
}
else if (savedTransport === "injected" && detected.injected_transport_detected) {
transportQueue = ["injected", "local-socket"];
diagnostics.selection_reason = "auto-prefer-saved-injected-then-local-socket-without-preflight";
}
else if (detected.injected_transport_detected) {
transportQueue = ["injected", "local-socket"];
diagnostics.selection_reason = "auto-prefer-injected-then-local-socket-without-preflight";
}
else {
transportQueue = ["local-socket"];
diagnostics.selection_reason = "auto-force-local-socket-after-empty-detection";
diagnostics.selection_reason = "auto-force-local-socket-without-preflight";
}

@@ -363,6 +521,4 @@ }

else if (requestedTransport === "local-socket") {
// Explicit local-socket mode must try the real wallet websocket even if
// the preflight probe could not confirm localhost availability.
transportQueue = ["local-socket"];
diagnostics.selection_reason = "explicit-local-socket-forced";
diagnostics.selection_reason = "explicit-local-socket-without-preflight";
}

@@ -398,3 +554,8 @@ }

diagnostics.fallback_to = currentDiagnostics.fallback_to;
diagnostics.socket_host_attempts = [
...diagnostics.socket_host_attempts,
...attempt.hostAttempts,
];
diagnostics.socket_transport = attempt.socketTransport;
diagnostics.socket_host = attempt.socketHost;
diagnostics.socket_open = attempt.socketOpen;

@@ -410,2 +571,7 @@ if (attempt.success) {

diagnostics.failure_message = attempt.message;
diagnostics.brave_loopback_permission_suspected =
this.should_suspect_brave_loopback_permission_block(transport, attempt);
if (diagnostics.brave_loopback_permission_suspected) {
diagnostics.failure_message = this.append_brave_loopback_permission_hint(attempt.message);
}
this.last_connect_diagnostics = Object.assign({}, diagnostics);

@@ -419,3 +585,3 @@ const shouldFallback = requestedTransportMode === "auto" &&

}
this.err_msg = attempt.message;
this.err_msg = diagnostics.failure_message;
this.is_connecting = false;

@@ -434,10 +600,15 @@ this.clear_session_storage();

set_transport_mode(transportMode) {
if (this.is_connecting) {
this.abort_pending_connect();
this.is_connecting = false;
}
this.selected_transport_mode = this.normalize_transport_mode(transportMode);
}
disconnect() {
if (this.conn == null) {
return;
this.abort_pending_connect();
if (this.conn != null) {
const conn = this.conn;
this.conn = null;
this.safe_disconnect(conn, "Graceful Disconect");
}
this.conn.disconnect();
this.conn = null;
this.err_msg = null;

@@ -444,0 +615,0 @@ this.is_connecting = false;

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
+280
-51

@@ -15,2 +15,11 @@ import { makeAutoObservable } from "mobx";

type SocketHostAttempt = {
host: string | null,
success: boolean,
failure_class: FailureClass | null,
failure_message: string | null,
socket_transport: string | null,
socket_open: boolean,
}
type PersistConfig = {

@@ -45,3 +54,8 @@ platform: string,

local_socket_reachable: boolean | null,
browser_family: string | null,
public_origin: boolean | null,
brave_loopback_permission_suspected: boolean,
socket_host_attempts: SocketHostAttempt[],
socket_transport: string | null,
socket_host: string | null,
socket_open: boolean,

@@ -61,2 +75,6 @@ }

type TransportDetectionOptions = {
includeLocalSocketProbe?: boolean,
}
type ConnectAttemptOutcome =

@@ -78,3 +96,5 @@ | {

conn: EasyConnect,
hostAttempts: SocketHostAttempt[],
socketTransport: string | null,
socketHost: string | null,
socketOpen: boolean,

@@ -87,3 +107,5 @@ }

failureClass: FailureClass,
hostAttempts: SocketHostAttempt[],
socketTransport: string | null,
socketHost: string | null,
socketOpen: boolean,

@@ -96,2 +118,3 @@ }

disconnect: () => void | Promise<void>,
cancel_connecting?: () => void | Promise<void>,
is_connecting?: boolean,

@@ -134,2 +157,3 @@ is_disconnecting?: boolean,

last_connect_diagnostics: ConnectAttemptDiagnostics | null = null;
private pending_conn: EasyConnect | null = null;

@@ -171,2 +195,54 @@ constructor(connectOptions: ConnectOptions = {}) {

private current_origin_hostname(): string | null {
if (typeof window === "undefined") {
return null
}
try {
return window.location.hostname
} catch {
return null
}
}
private is_public_origin(): boolean | null {
const hostname = this.current_origin_hostname()
if (hostname == null) {
return null
}
const localHostnames = new Set([
"localhost",
"127.0.0.1",
"::1",
])
return !localHostnames.has(hostname)
}
private detect_browser_family(): string | null {
if (typeof navigator === "undefined") {
return null
}
const userAgent = navigator.userAgent ?? ""
if ("brave" in navigator || /\bBrave\//i.test(userAgent)) {
return "brave"
}
if (/\bFirefox\//i.test(userAgent)) {
return "firefox"
}
if (/\bEdg\//i.test(userAgent)) {
return "edge"
}
if (/\bChrome\//i.test(userAgent)) {
return "chrome"
}
if (/\bSafari\//i.test(userAgent)) {
return "safari"
}
return null
}
private to_sdk_provider_hint(transport: LinkTransport): "ecto" | "poltergeist" {

@@ -214,2 +290,36 @@ return transport === "injected" ? "ecto" : "poltergeist"

private should_suspect_brave_loopback_permission_block(
transport: LinkTransport,
attempt: ConnectAttemptResult,
): boolean {
if (transport !== "local-socket") {
return false
}
if (attempt.success || attempt.failureClass !== "transport") {
return false
}
if (this.detect_browser_family() !== "brave") {
return false
}
if (this.is_public_origin() !== true) {
return false
}
if (attempt.socketOpen) {
return false
}
if (attempt.hostAttempts.length === 0) {
return false
}
return attempt.hostAttempts.every((hostAttempt) =>
hostAttempt.success === false &&
hostAttempt.socket_transport === "websocket" &&
hostAttempt.socket_open === false,
)
}
private append_brave_loopback_permission_hint(message: string): string {
return `${message}. Brave may be blocking public-site access to localhost wallet sockets. Allow localhost access for this site in brave://settings/content/localhostAccess or use Browser extension mode.`
}
private async probe_local_socket(timeoutMs: number = this.transport_detection_timeout_ms): Promise<boolean> {

@@ -251,3 +361,5 @@ if (typeof window === "undefined" || typeof WebSocket === "undefined") {

requestedTransportMode: LinkTransportMode = this.selected_transport_mode,
options: TransportDetectionOptions = {},
): Promise<TransportDetection> {
const includeLocalSocketProbe = options.includeLocalSocketProbe ?? true
const injected_transport_detected =

@@ -258,3 +370,4 @@ typeof window !== "undefined" && "PhantasmaLinkSocket" in window

const local_socket_reachable =
requestedTransportMode === "auto" || requestedTransportMode === "local-socket"
includeLocalSocketProbe &&
(requestedTransportMode === "auto" || requestedTransportMode === "local-socket")
? await this.probe_local_socket()

@@ -310,22 +423,2 @@ : null

private build_auto_transport_queue(
availableTransports: LinkTransport[],
savedTransport: LinkTransport | null,
): { queue: LinkTransport[], selectionReason: string } {
if (savedTransport == null || !availableTransports.includes(savedTransport)) {
return {
queue: [...availableTransports],
selectionReason: "auto-prefer-injected-then-local-socket",
}
}
return {
queue: [
savedTransport,
...availableTransports.filter((transport) => transport !== savedTransport),
],
selectionReason: "auto-prefer-saved-transport-then-fallback",
}
}
private resolve_persist_config(conn: EasyConnect): PersistConfig {

@@ -353,4 +446,5 @@ return {

// for the next user-initiated connect attempt and must not silently reconnect.
// They also must not preflight localhost on mount, because background wallet
// socket probes change protocol behavior before the user has asked to connect.
if (this.selected_transport_mode !== "auto") {
void this.refresh_available_transports(this.selected_transport_mode)
return

@@ -361,3 +455,2 @@ }

if (config == null) {
void this.refresh_available_transports("auto")
return

@@ -384,5 +477,31 @@ }

private async connect_via_transport(
private safe_disconnect(conn: EasyConnect | null, message: string) {
if (conn == null) {
return
}
try {
conn.disconnect(message)
} catch {
// Best-effort cleanup only.
}
}
abort_pending_connect() {
if (this.pending_conn == null) {
return
}
const conn = this.pending_conn
this.pending_conn = null
this.safe_disconnect(conn, "Abort pending wallet connect")
}
private local_socket_hosts(): string[] {
return ["127.0.0.1:7090", "localhost:7090"]
}
private async connect_via_transport_host(
transport: LinkTransport,
options: { platform: string, requiredVersion: number },
options: { platform: string, requiredVersion: number, host: string | null },
): Promise<ConnectAttemptResult> {

@@ -395,3 +514,20 @@ return await new Promise<ConnectAttemptResult>((resolve) => {

])
if (options.host != null) {
conn.link.host = options.host
}
this.pending_conn = conn
let settled = false
const socketHost = conn.link.host ?? options.host ?? null
const describeTransportFailure = (message: string) =>
transport === "local-socket" && socketHost != null
? `${message} (${socketHost})`
: message
const buildHostAttempt = (result: ConnectAttemptOutcome): SocketHostAttempt => ({
host: socketHost,
success: result.success,
failure_class: result.success ? null : result.failureClass,
failure_message: result.success ? null : result.message,
socket_transport: conn.link.socketTransport ?? null,
socket_open: conn.link.socketOpen,
})

@@ -404,5 +540,13 @@ const finalize = (result: ConnectAttemptOutcome) => {

clearTimeout(timer)
if (this.pending_conn === conn) {
this.pending_conn = null
}
if (!result.success) {
this.safe_disconnect(conn, "Close failed wallet connect attempt")
}
resolve({
...result,
hostAttempts: [buildHostAttempt(result)],
socketTransport: conn.link.socketTransport ?? null,
socketHost,
socketOpen: conn.link.socketOpen,

@@ -417,5 +561,7 @@ })

conn,
message: transportEstablished
? `${transport} transport timed out after connection was established`
: `${transport} transport connection timed out`,
message: describeTransportFailure(
transportEstablished
? `${transport} transport timed out after connection was established`
: `${transport} transport connection timed out`,
),
failureClass: "transport",

@@ -453,3 +599,3 @@ })

conn,
message,
message: describeTransportFailure(message),
failureClass: this.classify_failure(message),

@@ -462,2 +608,49 @@ })

private async connect_via_transport(
transport: LinkTransport,
options: { platform: string, requiredVersion: number },
): Promise<ConnectAttemptResult> {
const hosts = transport === "local-socket" ? this.local_socket_hosts() : [null]
let lastAttempt: ConnectAttemptResult | null = null
const hostAttempts: SocketHostAttempt[] = []
for (let index = 0; index < hosts.length; index++) {
const attempt = await this.connect_via_transport_host(transport, {
...options,
host: hosts[index],
})
hostAttempts.push(...attempt.hostAttempts)
lastAttempt = attempt
if (attempt.success) {
return {
...attempt,
hostAttempts,
}
}
const shouldRetryWithAlternateHost =
transport === "local-socket" &&
attempt.failureClass === "transport" &&
!attempt.socketOpen &&
index < hosts.length - 1
if (!shouldRetryWithAlternateHost) {
return {
...attempt,
hostAttempts,
}
}
}
if (lastAttempt != null) {
return {
...lastAttempt,
hostAttempts,
}
}
throw new Error(`No connection attempts executed for ${transport}`)
}
async connect(configOverride: ConnectOverride = {}) {

@@ -472,12 +665,19 @@ const configuredTransportMode = this.normalize_transport_mode(this.connect_options.transportMode)

this.selected_transport_mode = requestedTransportMode
this.abort_pending_connect()
if (this.conn != null) {
const conn = this.conn
this.conn = null
this.safe_disconnect(conn, "Replace existing wallet session")
}
this.err_msg = null
this.conn = null
this.is_connecting = true
const detected = await this.detect_available_transports(requestedTransportMode)
// Live connect must not create an extra localhost websocket preflight. That
// preflight races with the real wallet socket and is only safe for explicit
// diagnostics/UI refreshes.
const detected = await this.detect_available_transports(
requestedTransportMode,
{ includeLocalSocketProbe: false },
)
const savedConfig = requestedTransportMode === "auto" ? this.read_session_config() : null
const autoTransportSelection = this.build_auto_transport_queue(
detected.available_transports,
savedConfig?.transportMode ?? null,
)
const diagnostics: ConnectAttemptDiagnostics = {

@@ -493,4 +693,4 @@ configured_transport_mode: configuredTransportMode,

selection_reason: requestedTransportMode === "auto"
? autoTransportSelection.selectionReason
: "explicit-transport-mode",
? "auto-connect-without-localhost-preflight"
: "explicit-transport-mode-without-localhost-preflight",
failure_class: null,

@@ -502,3 +702,8 @@ failure_message: null,

local_socket_reachable: detected.local_socket_reachable,
browser_family: this.detect_browser_family(),
public_origin: this.is_public_origin(),
brave_loopback_permission_suspected: false,
socket_host_attempts: [],
socket_transport: null,
socket_host: null,
socket_open: false,

@@ -509,9 +714,19 @@ }

if (requestedTransportMode === "auto") {
transportQueue = autoTransportSelection.queue
// The quick localhost probe is advisory only. Preserve the historical
// websocket path by still attempting the real local-socket connect when
// auto mode cannot positively detect any transport up front.
if (transportQueue.length === 0) {
const savedTransport = savedConfig?.transportMode ?? null
if (savedTransport === "local-socket") {
transportQueue = detected.injected_transport_detected
? ["local-socket", "injected"]
: ["local-socket"]
diagnostics.selection_reason = detected.injected_transport_detected
? "auto-prefer-saved-local-socket-then-injected-without-preflight"
: "auto-prefer-saved-local-socket-without-preflight"
} else if (savedTransport === "injected" && detected.injected_transport_detected) {
transportQueue = ["injected", "local-socket"]
diagnostics.selection_reason = "auto-prefer-saved-injected-then-local-socket-without-preflight"
} else if (detected.injected_transport_detected) {
transportQueue = ["injected", "local-socket"]
diagnostics.selection_reason = "auto-prefer-injected-then-local-socket-without-preflight"
} else {
transportQueue = ["local-socket"]
diagnostics.selection_reason = "auto-force-local-socket-after-empty-detection"
diagnostics.selection_reason = "auto-force-local-socket-without-preflight"
}

@@ -524,6 +739,4 @@ } else {

} else if (requestedTransport === "local-socket") {
// Explicit local-socket mode must try the real wallet websocket even if
// the preflight probe could not confirm localhost availability.
transportQueue = ["local-socket"]
diagnostics.selection_reason = "explicit-local-socket-forced"
diagnostics.selection_reason = "explicit-local-socket-without-preflight"
}

@@ -577,3 +790,8 @@ }

diagnostics.fallback_to = currentDiagnostics.fallback_to
diagnostics.socket_host_attempts = [
...diagnostics.socket_host_attempts,
...attempt.hostAttempts,
]
diagnostics.socket_transport = attempt.socketTransport
diagnostics.socket_host = attempt.socketHost
diagnostics.socket_open = attempt.socketOpen

@@ -595,2 +813,8 @@

diagnostics.failure_message = attempt.message
diagnostics.brave_loopback_permission_suspected =
this.should_suspect_brave_loopback_permission_block(transport, attempt)
if (diagnostics.brave_loopback_permission_suspected) {
diagnostics.failure_message = this.append_brave_loopback_permission_hint(attempt.message)
}
this.last_connect_diagnostics = { ...diagnostics }

@@ -610,3 +834,3 @@

this.err_msg = attempt.message
this.err_msg = diagnostics.failure_message
this.is_connecting = false

@@ -628,2 +852,6 @@ this.clear_session_storage()

set_transport_mode(transportMode: LinkTransportMode) {
if (this.is_connecting) {
this.abort_pending_connect()
this.is_connecting = false
}
this.selected_transport_mode = this.normalize_transport_mode(transportMode)

@@ -633,7 +861,8 @@ }

disconnect() {
if (this.conn == null) {
return
this.abort_pending_connect()
if (this.conn != null) {
const conn = this.conn
this.conn = null
this.safe_disconnect(conn, "Graceful Disconect")
}
this.conn.disconnect()
this.conn = null
this.err_msg = null

@@ -640,0 +869,0 @@ this.is_connecting = false

{
"name": "@phantasma/connect-react",
"version": "0.1.1",
"version": "0.1.2",
"private": false,

@@ -5,0 +5,0 @@ "scripts": {