FRE-600: Fix code review blockers

- Consolidated duplicate UndoManagers to single instance
- Fixed connection promise to only resolve on 'connected' status
- Fixed WebSocketProvider import (WebsocketProvider)
- Added proper doc.destroy() cleanup
- Renamed isPresenceInitialized property to avoid conflict

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
2026-04-25 00:08:01 -04:00
parent 65b552bb08
commit 7c684a42cc
48450 changed files with 5679671 additions and 383 deletions

19
node_modules/@wallet-standard/wallet/lib/cjs/index.js generated vendored Normal file
View File

@@ -0,0 +1,19 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
__exportStar(require("./register.js"), exports);
__exportStar(require("./util.js"), exports);
//# sourceMappingURL=index.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,4CAA0B"}

View File

@@ -0,0 +1 @@
{ "type": "commonjs" }

View File

@@ -0,0 +1,94 @@
"use strict";
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
};
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
if (kind === "m") throw new TypeError("Private method is not writable");
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
};
var _RegisterWalletEvent_detail;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DEPRECATED_registerWallet = exports.registerWallet = void 0;
/**
* Register a {@link "@wallet-standard/base".Wallet} as a Standard Wallet with the app.
*
* This dispatches a {@link "@wallet-standard/base".WindowRegisterWalletEvent} to notify the app that the Wallet is
* ready to be registered.
*
* This also adds a listener for {@link "@wallet-standard/base".WindowAppReadyEvent} to listen for a notification from
* the app that the app is ready to register the Wallet.
*
* This combination of event dispatch and listener guarantees that the Wallet will be registered synchronously as soon
* as the app is ready whether the Wallet loads before or after the app.
*
* @param wallet Wallet to register.
*
* @group Wallet
*/
function registerWallet(wallet) {
const callback = ({ register }) => register(wallet);
try {
window.dispatchEvent(new RegisterWalletEvent(callback));
}
catch (error) {
console.error('wallet-standard:register-wallet event could not be dispatched\n', error);
}
try {
window.addEventListener('wallet-standard:app-ready', ({ detail: api }) => callback(api));
}
catch (error) {
console.error('wallet-standard:app-ready event listener could not be added\n', error);
}
}
exports.registerWallet = registerWallet;
class RegisterWalletEvent extends Event {
get detail() {
return __classPrivateFieldGet(this, _RegisterWalletEvent_detail, "f");
}
get type() {
return 'wallet-standard:register-wallet';
}
constructor(callback) {
super('wallet-standard:register-wallet', {
bubbles: false,
cancelable: false,
composed: false,
});
_RegisterWalletEvent_detail.set(this, void 0);
__classPrivateFieldSet(this, _RegisterWalletEvent_detail, callback, "f");
}
/** @deprecated */
preventDefault() {
throw new Error('preventDefault cannot be called');
}
/** @deprecated */
stopImmediatePropagation() {
throw new Error('stopImmediatePropagation cannot be called');
}
/** @deprecated */
stopPropagation() {
throw new Error('stopPropagation cannot be called');
}
}
_RegisterWalletEvent_detail = new WeakMap();
/**
* @deprecated Use {@link registerWallet} instead.
*
* @group Deprecated
*/
function DEPRECATED_registerWallet(wallet) {
var _a;
registerWallet(wallet);
try {
((_a = window.navigator).wallets || (_a.wallets = [])).push(({ register }) => register(wallet));
}
catch (error) {
console.error('window.navigator.wallets could not be pushed\n', error);
}
}
exports.DEPRECATED_registerWallet = DEPRECATED_registerWallet;
//# sourceMappingURL=register.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/register.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAQA;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,cAAc,CAAC,MAAc;IACzC,MAAM,QAAQ,GAAsC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACvF,IAAI,CAAC;QACA,MAA6B,CAAC,aAAa,CAAC,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,iEAAiE,EAAE,KAAK,CAAC,CAAC;IAC5F,CAAC;IACD,IAAI,CAAC;QACA,MAA6B,CAAC,gBAAgB,CAAC,2BAA2B,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,CAC7F,QAAQ,CAAC,GAAG,CAAC,CAChB,CAAC;IACN,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,+DAA+D,EAAE,KAAK,CAAC,CAAC;IAC1F,CAAC;AACL,CAAC;AAdD,wCAcC;AAED,MAAM,mBAAoB,SAAQ,KAAK;IAGnC,IAAI,MAAM;QACN,OAAO,uBAAA,IAAI,mCAAQ,CAAC;IACxB,CAAC;IAED,IAAI,IAAI;QACJ,OAAO,iCAA0C,CAAC;IACtD,CAAC;IAED,YAAY,QAA2C;QACnD,KAAK,CAAC,iCAAiC,EAAE;YACrC,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,KAAK;SAClB,CAAC,CAAC;QAfE,8CAA2C;QAgBhD,uBAAA,IAAI,+BAAW,QAAQ,MAAA,CAAC;IAC5B,CAAC;IAED,kBAAkB;IAClB,cAAc;QACV,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACvD,CAAC;IAED,kBAAkB;IAClB,wBAAwB;QACpB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IACjE,CAAC;IAED,kBAAkB;IAClB,eAAe;QACX,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACxD,CAAC;CACJ;;AAED;;;;GAIG;AACH,SAAgB,yBAAyB,CAAC,MAAc;;IACpD,cAAc,CAAC,MAAM,CAAC,CAAC;IACvB,IAAI,CAAC;QACD,OAAE,MAAmC,CAAC,SAAS,EAAC,OAAO,QAAP,OAAO,GAAK,EAAE,EAAC,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7G,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,KAAK,CAAC,CAAC;IAC3E,CAAC;AACL,CAAC;AAPD,8DAOC"}

