@fastnear/wallet-adapter-widget
Version:
User interfaces for select NEAR Protocol web3 wallets
104 lines • 4.27 kB
JavaScript
/* ⋈ 🏃🏻💨 FastNEAR Wallet Adapter Widget - CJS (@fastnear/wallet-adapter-widget v0.9.7) */
/* https://www.npmjs.com/package/@fastnear/wallet-adapter-widget/v/0.9.7 */
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var meteor_exports = {};
__export(meteor_exports, {
createMeteorAdapter: () => createMeteorAdapter
});
module.exports = __toCommonJS(meteor_exports);
var import_near_api_js = require("near-api-js");
var import_meteorwallet_sdk = require("@fastnear/meteorwallet-sdk");
var import_actionToWalletSelector = require("../utils/actionToWalletSelector.js");
var import_crypto = require("@near-js/crypto");
var import_near_api_js2 = require("near-api-js");
async function createMeteorWalletInstance({ networkId = "mainnet" }) {
const keyStore = new import_near_api_js2.keyStores.BrowserLocalStorageKeyStore(
window.localStorage,
"_meteor_wallet"
);
const near = await (0, import_near_api_js.connect)({
keyStore,
networkId,
nodeUrl: networkId === "mainnet" ? "https://rpc.mainnet.near.org" : "https://rpc.testnet.near.org"
});
return new import_meteorwallet_sdk.MeteorWallet({ near, appKeyPrefix: "near_app" });
}
__name(createMeteorWalletInstance, "createMeteorWalletInstance");
function createMeteorAdapter() {
return {
async signIn({ networkId, contractId, publicKey }) {
const parsedPublicKey = import_crypto.PublicKey.from(publicKey);
const keyPair = import_near_api_js.KeyPair.fromString(parsedPublicKey.toString());
const wallet = await createMeteorWalletInstance({ networkId });
const response = await wallet.requestSignIn({
contract_id: contractId,
type: import_meteorwallet_sdk.EMeteorWalletSignInType.ALL_METHODS,
keyPair
});
if (!response?.success || !response.payload?.accountId) {
throw new Error("Meteor Wallet sign-in failed");
}
return {
state: {
accountId: response.payload.accountId,
publicKey: parsedPublicKey.toString(),
networkId
}
};
},
async sendTransactions({ state, transactions }) {
if (!state?.accountId) {
throw new Error("Not signed in");
}
const wallet = await createMeteorWalletInstance({
networkId: state.networkId
});
try {
const response = await wallet.requestSignTransactions({
transactions: transactions.map(({ signerId, receiverId, actions }) => {
if (signerId && signerId !== state.accountId) {
throw new Error("Invalid signer");
}
return {
signerId: state.accountId,
receiverId,
actions: actions.map(import_actionToWalletSelector.mapActionForWalletSelector)
};
})
});
return { outcomes: response };
} catch (error) {
const errorMessage = error instanceof Error ? error.message : "Unknown error";
if (errorMessage === "User cancelled the action" || errorMessage === "User closed the window before completing the action") {
return { rejected: true };
}
console.error("Transaction error:", error);
throw new Error(errorMessage);
}
}
};
}
__name(createMeteorAdapter, "createMeteorAdapter");
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
createMeteorAdapter
});
//# sourceMappingURL=meteor.cjs.map