@metamask/connect-multichain 0.6.0 → 0.7.0
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/CHANGELOG.md +15 -1
- package/README.md +21 -19
- package/dist/browser/es/connect-multichain.d.mts +2 -0
- package/dist/browser/es/connect-multichain.mjs +38 -7
- package/dist/browser/es/connect-multichain.mjs.map +1 -1
- package/dist/browser/es/metafile-esm.json +1 -1
- package/dist/browser/iife/connect-multichain.d.ts +2 -0
- package/dist/browser/iife/connect-multichain.js +128 -83
- package/dist/browser/iife/connect-multichain.js.map +1 -1
- package/dist/browser/iife/metafile-iife.json +1 -1
- package/dist/browser/umd/connect-multichain.d.ts +2 -0
- package/dist/browser/umd/connect-multichain.js +37 -6
- package/dist/browser/umd/connect-multichain.js.map +1 -1
- package/dist/browser/umd/metafile-cjs.json +1 -1
- package/dist/node/cjs/connect-multichain.d.ts +2 -0
- package/dist/node/cjs/connect-multichain.js +37 -6
- package/dist/node/cjs/connect-multichain.js.map +1 -1
- package/dist/node/cjs/metafile-cjs.json +1 -1
- package/dist/node/es/connect-multichain.d.mts +2 -0
- package/dist/node/es/connect-multichain.mjs +38 -7
- package/dist/node/es/connect-multichain.mjs.map +1 -1
- package/dist/node/es/metafile-esm.json +1 -1
- package/dist/react-native/es/connect-multichain.d.mts +2 -0
- package/dist/react-native/es/connect-multichain.mjs +38 -7
- package/dist/react-native/es/connect-multichain.mjs.map +1 -1
- package/dist/react-native/es/metafile-esm.json +1 -1
- package/dist/src/domain/multichain/types.d.ts +2 -0
- package/dist/src/domain/multichain/types.d.ts.map +1 -1
- package/dist/src/multichain/transports/multichainApiClientWrapper/index.d.ts.map +1 -1
- package/dist/src/multichain/transports/multichainApiClientWrapper/index.js +0 -1
- package/dist/src/multichain/transports/multichainApiClientWrapper/index.js.map +1 -1
- package/dist/src/multichain/transports/mwp/index.d.ts.map +1 -1
- package/dist/src/multichain/transports/mwp/index.js +11 -6
- package/dist/src/multichain/transports/mwp/index.js.map +1 -1
- package/dist/src/multichain/utils/index.d.ts.map +1 -1
- package/dist/src/multichain/utils/index.js +37 -0
- package/dist/src/multichain/utils/index.js.map +1 -1
- package/dist/types/connect-multichain.d.ts +2 -0
- package/package.json +2 -2
|
@@ -369,6 +369,8 @@ declare function hasExtension(): Promise<boolean>;
|
|
|
369
369
|
type DappSettings = {
|
|
370
370
|
name: string;
|
|
371
371
|
url?: string;
|
|
372
|
+
/** The original non-http(s) URL before normalization on React Native platforms */
|
|
373
|
+
nativeScheme?: string;
|
|
372
374
|
} & ({
|
|
373
375
|
iconUrl?: string;
|
|
374
376
|
} | {
|
|
@@ -797,6 +797,21 @@ function getOptionalScopes(scopes) {
|
|
|
797
797
|
{}
|
|
798
798
|
);
|
|
799
799
|
}
|
|
800
|
+
function normalizeNativeUrl(url) {
|
|
801
|
+
var _a3;
|
|
802
|
+
const httpPattern = /^https?:\/\//u;
|
|
803
|
+
if (httpPattern.test(url)) {
|
|
804
|
+
return void 0;
|
|
805
|
+
}
|
|
806
|
+
const schemeMatch = url.match(/^([^:]*):\/\//u);
|
|
807
|
+
const rawScheme = (_a3 = schemeMatch == null ? void 0 : schemeMatch[1]) != null ? _a3 : url;
|
|
808
|
+
const sanitized = rawScheme.toLowerCase().replace(/[^a-z0-9-]/gu, "-").replace(/^-+|-+$/gu, "");
|
|
809
|
+
const subdomain = (sanitized || "unknown").slice(0, 63).replace(/-+$/u, "");
|
|
810
|
+
return {
|
|
811
|
+
url: `https://${subdomain}.rn.dapp.local`,
|
|
812
|
+
nativeScheme: url
|
|
813
|
+
};
|
|
814
|
+
}
|
|
800
815
|
function setupDappMetadata(options) {
|
|
801
816
|
var _a3, _b;
|
|
802
817
|
const platform = getPlatformType();
|
|
@@ -812,6 +827,18 @@ function setupDappMetadata(options) {
|
|
|
812
827
|
if (!((_b = options.dapp) == null ? void 0 : _b.url)) {
|
|
813
828
|
throw new Error("You must provide dapp url");
|
|
814
829
|
}
|
|
830
|
+
if (platform === "react-native" /* ReactNative */ && options.dapp.url) {
|
|
831
|
+
const normalized = normalizeNativeUrl(options.dapp.url);
|
|
832
|
+
if (normalized) {
|
|
833
|
+
console.info(
|
|
834
|
+
`Normalizing dapp URL for React Native: "${options.dapp.url}" -> "${normalized.url}"`
|
|
835
|
+
);
|
|
836
|
+
options.dapp = __spreadProps(__spreadValues({}, options.dapp), {
|
|
837
|
+
url: normalized.url,
|
|
838
|
+
nativeScheme: normalized.nativeScheme
|
|
839
|
+
});
|
|
840
|
+
}
|
|
841
|
+
}
|
|
815
842
|
const BASE_64_ICON_MAX_LENGTH = 163400;
|
|
816
843
|
const urlPattern = /^(http|https):\/\/[^\s]*$/u;
|
|
817
844
|
if (options.dapp) {
|
|
@@ -1920,7 +1947,6 @@ _notificationCallbacks2 = new WeakMap();
|
|
|
1920
1947
|
_MultichainApiClientWrapperTransport_instances = new WeakSet();
|
|
1921
1948
|
walletCreateSession_fn = function(request) {
|
|
1922
1949
|
return __async(this, null, function* () {
|
|
1923
|
-
console.log("\u{1F4DA} #walletCreateSession", request);
|
|
1924
1950
|
const createSessionParams = request.params;
|
|
1925
1951
|
const scopes = Object.keys(__spreadValues(__spreadValues({}, createSessionParams.optionalScopes), createSessionParams.requiredScopes));
|
|
1926
1952
|
const scopeAccounts = [];
|
|
@@ -2102,10 +2128,11 @@ var MWPTransport = class {
|
|
|
2102
2128
|
parseWalletError(errorPayload) {
|
|
2103
2129
|
const errorData = errorPayload;
|
|
2104
2130
|
if (typeof errorData.code === "number" && typeof errorData.message === "string") {
|
|
2105
|
-
|
|
2106
|
-
|
|
2107
|
-
message:
|
|
2108
|
-
}
|
|
2131
|
+
const { code, message: message2 } = errorData;
|
|
2132
|
+
if (code >= 1e3 && code <= 4999) {
|
|
2133
|
+
return import_rpc_errors2.providerErrors.custom({ code, message: message2 });
|
|
2134
|
+
}
|
|
2135
|
+
return new import_rpc_errors2.JsonRpcError(code, message2);
|
|
2109
2136
|
}
|
|
2110
2137
|
const message = errorPayload instanceof Error ? errorPayload.message : JSON.stringify(errorPayload);
|
|
2111
2138
|
return import_rpc_errors2.rpcErrors.internal({ message });
|
|
@@ -2269,7 +2296,11 @@ var MWPTransport = class {
|
|
|
2269
2296
|
const { dappClient } = this;
|
|
2270
2297
|
const session = yield this.getActiveSession();
|
|
2271
2298
|
if (session) {
|
|
2272
|
-
logger("active session found",
|
|
2299
|
+
logger("active session found", {
|
|
2300
|
+
id: session.id,
|
|
2301
|
+
channel: session.channel,
|
|
2302
|
+
expiresAt: session.expiresAt
|
|
2303
|
+
});
|
|
2273
2304
|
}
|
|
2274
2305
|
const storedSessionRequestBeforeConnectionAttempt = yield this.getStoredPendingSessionRequest();
|
|
2275
2306
|
let timeout;
|