169
node_modules/@wallet-standard/wallet/lib/cjs/util.js generated vendored Normal file
View File

@@ -0,0 +1,169 @@
"use strict";
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
};
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
if (kind === "m") throw new TypeError("Private method is not writable");
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
};
var _ReadonlyWalletAccount_address, _ReadonlyWalletAccount_publicKey, _ReadonlyWalletAccount_chains, _ReadonlyWalletAccount_features, _ReadonlyWalletAccount_label, _ReadonlyWalletAccount_icon;
Object.defineProperty(exports, "__esModule", { value: true });
exports.guard = exports.pick = exports.concatBytes = exports.bytesEqual = exports.arraysEqual = exports.ReadonlyWalletAccount = void 0;
/**
* Base implementation of a {@link "@wallet-standard/base".WalletAccount} to be used or extended by a
* {@link "@wallet-standard/base".Wallet}.
*
* `WalletAccount` properties must be read-only. This class enforces this by making all properties
* [truly private](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/Private_class_fields) and
* read-only, using getters for access, returning copies instead of references, and calling
* [Object.freeze](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze)
* on the instance.
*
* @group Account
*/
class ReadonlyWalletAccount {
/** Implementation of {@link "@wallet-standard/base".WalletAccount.address | WalletAccount::address} */
get address() {
return __classPrivateFieldGet(this, _ReadonlyWalletAccount_address, "f");
}
/** Implementation of {@link "@wallet-standard/base".WalletAccount.publicKey | WalletAccount::publicKey} */
get publicKey() {
return __classPrivateFieldGet(this, _ReadonlyWalletAccount_publicKey, "f").slice();
}
/** Implementation of {@link "@wallet-standard/base".WalletAccount.chains | WalletAccount::chains} */
get chains() {
return __classPrivateFieldGet(this, _ReadonlyWalletAccount_chains, "f").slice();
}
/** Implementation of {@link "@wallet-standard/base".WalletAccount.features | WalletAccount::features} */
get features() {
return __classPrivateFieldGet(this, _ReadonlyWalletAccount_features, "f").slice();
}
/** Implementation of {@link "@wallet-standard/base".WalletAccount.label | WalletAccount::label} */
get label() {
return __classPrivateFieldGet(this, _ReadonlyWalletAccount_label, "f");
}
/** Implementation of {@link "@wallet-standard/base".WalletAccount.icon | WalletAccount::icon} */
get icon() {
return __classPrivateFieldGet(this, _ReadonlyWalletAccount_icon, "f");
}
/**
* Create and freeze a read-only account.
*
* @param account Account to copy properties from.
*/
constructor(account) {
_ReadonlyWalletAccount_address.set(this, void 0);
_ReadonlyWalletAccount_publicKey.set(this, void 0);
_ReadonlyWalletAccount_chains.set(this, void 0);
_ReadonlyWalletAccount_features.set(this, void 0);
_ReadonlyWalletAccount_label.set(this, void 0);
_ReadonlyWalletAccount_icon.set(this, void 0);
if (new.target === ReadonlyWalletAccount) {
Object.freeze(this);
}
__classPrivateFieldSet(this, _ReadonlyWalletAccount_address, account.address, "f");
__classPrivateFieldSet(this, _ReadonlyWalletAccount_publicKey, account.publicKey.slice(), "f");
__classPrivateFieldSet(this, _ReadonlyWalletAccount_chains, account.chains.slice(), "f");
__classPrivateFieldSet(this, _ReadonlyWalletAccount_features, account.features.slice(), "f");
__classPrivateFieldSet(this, _ReadonlyWalletAccount_label, account.label, "f");
__classPrivateFieldSet(this, _ReadonlyWalletAccount_icon, account.icon, "f");
}
}
exports.ReadonlyWalletAccount = ReadonlyWalletAccount;
_ReadonlyWalletAccount_address = new WeakMap(), _ReadonlyWalletAccount_publicKey = new WeakMap(), _ReadonlyWalletAccount_chains = new WeakMap(), _ReadonlyWalletAccount_features = new WeakMap(), _ReadonlyWalletAccount_label = new WeakMap(), _ReadonlyWalletAccount_icon = new WeakMap();
/**
* Efficiently compare {@link Indexed} arrays (e.g. `Array` and `Uint8Array`).
*
* @param a An array.
* @param b Another array.
*
* @return `true` if the arrays have the same length and elements, `false` otherwise.
*
* @group Util
*/
function arraysEqual(a, b) {
if (a === b)
return true;
const length = a.length;
if (length !== b.length)
return false;
for (let i = 0; i < length; i++) {
if (a[i] !== b[i])
return false;
}
return true;
}
exports.arraysEqual = arraysEqual;
/**
* Efficiently compare byte arrays, using {@link arraysEqual}.
*
* @param a A byte array.
* @param b Another byte array.
*
* @return `true` if the byte arrays have the same length and bytes, `false` otherwise.
*
* @group Util
*/
function bytesEqual(a, b) {
return arraysEqual(a, b);
}
exports.bytesEqual = bytesEqual;
/**
* Efficiently concatenate byte arrays without modifying them.
*
* @param first A byte array.
* @param others Additional byte arrays.
*
* @return New byte array containing the concatenation of all the byte arrays.
*
* @group Util
*/
function concatBytes(first, ...others) {
const length = others.reduce((length, bytes) => length + bytes.length, first.length);
const bytes = new Uint8Array(length);
bytes.set(first, 0);
for (const other of others) {
bytes.set(other, bytes.length);
}
return bytes;
}
exports.concatBytes = concatBytes;
/**
* Create a new object with a subset of fields from a source object.
*
* @param source Object to pick fields from.
* @param keys Names of fields to pick.
*
* @return New object with only the picked fields.
*
* @group Util
*/
function pick(source, ...keys) {
const picked = {};
for (const key of keys) {
picked[key] = source[key];
}
return picked;
}
exports.pick = pick;
/**
* Call a callback function, catch an error if it throws, and log the error without rethrowing.
*
* @param callback Function to call.
*
* @group Util
*/
function guard(callback) {
try {
callback();
}
catch (error) {
console.error(error);
}
}
exports.guard = guard;
//# sourceMappingURL=util.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"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"}

View File

@@ -0,0 +1,3 @@
export * from './register.js';
export * from './util.js';
//# sourceMappingURL=index.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC"}

View File

@@ -0,0 +1,89 @@
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
};
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
if (kind === "m") throw new TypeError("Private method is not writable");
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
};
var _RegisterWalletEvent_detail;
/**
* Register a {@link "@wallet-standard/base".Wallet} as a Standard Wallet with the app.
*
* This dispatches a {@link "@wallet-standard/base".WindowRegisterWalletEvent} to notify the app that the Wallet is
* ready to be registered.
*
* This also adds a listener for {@link "@wallet-standard/base".WindowAppReadyEvent} to listen for a notification from
* the app that the app is ready to register the Wallet.
*
* This combination of event dispatch and listener guarantees that the Wallet will be registered synchronously as soon
* as the app is ready whether the Wallet loads before or after the app.
*
* @param wallet Wallet to register.
*
* @group Wallet
*/
export function registerWallet(wallet) {
const callback = ({ register }) => register(wallet);
try {
window.dispatchEvent(new RegisterWalletEvent(callback));
}
catch (error) {
console.error('wallet-standard:register-wallet event could not be dispatched\n', error);
}
try {
window.addEventListener('wallet-standard:app-ready', ({ detail: api }) => callback(api));
}
catch (error) {
console.error('wallet-standard:app-ready event listener could not be added\n', error);
}
}
class RegisterWalletEvent extends Event {
get detail() {
return __classPrivateFieldGet(this, _RegisterWalletEvent_detail, "f");
}
get type() {
return 'wallet-standard:register-wallet';
}
constructor(callback) {
super('wallet-standard:register-wallet', {
bubbles: false,
cancelable: false,
composed: false,
});
_RegisterWalletEvent_detail.set(this, void 0);
__classPrivateFieldSet(this, _RegisterWalletEvent_detail, callback, "f");
}
/** @deprecated */
preventDefault() {
throw new Error('preventDefault cannot be called');
}
/** @deprecated */
stopImmediatePropagation() {
throw new Error('stopImmediatePropagation cannot be called');
}
/** @deprecated */
stopPropagation() {
throw new Error('stopPropagation cannot be called');
}
}
_RegisterWalletEvent_detail = new WeakMap();
/**
* @deprecated Use {@link registerWallet} instead.
*
* @group Deprecated
*/
export function DEPRECATED_registerWallet(wallet) {
var _a;
registerWallet(wallet);
try {
((_a = window.navigator).wallets || (_a.wallets = [])).push(({ register }) => register(wallet));
}
catch (error) {
console.error('window.navigator.wallets could not be pushed\n', error);
}
}
//# sourceMappingURL=register.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/register.ts"],"names":[],"mappings":";;;;;;;;;;;;AAQA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,cAAc,CAAC,MAAc;IACzC,MAAM,QAAQ,GAAsC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACvF,IAAI,CAAC;QACA,MAA6B,CAAC,aAAa,CAAC,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,iEAAiE,EAAE,KAAK,CAAC,CAAC;IAC5F,CAAC;IACD,IAAI,CAAC;QACA,MAA6B,CAAC,gBAAgB,CAAC,2BAA2B,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,CAC7F,QAAQ,CAAC,GAAG,CAAC,CAChB,CAAC;IACN,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,+DAA+D,EAAE,KAAK,CAAC,CAAC;IAC1F,CAAC;AACL,CAAC;AAED,MAAM,mBAAoB,SAAQ,KAAK;IAGnC,IAAI,MAAM;QACN,OAAO,uBAAA,IAAI,mCAAQ,CAAC;IACxB,CAAC;IAED,IAAI,IAAI;QACJ,OAAO,iCAA0C,CAAC;IACtD,CAAC;IAED,YAAY,QAA2C;QACnD,KAAK,CAAC,iCAAiC,EAAE;YACrC,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,KAAK;SAClB,CAAC,CAAC;QAfE,8CAA2C;QAgBhD,uBAAA,IAAI,+BAAW,QAAQ,MAAA,CAAC;IAC5B,CAAC;IAED,kBAAkB;IAClB,cAAc;QACV,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACvD,CAAC;IAED,kBAAkB;IAClB,wBAAwB;QACpB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IACjE,CAAC;IAED,kBAAkB;IAClB,eAAe;QACX,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACxD,CAAC;CACJ;;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,MAAc;;IACpD,cAAc,CAAC,MAAM,CAAC,CAAC;IACvB,IAAI,CAAC;QACD,OAAE,MAAmC,CAAC,SAAS,EAAC,OAAO,QAAP,OAAO,GAAK,EAAE,EAAC,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7G,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,KAAK,CAAC,CAAC;IAC3E,CAAC;AACL,CAAC"}

160
node_modules/@wallet-standard/wallet/lib/esm/util.js generated vendored Normal file
View File

@@ -0,0 +1,160 @@
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
};
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
if (kind === "m") throw new TypeError("Private method is not writable");
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
};
var _ReadonlyWalletAccount_address, _ReadonlyWalletAccount_publicKey, _ReadonlyWalletAccount_chains, _ReadonlyWalletAccount_features, _ReadonlyWalletAccount_label, _ReadonlyWalletAccount_icon;
/**
* Base implementation of a {@link "@wallet-standard/base".WalletAccount} to be used or extended by a
* {@link "@wallet-standard/base".Wallet}.
*
* `WalletAccount` properties must be read-only. This class enforces this by making all properties
* [truly private](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/Private_class_fields) and
* read-only, using getters for access, returning copies instead of references, and calling
* [Object.freeze](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze)
* on the instance.
*
* @group Account
*/
export class ReadonlyWalletAccount {
/** Implementation of {@link "@wallet-standard/base".WalletAccount.address | WalletAccount::address} */
get address() {
return __classPrivateFieldGet(this, _ReadonlyWalletAccount_address, "f");
}
/** Implementation of {@link "@wallet-standard/base".WalletAccount.publicKey | WalletAccount::publicKey} */
get publicKey() {
return __classPrivateFieldGet(this, _ReadonlyWalletAccount_publicKey, "f").slice();
}
/** Implementation of {@link "@wallet-standard/base".WalletAccount.chains | WalletAccount::chains} */
get chains() {
return __classPrivateFieldGet(this, _ReadonlyWalletAccount_chains, "f").slice();
}
/** Implementation of {@link "@wallet-standard/base".WalletAccount.features | WalletAccount::features} */
get features() {
return __classPrivateFieldGet(this, _ReadonlyWalletAccount_features, "f").slice();
}
/** Implementation of {@link "@wallet-standard/base".WalletAccount.label | WalletAccount::label} */
get label() {
return __classPrivateFieldGet(this, _ReadonlyWalletAccount_label, "f");
}
/** Implementation of {@link "@wallet-standard/base".WalletAccount.icon | WalletAccount::icon} */
get icon() {
return __classPrivateFieldGet(this, _ReadonlyWalletAccount_icon, "f");
}
/**
* Create and freeze a read-only account.
*
* @param account Account to copy properties from.
*/
constructor(account) {
_ReadonlyWalletAccount_address.set(this, void 0);
_ReadonlyWalletAccount_publicKey.set(this, void 0);
_ReadonlyWalletAccount_chains.set(this, void 0);
_ReadonlyWalletAccount_features.set(this, void 0);
_ReadonlyWalletAccount_label.set(this, void 0);
_ReadonlyWalletAccount_icon.set(this, void 0);
if (new.target === ReadonlyWalletAccount) {
Object.freeze(this);
}
__classPrivateFieldSet(this, _ReadonlyWalletAccount_address, account.address, "f");
__classPrivateFieldSet(this, _ReadonlyWalletAccount_publicKey, account.publicKey.slice(), "f");
__classPrivateFieldSet(this, _ReadonlyWalletAccount_chains, account.chains.slice(), "f");
__classPrivateFieldSet(this, _ReadonlyWalletAccount_features, account.features.slice(), "f");
__classPrivateFieldSet(this, _ReadonlyWalletAccount_label, account.label, "f");
__classPrivateFieldSet(this, _ReadonlyWalletAccount_icon, account.icon, "f");
}
}
_ReadonlyWalletAccount_address = new WeakMap(), _ReadonlyWalletAccount_publicKey = new WeakMap(), _ReadonlyWalletAccount_chains = new WeakMap(), _ReadonlyWalletAccount_features = new WeakMap(), _ReadonlyWalletAccount_label = new WeakMap(), _ReadonlyWalletAccount_icon = new WeakMap();
/**
* Efficiently compare {@link Indexed} arrays (e.g. `Array` and `Uint8Array`).
*
* @param a An array.
* @param b Another array.
*
* @return `true` if the arrays have the same length and elements, `false` otherwise.
*
* @group Util
*/
export function arraysEqual(a, b) {
if (a === b)
return true;
const length = a.length;
if (length !== b.length)
return false;
for (let i = 0; i < length; i++) {
if (a[i] !== b[i])
return false;
}
return true;
}
/**
* Efficiently compare byte arrays, using {@link arraysEqual}.
*
* @param a A byte array.
* @param b Another byte array.
*
* @return `true` if the byte arrays have the same length and bytes, `false` otherwise.
*
* @group Util
*/
export function bytesEqual(a, b) {
return arraysEqual(a, b);
}
/**
* Efficiently concatenate byte arrays without modifying them.
*
* @param first A byte array.
* @param others Additional byte arrays.
*
* @return New byte array containing the concatenation of all the byte arrays.
*
* @group Util
*/
export function concatBytes(first, ...others) {
const length = others.reduce((length, bytes) => length + bytes.length, first.length);
const bytes = new Uint8Array(length);
bytes.set(first, 0);
for (const other of others) {
bytes.set(other, bytes.length);
}
return bytes;
}
/**
* Create a new object with a subset of fields from a source object.
*
* @param source Object to pick fields from.
* @param keys Names of fields to pick.
*
* @return New object with only the picked fields.
*
* @group Util
*/
export function pick(source, ...keys) {
const picked = {};
for (const key of keys) {
picked[key] = source[key];
}
return picked;
}
/**
* Call a callback function, catch an error if it throws, and log the error without rethrowing.
*
* @param callback Function to call.
*
* @group Util
*/
export function guard(callback) {
try {
callback();
}
catch (error) {
console.error(error);
}
}
//# sourceMappingURL=util.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"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"}

View File

@@ -0,0 +1,3 @@
export * from './register.js';
export * from './util.js';
//# sourceMappingURL=index.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC"}

View File

@@ -0,0 +1,25 @@
import type { Wallet } from '@wallet-standard/base';
/**
* Register a {@link "@wallet-standard/base".Wallet} as a Standard Wallet with the app.
*
* This dispatches a {@link "@wallet-standard/base".WindowRegisterWalletEvent} to notify the app that the Wallet is
* ready to be registered.
*
* This also adds a listener for {@link "@wallet-standard/base".WindowAppReadyEvent} to listen for a notification from
* the app that the app is ready to register the Wallet.
*
* This combination of event dispatch and listener guarantees that the Wallet will be registered synchronously as soon
* as the app is ready whether the Wallet loads before or after the app.
*
* @param wallet Wallet to register.
*
* @group Wallet
*/
export declare function registerWallet(wallet: Wallet): void;
/**
* @deprecated Use {@link registerWallet} instead.
*
* @group Deprecated
*/
export declare function DEPRECATED_registerWallet(wallet: Wallet): void;
//# sourceMappingURL=register.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/register.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAER,MAAM,EAIT,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAcnD;AAsCD;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAO9D"}

View File

@@ -0,0 +1,100 @@
import type { ReadonlyUint8Array, WalletAccount } from '@wallet-standard/base';
/**
* Base implementation of a {@link "@wallet-standard/base".WalletAccount} to be used or extended by a
* {@link "@wallet-standard/base".Wallet}.
*
* `WalletAccount` properties must be read-only. This class enforces this by making all properties
* [truly private](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/Private_class_fields) and
* read-only, using getters for access, returning copies instead of references, and calling
* [Object.freeze](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze)
* on the instance.
*
* @group Account
*/
export declare class ReadonlyWalletAccount implements WalletAccount {
#private;
/** Implementation of {@link "@wallet-standard/base".WalletAccount.address | WalletAccount::address} */
get address(): string;
/** Implementation of {@link "@wallet-standard/base".WalletAccount.publicKey | WalletAccount::publicKey} */
get publicKey(): Uint8Array;
/** Implementation of {@link "@wallet-standard/base".WalletAccount.chains | WalletAccount::chains} */
get chains(): `${string}:${string}`[];
/** Implementation of {@link "@wallet-standard/base".WalletAccount.features | WalletAccount::features} */
get features(): `${string}:${string}`[];
/** Implementation of {@link "@wallet-standard/base".WalletAccount.label | WalletAccount::label} */
get label(): string | undefined;
/** Implementation of {@link "@wallet-standard/base".WalletAccount.icon | WalletAccount::icon} */
get icon(): `data:image/svg+xml;base64,${string}` | `data:image/webp;base64,${string}` | `data:image/png;base64,${string}` | `data:image/gif;base64,${string}` | undefined;
/**
* Create and freeze a read-only account.
*
* @param account Account to copy properties from.
*/
constructor(account: WalletAccount);
}
/**
* Efficiently compare {@link Indexed} arrays (e.g. `Array` and `Uint8Array`).
*
* @param a An array.
* @param b Another array.
*
* @return `true` if the arrays have the same length and elements, `false` otherwise.
*
* @group Util
*/
export declare function arraysEqual<T>(a: Indexed<T>, b: Indexed<T>): boolean;
/**
* Efficiently compare byte arrays, using {@link arraysEqual}.
*
* @param a A byte array.
* @param b Another byte array.
*
* @return `true` if the byte arrays have the same length and bytes, `false` otherwise.
*
* @group Util
*/
export declare function bytesEqual(a: ReadonlyUint8Array, b: ReadonlyUint8Array): boolean;
/**
* Efficiently concatenate byte arrays without modifying them.
*
* @param first A byte array.
* @param others Additional byte arrays.
*
* @return New byte array containing the concatenation of all the byte arrays.
*
* @group Util
*/
export declare function concatBytes(first: ReadonlyUint8Array, ...others: ReadonlyUint8Array[]): Uint8Array;
/**
* Create a new object with a subset of fields from a source object.
*
* @param source Object to pick fields from.
* @param keys Names of fields to pick.
*
* @return New object with only the picked fields.
*
* @group Util
*/
export declare function pick<T, K extends keyof T>(source: T, ...keys: K[]): Pick<T, K>;
/**
* Call a callback function, catch an error if it throws, and log the error without rethrowing.
*
* @param callback Function to call.
*
* @group Util
*/
export declare function guard(callback: () => void): void;
/**
* @internal
*
* Type with a numeric `length` and numerically indexed elements of a generic type `T`.
*
* For example, `Array<T>` and `Uint8Array`.
*
* @group Internal
*/
export interface Indexed<T> {
length: number;
[index: number]: T;
}
//# sourceMappingURL=util.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE/E;;;;;;;;;;;GAWG;AACH,qBAAa,qBAAsB,YAAW,aAAa;;IAQvD,uGAAuG;IACvG,IAAI,OAAO,WAEV;IAED,2GAA2G;IAC3G,IAAI,SAAS,eAEZ;IAED,qGAAqG;IACrG,IAAI,MAAM,4BAET;IAED,yGAAyG;IACzG,IAAI,QAAQ,4BAEX;IAED,mGAAmG;IACnG,IAAI,KAAK,uBAER;IAED,iGAAiG;IACjG,IAAI,IAAI,mKAEP;IAED;;;;OAIG;gBACS,OAAO,EAAE,aAAa;CAYrC;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAWpE;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAEhF;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,kBAAkB,EAAE,GAAG,MAAM,EAAE,kBAAkB,EAAE,GAAG,UAAU,CAUlG;AAED;;;;;;;;;GASG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAM9E;AAED;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,QAAQ,EAAE,MAAM,IAAI,QAMzC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,OAAO,CAAC,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC;CACtB"}