w3ps1/_app/immutable/chunks/index.es-0ba1da57.js
2023-05-16 16:45:50 +00:00

10429 lines
353 KiB
JavaScript

import { t as tslibExports, e as eventsExports } from "./tslib-bb523be7.js";
import { e as commonjsGlobal, h as getAugmentedNamespace, r as require$$1 } from "./_page-5213019f.js";
import { b as safeJsonStringify$1, s as splitOnFirst, a as strictUriEncode, d as decodeUriComponent, i as isWsUrl, c as cjs$8, e as isLocalhostUrl, g as safeJsonParse$1, f as formatJsonRpcError, h as parseConnectionError, J as JsonRpcProvider, j as isJsonRpcRequest, k as formatJsonRpcResult, l as isJsonRpcResult, m as isJsonRpcError, n as isJsonRpcResponse, o as formatJsonRpcRequest, H as HttpConnection } from "./index-fbf1926a.js";
function tryStringify(o2) {
try {
return JSON.stringify(o2);
} catch (e) {
return '"[Circular]"';
}
}
var quickFormatUnescaped = format$1;
function format$1(f, args, opts) {
var ss2 = opts && opts.stringify || tryStringify;
var offset = 1;
if (typeof f === "object" && f !== null) {
var len = args.length + offset;
if (len === 1)
return f;
var objects = new Array(len);
objects[0] = ss2(f);
for (var index = 1; index < len; index++) {
objects[index] = ss2(args[index]);
}
return objects.join(" ");
}
if (typeof f !== "string") {
return f;
}
var argLen = args.length;
if (argLen === 0)
return f;
var str = "";
var a3 = 1 - offset;
var lastPos = -1;
var flen = f && f.length || 0;
for (var i = 0; i < flen; ) {
if (f.charCodeAt(i) === 37 && i + 1 < flen) {
lastPos = lastPos > -1 ? lastPos : 0;
switch (f.charCodeAt(i + 1)) {
case 100:
case 102:
if (a3 >= argLen)
break;
if (args[a3] == null)
break;
if (lastPos < i)
str += f.slice(lastPos, i);
str += Number(args[a3]);
lastPos = i + 2;
i++;
break;
case 105:
if (a3 >= argLen)
break;
if (args[a3] == null)
break;
if (lastPos < i)
str += f.slice(lastPos, i);
str += Math.floor(Number(args[a3]));
lastPos = i + 2;
i++;
break;
case 79:
case 111:
case 106:
if (a3 >= argLen)
break;
if (args[a3] === void 0)
break;
if (lastPos < i)
str += f.slice(lastPos, i);
var type = typeof args[a3];
if (type === "string") {
str += "'" + args[a3] + "'";
lastPos = i + 2;
i++;
break;
}
if (type === "function") {
str += args[a3].name || "<anonymous>";
lastPos = i + 2;
i++;
break;
}
str += ss2(args[a3]);
lastPos = i + 2;
i++;
break;
case 115:
if (a3 >= argLen)
break;
if (lastPos < i)
str += f.slice(lastPos, i);
str += String(args[a3]);
lastPos = i + 2;
i++;
break;
case 37:
if (lastPos < i)
str += f.slice(lastPos, i);
str += "%";
lastPos = i + 2;
i++;
a3--;
break;
}
++a3;
}
++i;
}
if (lastPos === -1)
return f;
else if (lastPos < flen) {
str += f.slice(lastPos);
}
return str;
}
const format = quickFormatUnescaped;
var browser$2 = pino;
const _console = pfGlobalThisOrFallback().console || {};
const stdSerializers = {
mapHttpRequest: mock,
mapHttpResponse: mock,
wrapRequestSerializer: passthrough,
wrapResponseSerializer: passthrough,
wrapErrorSerializer: passthrough,
req: mock,
res: mock,
err: asErrValue
};
function shouldSerialize(serialize, serializers) {
if (Array.isArray(serialize)) {
const hasToFilter = serialize.filter(function(k2) {
return k2 !== "!stdSerializers.err";
});
return hasToFilter;
} else if (serialize === true) {
return Object.keys(serializers);
}
return false;
}
function pino(opts) {
opts = opts || {};
opts.browser = opts.browser || {};
const transmit2 = opts.browser.transmit;
if (transmit2 && typeof transmit2.send !== "function") {
throw Error("pino: transmit option must have a send function");
}
const proto = opts.browser.write || _console;
if (opts.browser.write)
opts.browser.asObject = true;
const serializers = opts.serializers || {};
const serialize = shouldSerialize(opts.browser.serialize, serializers);
let stdErrSerialize = opts.browser.serialize;
if (Array.isArray(opts.browser.serialize) && opts.browser.serialize.indexOf("!stdSerializers.err") > -1)
stdErrSerialize = false;
const levels = ["error", "fatal", "warn", "info", "debug", "trace"];
if (typeof proto === "function") {
proto.error = proto.fatal = proto.warn = proto.info = proto.debug = proto.trace = proto;
}
if (opts.enabled === false)
opts.level = "silent";
const level = opts.level || "info";
const logger = Object.create(proto);
if (!logger.log)
logger.log = noop;
Object.defineProperty(logger, "levelVal", {
get: getLevelVal
});
Object.defineProperty(logger, "level", {
get: getLevel,
set: setLevel
});
const setOpts = {
transmit: transmit2,
serialize,
asObject: opts.browser.asObject,
levels,
timestamp: getTimeFunction(opts)
};
logger.levels = pino.levels;
logger.level = level;
logger.setMaxListeners = logger.getMaxListeners = logger.emit = logger.addListener = logger.on = logger.prependListener = logger.once = logger.prependOnceListener = logger.removeListener = logger.removeAllListeners = logger.listeners = logger.listenerCount = logger.eventNames = logger.write = logger.flush = noop;
logger.serializers = serializers;
logger._serialize = serialize;
logger._stdErrSerialize = stdErrSerialize;
logger.child = child;
if (transmit2)
logger._logEvent = createLogEventShape();
function getLevelVal() {
return this.level === "silent" ? Infinity : this.levels.values[this.level];
}
function getLevel() {
return this._level;
}
function setLevel(level2) {
if (level2 !== "silent" && !this.levels.values[level2]) {
throw Error("unknown level " + level2);
}
this._level = level2;
set(setOpts, logger, "error", "log");
set(setOpts, logger, "fatal", "error");
set(setOpts, logger, "warn", "error");
set(setOpts, logger, "info", "log");
set(setOpts, logger, "debug", "log");
set(setOpts, logger, "trace", "log");
}
function child(bindings, childOptions) {
if (!bindings) {
throw new Error("missing bindings for child Pino");
}
childOptions = childOptions || {};
if (serialize && bindings.serializers) {
childOptions.serializers = bindings.serializers;
}
const childOptionsSerializers = childOptions.serializers;
if (serialize && childOptionsSerializers) {
var childSerializers = Object.assign({}, serializers, childOptionsSerializers);
var childSerialize = opts.browser.serialize === true ? Object.keys(childSerializers) : serialize;
delete bindings.serializers;
applySerializers([bindings], childSerialize, childSerializers, this._stdErrSerialize);
}
function Child(parent) {
this._childLevel = (parent._childLevel | 0) + 1;
this.error = bind(parent, bindings, "error");
this.fatal = bind(parent, bindings, "fatal");
this.warn = bind(parent, bindings, "warn");
this.info = bind(parent, bindings, "info");
this.debug = bind(parent, bindings, "debug");
this.trace = bind(parent, bindings, "trace");
if (childSerializers) {
this.serializers = childSerializers;
this._serialize = childSerialize;
}
if (transmit2) {
this._logEvent = createLogEventShape(
[].concat(parent._logEvent.bindings, bindings)
);
}
}
Child.prototype = this;
return new Child(this);
}
return logger;
}
pino.levels = {
values: {
fatal: 60,
error: 50,
warn: 40,
info: 30,
debug: 20,
trace: 10
},
labels: {
10: "trace",
20: "debug",
30: "info",
40: "warn",
50: "error",
60: "fatal"
}
};
pino.stdSerializers = stdSerializers;
pino.stdTimeFunctions = Object.assign({}, { nullTime, epochTime, unixTime, isoTime });
function set(opts, logger, level, fallback) {
const proto = Object.getPrototypeOf(logger);
logger[level] = logger.levelVal > logger.levels.values[level] ? noop : proto[level] ? proto[level] : _console[level] || _console[fallback] || noop;
wrap(opts, logger, level);
}
function wrap(opts, logger, level) {
if (!opts.transmit && logger[level] === noop)
return;
logger[level] = function(write) {
return function LOG() {
const ts2 = opts.timestamp();
const args = new Array(arguments.length);
const proto = Object.getPrototypeOf && Object.getPrototypeOf(this) === _console ? _console : this;
for (var i = 0; i < args.length; i++)
args[i] = arguments[i];
if (opts.serialize && !opts.asObject) {
applySerializers(args, this._serialize, this.serializers, this._stdErrSerialize);
}
if (opts.asObject)
write.call(proto, asObject(this, level, args, ts2));
else
write.apply(proto, args);
if (opts.transmit) {
const transmitLevel = opts.transmit.level || logger.level;
const transmitValue = pino.levels.values[transmitLevel];
const methodValue = pino.levels.values[level];
if (methodValue < transmitValue)
return;
transmit(this, {
ts: ts2,
methodLevel: level,
methodValue,
transmitLevel,
transmitValue: pino.levels.values[opts.transmit.level || logger.level],
send: opts.transmit.send,
val: logger.levelVal
}, args);
}
};
}(logger[level]);
}
function asObject(logger, level, args, ts2) {
if (logger._serialize)
applySerializers(args, logger._serialize, logger.serializers, logger._stdErrSerialize);
const argsCloned = args.slice();
let msg = argsCloned[0];
const o2 = {};
if (ts2) {
o2.time = ts2;
}
o2.level = pino.levels.values[level];
let lvl = (logger._childLevel | 0) + 1;
if (lvl < 1)
lvl = 1;
if (msg !== null && typeof msg === "object") {
while (lvl-- && typeof argsCloned[0] === "object") {
Object.assign(o2, argsCloned.shift());
}
msg = argsCloned.length ? format(argsCloned.shift(), argsCloned) : void 0;
} else if (typeof msg === "string")
msg = format(argsCloned.shift(), argsCloned);
if (msg !== void 0)
o2.msg = msg;
return o2;
}
function applySerializers(args, serialize, serializers, stdErrSerialize) {
for (const i in args) {
if (stdErrSerialize && args[i] instanceof Error) {
args[i] = pino.stdSerializers.err(args[i]);
} else if (typeof args[i] === "object" && !Array.isArray(args[i])) {
for (const k2 in args[i]) {
if (serialize && serialize.indexOf(k2) > -1 && k2 in serializers) {
args[i][k2] = serializers[k2](args[i][k2]);
}
}
}
}
}
function bind(parent, bindings, level) {
return function() {
const args = new Array(1 + arguments.length);
args[0] = bindings;
for (var i = 1; i < args.length; i++) {
args[i] = arguments[i - 1];
}
return parent[level].apply(this, args);
};
}
function transmit(logger, opts, args) {
const send = opts.send;
const ts2 = opts.ts;
const methodLevel = opts.methodLevel;
const methodValue = opts.methodValue;
const val = opts.val;
const bindings = logger._logEvent.bindings;
applySerializers(
args,
logger._serialize || Object.keys(logger.serializers),
logger.serializers,
logger._stdErrSerialize === void 0 ? true : logger._stdErrSerialize
);
logger._logEvent.ts = ts2;
logger._logEvent.messages = args.filter(function(arg) {
return bindings.indexOf(arg) === -1;
});
logger._logEvent.level.label = methodLevel;
logger._logEvent.level.value = methodValue;
send(methodLevel, logger._logEvent, val);
logger._logEvent = createLogEventShape(bindings);
}
function createLogEventShape(bindings) {
return {
ts: 0,
messages: [],
bindings: bindings || [],
level: { label: "", value: 0 }
};
}
function asErrValue(err) {
const obj = {
type: err.constructor.name,
msg: err.message,
stack: err.stack
};
for (const key in err) {
if (obj[key] === void 0) {
obj[key] = err[key];
}
}
return obj;
}
function getTimeFunction(opts) {
if (typeof opts.timestamp === "function") {
return opts.timestamp;
}
if (opts.timestamp === false) {
return nullTime;
}
return epochTime;
}
function mock() {
return {};
}
function passthrough(a3) {
return a3;
}
function noop() {
}
function nullTime() {
return false;
}
function epochTime() {
return Date.now();
}
function unixTime() {
return Math.round(Date.now() / 1e3);
}
function isoTime() {
return new Date(Date.now()).toISOString();
}
function pfGlobalThisOrFallback() {
function defd(o2) {
return typeof o2 !== "undefined" && o2;
}
try {
if (typeof globalThis !== "undefined")
return globalThis;
Object.defineProperty(Object.prototype, "globalThis", {
get: function() {
delete Object.prototype.globalThis;
return this.globalThis = this;
},
configurable: true
});
return globalThis;
} catch (e) {
return defd(self) || defd(window) || defd(this) || {};
}
}
var browser$1 = {};
var cjs$7 = {};
Object.defineProperty(cjs$7, "__esModule", { value: true });
function safeJsonParse(value) {
if (typeof value !== "string") {
throw new Error(`Cannot safe json parse value of type ${typeof value}`);
}
try {
return JSON.parse(value);
} catch (_a) {
return value;
}
}
cjs$7.safeJsonParse = safeJsonParse;
function safeJsonStringify(value) {
return typeof value === "string" ? value : JSON.stringify(value, (key, value2) => typeof value2 === "undefined" ? null : value2);
}
cjs$7.safeJsonStringify = safeJsonStringify;
var localStorageExports = {};
var localStorage = {
get exports() {
return localStorageExports;
},
set exports(v2) {
localStorageExports = v2;
}
};
var hasRequiredLocalStorage;
function requireLocalStorage() {
if (hasRequiredLocalStorage)
return localStorageExports;
hasRequiredLocalStorage = 1;
(function() {
let db;
function LocalStorage() {
}
db = LocalStorage;
db.prototype.getItem = function(key) {
if (this.hasOwnProperty(key)) {
return String(this[key]);
}
return null;
};
db.prototype.setItem = function(key, val) {
this[key] = String(val);
};
db.prototype.removeItem = function(key) {
delete this[key];
};
db.prototype.clear = function() {
const self2 = this;
Object.keys(self2).forEach(function(key) {
self2[key] = void 0;
delete self2[key];
});
};
db.prototype.key = function(i) {
i = i || 0;
return Object.keys(this)[i];
};
db.prototype.__defineGetter__("length", function() {
return Object.keys(this).length;
});
if (typeof commonjsGlobal !== "undefined" && commonjsGlobal.localStorage) {
localStorage.exports = commonjsGlobal.localStorage;
} else if (typeof window !== "undefined" && window.localStorage) {
localStorage.exports = window.localStorage;
} else {
localStorage.exports = new LocalStorage();
}
})();
return localStorageExports;
}
var shared = {};
var types$2 = {};
var hasRequiredTypes$2;
function requireTypes$2() {
if (hasRequiredTypes$2)
return types$2;
hasRequiredTypes$2 = 1;
Object.defineProperty(types$2, "__esModule", { value: true });
types$2.IKeyValueStorage = void 0;
class IKeyValueStorage {
}
types$2.IKeyValueStorage = IKeyValueStorage;
return types$2;
}
var utils$2 = {};
var hasRequiredUtils$2;
function requireUtils$2() {
if (hasRequiredUtils$2)
return utils$2;
hasRequiredUtils$2 = 1;
Object.defineProperty(utils$2, "__esModule", { value: true });
utils$2.parseEntry = void 0;
const safe_json_utils_12 = cjs$7;
function parseEntry(entry) {
var _a;
return [entry[0], safe_json_utils_12.safeJsonParse((_a = entry[1]) !== null && _a !== void 0 ? _a : "")];
}
utils$2.parseEntry = parseEntry;
return utils$2;
}
var hasRequiredShared;
function requireShared() {
if (hasRequiredShared)
return shared;
hasRequiredShared = 1;
(function(exports) {
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_12 = tslibExports;
tslib_12.__exportStar(requireTypes$2(), exports);
tslib_12.__exportStar(requireUtils$2(), exports);
})(shared);
return shared;
}
Object.defineProperty(browser$1, "__esModule", { value: true });
browser$1.KeyValueStorage = void 0;
const tslib_1 = tslibExports;
const safe_json_utils_1 = cjs$7;
const localStorage_1 = tslib_1.__importDefault(requireLocalStorage());
const shared_1 = requireShared();
class KeyValueStorage {
constructor() {
this.localStorage = localStorage_1.default;
}
getKeys() {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return Object.keys(this.localStorage);
});
}
getEntries() {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return Object.entries(this.localStorage).map(shared_1.parseEntry);
});
}
getItem(key) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const item = this.localStorage.getItem(key);
if (item === null) {
return void 0;
}
return safe_json_utils_1.safeJsonParse(item);
});
}
setItem(key, value) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
this.localStorage.setItem(key, safe_json_utils_1.safeJsonStringify(value));
});
}
removeItem(key) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
this.localStorage.removeItem(key);
});
}
}
browser$1.KeyValueStorage = KeyValueStorage;
var _default = browser$1.default = KeyValueStorage;
var cjs$6 = {};
var heartbeat$2 = {};
var cjs$5 = {};
var utils$1 = {};
var delay = {};
var hasRequiredDelay;
function requireDelay() {
if (hasRequiredDelay)
return delay;
hasRequiredDelay = 1;
Object.defineProperty(delay, "__esModule", { value: true });
delay.delay = void 0;
function delay$1(timeout) {
return new Promise((resolve) => {
setTimeout(() => {
resolve(true);
}, timeout);
});
}
delay.delay = delay$1;
return delay;
}
var convert = {};
var constants$2 = {};
var misc = {};
var hasRequiredMisc;
function requireMisc() {
if (hasRequiredMisc)
return misc;
hasRequiredMisc = 1;
Object.defineProperty(misc, "__esModule", { value: true });
misc.ONE_THOUSAND = misc.ONE_HUNDRED = void 0;
misc.ONE_HUNDRED = 100;
misc.ONE_THOUSAND = 1e3;
return misc;
}
var time = {};
var hasRequiredTime;
function requireTime() {
if (hasRequiredTime)
return time;
hasRequiredTime = 1;
(function(exports) {
Object.defineProperty(exports, "__esModule", { value: true });
exports.ONE_YEAR = exports.FOUR_WEEKS = exports.THREE_WEEKS = exports.TWO_WEEKS = exports.ONE_WEEK = exports.THIRTY_DAYS = exports.SEVEN_DAYS = exports.FIVE_DAYS = exports.THREE_DAYS = exports.ONE_DAY = exports.TWENTY_FOUR_HOURS = exports.TWELVE_HOURS = exports.SIX_HOURS = exports.THREE_HOURS = exports.ONE_HOUR = exports.SIXTY_MINUTES = exports.THIRTY_MINUTES = exports.TEN_MINUTES = exports.FIVE_MINUTES = exports.ONE_MINUTE = exports.SIXTY_SECONDS = exports.THIRTY_SECONDS = exports.TEN_SECONDS = exports.FIVE_SECONDS = exports.ONE_SECOND = void 0;
exports.ONE_SECOND = 1;
exports.FIVE_SECONDS = 5;
exports.TEN_SECONDS = 10;
exports.THIRTY_SECONDS = 30;
exports.SIXTY_SECONDS = 60;
exports.ONE_MINUTE = exports.SIXTY_SECONDS;
exports.FIVE_MINUTES = exports.ONE_MINUTE * 5;
exports.TEN_MINUTES = exports.ONE_MINUTE * 10;
exports.THIRTY_MINUTES = exports.ONE_MINUTE * 30;
exports.SIXTY_MINUTES = exports.ONE_MINUTE * 60;
exports.ONE_HOUR = exports.SIXTY_MINUTES;
exports.THREE_HOURS = exports.ONE_HOUR * 3;
exports.SIX_HOURS = exports.ONE_HOUR * 6;
exports.TWELVE_HOURS = exports.ONE_HOUR * 12;
exports.TWENTY_FOUR_HOURS = exports.ONE_HOUR * 24;
exports.ONE_DAY = exports.TWENTY_FOUR_HOURS;
exports.THREE_DAYS = exports.ONE_DAY * 3;
exports.FIVE_DAYS = exports.ONE_DAY * 5;
exports.SEVEN_DAYS = exports.ONE_DAY * 7;
exports.THIRTY_DAYS = exports.ONE_DAY * 30;
exports.ONE_WEEK = exports.SEVEN_DAYS;
exports.TWO_WEEKS = exports.ONE_WEEK * 2;
exports.THREE_WEEKS = exports.ONE_WEEK * 3;
exports.FOUR_WEEKS = exports.ONE_WEEK * 4;
exports.ONE_YEAR = exports.ONE_DAY * 365;
})(time);
return time;
}
var hasRequiredConstants$2;
function requireConstants$2() {
if (hasRequiredConstants$2)
return constants$2;
hasRequiredConstants$2 = 1;
(function(exports) {
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_12 = tslibExports;
tslib_12.__exportStar(requireMisc(), exports);
tslib_12.__exportStar(requireTime(), exports);
})(constants$2);
return constants$2;
}
var hasRequiredConvert;
function requireConvert() {
if (hasRequiredConvert)
return convert;
hasRequiredConvert = 1;
Object.defineProperty(convert, "__esModule", { value: true });
convert.fromMiliseconds = convert.toMiliseconds = void 0;
const constants_1 = requireConstants$2();
function toMiliseconds(seconds) {
return seconds * constants_1.ONE_THOUSAND;
}
convert.toMiliseconds = toMiliseconds;
function fromMiliseconds(miliseconds) {
return Math.floor(miliseconds / constants_1.ONE_THOUSAND);
}
convert.fromMiliseconds = fromMiliseconds;
return convert;
}
var hasRequiredUtils$1;
function requireUtils$1() {
if (hasRequiredUtils$1)
return utils$1;
hasRequiredUtils$1 = 1;
(function(exports) {
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_12 = tslibExports;
tslib_12.__exportStar(requireDelay(), exports);
tslib_12.__exportStar(requireConvert(), exports);
})(utils$1);
return utils$1;
}
var watch$1 = {};
var hasRequiredWatch$1;
function requireWatch$1() {
if (hasRequiredWatch$1)
return watch$1;
hasRequiredWatch$1 = 1;
Object.defineProperty(watch$1, "__esModule", { value: true });
watch$1.Watch = void 0;
class Watch {
constructor() {
this.timestamps = /* @__PURE__ */ new Map();
}
start(label) {
if (this.timestamps.has(label)) {
throw new Error(`Watch already started for label: ${label}`);
}
this.timestamps.set(label, { started: Date.now() });
}
stop(label) {
const timestamp = this.get(label);
if (typeof timestamp.elapsed !== "undefined") {
throw new Error(`Watch already stopped for label: ${label}`);
}
const elapsed = Date.now() - timestamp.started;
this.timestamps.set(label, { started: timestamp.started, elapsed });
}
get(label) {
const timestamp = this.timestamps.get(label);
if (typeof timestamp === "undefined") {
throw new Error(`No timestamp found for label: ${label}`);
}
return timestamp;
}
elapsed(label) {
const timestamp = this.get(label);
const elapsed = timestamp.elapsed || Date.now() - timestamp.started;
return elapsed;
}
}
watch$1.Watch = Watch;
watch$1.default = Watch;
return watch$1;
}
var types$1 = {};
var watch = {};
var hasRequiredWatch;
function requireWatch() {
if (hasRequiredWatch)
return watch;
hasRequiredWatch = 1;
Object.defineProperty(watch, "__esModule", { value: true });
watch.IWatch = void 0;
class IWatch {
}
watch.IWatch = IWatch;
return watch;
}
var hasRequiredTypes$1;
function requireTypes$1() {
if (hasRequiredTypes$1)
return types$1;
hasRequiredTypes$1 = 1;
(function(exports) {
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_12 = tslibExports;
tslib_12.__exportStar(requireWatch(), exports);
})(types$1);
return types$1;
}
(function(exports) {
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_12 = tslibExports;
tslib_12.__exportStar(requireUtils$1(), exports);
tslib_12.__exportStar(requireWatch$1(), exports);
tslib_12.__exportStar(requireTypes$1(), exports);
tslib_12.__exportStar(requireConstants$2(), exports);
})(cjs$5);
var types = {};
var heartbeat$1 = {};
class IEvents {
}
const esm = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
IEvents
}, Symbol.toStringTag, { value: "Module" }));
const require$$0 = /* @__PURE__ */ getAugmentedNamespace(esm);
var hasRequiredHeartbeat$2;
function requireHeartbeat$2() {
if (hasRequiredHeartbeat$2)
return heartbeat$1;
hasRequiredHeartbeat$2 = 1;
Object.defineProperty(heartbeat$1, "__esModule", { value: true });
heartbeat$1.IHeartBeat = void 0;
const events_1 = require$$0;
class IHeartBeat extends events_1.IEvents {
constructor(opts) {
super();
}
}
heartbeat$1.IHeartBeat = IHeartBeat;
return heartbeat$1;
}
var hasRequiredTypes;
function requireTypes() {
if (hasRequiredTypes)
return types;
hasRequiredTypes = 1;
(function(exports) {
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_12 = tslibExports;
tslib_12.__exportStar(requireHeartbeat$2(), exports);
})(types);
return types;
}
var constants$1 = {};
var heartbeat = {};
var hasRequiredHeartbeat$1;
function requireHeartbeat$1() {
if (hasRequiredHeartbeat$1)
return heartbeat;
hasRequiredHeartbeat$1 = 1;
Object.defineProperty(heartbeat, "__esModule", { value: true });
heartbeat.HEARTBEAT_EVENTS = heartbeat.HEARTBEAT_INTERVAL = void 0;
const time_1 = cjs$5;
heartbeat.HEARTBEAT_INTERVAL = time_1.FIVE_SECONDS;
heartbeat.HEARTBEAT_EVENTS = {
pulse: "heartbeat_pulse"
};
return heartbeat;
}
var hasRequiredConstants$1;
function requireConstants$1() {
if (hasRequiredConstants$1)
return constants$1;
hasRequiredConstants$1 = 1;
(function(exports) {
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_12 = tslibExports;
tslib_12.__exportStar(requireHeartbeat$1(), exports);
})(constants$1);
return constants$1;
}
var hasRequiredHeartbeat;
function requireHeartbeat() {
if (hasRequiredHeartbeat)
return heartbeat$2;
hasRequiredHeartbeat = 1;
Object.defineProperty(heartbeat$2, "__esModule", { value: true });
heartbeat$2.HeartBeat = void 0;
const tslib_12 = tslibExports;
const events_1 = eventsExports;
const time_1 = cjs$5;
const types_1 = requireTypes();
const constants_1 = requireConstants$1();
class HeartBeat extends types_1.IHeartBeat {
constructor(opts) {
super(opts);
this.events = new events_1.EventEmitter();
this.interval = constants_1.HEARTBEAT_INTERVAL;
this.interval = (opts === null || opts === void 0 ? void 0 : opts.interval) || constants_1.HEARTBEAT_INTERVAL;
}
static init(opts) {
return tslib_12.__awaiter(this, void 0, void 0, function* () {
const heartbeat2 = new HeartBeat(opts);
yield heartbeat2.init();
return heartbeat2;
});
}
init() {
return tslib_12.__awaiter(this, void 0, void 0, function* () {
yield this.initialize();
});
}
stop() {
clearInterval(this.intervalRef);
}
on(event, listener) {
this.events.on(event, listener);
}
once(event, listener) {
this.events.once(event, listener);
}
off(event, listener) {
this.events.off(event, listener);
}
removeListener(event, listener) {
this.events.removeListener(event, listener);
}
initialize() {
return tslib_12.__awaiter(this, void 0, void 0, function* () {
this.intervalRef = setInterval(() => this.pulse(), time_1.toMiliseconds(this.interval));
});
}
pulse() {
this.events.emit(constants_1.HEARTBEAT_EVENTS.pulse);
}
}
heartbeat$2.HeartBeat = HeartBeat;
return heartbeat$2;
}
(function(exports) {
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_12 = tslibExports;
tslib_12.__exportStar(requireHeartbeat(), exports);
tslib_12.__exportStar(requireTypes(), exports);
tslib_12.__exportStar(requireConstants$1(), exports);
})(cjs$6);
var cjs$4 = {};
var constants = {};
var hasRequiredConstants;
function requireConstants() {
if (hasRequiredConstants)
return constants;
hasRequiredConstants = 1;
Object.defineProperty(constants, "__esModule", { value: true });
constants.PINO_CUSTOM_CONTEXT_KEY = constants.PINO_LOGGER_DEFAULTS = void 0;
constants.PINO_LOGGER_DEFAULTS = {
level: "info"
};
constants.PINO_CUSTOM_CONTEXT_KEY = "custom_context";
return constants;
}
var utils = {};
var hasRequiredUtils;
function requireUtils() {
if (hasRequiredUtils)
return utils;
hasRequiredUtils = 1;
Object.defineProperty(utils, "__esModule", { value: true });
utils.generateChildLogger = utils.formatChildLoggerContext = utils.getLoggerContext = utils.setBrowserLoggerContext = utils.getBrowserLoggerContext = utils.getDefaultLoggerOptions = void 0;
const constants_1 = requireConstants();
function getDefaultLoggerOptions(opts) {
return Object.assign(Object.assign({}, opts), { level: (opts === null || opts === void 0 ? void 0 : opts.level) || constants_1.PINO_LOGGER_DEFAULTS.level });
}
utils.getDefaultLoggerOptions = getDefaultLoggerOptions;
function getBrowserLoggerContext(logger, customContextKey = constants_1.PINO_CUSTOM_CONTEXT_KEY) {
return logger[customContextKey] || "";
}
utils.getBrowserLoggerContext = getBrowserLoggerContext;
function setBrowserLoggerContext(logger, context, customContextKey = constants_1.PINO_CUSTOM_CONTEXT_KEY) {
logger[customContextKey] = context;
return logger;
}
utils.setBrowserLoggerContext = setBrowserLoggerContext;
function getLoggerContext(logger, customContextKey = constants_1.PINO_CUSTOM_CONTEXT_KEY) {
let context = "";
if (typeof logger.bindings === "undefined") {
context = getBrowserLoggerContext(logger, customContextKey);
} else {
context = logger.bindings().context || "";
}
return context;
}
utils.getLoggerContext = getLoggerContext;
function formatChildLoggerContext(logger, childContext, customContextKey = constants_1.PINO_CUSTOM_CONTEXT_KEY) {
const parentContext = getLoggerContext(logger, customContextKey);
const context = parentContext.trim() ? `${parentContext}/${childContext}` : childContext;
return context;
}
utils.formatChildLoggerContext = formatChildLoggerContext;
function generateChildLogger(logger, childContext, customContextKey = constants_1.PINO_CUSTOM_CONTEXT_KEY) {
const context = formatChildLoggerContext(logger, childContext, customContextKey);
const child = logger.child({ context });
return setBrowserLoggerContext(child, context, customContextKey);
}
utils.generateChildLogger = generateChildLogger;
return utils;
}
(function(exports) {
Object.defineProperty(exports, "__esModule", { value: true });
exports.pino = void 0;
const tslib_12 = tslibExports;
const pino_1 = tslib_12.__importDefault(browser$2);
Object.defineProperty(exports, "pino", { enumerable: true, get: function() {
return pino_1.default;
} });
tslib_12.__exportStar(requireConstants(), exports);
tslib_12.__exportStar(requireUtils(), exports);
})(cjs$4);
class n extends IEvents {
constructor(s) {
super(), this.opts = s, this.protocol = "wc", this.version = 2;
}
}
let h$3 = class h extends IEvents {
constructor(s, t) {
super(), this.core = s, this.logger = t, this.records = /* @__PURE__ */ new Map();
}
};
let a$1 = class a {
constructor(s, t) {
this.logger = s, this.core = t;
}
};
let u$1 = class u extends IEvents {
constructor(s, t) {
super(), this.relayer = s, this.logger = t;
}
};
class g extends IEvents {
constructor(s) {
super();
}
}
let p$2 = class p {
constructor(s, t, o2, S2) {
this.core = s, this.logger = t, this.name = o2;
}
};
class x extends IEvents {
constructor(s, t) {
super(), this.relayer = s, this.logger = t;
}
}
let E$2 = class E extends IEvents {
constructor(s, t) {
super(), this.core = s, this.logger = t;
}
};
let y$3 = class y {
constructor(s) {
this.opts = s, this.protocol = "wc", this.version = 2;
}
};
let C$3 = class C {
constructor(s) {
this.client = s;
}
};
var ed25519 = {};
var random = {};
var system = {};
var browser = {};
Object.defineProperty(browser, "__esModule", { value: true });
browser.BrowserRandomSource = void 0;
const QUOTA = 65536;
class BrowserRandomSource {
constructor() {
this.isAvailable = false;
this.isInstantiated = false;
const browserCrypto = typeof self !== "undefined" ? self.crypto || self.msCrypto : null;
if (browserCrypto && browserCrypto.getRandomValues !== void 0) {
this._crypto = browserCrypto;
this.isAvailable = true;
this.isInstantiated = true;
}
}
randomBytes(length) {
if (!this.isAvailable || !this._crypto) {
throw new Error("Browser random byte generator is not available.");
}
const out = new Uint8Array(length);
for (let i = 0; i < out.length; i += QUOTA) {
this._crypto.getRandomValues(out.subarray(i, i + Math.min(out.length - i, QUOTA)));
}
return out;
}
}
browser.BrowserRandomSource = BrowserRandomSource;
function commonjsRequire(path) {
throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');
}
var node = {};
var wipe$1 = {};
Object.defineProperty(wipe$1, "__esModule", { value: true });
function wipe(array) {
for (var i = 0; i < array.length; i++) {
array[i] = 0;
}
return array;
}
wipe$1.wipe = wipe;
Object.defineProperty(node, "__esModule", { value: true });
node.NodeRandomSource = void 0;
const wipe_1$3 = wipe$1;
class NodeRandomSource {
constructor() {
this.isAvailable = false;
this.isInstantiated = false;
if (typeof commonjsRequire !== "undefined") {
const nodeCrypto = require$$1;
if (nodeCrypto && nodeCrypto.randomBytes) {
this._crypto = nodeCrypto;
this.isAvailable = true;
this.isInstantiated = true;
}
}
}
randomBytes(length) {
if (!this.isAvailable || !this._crypto) {
throw new Error("Node.js random byte generator is not available.");
}
let buffer = this._crypto.randomBytes(length);
if (buffer.length !== length) {
throw new Error("NodeRandomSource: got fewer bytes than requested");
}
const out = new Uint8Array(length);
for (let i = 0; i < out.length; i++) {
out[i] = buffer[i];
}
(0, wipe_1$3.wipe)(buffer);
return out;
}
}
node.NodeRandomSource = NodeRandomSource;
Object.defineProperty(system, "__esModule", { value: true });
system.SystemRandomSource = void 0;
const browser_1 = browser;
const node_1 = node;
class SystemRandomSource {
constructor() {
this.isAvailable = false;
this.name = "";
this._source = new browser_1.BrowserRandomSource();
if (this._source.isAvailable) {
this.isAvailable = true;
this.name = "Browser";
return;
}
this._source = new node_1.NodeRandomSource();
if (this._source.isAvailable) {
this.isAvailable = true;
this.name = "Node";
return;
}
}
randomBytes(length) {
if (!this.isAvailable) {
throw new Error("System random byte generator is not available.");
}
return this._source.randomBytes(length);
}
}
system.SystemRandomSource = SystemRandomSource;
var binary = {};
var int = {};
(function(exports) {
Object.defineProperty(exports, "__esModule", { value: true });
function imulShim(a3, b2) {
var ah = a3 >>> 16 & 65535, al = a3 & 65535;
var bh = b2 >>> 16 & 65535, bl = b2 & 65535;
return al * bl + (ah * bl + al * bh << 16 >>> 0) | 0;
}
exports.mul = Math.imul || imulShim;
function add(a3, b2) {
return a3 + b2 | 0;
}
exports.add = add;
function sub(a3, b2) {
return a3 - b2 | 0;
}
exports.sub = sub;
function rotl(x2, n2) {
return x2 << n2 | x2 >>> 32 - n2;
}
exports.rotl = rotl;
function rotr(x2, n2) {
return x2 << 32 - n2 | x2 >>> n2;
}
exports.rotr = rotr;
function isIntegerShim(n2) {
return typeof n2 === "number" && isFinite(n2) && Math.floor(n2) === n2;
}
exports.isInteger = Number.isInteger || isIntegerShim;
exports.MAX_SAFE_INTEGER = 9007199254740991;
exports.isSafeInteger = function(n2) {
return exports.isInteger(n2) && (n2 >= -exports.MAX_SAFE_INTEGER && n2 <= exports.MAX_SAFE_INTEGER);
};
})(int);
Object.defineProperty(binary, "__esModule", { value: true });
var int_1 = int;
function readInt16BE(array, offset) {
if (offset === void 0) {
offset = 0;
}
return (array[offset + 0] << 8 | array[offset + 1]) << 16 >> 16;
}
binary.readInt16BE = readInt16BE;
function readUint16BE(array, offset) {
if (offset === void 0) {
offset = 0;
}
return (array[offset + 0] << 8 | array[offset + 1]) >>> 0;
}
binary.readUint16BE = readUint16BE;
function readInt16LE(array, offset) {
if (offset === void 0) {
offset = 0;
}
return (array[offset + 1] << 8 | array[offset]) << 16 >> 16;
}
binary.readInt16LE = readInt16LE;
function readUint16LE(array, offset) {
if (offset === void 0) {
offset = 0;
}
return (array[offset + 1] << 8 | array[offset]) >>> 0;
}
binary.readUint16LE = readUint16LE;
function writeUint16BE(value, out, offset) {
if (out === void 0) {
out = new Uint8Array(2);
}
if (offset === void 0) {
offset = 0;
}
out[offset + 0] = value >>> 8;
out[offset + 1] = value >>> 0;
return out;
}
binary.writeUint16BE = writeUint16BE;
binary.writeInt16BE = writeUint16BE;
function writeUint16LE(value, out, offset) {
if (out === void 0) {
out = new Uint8Array(2);
}
if (offset === void 0) {
offset = 0;
}
out[offset + 0] = value >>> 0;
out[offset + 1] = value >>> 8;
return out;
}
binary.writeUint16LE = writeUint16LE;
binary.writeInt16LE = writeUint16LE;
function readInt32BE(array, offset) {
if (offset === void 0) {
offset = 0;
}
return array[offset] << 24 | array[offset + 1] << 16 | array[offset + 2] << 8 | array[offset + 3];
}
binary.readInt32BE = readInt32BE;
function readUint32BE(array, offset) {
if (offset === void 0) {
offset = 0;
}
return (array[offset] << 24 | array[offset + 1] << 16 | array[offset + 2] << 8 | array[offset + 3]) >>> 0;
}
binary.readUint32BE = readUint32BE;
function readInt32LE(array, offset) {
if (offset === void 0) {
offset = 0;
}
return array[offset + 3] << 24 | array[offset + 2] << 16 | array[offset + 1] << 8 | array[offset];
}
binary.readInt32LE = readInt32LE;
function readUint32LE(array, offset) {
if (offset === void 0) {
offset = 0;
}
return (array[offset + 3] << 24 | array[offset + 2] << 16 | array[offset + 1] << 8 | array[offset]) >>> 0;
}
binary.readUint32LE = readUint32LE;
function writeUint32BE(value, out, offset) {
if (out === void 0) {
out = new Uint8Array(4);
}
if (offset === void 0) {
offset = 0;
}
out[offset + 0] = value >>> 24;
out[offset + 1] = value >>> 16;
out[offset + 2] = value >>> 8;
out[offset + 3] = value >>> 0;
return out;
}
binary.writeUint32BE = writeUint32BE;
binary.writeInt32BE = writeUint32BE;
function writeUint32LE(value, out, offset) {
if (out === void 0) {
out = new Uint8Array(4);
}
if (offset === void 0) {
offset = 0;
}
out[offset + 0] = value >>> 0;
out[offset + 1] = value >>> 8;
out[offset + 2] = value >>> 16;
out[offset + 3] = value >>> 24;
return out;
}
binary.writeUint32LE = writeUint32LE;
binary.writeInt32LE = writeUint32LE;
function readInt64BE(array, offset) {
if (offset === void 0) {
offset = 0;
}
var hi = readInt32BE(array, offset);
var lo = readInt32BE(array, offset + 4);
return hi * 4294967296 + lo - (lo >> 31) * 4294967296;
}
binary.readInt64BE = readInt64BE;
function readUint64BE(array, offset) {
if (offset === void 0) {
offset = 0;
}
var hi = readUint32BE(array, offset);
var lo = readUint32BE(array, offset + 4);
return hi * 4294967296 + lo;
}
binary.readUint64BE = readUint64BE;
function readInt64LE(array, offset) {
if (offset === void 0) {
offset = 0;
}
var lo = readInt32LE(array, offset);
var hi = readInt32LE(array, offset + 4);
return hi * 4294967296 + lo - (lo >> 31) * 4294967296;
}
binary.readInt64LE = readInt64LE;
function readUint64LE(array, offset) {
if (offset === void 0) {
offset = 0;
}
var lo = readUint32LE(array, offset);
var hi = readUint32LE(array, offset + 4);
return hi * 4294967296 + lo;
}
binary.readUint64LE = readUint64LE;
function writeUint64BE(value, out, offset) {
if (out === void 0) {
out = new Uint8Array(8);
}
if (offset === void 0) {
offset = 0;
}
writeUint32BE(value / 4294967296 >>> 0, out, offset);
writeUint32BE(value >>> 0, out, offset + 4);
return out;
}
binary.writeUint64BE = writeUint64BE;
binary.writeInt64BE = writeUint64BE;
function writeUint64LE(value, out, offset) {
if (out === void 0) {
out = new Uint8Array(8);
}
if (offset === void 0) {
offset = 0;
}
writeUint32LE(value >>> 0, out, offset);
writeUint32LE(value / 4294967296 >>> 0, out, offset + 4);
return out;
}
binary.writeUint64LE = writeUint64LE;
binary.writeInt64LE = writeUint64LE;
function readUintBE(bitLength, array, offset) {
if (offset === void 0) {
offset = 0;
}
if (bitLength % 8 !== 0) {
throw new Error("readUintBE supports only bitLengths divisible by 8");
}
if (bitLength / 8 > array.length - offset) {
throw new Error("readUintBE: array is too short for the given bitLength");
}
var result = 0;
var mul = 1;
for (var i = bitLength / 8 + offset - 1; i >= offset; i--) {
result += array[i] * mul;
mul *= 256;
}
return result;
}
binary.readUintBE = readUintBE;
function readUintLE(bitLength, array, offset) {
if (offset === void 0) {
offset = 0;
}
if (bitLength % 8 !== 0) {
throw new Error("readUintLE supports only bitLengths divisible by 8");
}
if (bitLength / 8 > array.length - offset) {
throw new Error("readUintLE: array is too short for the given bitLength");
}
var result = 0;
var mul = 1;
for (var i = offset; i < offset + bitLength / 8; i++) {
result += array[i] * mul;
mul *= 256;
}
return result;
}
binary.readUintLE = readUintLE;
function writeUintBE(bitLength, value, out, offset) {
if (out === void 0) {
out = new Uint8Array(bitLength / 8);
}
if (offset === void 0) {
offset = 0;
}
if (bitLength % 8 !== 0) {
throw new Error("writeUintBE supports only bitLengths divisible by 8");
}
if (!int_1.isSafeInteger(value)) {
throw new Error("writeUintBE value must be an integer");
}
var div = 1;
for (var i = bitLength / 8 + offset - 1; i >= offset; i--) {
out[i] = value / div & 255;
div *= 256;
}
return out;
}
binary.writeUintBE = writeUintBE;
function writeUintLE(bitLength, value, out, offset) {
if (out === void 0) {
out = new Uint8Array(bitLength / 8);
}
if (offset === void 0) {
offset = 0;
}
if (bitLength % 8 !== 0) {
throw new Error("writeUintLE supports only bitLengths divisible by 8");
}
if (!int_1.isSafeInteger(value)) {
throw new Error("writeUintLE value must be an integer");
}
var div = 1;
for (var i = offset; i < offset + bitLength / 8; i++) {
out[i] = value / div & 255;
div *= 256;
}
return out;
}
binary.writeUintLE = writeUintLE;
function readFloat32BE(array, offset) {
if (offset === void 0) {
offset = 0;
}
var view = new DataView(array.buffer, array.byteOffset, array.byteLength);
return view.getFloat32(offset);
}
binary.readFloat32BE = readFloat32BE;
function readFloat32LE(array, offset) {
if (offset === void 0) {
offset = 0;
}
var view = new DataView(array.buffer, array.byteOffset, array.byteLength);
return view.getFloat32(offset, true);
}
binary.readFloat32LE = readFloat32LE;
function readFloat64BE(array, offset) {
if (offset === void 0) {
offset = 0;
}
var view = new DataView(array.buffer, array.byteOffset, array.byteLength);
return view.getFloat64(offset);
}
binary.readFloat64BE = readFloat64BE;
function readFloat64LE(array, offset) {
if (offset === void 0) {
offset = 0;
}
var view = new DataView(array.buffer, array.byteOffset, array.byteLength);
return view.getFloat64(offset, true);
}
binary.readFloat64LE = readFloat64LE;
function writeFloat32BE(value, out, offset) {
if (out === void 0) {
out = new Uint8Array(4);
}
if (offset === void 0) {
offset = 0;
}
var view = new DataView(out.buffer, out.byteOffset, out.byteLength);
view.setFloat32(offset, value);
return out;
}
binary.writeFloat32BE = writeFloat32BE;
function writeFloat32LE(value, out, offset) {
if (out === void 0) {
out = new Uint8Array(4);
}
if (offset === void 0) {
offset = 0;
}
var view = new DataView(out.buffer, out.byteOffset, out.byteLength);
view.setFloat32(offset, value, true);
return out;
}
binary.writeFloat32LE = writeFloat32LE;
function writeFloat64BE(value, out, offset) {
if (out === void 0) {
out = new Uint8Array(8);
}
if (offset === void 0) {
offset = 0;
}
var view = new DataView(out.buffer, out.byteOffset, out.byteLength);
view.setFloat64(offset, value);
return out;
}
binary.writeFloat64BE = writeFloat64BE;
function writeFloat64LE(value, out, offset) {
if (out === void 0) {
out = new Uint8Array(8);
}
if (offset === void 0) {
offset = 0;
}
var view = new DataView(out.buffer, out.byteOffset, out.byteLength);
view.setFloat64(offset, value, true);
return out;
}
binary.writeFloat64LE = writeFloat64LE;
(function(exports) {
Object.defineProperty(exports, "__esModule", { value: true });
exports.randomStringForEntropy = exports.randomString = exports.randomUint32 = exports.randomBytes = exports.defaultRandomSource = void 0;
const system_1 = system;
const binary_12 = binary;
const wipe_12 = wipe$1;
exports.defaultRandomSource = new system_1.SystemRandomSource();
function randomBytes(length, prng = exports.defaultRandomSource) {
return prng.randomBytes(length);
}
exports.randomBytes = randomBytes;
function randomUint32(prng = exports.defaultRandomSource) {
const buf = randomBytes(4, prng);
const result = (0, binary_12.readUint32LE)(buf);
(0, wipe_12.wipe)(buf);
return result;
}
exports.randomUint32 = randomUint32;
const ALPHANUMERIC = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
function randomString(length, charset = ALPHANUMERIC, prng = exports.defaultRandomSource) {
if (charset.length < 2) {
throw new Error("randomString charset is too short");
}
if (charset.length > 256) {
throw new Error("randomString charset is too long");
}
let out = "";
const charsLen = charset.length;
const maxByte = 256 - 256 % charsLen;
while (length > 0) {
const buf = randomBytes(Math.ceil(length * 256 / maxByte), prng);
for (let i = 0; i < buf.length && length > 0; i++) {
const randomByte = buf[i];
if (randomByte < maxByte) {
out += charset.charAt(randomByte % charsLen);
length--;
}
}
(0, wipe_12.wipe)(buf);
}
return out;
}
exports.randomString = randomString;
function randomStringForEntropy(bits, charset = ALPHANUMERIC, prng = exports.defaultRandomSource) {
const length = Math.ceil(bits / (Math.log(charset.length) / Math.LN2));
return randomString(length, charset, prng);
}
exports.randomStringForEntropy = randomStringForEntropy;
})(random);
var sha512 = {};
(function(exports) {
Object.defineProperty(exports, "__esModule", { value: true });
var binary_12 = binary;
var wipe_12 = wipe$1;
exports.DIGEST_LENGTH = 64;
exports.BLOCK_SIZE = 128;
var SHA512 = (
/** @class */
function() {
function SHA5122() {
this.digestLength = exports.DIGEST_LENGTH;
this.blockSize = exports.BLOCK_SIZE;
this._stateHi = new Int32Array(8);
this._stateLo = new Int32Array(8);
this._tempHi = new Int32Array(16);
this._tempLo = new Int32Array(16);
this._buffer = new Uint8Array(256);
this._bufferLength = 0;
this._bytesHashed = 0;
this._finished = false;
this.reset();
}
SHA5122.prototype._initState = function() {
this._stateHi[0] = 1779033703;
this._stateHi[1] = 3144134277;
this._stateHi[2] = 1013904242;
this._stateHi[3] = 2773480762;
this._stateHi[4] = 1359893119;
this._stateHi[5] = 2600822924;
this._stateHi[6] = 528734635;
this._stateHi[7] = 1541459225;
this._stateLo[0] = 4089235720;
this._stateLo[1] = 2227873595;
this._stateLo[2] = 4271175723;
this._stateLo[3] = 1595750129;
this._stateLo[4] = 2917565137;
this._stateLo[5] = 725511199;
this._stateLo[6] = 4215389547;
this._stateLo[7] = 327033209;
};
SHA5122.prototype.reset = function() {
this._initState();
this._bufferLength = 0;
this._bytesHashed = 0;
this._finished = false;
return this;
};
SHA5122.prototype.clean = function() {
wipe_12.wipe(this._buffer);
wipe_12.wipe(this._tempHi);
wipe_12.wipe(this._tempLo);
this.reset();
};
SHA5122.prototype.update = function(data, dataLength) {
if (dataLength === void 0) {
dataLength = data.length;
}
if (this._finished) {
throw new Error("SHA512: can't update because hash was finished.");
}
var dataPos = 0;
this._bytesHashed += dataLength;
if (this._bufferLength > 0) {
while (this._bufferLength < exports.BLOCK_SIZE && dataLength > 0) {
this._buffer[this._bufferLength++] = data[dataPos++];
dataLength--;
}
if (this._bufferLength === this.blockSize) {
hashBlocks(this._tempHi, this._tempLo, this._stateHi, this._stateLo, this._buffer, 0, this.blockSize);
this._bufferLength = 0;
}
}
if (dataLength >= this.blockSize) {
dataPos = hashBlocks(this._tempHi, this._tempLo, this._stateHi, this._stateLo, data, dataPos, dataLength);
dataLength %= this.blockSize;
}
while (dataLength > 0) {
this._buffer[this._bufferLength++] = data[dataPos++];
dataLength--;
}
return this;
};
SHA5122.prototype.finish = function(out) {
if (!this._finished) {
var bytesHashed = this._bytesHashed;
var left = this._bufferLength;
var bitLenHi = bytesHashed / 536870912 | 0;
var bitLenLo = bytesHashed << 3;
var padLength = bytesHashed % 128 < 112 ? 128 : 256;
this._buffer[left] = 128;
for (var i = left + 1; i < padLength - 8; i++) {
this._buffer[i] = 0;
}
binary_12.writeUint32BE(bitLenHi, this._buffer, padLength - 8);
binary_12.writeUint32BE(bitLenLo, this._buffer, padLength - 4);
hashBlocks(this._tempHi, this._tempLo, this._stateHi, this._stateLo, this._buffer, 0, padLength);
this._finished = true;
}
for (var i = 0; i < this.digestLength / 8; i++) {
binary_12.writeUint32BE(this._stateHi[i], out, i * 8);
binary_12.writeUint32BE(this._stateLo[i], out, i * 8 + 4);
}
return this;
};
SHA5122.prototype.digest = function() {
var out = new Uint8Array(this.digestLength);
this.finish(out);
return out;
};
SHA5122.prototype.saveState = function() {
if (this._finished) {
throw new Error("SHA256: cannot save finished state");
}
return {
stateHi: new Int32Array(this._stateHi),
stateLo: new Int32Array(this._stateLo),
buffer: this._bufferLength > 0 ? new Uint8Array(this._buffer) : void 0,
bufferLength: this._bufferLength,
bytesHashed: this._bytesHashed
};
};
SHA5122.prototype.restoreState = function(savedState) {
this._stateHi.set(savedState.stateHi);
this._stateLo.set(savedState.stateLo);
this._bufferLength = savedState.bufferLength;
if (savedState.buffer) {
this._buffer.set(savedState.buffer);
}
this._bytesHashed = savedState.bytesHashed;
this._finished = false;
return this;
};
SHA5122.prototype.cleanSavedState = function(savedState) {
wipe_12.wipe(savedState.stateHi);
wipe_12.wipe(savedState.stateLo);
if (savedState.buffer) {
wipe_12.wipe(savedState.buffer);
}
savedState.bufferLength = 0;
savedState.bytesHashed = 0;
};
return SHA5122;
}()
);
exports.SHA512 = SHA512;
var K2 = new Int32Array([
1116352408,
3609767458,
1899447441,
602891725,
3049323471,
3964484399,
3921009573,
2173295548,
961987163,
4081628472,
1508970993,
3053834265,
2453635748,
2937671579,
2870763221,
3664609560,
3624381080,
2734883394,
310598401,
1164996542,
607225278,
1323610764,
1426881987,
3590304994,
1925078388,
4068182383,
2162078206,
991336113,
2614888103,
633803317,
3248222580,
3479774868,
3835390401,
2666613458,
4022224774,
944711139,
264347078,
2341262773,
604807628,
2007800933,
770255983,
1495990901,
1249150122,
1856431235,
1555081692,
3175218132,
1996064986,
2198950837,
2554220882,
3999719339,
2821834349,
766784016,
2952996808,
2566594879,
3210313671,
3203337956,
3336571891,
1034457026,
3584528711,
2466948901,
113926993,
3758326383,
338241895,
168717936,
666307205,
1188179964,
773529912,
1546045734,
1294757372,
1522805485,
1396182291,
2643833823,
1695183700,
2343527390,
1986661051,
1014477480,
2177026350,
1206759142,
2456956037,
344077627,
2730485921,
1290863460,
2820302411,
3158454273,
3259730800,
3505952657,
3345764771,
106217008,
3516065817,
3606008344,
3600352804,
1432725776,
4094571909,
1467031594,
275423344,
851169720,
430227734,
3100823752,
506948616,
1363258195,
659060556,
3750685593,
883997877,
3785050280,
958139571,
3318307427,
1322822218,
3812723403,
1537002063,
2003034995,
1747873779,
3602036899,
1955562222,
1575990012,
2024104815,
1125592928,
2227730452,
2716904306,
2361852424,
442776044,
2428436474,
593698344,
2756734187,
3733110249,
3204031479,
2999351573,
3329325298,
3815920427,
3391569614,
3928383900,
3515267271,
566280711,
3940187606,
3454069534,
4118630271,
4000239992,
116418474,
1914138554,
174292421,
2731055270,
289380356,
3203993006,
460393269,
320620315,
685471733,
587496836,
852142971,
1086792851,
1017036298,
365543100,
1126000580,
2618297676,
1288033470,
3409855158,
1501505948,
4234509866,
1607167915,
987167468,
1816402316,
1246189591
]);
function hashBlocks(wh, wl, hh, hl, m2, pos, len) {
var ah0 = hh[0], ah1 = hh[1], ah2 = hh[2], ah3 = hh[3], ah4 = hh[4], ah5 = hh[5], ah6 = hh[6], ah7 = hh[7], al0 = hl[0], al1 = hl[1], al2 = hl[2], al3 = hl[3], al4 = hl[4], al5 = hl[5], al6 = hl[6], al7 = hl[7];
var h3, l2;
var th, tl;
var a3, b2, c2, d2;
while (len >= 128) {
for (var i = 0; i < 16; i++) {
var j2 = 8 * i + pos;
wh[i] = binary_12.readUint32BE(m2, j2);
wl[i] = binary_12.readUint32BE(m2, j2 + 4);
}
for (var i = 0; i < 80; i++) {
var bh0 = ah0;
var bh1 = ah1;
var bh2 = ah2;
var bh3 = ah3;
var bh4 = ah4;
var bh5 = ah5;
var bh6 = ah6;
var bh7 = ah7;
var bl0 = al0;
var bl1 = al1;
var bl2 = al2;
var bl3 = al3;
var bl4 = al4;
var bl5 = al5;
var bl6 = al6;
var bl7 = al7;
h3 = ah7;
l2 = al7;
a3 = l2 & 65535;
b2 = l2 >>> 16;
c2 = h3 & 65535;
d2 = h3 >>> 16;
h3 = (ah4 >>> 14 | al4 << 32 - 14) ^ (ah4 >>> 18 | al4 << 32 - 18) ^ (al4 >>> 41 - 32 | ah4 << 32 - (41 - 32));
l2 = (al4 >>> 14 | ah4 << 32 - 14) ^ (al4 >>> 18 | ah4 << 32 - 18) ^ (ah4 >>> 41 - 32 | al4 << 32 - (41 - 32));
a3 += l2 & 65535;
b2 += l2 >>> 16;
c2 += h3 & 65535;
d2 += h3 >>> 16;
h3 = ah4 & ah5 ^ ~ah4 & ah6;
l2 = al4 & al5 ^ ~al4 & al6;
a3 += l2 & 65535;
b2 += l2 >>> 16;
c2 += h3 & 65535;
d2 += h3 >>> 16;
h3 = K2[i * 2];
l2 = K2[i * 2 + 1];
a3 += l2 & 65535;
b2 += l2 >>> 16;
c2 += h3 & 65535;
d2 += h3 >>> 16;
h3 = wh[i % 16];
l2 = wl[i % 16];
a3 += l2 & 65535;
b2 += l2 >>> 16;
c2 += h3 & 65535;
d2 += h3 >>> 16;
b2 += a3 >>> 16;
c2 += b2 >>> 16;
d2 += c2 >>> 16;
th = c2 & 65535 | d2 << 16;
tl = a3 & 65535 | b2 << 16;
h3 = th;
l2 = tl;
a3 = l2 & 65535;
b2 = l2 >>> 16;
c2 = h3 & 65535;
d2 = h3 >>> 16;
h3 = (ah0 >>> 28 | al0 << 32 - 28) ^ (al0 >>> 34 - 32 | ah0 << 32 - (34 - 32)) ^ (al0 >>> 39 - 32 | ah0 << 32 - (39 - 32));
l2 = (al0 >>> 28 | ah0 << 32 - 28) ^ (ah0 >>> 34 - 32 | al0 << 32 - (34 - 32)) ^ (ah0 >>> 39 - 32 | al0 << 32 - (39 - 32));
a3 += l2 & 65535;
b2 += l2 >>> 16;
c2 += h3 & 65535;
d2 += h3 >>> 16;
h3 = ah0 & ah1 ^ ah0 & ah2 ^ ah1 & ah2;
l2 = al0 & al1 ^ al0 & al2 ^ al1 & al2;
a3 += l2 & 65535;
b2 += l2 >>> 16;
c2 += h3 & 65535;
d2 += h3 >>> 16;
b2 += a3 >>> 16;
c2 += b2 >>> 16;
d2 += c2 >>> 16;
bh7 = c2 & 65535 | d2 << 16;
bl7 = a3 & 65535 | b2 << 16;
h3 = bh3;
l2 = bl3;
a3 = l2 & 65535;
b2 = l2 >>> 16;
c2 = h3 & 65535;
d2 = h3 >>> 16;
h3 = th;
l2 = tl;
a3 += l2 & 65535;
b2 += l2 >>> 16;
c2 += h3 & 65535;
d2 += h3 >>> 16;
b2 += a3 >>> 16;
c2 += b2 >>> 16;
d2 += c2 >>> 16;
bh3 = c2 & 65535 | d2 << 16;
bl3 = a3 & 65535 | b2 << 16;
ah1 = bh0;
ah2 = bh1;
ah3 = bh2;
ah4 = bh3;
ah5 = bh4;
ah6 = bh5;
ah7 = bh6;
ah0 = bh7;
al1 = bl0;
al2 = bl1;
al3 = bl2;
al4 = bl3;
al5 = bl4;
al6 = bl5;
al7 = bl6;
al0 = bl7;
if (i % 16 === 15) {
for (var j2 = 0; j2 < 16; j2++) {
h3 = wh[j2];
l2 = wl[j2];
a3 = l2 & 65535;
b2 = l2 >>> 16;
c2 = h3 & 65535;
d2 = h3 >>> 16;
h3 = wh[(j2 + 9) % 16];
l2 = wl[(j2 + 9) % 16];
a3 += l2 & 65535;
b2 += l2 >>> 16;
c2 += h3 & 65535;
d2 += h3 >>> 16;
th = wh[(j2 + 1) % 16];
tl = wl[(j2 + 1) % 16];
h3 = (th >>> 1 | tl << 32 - 1) ^ (th >>> 8 | tl << 32 - 8) ^ th >>> 7;
l2 = (tl >>> 1 | th << 32 - 1) ^ (tl >>> 8 | th << 32 - 8) ^ (tl >>> 7 | th << 32 - 7);
a3 += l2 & 65535;
b2 += l2 >>> 16;
c2 += h3 & 65535;
d2 += h3 >>> 16;
th = wh[(j2 + 14) % 16];
tl = wl[(j2 + 14) % 16];
h3 = (th >>> 19 | tl << 32 - 19) ^ (tl >>> 61 - 32 | th << 32 - (61 - 32)) ^ th >>> 6;
l2 = (tl >>> 19 | th << 32 - 19) ^ (th >>> 61 - 32 | tl << 32 - (61 - 32)) ^ (tl >>> 6 | th << 32 - 6);
a3 += l2 & 65535;
b2 += l2 >>> 16;
c2 += h3 & 65535;
d2 += h3 >>> 16;
b2 += a3 >>> 16;
c2 += b2 >>> 16;
d2 += c2 >>> 16;
wh[j2] = c2 & 65535 | d2 << 16;
wl[j2] = a3 & 65535 | b2 << 16;
}
}
}
h3 = ah0;
l2 = al0;
a3 = l2 & 65535;
b2 = l2 >>> 16;
c2 = h3 & 65535;
d2 = h3 >>> 16;
h3 = hh[0];
l2 = hl[0];
a3 += l2 & 65535;
b2 += l2 >>> 16;
c2 += h3 & 65535;
d2 += h3 >>> 16;
b2 += a3 >>> 16;
c2 += b2 >>> 16;
d2 += c2 >>> 16;
hh[0] = ah0 = c2 & 65535 | d2 << 16;
hl[0] = al0 = a3 & 65535 | b2 << 16;
h3 = ah1;
l2 = al1;
a3 = l2 & 65535;
b2 = l2 >>> 16;
c2 = h3 & 65535;
d2 = h3 >>> 16;
h3 = hh[1];
l2 = hl[1];
a3 += l2 & 65535;
b2 += l2 >>> 16;
c2 += h3 & 65535;
d2 += h3 >>> 16;
b2 += a3 >>> 16;
c2 += b2 >>> 16;
d2 += c2 >>> 16;
hh[1] = ah1 = c2 & 65535 | d2 << 16;
hl[1] = al1 = a3 & 65535 | b2 << 16;
h3 = ah2;
l2 = al2;
a3 = l2 & 65535;
b2 = l2 >>> 16;
c2 = h3 & 65535;
d2 = h3 >>> 16;
h3 = hh[2];
l2 = hl[2];
a3 += l2 & 65535;
b2 += l2 >>> 16;
c2 += h3 & 65535;
d2 += h3 >>> 16;
b2 += a3 >>> 16;
c2 += b2 >>> 16;
d2 += c2 >>> 16;
hh[2] = ah2 = c2 & 65535 | d2 << 16;
hl[2] = al2 = a3 & 65535 | b2 << 16;
h3 = ah3;
l2 = al3;
a3 = l2 & 65535;
b2 = l2 >>> 16;
c2 = h3 & 65535;
d2 = h3 >>> 16;
h3 = hh[3];
l2 = hl[3];
a3 += l2 & 65535;
b2 += l2 >>> 16;
c2 += h3 & 65535;
d2 += h3 >>> 16;
b2 += a3 >>> 16;
c2 += b2 >>> 16;
d2 += c2 >>> 16;
hh[3] = ah3 = c2 & 65535 | d2 << 16;
hl[3] = al3 = a3 & 65535 | b2 << 16;
h3 = ah4;
l2 = al4;
a3 = l2 & 65535;
b2 = l2 >>> 16;
c2 = h3 & 65535;
d2 = h3 >>> 16;
h3 = hh[4];
l2 = hl[4];
a3 += l2 & 65535;
b2 += l2 >>> 16;
c2 += h3 & 65535;
d2 += h3 >>> 16;
b2 += a3 >>> 16;
c2 += b2 >>> 16;
d2 += c2 >>> 16;
hh[4] = ah4 = c2 & 65535 | d2 << 16;
hl[4] = al4 = a3 & 65535 | b2 << 16;
h3 = ah5;
l2 = al5;
a3 = l2 & 65535;
b2 = l2 >>> 16;
c2 = h3 & 65535;
d2 = h3 >>> 16;
h3 = hh[5];
l2 = hl[5];
a3 += l2 & 65535;
b2 += l2 >>> 16;
c2 += h3 & 65535;
d2 += h3 >>> 16;
b2 += a3 >>> 16;
c2 += b2 >>> 16;
d2 += c2 >>> 16;
hh[5] = ah5 = c2 & 65535 | d2 << 16;
hl[5] = al5 = a3 & 65535 | b2 << 16;
h3 = ah6;
l2 = al6;
a3 = l2 & 65535;
b2 = l2 >>> 16;
c2 = h3 & 65535;
d2 = h3 >>> 16;
h3 = hh[6];
l2 = hl[6];
a3 += l2 & 65535;
b2 += l2 >>> 16;
c2 += h3 & 65535;
d2 += h3 >>> 16;
b2 += a3 >>> 16;
c2 += b2 >>> 16;
d2 += c2 >>> 16;
hh[6] = ah6 = c2 & 65535 | d2 << 16;
hl[6] = al6 = a3 & 65535 | b2 << 16;
h3 = ah7;
l2 = al7;
a3 = l2 & 65535;
b2 = l2 >>> 16;
c2 = h3 & 65535;
d2 = h3 >>> 16;
h3 = hh[7];
l2 = hl[7];
a3 += l2 & 65535;
b2 += l2 >>> 16;
c2 += h3 & 65535;
d2 += h3 >>> 16;
b2 += a3 >>> 16;
c2 += b2 >>> 16;
d2 += c2 >>> 16;
hh[7] = ah7 = c2 & 65535 | d2 << 16;
hl[7] = al7 = a3 & 65535 | b2 << 16;
pos += 128;
len -= 128;
}
return pos;
}
function hash2(data) {
var h3 = new SHA512();
h3.update(data);
var digest = h3.digest();
h3.clean();
return digest;
}
exports.hash = hash2;
})(sha512);
(function(exports) {
Object.defineProperty(exports, "__esModule", { value: true });
exports.convertSecretKeyToX25519 = exports.convertPublicKeyToX25519 = exports.verify = exports.sign = exports.extractPublicKeyFromSecretKey = exports.generateKeyPair = exports.generateKeyPairFromSeed = exports.SEED_LENGTH = exports.SECRET_KEY_LENGTH = exports.PUBLIC_KEY_LENGTH = exports.SIGNATURE_LENGTH = void 0;
const random_1 = random;
const sha512_1 = sha512;
const wipe_12 = wipe$1;
exports.SIGNATURE_LENGTH = 64;
exports.PUBLIC_KEY_LENGTH = 32;
exports.SECRET_KEY_LENGTH = 64;
exports.SEED_LENGTH = 32;
function gf(init) {
const r2 = new Float64Array(16);
if (init) {
for (let i = 0; i < init.length; i++) {
r2[i] = init[i];
}
}
return r2;
}
const _9 = new Uint8Array(32);
_9[0] = 9;
const gf0 = gf();
const gf1 = gf([1]);
const D2 = gf([
30883,
4953,
19914,
30187,
55467,
16705,
2637,
112,
59544,
30585,
16505,
36039,
65139,
11119,
27886,
20995
]);
const D22 = gf([
61785,
9906,
39828,
60374,
45398,
33411,
5274,
224,
53552,
61171,
33010,
6542,
64743,
22239,
55772,
9222
]);
const X = gf([
54554,
36645,
11616,
51542,
42930,
38181,
51040,
26924,
56412,
64982,
57905,
49316,
21502,
52590,
14035,
8553
]);
const Y = gf([
26200,
26214,
26214,
26214,
26214,
26214,
26214,
26214,
26214,
26214,
26214,
26214,
26214,
26214,
26214,
26214
]);
const I2 = gf([
41136,
18958,
6951,
50414,
58488,
44335,
6150,
12099,
55207,
15867,
153,
11085,
57099,
20417,
9344,
11139
]);
function set25519(r2, a3) {
for (let i = 0; i < 16; i++) {
r2[i] = a3[i] | 0;
}
}
function car25519(o2) {
let c2 = 1;
for (let i = 0; i < 16; i++) {
let v2 = o2[i] + c2 + 65535;
c2 = Math.floor(v2 / 65536);
o2[i] = v2 - c2 * 65536;
}
o2[0] += c2 - 1 + 37 * (c2 - 1);
}
function sel25519(p3, q2, b2) {
const c2 = ~(b2 - 1);
for (let i = 0; i < 16; i++) {
const t = c2 & (p3[i] ^ q2[i]);
p3[i] ^= t;
q2[i] ^= t;
}
}
function pack25519(o2, n2) {
const m2 = gf();
const t = gf();
for (let i = 0; i < 16; i++) {
t[i] = n2[i];
}
car25519(t);
car25519(t);
car25519(t);
for (let j2 = 0; j2 < 2; j2++) {
m2[0] = t[0] - 65517;
for (let i = 1; i < 15; i++) {
m2[i] = t[i] - 65535 - (m2[i - 1] >> 16 & 1);
m2[i - 1] &= 65535;
}
m2[15] = t[15] - 32767 - (m2[14] >> 16 & 1);
const b2 = m2[15] >> 16 & 1;
m2[14] &= 65535;
sel25519(t, m2, 1 - b2);
}
for (let i = 0; i < 16; i++) {
o2[2 * i] = t[i] & 255;
o2[2 * i + 1] = t[i] >> 8;
}
}
function verify32(x2, y3) {
let d2 = 0;
for (let i = 0; i < 32; i++) {
d2 |= x2[i] ^ y3[i];
}
return (1 & d2 - 1 >>> 8) - 1;
}
function neq25519(a3, b2) {
const c2 = new Uint8Array(32);
const d2 = new Uint8Array(32);
pack25519(c2, a3);
pack25519(d2, b2);
return verify32(c2, d2);
}
function par25519(a3) {
const d2 = new Uint8Array(32);
pack25519(d2, a3);
return d2[0] & 1;
}
function unpack25519(o2, n2) {
for (let i = 0; i < 16; i++) {
o2[i] = n2[2 * i] + (n2[2 * i + 1] << 8);
}
o2[15] &= 32767;
}
function add(o2, a3, b2) {
for (let i = 0; i < 16; i++) {
o2[i] = a3[i] + b2[i];
}
}
function sub(o2, a3, b2) {
for (let i = 0; i < 16; i++) {
o2[i] = a3[i] - b2[i];
}
}
function mul(o2, a3, b2) {
let v2, c2, t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, b0 = b2[0], b1 = b2[1], b22 = b2[2], b3 = b2[3], b4 = b2[4], b5 = b2[5], b6 = b2[6], b7 = b2[7], b8 = b2[8], b9 = b2[9], b10 = b2[10], b11 = b2[11], b12 = b2[12], b13 = b2[13], b14 = b2[14], b15 = b2[15];
v2 = a3[0];
t0 += v2 * b0;
t1 += v2 * b1;
t2 += v2 * b22;
t3 += v2 * b3;
t4 += v2 * b4;
t5 += v2 * b5;
t6 += v2 * b6;
t7 += v2 * b7;
t8 += v2 * b8;
t9 += v2 * b9;
t10 += v2 * b10;
t11 += v2 * b11;
t12 += v2 * b12;
t13 += v2 * b13;
t14 += v2 * b14;
t15 += v2 * b15;
v2 = a3[1];
t1 += v2 * b0;
t2 += v2 * b1;
t3 += v2 * b22;
t4 += v2 * b3;
t5 += v2 * b4;
t6 += v2 * b5;
t7 += v2 * b6;
t8 += v2 * b7;
t9 += v2 * b8;
t10 += v2 * b9;
t11 += v2 * b10;
t12 += v2 * b11;
t13 += v2 * b12;
t14 += v2 * b13;
t15 += v2 * b14;
t16 += v2 * b15;
v2 = a3[2];
t2 += v2 * b0;
t3 += v2 * b1;
t4 += v2 * b22;
t5 += v2 * b3;
t6 += v2 * b4;
t7 += v2 * b5;
t8 += v2 * b6;
t9 += v2 * b7;
t10 += v2 * b8;
t11 += v2 * b9;
t12 += v2 * b10;
t13 += v2 * b11;
t14 += v2 * b12;
t15 += v2 * b13;
t16 += v2 * b14;
t17 += v2 * b15;
v2 = a3[3];
t3 += v2 * b0;
t4 += v2 * b1;
t5 += v2 * b22;
t6 += v2 * b3;
t7 += v2 * b4;
t8 += v2 * b5;
t9 += v2 * b6;
t10 += v2 * b7;
t11 += v2 * b8;
t12 += v2 * b9;
t13 += v2 * b10;
t14 += v2 * b11;
t15 += v2 * b12;
t16 += v2 * b13;
t17 += v2 * b14;
t18 += v2 * b15;
v2 = a3[4];
t4 += v2 * b0;
t5 += v2 * b1;
t6 += v2 * b22;
t7 += v2 * b3;
t8 += v2 * b4;
t9 += v2 * b5;
t10 += v2 * b6;
t11 += v2 * b7;
t12 += v2 * b8;
t13 += v2 * b9;
t14 += v2 * b10;
t15 += v2 * b11;
t16 += v2 * b12;
t17 += v2 * b13;
t18 += v2 * b14;
t19 += v2 * b15;
v2 = a3[5];
t5 += v2 * b0;
t6 += v2 * b1;
t7 += v2 * b22;
t8 += v2 * b3;
t9 += v2 * b4;
t10 += v2 * b5;
t11 += v2 * b6;
t12 += v2 * b7;
t13 += v2 * b8;
t14 += v2 * b9;
t15 += v2 * b10;
t16 += v2 * b11;
t17 += v2 * b12;
t18 += v2 * b13;
t19 += v2 * b14;
t20 += v2 * b15;
v2 = a3[6];
t6 += v2 * b0;
t7 += v2 * b1;
t8 += v2 * b22;
t9 += v2 * b3;
t10 += v2 * b4;
t11 += v2 * b5;
t12 += v2 * b6;
t13 += v2 * b7;
t14 += v2 * b8;
t15 += v2 * b9;
t16 += v2 * b10;
t17 += v2 * b11;
t18 += v2 * b12;
t19 += v2 * b13;
t20 += v2 * b14;
t21 += v2 * b15;
v2 = a3[7];
t7 += v2 * b0;
t8 += v2 * b1;
t9 += v2 * b22;
t10 += v2 * b3;
t11 += v2 * b4;
t12 += v2 * b5;
t13 += v2 * b6;
t14 += v2 * b7;
t15 += v2 * b8;
t16 += v2 * b9;
t17 += v2 * b10;
t18 += v2 * b11;
t19 += v2 * b12;
t20 += v2 * b13;
t21 += v2 * b14;
t22 += v2 * b15;
v2 = a3[8];
t8 += v2 * b0;
t9 += v2 * b1;
t10 += v2 * b22;
t11 += v2 * b3;
t12 += v2 * b4;
t13 += v2 * b5;
t14 += v2 * b6;
t15 += v2 * b7;
t16 += v2 * b8;
t17 += v2 * b9;
t18 += v2 * b10;
t19 += v2 * b11;
t20 += v2 * b12;
t21 += v2 * b13;
t22 += v2 * b14;
t23 += v2 * b15;
v2 = a3[9];
t9 += v2 * b0;
t10 += v2 * b1;
t11 += v2 * b22;
t12 += v2 * b3;
t13 += v2 * b4;
t14 += v2 * b5;
t15 += v2 * b6;
t16 += v2 * b7;
t17 += v2 * b8;
t18 += v2 * b9;
t19 += v2 * b10;
t20 += v2 * b11;
t21 += v2 * b12;
t22 += v2 * b13;
t23 += v2 * b14;
t24 += v2 * b15;
v2 = a3[10];
t10 += v2 * b0;
t11 += v2 * b1;
t12 += v2 * b22;
t13 += v2 * b3;
t14 += v2 * b4;
t15 += v2 * b5;
t16 += v2 * b6;
t17 += v2 * b7;
t18 += v2 * b8;
t19 += v2 * b9;
t20 += v2 * b10;
t21 += v2 * b11;
t22 += v2 * b12;
t23 += v2 * b13;
t24 += v2 * b14;
t25 += v2 * b15;
v2 = a3[11];
t11 += v2 * b0;
t12 += v2 * b1;
t13 += v2 * b22;
t14 += v2 * b3;
t15 += v2 * b4;
t16 += v2 * b5;
t17 += v2 * b6;
t18 += v2 * b7;
t19 += v2 * b8;
t20 += v2 * b9;
t21 += v2 * b10;
t22 += v2 * b11;
t23 += v2 * b12;
t24 += v2 * b13;
t25 += v2 * b14;
t26 += v2 * b15;
v2 = a3[12];
t12 += v2 * b0;
t13 += v2 * b1;
t14 += v2 * b22;
t15 += v2 * b3;
t16 += v2 * b4;
t17 += v2 * b5;
t18 += v2 * b6;
t19 += v2 * b7;
t20 += v2 * b8;
t21 += v2 * b9;
t22 += v2 * b10;
t23 += v2 * b11;
t24 += v2 * b12;
t25 += v2 * b13;
t26 += v2 * b14;
t27 += v2 * b15;
v2 = a3[13];
t13 += v2 * b0;
t14 += v2 * b1;
t15 += v2 * b22;
t16 += v2 * b3;
t17 += v2 * b4;
t18 += v2 * b5;
t19 += v2 * b6;
t20 += v2 * b7;
t21 += v2 * b8;
t22 += v2 * b9;
t23 += v2 * b10;
t24 += v2 * b11;
t25 += v2 * b12;
t26 += v2 * b13;
t27 += v2 * b14;
t28 += v2 * b15;
v2 = a3[14];
t14 += v2 * b0;
t15 += v2 * b1;
t16 += v2 * b22;
t17 += v2 * b3;
t18 += v2 * b4;
t19 += v2 * b5;
t20 += v2 * b6;
t21 += v2 * b7;
t22 += v2 * b8;
t23 += v2 * b9;
t24 += v2 * b10;
t25 += v2 * b11;
t26 += v2 * b12;
t27 += v2 * b13;
t28 += v2 * b14;
t29 += v2 * b15;
v2 = a3[15];
t15 += v2 * b0;
t16 += v2 * b1;
t17 += v2 * b22;
t18 += v2 * b3;
t19 += v2 * b4;
t20 += v2 * b5;
t21 += v2 * b6;
t22 += v2 * b7;
t23 += v2 * b8;
t24 += v2 * b9;
t25 += v2 * b10;
t26 += v2 * b11;
t27 += v2 * b12;
t28 += v2 * b13;
t29 += v2 * b14;
t30 += v2 * b15;
t0 += 38 * t16;
t1 += 38 * t17;
t2 += 38 * t18;
t3 += 38 * t19;
t4 += 38 * t20;
t5 += 38 * t21;
t6 += 38 * t22;
t7 += 38 * t23;
t8 += 38 * t24;
t9 += 38 * t25;
t10 += 38 * t26;
t11 += 38 * t27;
t12 += 38 * t28;
t13 += 38 * t29;
t14 += 38 * t30;
c2 = 1;
v2 = t0 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t0 = v2 - c2 * 65536;
v2 = t1 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t1 = v2 - c2 * 65536;
v2 = t2 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t2 = v2 - c2 * 65536;
v2 = t3 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t3 = v2 - c2 * 65536;
v2 = t4 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t4 = v2 - c2 * 65536;
v2 = t5 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t5 = v2 - c2 * 65536;
v2 = t6 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t6 = v2 - c2 * 65536;
v2 = t7 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t7 = v2 - c2 * 65536;
v2 = t8 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t8 = v2 - c2 * 65536;
v2 = t9 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t9 = v2 - c2 * 65536;
v2 = t10 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t10 = v2 - c2 * 65536;
v2 = t11 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t11 = v2 - c2 * 65536;
v2 = t12 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t12 = v2 - c2 * 65536;
v2 = t13 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t13 = v2 - c2 * 65536;
v2 = t14 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t14 = v2 - c2 * 65536;
v2 = t15 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t15 = v2 - c2 * 65536;
t0 += c2 - 1 + 37 * (c2 - 1);
c2 = 1;
v2 = t0 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t0 = v2 - c2 * 65536;
v2 = t1 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t1 = v2 - c2 * 65536;
v2 = t2 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t2 = v2 - c2 * 65536;
v2 = t3 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t3 = v2 - c2 * 65536;
v2 = t4 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t4 = v2 - c2 * 65536;
v2 = t5 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t5 = v2 - c2 * 65536;
v2 = t6 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t6 = v2 - c2 * 65536;
v2 = t7 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t7 = v2 - c2 * 65536;
v2 = t8 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t8 = v2 - c2 * 65536;
v2 = t9 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t9 = v2 - c2 * 65536;
v2 = t10 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t10 = v2 - c2 * 65536;
v2 = t11 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t11 = v2 - c2 * 65536;
v2 = t12 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t12 = v2 - c2 * 65536;
v2 = t13 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t13 = v2 - c2 * 65536;
v2 = t14 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t14 = v2 - c2 * 65536;
v2 = t15 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t15 = v2 - c2 * 65536;
t0 += c2 - 1 + 37 * (c2 - 1);
o2[0] = t0;
o2[1] = t1;
o2[2] = t2;
o2[3] = t3;
o2[4] = t4;
o2[5] = t5;
o2[6] = t6;
o2[7] = t7;
o2[8] = t8;
o2[9] = t9;
o2[10] = t10;
o2[11] = t11;
o2[12] = t12;
o2[13] = t13;
o2[14] = t14;
o2[15] = t15;
}
function square(o2, a3) {
mul(o2, a3, a3);
}
function inv25519(o2, i) {
const c2 = gf();
let a3;
for (a3 = 0; a3 < 16; a3++) {
c2[a3] = i[a3];
}
for (a3 = 253; a3 >= 0; a3--) {
square(c2, c2);
if (a3 !== 2 && a3 !== 4) {
mul(c2, c2, i);
}
}
for (a3 = 0; a3 < 16; a3++) {
o2[a3] = c2[a3];
}
}
function pow2523(o2, i) {
const c2 = gf();
let a3;
for (a3 = 0; a3 < 16; a3++) {
c2[a3] = i[a3];
}
for (a3 = 250; a3 >= 0; a3--) {
square(c2, c2);
if (a3 !== 1) {
mul(c2, c2, i);
}
}
for (a3 = 0; a3 < 16; a3++) {
o2[a3] = c2[a3];
}
}
function edadd(p3, q2) {
const a3 = gf(), b2 = gf(), c2 = gf(), d2 = gf(), e = gf(), f = gf(), g2 = gf(), h3 = gf(), t = gf();
sub(a3, p3[1], p3[0]);
sub(t, q2[1], q2[0]);
mul(a3, a3, t);
add(b2, p3[0], p3[1]);
add(t, q2[0], q2[1]);
mul(b2, b2, t);
mul(c2, p3[3], q2[3]);
mul(c2, c2, D22);
mul(d2, p3[2], q2[2]);
add(d2, d2, d2);
sub(e, b2, a3);
sub(f, d2, c2);
add(g2, d2, c2);
add(h3, b2, a3);
mul(p3[0], e, f);
mul(p3[1], h3, g2);
mul(p3[2], g2, f);
mul(p3[3], e, h3);
}
function cswap(p3, q2, b2) {
for (let i = 0; i < 4; i++) {
sel25519(p3[i], q2[i], b2);
}
}
function pack(r2, p3) {
const tx = gf(), ty = gf(), zi2 = gf();
inv25519(zi2, p3[2]);
mul(tx, p3[0], zi2);
mul(ty, p3[1], zi2);
pack25519(r2, ty);
r2[31] ^= par25519(tx) << 7;
}
function scalarmult(p3, q2, s) {
set25519(p3[0], gf0);
set25519(p3[1], gf1);
set25519(p3[2], gf1);
set25519(p3[3], gf0);
for (let i = 255; i >= 0; --i) {
const b2 = s[i / 8 | 0] >> (i & 7) & 1;
cswap(p3, q2, b2);
edadd(q2, p3);
edadd(p3, p3);
cswap(p3, q2, b2);
}
}
function scalarbase(p3, s) {
const q2 = [gf(), gf(), gf(), gf()];
set25519(q2[0], X);
set25519(q2[1], Y);
set25519(q2[2], gf1);
mul(q2[3], X, Y);
scalarmult(p3, q2, s);
}
function generateKeyPairFromSeed(seed) {
if (seed.length !== exports.SEED_LENGTH) {
throw new Error(`ed25519: seed must be ${exports.SEED_LENGTH} bytes`);
}
const d2 = (0, sha512_1.hash)(seed);
d2[0] &= 248;
d2[31] &= 127;
d2[31] |= 64;
const publicKey = new Uint8Array(32);
const p3 = [gf(), gf(), gf(), gf()];
scalarbase(p3, d2);
pack(publicKey, p3);
const secretKey = new Uint8Array(64);
secretKey.set(seed);
secretKey.set(publicKey, 32);
return {
publicKey,
secretKey
};
}
exports.generateKeyPairFromSeed = generateKeyPairFromSeed;
function generateKeyPair2(prng) {
const seed = (0, random_1.randomBytes)(32, prng);
const result = generateKeyPairFromSeed(seed);
(0, wipe_12.wipe)(seed);
return result;
}
exports.generateKeyPair = generateKeyPair2;
function extractPublicKeyFromSecretKey(secretKey) {
if (secretKey.length !== exports.SECRET_KEY_LENGTH) {
throw new Error(`ed25519: secret key must be ${exports.SECRET_KEY_LENGTH} bytes`);
}
return new Uint8Array(secretKey.subarray(32));
}
exports.extractPublicKeyFromSecretKey = extractPublicKeyFromSecretKey;
const L2 = new Float64Array([
237,
211,
245,
92,
26,
99,
18,
88,
214,
156,
247,
162,
222,
249,
222,
20,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
16
]);
function modL(r2, x2) {
let carry;
let i;
let j2;
let k2;
for (i = 63; i >= 32; --i) {
carry = 0;
for (j2 = i - 32, k2 = i - 12; j2 < k2; ++j2) {
x2[j2] += carry - 16 * x2[i] * L2[j2 - (i - 32)];
carry = Math.floor((x2[j2] + 128) / 256);
x2[j2] -= carry * 256;
}
x2[j2] += carry;
x2[i] = 0;
}
carry = 0;
for (j2 = 0; j2 < 32; j2++) {
x2[j2] += carry - (x2[31] >> 4) * L2[j2];
carry = x2[j2] >> 8;
x2[j2] &= 255;
}
for (j2 = 0; j2 < 32; j2++) {
x2[j2] -= carry * L2[j2];
}
for (i = 0; i < 32; i++) {
x2[i + 1] += x2[i] >> 8;
r2[i] = x2[i] & 255;
}
}
function reduce(r2) {
const x2 = new Float64Array(64);
for (let i = 0; i < 64; i++) {
x2[i] = r2[i];
}
for (let i = 0; i < 64; i++) {
r2[i] = 0;
}
modL(r2, x2);
}
function sign(secretKey, message) {
const x2 = new Float64Array(64);
const p3 = [gf(), gf(), gf(), gf()];
const d2 = (0, sha512_1.hash)(secretKey.subarray(0, 32));
d2[0] &= 248;
d2[31] &= 127;
d2[31] |= 64;
const signature = new Uint8Array(64);
signature.set(d2.subarray(32), 32);
const hs2 = new sha512_1.SHA512();
hs2.update(signature.subarray(32));
hs2.update(message);
const r2 = hs2.digest();
hs2.clean();
reduce(r2);
scalarbase(p3, r2);
pack(signature, p3);
hs2.reset();
hs2.update(signature.subarray(0, 32));
hs2.update(secretKey.subarray(32));
hs2.update(message);
const h3 = hs2.digest();
reduce(h3);
for (let i = 0; i < 32; i++) {
x2[i] = r2[i];
}
for (let i = 0; i < 32; i++) {
for (let j2 = 0; j2 < 32; j2++) {
x2[i + j2] += h3[i] * d2[j2];
}
}
modL(signature.subarray(32), x2);
return signature;
}
exports.sign = sign;
function unpackneg(r2, p3) {
const t = gf(), chk = gf(), num = gf(), den = gf(), den2 = gf(), den4 = gf(), den6 = gf();
set25519(r2[2], gf1);
unpack25519(r2[1], p3);
square(num, r2[1]);
mul(den, num, D2);
sub(num, num, r2[2]);
add(den, r2[2], den);
square(den2, den);
square(den4, den2);
mul(den6, den4, den2);
mul(t, den6, num);
mul(t, t, den);
pow2523(t, t);
mul(t, t, num);
mul(t, t, den);
mul(t, t, den);
mul(r2[0], t, den);
square(chk, r2[0]);
mul(chk, chk, den);
if (neq25519(chk, num)) {
mul(r2[0], r2[0], I2);
}
square(chk, r2[0]);
mul(chk, chk, den);
if (neq25519(chk, num)) {
return -1;
}
if (par25519(r2[0]) === p3[31] >> 7) {
sub(r2[0], gf0, r2[0]);
}
mul(r2[3], r2[0], r2[1]);
return 0;
}
function verify(publicKey, message, signature) {
const t = new Uint8Array(32);
const p3 = [gf(), gf(), gf(), gf()];
const q2 = [gf(), gf(), gf(), gf()];
if (signature.length !== exports.SIGNATURE_LENGTH) {
throw new Error(`ed25519: signature must be ${exports.SIGNATURE_LENGTH} bytes`);
}
if (unpackneg(q2, publicKey)) {
return false;
}
const hs2 = new sha512_1.SHA512();
hs2.update(signature.subarray(0, 32));
hs2.update(publicKey);
hs2.update(message);
const h3 = hs2.digest();
reduce(h3);
scalarmult(p3, q2, h3);
scalarbase(q2, signature.subarray(32));
edadd(p3, q2);
pack(t, p3);
if (verify32(signature, t)) {
return false;
}
return true;
}
exports.verify = verify;
function convertPublicKeyToX25519(publicKey) {
let q2 = [gf(), gf(), gf(), gf()];
if (unpackneg(q2, publicKey)) {
throw new Error("Ed25519: invalid public key");
}
let a3 = gf();
let b2 = gf();
let y3 = q2[1];
add(a3, gf1, y3);
sub(b2, gf1, y3);
inv25519(b2, b2);
mul(a3, a3, b2);
let z2 = new Uint8Array(32);
pack25519(z2, a3);
return z2;
}
exports.convertPublicKeyToX25519 = convertPublicKeyToX25519;
function convertSecretKeyToX25519(secretKey) {
const d2 = (0, sha512_1.hash)(secretKey.subarray(0, 32));
d2[0] &= 248;
d2[31] &= 127;
d2[31] |= 64;
const o2 = new Uint8Array(d2.subarray(0, 32));
(0, wipe_12.wipe)(d2);
return o2;
}
exports.convertSecretKeyToX25519 = convertSecretKeyToX25519;
})(ed25519);
const JWT_IRIDIUM_ALG = "EdDSA";
const JWT_IRIDIUM_TYP = "JWT";
const JWT_DELIMITER = ".";
const JWT_ENCODING = "base64url";
const JSON_ENCODING = "utf8";
const DATA_ENCODING = "utf8";
const DID_DELIMITER = ":";
const DID_PREFIX = "did";
const DID_METHOD = "key";
const MULTICODEC_ED25519_ENCODING = "base58btc";
const MULTICODEC_ED25519_BASE = "z";
const MULTICODEC_ED25519_HEADER = "K36";
const KEY_PAIR_SEED_LENGTH = 32;
function allocUnsafe(size = 0) {
if (globalThis.Buffer != null && globalThis.Buffer.allocUnsafe != null) {
return globalThis.Buffer.allocUnsafe(size);
}
return new Uint8Array(size);
}
function concat(arrays, length) {
if (!length) {
length = arrays.reduce((acc, curr) => acc + curr.length, 0);
}
const output = allocUnsafe(length);
let offset = 0;
for (const arr of arrays) {
output.set(arr, offset);
offset += arr.length;
}
return output;
}
function base(ALPHABET, name) {
if (ALPHABET.length >= 255) {
throw new TypeError("Alphabet too long");
}
var BASE_MAP = new Uint8Array(256);
for (var j2 = 0; j2 < BASE_MAP.length; j2++) {
BASE_MAP[j2] = 255;
}
for (var i = 0; i < ALPHABET.length; i++) {
var x2 = ALPHABET.charAt(i);
var xc = x2.charCodeAt(0);
if (BASE_MAP[xc] !== 255) {
throw new TypeError(x2 + " is ambiguous");
}
BASE_MAP[xc] = i;
}
var BASE = ALPHABET.length;
var LEADER = ALPHABET.charAt(0);
var FACTOR = Math.log(BASE) / Math.log(256);
var iFACTOR = Math.log(256) / Math.log(BASE);
function encode2(source) {
if (source instanceof Uint8Array)
;
else if (ArrayBuffer.isView(source)) {
source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);
} else if (Array.isArray(source)) {
source = Uint8Array.from(source);
}
if (!(source instanceof Uint8Array)) {
throw new TypeError("Expected Uint8Array");
}
if (source.length === 0) {
return "";
}
var zeroes = 0;
var length = 0;
var pbegin = 0;
var pend = source.length;
while (pbegin !== pend && source[pbegin] === 0) {
pbegin++;
zeroes++;
}
var size = (pend - pbegin) * iFACTOR + 1 >>> 0;
var b58 = new Uint8Array(size);
while (pbegin !== pend) {
var carry = source[pbegin];
var i2 = 0;
for (var it1 = size - 1; (carry !== 0 || i2 < length) && it1 !== -1; it1--, i2++) {
carry += 256 * b58[it1] >>> 0;
b58[it1] = carry % BASE >>> 0;
carry = carry / BASE >>> 0;
}
if (carry !== 0) {
throw new Error("Non-zero carry");
}
length = i2;
pbegin++;
}
var it2 = size - length;
while (it2 !== size && b58[it2] === 0) {
it2++;
}
var str = LEADER.repeat(zeroes);
for (; it2 < size; ++it2) {
str += ALPHABET.charAt(b58[it2]);
}
return str;
}
function decodeUnsafe(source) {
if (typeof source !== "string") {
throw new TypeError("Expected String");
}
if (source.length === 0) {
return new Uint8Array();
}
var psz = 0;
if (source[psz] === " ") {
return;
}
var zeroes = 0;
var length = 0;
while (source[psz] === LEADER) {
zeroes++;
psz++;
}
var size = (source.length - psz) * FACTOR + 1 >>> 0;
var b256 = new Uint8Array(size);
while (source[psz]) {
var carry = BASE_MAP[source.charCodeAt(psz)];
if (carry === 255) {
return;
}
var i2 = 0;
for (var it3 = size - 1; (carry !== 0 || i2 < length) && it3 !== -1; it3--, i2++) {
carry += BASE * b256[it3] >>> 0;
b256[it3] = carry % 256 >>> 0;
carry = carry / 256 >>> 0;
}
if (carry !== 0) {
throw new Error("Non-zero carry");
}
length = i2;
psz++;
}
if (source[psz] === " ") {
return;
}
var it4 = size - length;
while (it4 !== size && b256[it4] === 0) {
it4++;
}
var vch = new Uint8Array(zeroes + (size - it4));
var j3 = zeroes;
while (it4 !== size) {
vch[j3++] = b256[it4++];
}
return vch;
}
function decode2(string2) {
var buffer = decodeUnsafe(string2);
if (buffer) {
return buffer;
}
throw new Error(`Non-${name} character`);
}
return {
encode: encode2,
decodeUnsafe,
decode: decode2
};
}
var src = base;
var _brrp__multiformats_scope_baseX = src;
const coerce = (o2) => {
if (o2 instanceof Uint8Array && o2.constructor.name === "Uint8Array")
return o2;
if (o2 instanceof ArrayBuffer)
return new Uint8Array(o2);
if (ArrayBuffer.isView(o2)) {
return new Uint8Array(o2.buffer, o2.byteOffset, o2.byteLength);
}
throw new Error("Unknown type, must be binary type");
};
const fromString$1 = (str) => new TextEncoder().encode(str);
const toString$1 = (b2) => new TextDecoder().decode(b2);
class Encoder {
constructor(name, prefix, baseEncode) {
this.name = name;
this.prefix = prefix;
this.baseEncode = baseEncode;
}
encode(bytes) {
if (bytes instanceof Uint8Array) {
return `${this.prefix}${this.baseEncode(bytes)}`;
} else {
throw Error("Unknown type, must be binary type");
}
}
}
class Decoder {
constructor(name, prefix, baseDecode) {
this.name = name;
this.prefix = prefix;
if (prefix.codePointAt(0) === void 0) {
throw new Error("Invalid prefix character");
}
this.prefixCodePoint = prefix.codePointAt(0);
this.baseDecode = baseDecode;
}
decode(text) {
if (typeof text === "string") {
if (text.codePointAt(0) !== this.prefixCodePoint) {
throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);
}
return this.baseDecode(text.slice(this.prefix.length));
} else {
throw Error("Can only multibase decode strings");
}
}
or(decoder) {
return or$1(this, decoder);
}
}
class ComposedDecoder {
constructor(decoders) {
this.decoders = decoders;
}
or(decoder) {
return or$1(this, decoder);
}
decode(input) {
const prefix = input[0];
const decoder = this.decoders[prefix];
if (decoder) {
return decoder.decode(input);
} else {
throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`);
}
}
}
const or$1 = (left, right) => new ComposedDecoder({
...left.decoders || { [left.prefix]: left },
...right.decoders || { [right.prefix]: right }
});
class Codec {
constructor(name, prefix, baseEncode, baseDecode) {
this.name = name;
this.prefix = prefix;
this.baseEncode = baseEncode;
this.baseDecode = baseDecode;
this.encoder = new Encoder(name, prefix, baseEncode);
this.decoder = new Decoder(name, prefix, baseDecode);
}
encode(input) {
return this.encoder.encode(input);
}
decode(input) {
return this.decoder.decode(input);
}
}
const from = ({ name, prefix, encode: encode2, decode: decode2 }) => new Codec(name, prefix, encode2, decode2);
const baseX = ({ prefix, name, alphabet: alphabet2 }) => {
const { encode: encode2, decode: decode2 } = _brrp__multiformats_scope_baseX(alphabet2, name);
return from({
prefix,
name,
encode: encode2,
decode: (text) => coerce(decode2(text))
});
};
const decode$1 = (string2, alphabet2, bitsPerChar, name) => {
const codes = {};
for (let i = 0; i < alphabet2.length; ++i) {
codes[alphabet2[i]] = i;
}
let end = string2.length;
while (string2[end - 1] === "=") {
--end;
}
const out = new Uint8Array(end * bitsPerChar / 8 | 0);
let bits = 0;
let buffer = 0;
let written = 0;
for (let i = 0; i < end; ++i) {
const value = codes[string2[i]];
if (value === void 0) {
throw new SyntaxError(`Non-${name} character`);
}
buffer = buffer << bitsPerChar | value;
bits += bitsPerChar;
if (bits >= 8) {
bits -= 8;
out[written++] = 255 & buffer >> bits;
}
}
if (bits >= bitsPerChar || 255 & buffer << 8 - bits) {
throw new SyntaxError("Unexpected end of data");
}
return out;
};
const encode$1 = (data, alphabet2, bitsPerChar) => {
const pad = alphabet2[alphabet2.length - 1] === "=";
const mask = (1 << bitsPerChar) - 1;
let out = "";
let bits = 0;
let buffer = 0;
for (let i = 0; i < data.length; ++i) {
buffer = buffer << 8 | data[i];
bits += 8;
while (bits > bitsPerChar) {
bits -= bitsPerChar;
out += alphabet2[mask & buffer >> bits];
}
}
if (bits) {
out += alphabet2[mask & buffer << bitsPerChar - bits];
}
if (pad) {
while (out.length * bitsPerChar & 7) {
out += "=";
}
}
return out;
};
const rfc4648 = ({ name, prefix, bitsPerChar, alphabet: alphabet2 }) => {
return from({
prefix,
name,
encode(input) {
return encode$1(input, alphabet2, bitsPerChar);
},
decode(input) {
return decode$1(input, alphabet2, bitsPerChar, name);
}
});
};
const identity = from({
prefix: "\0",
name: "identity",
encode: (buf) => toString$1(buf),
decode: (str) => fromString$1(str)
});
const identityBase = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
identity
}, Symbol.toStringTag, { value: "Module" }));
const base2 = rfc4648({
prefix: "0",
name: "base2",
alphabet: "01",
bitsPerChar: 1
});
const base2$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
base2
}, Symbol.toStringTag, { value: "Module" }));
const base8 = rfc4648({
prefix: "7",
name: "base8",
alphabet: "01234567",
bitsPerChar: 3
});
const base8$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
base8
}, Symbol.toStringTag, { value: "Module" }));
const base10 = baseX({
prefix: "9",
name: "base10",
alphabet: "0123456789"
});
const base10$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
base10
}, Symbol.toStringTag, { value: "Module" }));
const base16 = rfc4648({
prefix: "f",
name: "base16",
alphabet: "0123456789abcdef",
bitsPerChar: 4
});
const base16upper = rfc4648({
prefix: "F",
name: "base16upper",
alphabet: "0123456789ABCDEF",
bitsPerChar: 4
});
const base16$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
base16,
base16upper
}, Symbol.toStringTag, { value: "Module" }));
const base32 = rfc4648({
prefix: "b",
name: "base32",
alphabet: "abcdefghijklmnopqrstuvwxyz234567",
bitsPerChar: 5
});
const base32upper = rfc4648({
prefix: "B",
name: "base32upper",
alphabet: "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",
bitsPerChar: 5
});
const base32pad = rfc4648({
prefix: "c",
name: "base32pad",
alphabet: "abcdefghijklmnopqrstuvwxyz234567=",
bitsPerChar: 5
});
const base32padupper = rfc4648({
prefix: "C",
name: "base32padupper",
alphabet: "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",
bitsPerChar: 5
});
const base32hex = rfc4648({
prefix: "v",
name: "base32hex",
alphabet: "0123456789abcdefghijklmnopqrstuv",
bitsPerChar: 5
});
const base32hexupper = rfc4648({
prefix: "V",
name: "base32hexupper",
alphabet: "0123456789ABCDEFGHIJKLMNOPQRSTUV",
bitsPerChar: 5
});
const base32hexpad = rfc4648({
prefix: "t",
name: "base32hexpad",
alphabet: "0123456789abcdefghijklmnopqrstuv=",
bitsPerChar: 5
});
const base32hexpadupper = rfc4648({
prefix: "T",
name: "base32hexpadupper",
alphabet: "0123456789ABCDEFGHIJKLMNOPQRSTUV=",
bitsPerChar: 5
});
const base32z = rfc4648({
prefix: "h",
name: "base32z",
alphabet: "ybndrfg8ejkmcpqxot1uwisza345h769",
bitsPerChar: 5
});
const base32$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
base32,
base32hex,
base32hexpad,
base32hexpadupper,
base32hexupper,
base32pad,
base32padupper,
base32upper,
base32z
}, Symbol.toStringTag, { value: "Module" }));
const base36 = baseX({
prefix: "k",
name: "base36",
alphabet: "0123456789abcdefghijklmnopqrstuvwxyz"
});
const base36upper = baseX({
prefix: "K",
name: "base36upper",
alphabet: "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
});
const base36$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
base36,
base36upper
}, Symbol.toStringTag, { value: "Module" }));
const base58btc = baseX({
name: "base58btc",
prefix: "z",
alphabet: "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"
});
const base58flickr = baseX({
name: "base58flickr",
prefix: "Z",
alphabet: "123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"
});
const base58 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
base58btc,
base58flickr
}, Symbol.toStringTag, { value: "Module" }));
const base64 = rfc4648({
prefix: "m",
name: "base64",
alphabet: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
bitsPerChar: 6
});
const base64pad = rfc4648({
prefix: "M",
name: "base64pad",
alphabet: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
bitsPerChar: 6
});
const base64url = rfc4648({
prefix: "u",
name: "base64url",
alphabet: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",
bitsPerChar: 6
});
const base64urlpad = rfc4648({
prefix: "U",
name: "base64urlpad",
alphabet: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",
bitsPerChar: 6
});
const base64$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
base64,
base64pad,
base64url,
base64urlpad
}, Symbol.toStringTag, { value: "Module" }));
const alphabet = Array.from("🚀🪐☄🛰🌌🌑🌒🌓🌔🌕🌖🌗🌘🌍🌏🌎🐉☀💻🖥💾💿😂❤😍🤣😊🙏💕😭😘👍😅👏😁🔥🥰💔💖💙😢🤔😆🙄💪😉☺👌🤗💜😔😎😇🌹🤦🎉💞✌✨🤷😱😌🌸🙌😋💗💚😏💛🙂💓🤩😄😀🖤😃💯🙈👇🎶😒🤭❣😜💋👀😪😑💥🙋😞😩😡🤪👊🥳😥🤤👉💃😳✋😚😝😴🌟😬🙃🍀🌷😻😓⭐✅🥺🌈😈🤘💦✔😣🏃💐☹🎊💘😠☝😕🌺🎂🌻😐🖕💝🙊😹🗣💫💀👑🎵🤞😛🔴😤🌼😫⚽🤙☕🏆🤫👈😮🙆🍻🍃🐶💁😲🌿🧡🎁⚡🌞🎈❌✊👋😰🤨😶🤝🚶💰🍓💢🤟🙁🚨💨🤬✈🎀🍺🤓😙💟🌱😖👶🥴▶➡❓💎💸⬇😨🌚🦋😷🕺⚠🙅😟😵👎🤲🤠🤧📌🔵💅🧐🐾🍒😗🤑🌊🤯🐷☎💧😯💆👆🎤🙇🍑❄🌴💣🐸💌📍🥀🤢👅💡💩👐📸👻🤐🤮🎼🥵🚩🍎🍊👼💍📣🥂");
const alphabetBytesToChars = alphabet.reduce((p3, c2, i) => {
p3[i] = c2;
return p3;
}, []);
const alphabetCharsToBytes = alphabet.reduce((p3, c2, i) => {
p3[c2.codePointAt(0)] = i;
return p3;
}, []);
function encode(data) {
return data.reduce((p3, c2) => {
p3 += alphabetBytesToChars[c2];
return p3;
}, "");
}
function decode(str) {
const byts = [];
for (const char of str) {
const byt = alphabetCharsToBytes[char.codePointAt(0)];
if (byt === void 0) {
throw new Error(`Non-base256emoji character: ${char}`);
}
byts.push(byt);
}
return new Uint8Array(byts);
}
const base256emoji = from({
prefix: "🚀",
name: "base256emoji",
encode,
decode
});
const base256emoji$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
base256emoji
}, Symbol.toStringTag, { value: "Module" }));
new TextEncoder();
new TextDecoder();
const bases = {
...identityBase,
...base2$1,
...base8$1,
...base10$1,
...base16$1,
...base32$1,
...base36$1,
...base58,
...base64$1,
...base256emoji$1
};
function createCodec(name, prefix, encode2, decode2) {
return {
name,
prefix,
encoder: {
name,
prefix,
encode: encode2
},
decoder: { decode: decode2 }
};
}
const string = createCodec("utf8", "u", (buf) => {
const decoder = new TextDecoder("utf8");
return "u" + decoder.decode(buf);
}, (str) => {
const encoder = new TextEncoder();
return encoder.encode(str.substring(1));
});
const ascii = createCodec("ascii", "a", (buf) => {
let string2 = "a";
for (let i = 0; i < buf.length; i++) {
string2 += String.fromCharCode(buf[i]);
}
return string2;
}, (str) => {
str = str.substring(1);
const buf = allocUnsafe(str.length);
for (let i = 0; i < str.length; i++) {
buf[i] = str.charCodeAt(i);
}
return buf;
});
const BASES = {
utf8: string,
"utf-8": string,
hex: bases.base16,
latin1: ascii,
ascii,
binary: ascii,
...bases
};
function toString(array, encoding = "utf8") {
const base3 = BASES[encoding];
if (!base3) {
throw new Error(`Unsupported encoding "${encoding}"`);
}
if ((encoding === "utf8" || encoding === "utf-8") && globalThis.Buffer != null && globalThis.Buffer.from != null) {
return globalThis.Buffer.from(array.buffer, array.byteOffset, array.byteLength).toString("utf8");
}
return base3.encoder.encode(array).substring(1);
}
function fromString(string2, encoding = "utf8") {
const base3 = BASES[encoding];
if (!base3) {
throw new Error(`Unsupported encoding "${encoding}"`);
}
if ((encoding === "utf8" || encoding === "utf-8") && globalThis.Buffer != null && globalThis.Buffer.from != null) {
return globalThis.Buffer.from(string2, "utf8");
}
return base3.decoder.decode(`${base3.prefix}${string2}`);
}
function encodeJSON(val) {
return toString(fromString(safeJsonStringify$1(val), JSON_ENCODING), JWT_ENCODING);
}
function encodeIss(publicKey) {
const header = fromString(MULTICODEC_ED25519_HEADER, MULTICODEC_ED25519_ENCODING);
const multicodec = MULTICODEC_ED25519_BASE + toString(concat([header, publicKey]), MULTICODEC_ED25519_ENCODING);
return [DID_PREFIX, DID_METHOD, multicodec].join(DID_DELIMITER);
}
function encodeSig(bytes) {
return toString(bytes, JWT_ENCODING);
}
function encodeData(params) {
return fromString([encodeJSON(params.header), encodeJSON(params.payload)].join(JWT_DELIMITER), DATA_ENCODING);
}
function encodeJWT(params) {
return [
encodeJSON(params.header),
encodeJSON(params.payload),
encodeSig(params.signature)
].join(JWT_DELIMITER);
}
function generateKeyPair(seed = random.randomBytes(KEY_PAIR_SEED_LENGTH)) {
return ed25519.generateKeyPairFromSeed(seed);
}
async function signJWT(sub, aud, ttl, keyPair, iat = cjs$5.fromMiliseconds(Date.now())) {
const header = { alg: JWT_IRIDIUM_ALG, typ: JWT_IRIDIUM_TYP };
const iss = encodeIss(keyPair.publicKey);
const exp = iat + ttl;
const payload = { iss, sub, aud, iat, exp };
const data = encodeData({ header, payload });
const signature = ed25519.sign(keyPair.secretKey, data);
return encodeJWT({ header, payload, signature });
}
var chacha20poly1305 = {};
var chacha = {};
Object.defineProperty(chacha, "__esModule", { value: true });
var binary_1 = binary;
var wipe_1$2 = wipe$1;
var ROUNDS = 20;
function core(out, input, key) {
var j0 = 1634760805;
var j1 = 857760878;
var j2 = 2036477234;
var j3 = 1797285236;
var j4 = key[3] << 24 | key[2] << 16 | key[1] << 8 | key[0];
var j5 = key[7] << 24 | key[6] << 16 | key[5] << 8 | key[4];
var j6 = key[11] << 24 | key[10] << 16 | key[9] << 8 | key[8];
var j7 = key[15] << 24 | key[14] << 16 | key[13] << 8 | key[12];
var j8 = key[19] << 24 | key[18] << 16 | key[17] << 8 | key[16];
var j9 = key[23] << 24 | key[22] << 16 | key[21] << 8 | key[20];
var j10 = key[27] << 24 | key[26] << 16 | key[25] << 8 | key[24];
var j11 = key[31] << 24 | key[30] << 16 | key[29] << 8 | key[28];
var j12 = input[3] << 24 | input[2] << 16 | input[1] << 8 | input[0];
var j13 = input[7] << 24 | input[6] << 16 | input[5] << 8 | input[4];
var j14 = input[11] << 24 | input[10] << 16 | input[9] << 8 | input[8];
var j15 = input[15] << 24 | input[14] << 16 | input[13] << 8 | input[12];
var x0 = j0;
var x1 = j1;
var x2 = j2;
var x3 = j3;
var x4 = j4;
var x5 = j5;
var x6 = j6;
var x7 = j7;
var x8 = j8;
var x9 = j9;
var x10 = j10;
var x11 = j11;
var x12 = j12;
var x13 = j13;
var x14 = j14;
var x15 = j15;
for (var i = 0; i < ROUNDS; i += 2) {
x0 = x0 + x4 | 0;
x12 ^= x0;
x12 = x12 >>> 32 - 16 | x12 << 16;
x8 = x8 + x12 | 0;
x4 ^= x8;
x4 = x4 >>> 32 - 12 | x4 << 12;
x1 = x1 + x5 | 0;
x13 ^= x1;
x13 = x13 >>> 32 - 16 | x13 << 16;
x9 = x9 + x13 | 0;
x5 ^= x9;
x5 = x5 >>> 32 - 12 | x5 << 12;
x2 = x2 + x6 | 0;
x14 ^= x2;
x14 = x14 >>> 32 - 16 | x14 << 16;
x10 = x10 + x14 | 0;
x6 ^= x10;
x6 = x6 >>> 32 - 12 | x6 << 12;
x3 = x3 + x7 | 0;
x15 ^= x3;
x15 = x15 >>> 32 - 16 | x15 << 16;
x11 = x11 + x15 | 0;
x7 ^= x11;
x7 = x7 >>> 32 - 12 | x7 << 12;
x2 = x2 + x6 | 0;
x14 ^= x2;
x14 = x14 >>> 32 - 8 | x14 << 8;
x10 = x10 + x14 | 0;
x6 ^= x10;
x6 = x6 >>> 32 - 7 | x6 << 7;
x3 = x3 + x7 | 0;
x15 ^= x3;
x15 = x15 >>> 32 - 8 | x15 << 8;
x11 = x11 + x15 | 0;
x7 ^= x11;
x7 = x7 >>> 32 - 7 | x7 << 7;
x1 = x1 + x5 | 0;
x13 ^= x1;
x13 = x13 >>> 32 - 8 | x13 << 8;
x9 = x9 + x13 | 0;
x5 ^= x9;
x5 = x5 >>> 32 - 7 | x5 << 7;
x0 = x0 + x4 | 0;
x12 ^= x0;
x12 = x12 >>> 32 - 8 | x12 << 8;
x8 = x8 + x12 | 0;
x4 ^= x8;
x4 = x4 >>> 32 - 7 | x4 << 7;
x0 = x0 + x5 | 0;
x15 ^= x0;
x15 = x15 >>> 32 - 16 | x15 << 16;
x10 = x10 + x15 | 0;
x5 ^= x10;
x5 = x5 >>> 32 - 12 | x5 << 12;
x1 = x1 + x6 | 0;
x12 ^= x1;
x12 = x12 >>> 32 - 16 | x12 << 16;
x11 = x11 + x12 | 0;
x6 ^= x11;
x6 = x6 >>> 32 - 12 | x6 << 12;
x2 = x2 + x7 | 0;
x13 ^= x2;
x13 = x13 >>> 32 - 16 | x13 << 16;
x8 = x8 + x13 | 0;
x7 ^= x8;
x7 = x7 >>> 32 - 12 | x7 << 12;
x3 = x3 + x4 | 0;
x14 ^= x3;
x14 = x14 >>> 32 - 16 | x14 << 16;
x9 = x9 + x14 | 0;
x4 ^= x9;
x4 = x4 >>> 32 - 12 | x4 << 12;
x2 = x2 + x7 | 0;
x13 ^= x2;
x13 = x13 >>> 32 - 8 | x13 << 8;
x8 = x8 + x13 | 0;
x7 ^= x8;
x7 = x7 >>> 32 - 7 | x7 << 7;
x3 = x3 + x4 | 0;
x14 ^= x3;
x14 = x14 >>> 32 - 8 | x14 << 8;
x9 = x9 + x14 | 0;
x4 ^= x9;
x4 = x4 >>> 32 - 7 | x4 << 7;
x1 = x1 + x6 | 0;
x12 ^= x1;
x12 = x12 >>> 32 - 8 | x12 << 8;
x11 = x11 + x12 | 0;
x6 ^= x11;
x6 = x6 >>> 32 - 7 | x6 << 7;
x0 = x0 + x5 | 0;
x15 ^= x0;
x15 = x15 >>> 32 - 8 | x15 << 8;
x10 = x10 + x15 | 0;
x5 ^= x10;
x5 = x5 >>> 32 - 7 | x5 << 7;
}
binary_1.writeUint32LE(x0 + j0 | 0, out, 0);
binary_1.writeUint32LE(x1 + j1 | 0, out, 4);
binary_1.writeUint32LE(x2 + j2 | 0, out, 8);
binary_1.writeUint32LE(x3 + j3 | 0, out, 12);
binary_1.writeUint32LE(x4 + j4 | 0, out, 16);
binary_1.writeUint32LE(x5 + j5 | 0, out, 20);
binary_1.writeUint32LE(x6 + j6 | 0, out, 24);
binary_1.writeUint32LE(x7 + j7 | 0, out, 28);
binary_1.writeUint32LE(x8 + j8 | 0, out, 32);
binary_1.writeUint32LE(x9 + j9 | 0, out, 36);
binary_1.writeUint32LE(x10 + j10 | 0, out, 40);
binary_1.writeUint32LE(x11 + j11 | 0, out, 44);
binary_1.writeUint32LE(x12 + j12 | 0, out, 48);
binary_1.writeUint32LE(x13 + j13 | 0, out, 52);
binary_1.writeUint32LE(x14 + j14 | 0, out, 56);
binary_1.writeUint32LE(x15 + j15 | 0, out, 60);
}
function streamXOR(key, nonce, src2, dst, nonceInplaceCounterLength) {
if (nonceInplaceCounterLength === void 0) {
nonceInplaceCounterLength = 0;
}
if (key.length !== 32) {
throw new Error("ChaCha: key size must be 32 bytes");
}
if (dst.length < src2.length) {
throw new Error("ChaCha: destination is shorter than source");
}
var nc;
var counterLength;
if (nonceInplaceCounterLength === 0) {
if (nonce.length !== 8 && nonce.length !== 12) {
throw new Error("ChaCha nonce must be 8 or 12 bytes");
}
nc = new Uint8Array(16);
counterLength = nc.length - nonce.length;
nc.set(nonce, counterLength);
} else {
if (nonce.length !== 16) {
throw new Error("ChaCha nonce with counter must be 16 bytes");
}
nc = nonce;
counterLength = nonceInplaceCounterLength;
}
var block = new Uint8Array(64);
for (var i = 0; i < src2.length; i += 64) {
core(block, nc, key);
for (var j2 = i; j2 < i + 64 && j2 < src2.length; j2++) {
dst[j2] = src2[j2] ^ block[j2 - i];
}
incrementCounter(nc, 0, counterLength);
}
wipe_1$2.wipe(block);
if (nonceInplaceCounterLength === 0) {
wipe_1$2.wipe(nc);
}
return dst;
}
chacha.streamXOR = streamXOR;
function stream(key, nonce, dst, nonceInplaceCounterLength) {
if (nonceInplaceCounterLength === void 0) {
nonceInplaceCounterLength = 0;
}
wipe_1$2.wipe(dst);
return streamXOR(key, nonce, dst, dst, nonceInplaceCounterLength);
}
chacha.stream = stream;
function incrementCounter(counter, pos, len) {
var carry = 1;
while (len--) {
carry = carry + (counter[pos] & 255) | 0;
counter[pos] = carry & 255;
carry >>>= 8;
pos++;
}
if (carry > 0) {
throw new Error("ChaCha: counter overflow");
}
}
var poly1305 = {};
var constantTime = {};
Object.defineProperty(constantTime, "__esModule", { value: true });
function select(subject, resultIfOne, resultIfZero) {
return ~(subject - 1) & resultIfOne | subject - 1 & resultIfZero;
}
constantTime.select = select;
function lessOrEqual(a3, b2) {
return (a3 | 0) - (b2 | 0) - 1 >>> 31 & 1;
}
constantTime.lessOrEqual = lessOrEqual;
function compare(a3, b2) {
if (a3.length !== b2.length) {
return 0;
}
var result = 0;
for (var i = 0; i < a3.length; i++) {
result |= a3[i] ^ b2[i];
}
return 1 & result - 1 >>> 8;
}
constantTime.compare = compare;
function equal(a3, b2) {
if (a3.length === 0 || b2.length === 0) {
return false;
}
return compare(a3, b2) !== 0;
}
constantTime.equal = equal;
(function(exports) {
Object.defineProperty(exports, "__esModule", { value: true });
var constant_time_12 = constantTime;
var wipe_12 = wipe$1;
exports.DIGEST_LENGTH = 16;
var Poly1305 = (
/** @class */
function() {
function Poly13052(key) {
this.digestLength = exports.DIGEST_LENGTH;
this._buffer = new Uint8Array(16);
this._r = new Uint16Array(10);
this._h = new Uint16Array(10);
this._pad = new Uint16Array(8);
this._leftover = 0;
this._fin = 0;
this._finished = false;
var t0 = key[0] | key[1] << 8;
this._r[0] = t0 & 8191;
var t1 = key[2] | key[3] << 8;
this._r[1] = (t0 >>> 13 | t1 << 3) & 8191;
var t2 = key[4] | key[5] << 8;
this._r[2] = (t1 >>> 10 | t2 << 6) & 7939;
var t3 = key[6] | key[7] << 8;
this._r[3] = (t2 >>> 7 | t3 << 9) & 8191;
var t4 = key[8] | key[9] << 8;
this._r[4] = (t3 >>> 4 | t4 << 12) & 255;
this._r[5] = t4 >>> 1 & 8190;
var t5 = key[10] | key[11] << 8;
this._r[6] = (t4 >>> 14 | t5 << 2) & 8191;
var t6 = key[12] | key[13] << 8;
this._r[7] = (t5 >>> 11 | t6 << 5) & 8065;
var t7 = key[14] | key[15] << 8;
this._r[8] = (t6 >>> 8 | t7 << 8) & 8191;
this._r[9] = t7 >>> 5 & 127;
this._pad[0] = key[16] | key[17] << 8;
this._pad[1] = key[18] | key[19] << 8;
this._pad[2] = key[20] | key[21] << 8;
this._pad[3] = key[22] | key[23] << 8;
this._pad[4] = key[24] | key[25] << 8;
this._pad[5] = key[26] | key[27] << 8;
this._pad[6] = key[28] | key[29] << 8;
this._pad[7] = key[30] | key[31] << 8;
}
Poly13052.prototype._blocks = function(m2, mpos, bytes) {
var hibit = this._fin ? 0 : 1 << 11;
var h0 = this._h[0], h1 = this._h[1], h22 = this._h[2], h3 = this._h[3], h4 = this._h[4], h5 = this._h[5], h6 = this._h[6], h7 = this._h[7], h8 = this._h[8], h9 = this._h[9];
var r0 = this._r[0], r1 = this._r[1], r2 = this._r[2], r3 = this._r[3], r4 = this._r[4], r5 = this._r[5], r6 = this._r[6], r7 = this._r[7], r8 = this._r[8], r9 = this._r[9];
while (bytes >= 16) {
var t0 = m2[mpos + 0] | m2[mpos + 1] << 8;
h0 += t0 & 8191;
var t1 = m2[mpos + 2] | m2[mpos + 3] << 8;
h1 += (t0 >>> 13 | t1 << 3) & 8191;
var t2 = m2[mpos + 4] | m2[mpos + 5] << 8;
h22 += (t1 >>> 10 | t2 << 6) & 8191;
var t3 = m2[mpos + 6] | m2[mpos + 7] << 8;
h3 += (t2 >>> 7 | t3 << 9) & 8191;
var t4 = m2[mpos + 8] | m2[mpos + 9] << 8;
h4 += (t3 >>> 4 | t4 << 12) & 8191;
h5 += t4 >>> 1 & 8191;
var t5 = m2[mpos + 10] | m2[mpos + 11] << 8;
h6 += (t4 >>> 14 | t5 << 2) & 8191;
var t6 = m2[mpos + 12] | m2[mpos + 13] << 8;
h7 += (t5 >>> 11 | t6 << 5) & 8191;
var t7 = m2[mpos + 14] | m2[mpos + 15] << 8;
h8 += (t6 >>> 8 | t7 << 8) & 8191;
h9 += t7 >>> 5 | hibit;
var c2 = 0;
var d0 = c2;
d0 += h0 * r0;
d0 += h1 * (5 * r9);
d0 += h22 * (5 * r8);
d0 += h3 * (5 * r7);
d0 += h4 * (5 * r6);
c2 = d0 >>> 13;
d0 &= 8191;
d0 += h5 * (5 * r5);
d0 += h6 * (5 * r4);
d0 += h7 * (5 * r3);
d0 += h8 * (5 * r2);
d0 += h9 * (5 * r1);
c2 += d0 >>> 13;
d0 &= 8191;
var d1 = c2;
d1 += h0 * r1;
d1 += h1 * r0;
d1 += h22 * (5 * r9);
d1 += h3 * (5 * r8);
d1 += h4 * (5 * r7);
c2 = d1 >>> 13;
d1 &= 8191;
d1 += h5 * (5 * r6);
d1 += h6 * (5 * r5);
d1 += h7 * (5 * r4);
d1 += h8 * (5 * r3);
d1 += h9 * (5 * r2);
c2 += d1 >>> 13;
d1 &= 8191;
var d2 = c2;
d2 += h0 * r2;
d2 += h1 * r1;
d2 += h22 * r0;
d2 += h3 * (5 * r9);
d2 += h4 * (5 * r8);
c2 = d2 >>> 13;
d2 &= 8191;
d2 += h5 * (5 * r7);
d2 += h6 * (5 * r6);
d2 += h7 * (5 * r5);
d2 += h8 * (5 * r4);
d2 += h9 * (5 * r3);
c2 += d2 >>> 13;
d2 &= 8191;
var d3 = c2;
d3 += h0 * r3;
d3 += h1 * r2;
d3 += h22 * r1;
d3 += h3 * r0;
d3 += h4 * (5 * r9);
c2 = d3 >>> 13;
d3 &= 8191;
d3 += h5 * (5 * r8);
d3 += h6 * (5 * r7);
d3 += h7 * (5 * r6);
d3 += h8 * (5 * r5);
d3 += h9 * (5 * r4);
c2 += d3 >>> 13;
d3 &= 8191;
var d4 = c2;
d4 += h0 * r4;
d4 += h1 * r3;
d4 += h22 * r2;
d4 += h3 * r1;
d4 += h4 * r0;
c2 = d4 >>> 13;
d4 &= 8191;
d4 += h5 * (5 * r9);
d4 += h6 * (5 * r8);
d4 += h7 * (5 * r7);
d4 += h8 * (5 * r6);
d4 += h9 * (5 * r5);
c2 += d4 >>> 13;
d4 &= 8191;
var d5 = c2;
d5 += h0 * r5;
d5 += h1 * r4;
d5 += h22 * r3;
d5 += h3 * r2;
d5 += h4 * r1;
c2 = d5 >>> 13;
d5 &= 8191;
d5 += h5 * r0;
d5 += h6 * (5 * r9);
d5 += h7 * (5 * r8);
d5 += h8 * (5 * r7);
d5 += h9 * (5 * r6);
c2 += d5 >>> 13;
d5 &= 8191;
var d6 = c2;
d6 += h0 * r6;
d6 += h1 * r5;
d6 += h22 * r4;
d6 += h3 * r3;
d6 += h4 * r2;
c2 = d6 >>> 13;
d6 &= 8191;
d6 += h5 * r1;
d6 += h6 * r0;
d6 += h7 * (5 * r9);
d6 += h8 * (5 * r8);
d6 += h9 * (5 * r7);
c2 += d6 >>> 13;
d6 &= 8191;
var d7 = c2;
d7 += h0 * r7;
d7 += h1 * r6;
d7 += h22 * r5;
d7 += h3 * r4;
d7 += h4 * r3;
c2 = d7 >>> 13;
d7 &= 8191;
d7 += h5 * r2;
d7 += h6 * r1;
d7 += h7 * r0;
d7 += h8 * (5 * r9);
d7 += h9 * (5 * r8);
c2 += d7 >>> 13;
d7 &= 8191;
var d8 = c2;
d8 += h0 * r8;
d8 += h1 * r7;
d8 += h22 * r6;
d8 += h3 * r5;
d8 += h4 * r4;
c2 = d8 >>> 13;
d8 &= 8191;
d8 += h5 * r3;
d8 += h6 * r2;
d8 += h7 * r1;
d8 += h8 * r0;
d8 += h9 * (5 * r9);
c2 += d8 >>> 13;
d8 &= 8191;
var d9 = c2;
d9 += h0 * r9;
d9 += h1 * r8;
d9 += h22 * r7;
d9 += h3 * r6;
d9 += h4 * r5;
c2 = d9 >>> 13;
d9 &= 8191;
d9 += h5 * r4;
d9 += h6 * r3;
d9 += h7 * r2;
d9 += h8 * r1;
d9 += h9 * r0;
c2 += d9 >>> 13;
d9 &= 8191;
c2 = (c2 << 2) + c2 | 0;
c2 = c2 + d0 | 0;
d0 = c2 & 8191;
c2 = c2 >>> 13;
d1 += c2;
h0 = d0;
h1 = d1;
h22 = d2;
h3 = d3;
h4 = d4;
h5 = d5;
h6 = d6;
h7 = d7;
h8 = d8;
h9 = d9;
mpos += 16;
bytes -= 16;
}
this._h[0] = h0;
this._h[1] = h1;
this._h[2] = h22;
this._h[3] = h3;
this._h[4] = h4;
this._h[5] = h5;
this._h[6] = h6;
this._h[7] = h7;
this._h[8] = h8;
this._h[9] = h9;
};
Poly13052.prototype.finish = function(mac, macpos) {
if (macpos === void 0) {
macpos = 0;
}
var g2 = new Uint16Array(10);
var c2;
var mask;
var f;
var i;
if (this._leftover) {
i = this._leftover;
this._buffer[i++] = 1;
for (; i < 16; i++) {
this._buffer[i] = 0;
}
this._fin = 1;
this._blocks(this._buffer, 0, 16);
}
c2 = this._h[1] >>> 13;
this._h[1] &= 8191;
for (i = 2; i < 10; i++) {
this._h[i] += c2;
c2 = this._h[i] >>> 13;
this._h[i] &= 8191;
}
this._h[0] += c2 * 5;
c2 = this._h[0] >>> 13;
this._h[0] &= 8191;
this._h[1] += c2;
c2 = this._h[1] >>> 13;
this._h[1] &= 8191;
this._h[2] += c2;
g2[0] = this._h[0] + 5;
c2 = g2[0] >>> 13;
g2[0] &= 8191;
for (i = 1; i < 10; i++) {
g2[i] = this._h[i] + c2;
c2 = g2[i] >>> 13;
g2[i] &= 8191;
}
g2[9] -= 1 << 13;
mask = (c2 ^ 1) - 1;
for (i = 0; i < 10; i++) {
g2[i] &= mask;
}
mask = ~mask;
for (i = 0; i < 10; i++) {
this._h[i] = this._h[i] & mask | g2[i];
}
this._h[0] = (this._h[0] | this._h[1] << 13) & 65535;
this._h[1] = (this._h[1] >>> 3 | this._h[2] << 10) & 65535;
this._h[2] = (this._h[2] >>> 6 | this._h[3] << 7) & 65535;
this._h[3] = (this._h[3] >>> 9 | this._h[4] << 4) & 65535;
this._h[4] = (this._h[4] >>> 12 | this._h[5] << 1 | this._h[6] << 14) & 65535;
this._h[5] = (this._h[6] >>> 2 | this._h[7] << 11) & 65535;
this._h[6] = (this._h[7] >>> 5 | this._h[8] << 8) & 65535;
this._h[7] = (this._h[8] >>> 8 | this._h[9] << 5) & 65535;
f = this._h[0] + this._pad[0];
this._h[0] = f & 65535;
for (i = 1; i < 8; i++) {
f = (this._h[i] + this._pad[i] | 0) + (f >>> 16) | 0;
this._h[i] = f & 65535;
}
mac[macpos + 0] = this._h[0] >>> 0;
mac[macpos + 1] = this._h[0] >>> 8;
mac[macpos + 2] = this._h[1] >>> 0;
mac[macpos + 3] = this._h[1] >>> 8;
mac[macpos + 4] = this._h[2] >>> 0;
mac[macpos + 5] = this._h[2] >>> 8;
mac[macpos + 6] = this._h[3] >>> 0;
mac[macpos + 7] = this._h[3] >>> 8;
mac[macpos + 8] = this._h[4] >>> 0;
mac[macpos + 9] = this._h[4] >>> 8;
mac[macpos + 10] = this._h[5] >>> 0;
mac[macpos + 11] = this._h[5] >>> 8;
mac[macpos + 12] = this._h[6] >>> 0;
mac[macpos + 13] = this._h[6] >>> 8;
mac[macpos + 14] = this._h[7] >>> 0;
mac[macpos + 15] = this._h[7] >>> 8;
this._finished = true;
return this;
};
Poly13052.prototype.update = function(m2) {
var mpos = 0;
var bytes = m2.length;
var want;
if (this._leftover) {
want = 16 - this._leftover;
if (want > bytes) {
want = bytes;
}
for (var i = 0; i < want; i++) {
this._buffer[this._leftover + i] = m2[mpos + i];
}
bytes -= want;
mpos += want;
this._leftover += want;
if (this._leftover < 16) {
return this;
}
this._blocks(this._buffer, 0, 16);
this._leftover = 0;
}
if (bytes >= 16) {
want = bytes - bytes % 16;
this._blocks(m2, mpos, want);
mpos += want;
bytes -= want;
}
if (bytes) {
for (var i = 0; i < bytes; i++) {
this._buffer[this._leftover + i] = m2[mpos + i];
}
this._leftover += bytes;
}
return this;
};
Poly13052.prototype.digest = function() {
if (this._finished) {
throw new Error("Poly1305 was finished");
}
var mac = new Uint8Array(16);
this.finish(mac);
return mac;
};
Poly13052.prototype.clean = function() {
wipe_12.wipe(this._buffer);
wipe_12.wipe(this._r);
wipe_12.wipe(this._h);
wipe_12.wipe(this._pad);
this._leftover = 0;
this._fin = 0;
this._finished = true;
return this;
};
return Poly13052;
}()
);
exports.Poly1305 = Poly1305;
function oneTimeAuth(key, data) {
var h3 = new Poly1305(key);
h3.update(data);
var digest = h3.digest();
h3.clean();
return digest;
}
exports.oneTimeAuth = oneTimeAuth;
function equal2(a3, b2) {
if (a3.length !== exports.DIGEST_LENGTH || b2.length !== exports.DIGEST_LENGTH) {
return false;
}
return constant_time_12.equal(a3, b2);
}
exports.equal = equal2;
})(poly1305);
(function(exports) {
Object.defineProperty(exports, "__esModule", { value: true });
var chacha_1 = chacha;
var poly1305_1 = poly1305;
var wipe_12 = wipe$1;
var binary_12 = binary;
var constant_time_12 = constantTime;
exports.KEY_LENGTH = 32;
exports.NONCE_LENGTH = 12;
exports.TAG_LENGTH = 16;
var ZEROS = new Uint8Array(16);
var ChaCha20Poly1305 = (
/** @class */
function() {
function ChaCha20Poly13052(key) {
this.nonceLength = exports.NONCE_LENGTH;
this.tagLength = exports.TAG_LENGTH;
if (key.length !== exports.KEY_LENGTH) {
throw new Error("ChaCha20Poly1305 needs 32-byte key");
}
this._key = new Uint8Array(key);
}
ChaCha20Poly13052.prototype.seal = function(nonce, plaintext, associatedData, dst) {
if (nonce.length > 16) {
throw new Error("ChaCha20Poly1305: incorrect nonce length");
}
var counter = new Uint8Array(16);
counter.set(nonce, counter.length - nonce.length);
var authKey = new Uint8Array(32);
chacha_1.stream(this._key, counter, authKey, 4);
var resultLength = plaintext.length + this.tagLength;
var result;
if (dst) {
if (dst.length !== resultLength) {
throw new Error("ChaCha20Poly1305: incorrect destination length");
}
result = dst;
} else {
result = new Uint8Array(resultLength);
}
chacha_1.streamXOR(this._key, counter, plaintext, result, 4);
this._authenticate(result.subarray(result.length - this.tagLength, result.length), authKey, result.subarray(0, result.length - this.tagLength), associatedData);
wipe_12.wipe(counter);
return result;
};
ChaCha20Poly13052.prototype.open = function(nonce, sealed, associatedData, dst) {
if (nonce.length > 16) {
throw new Error("ChaCha20Poly1305: incorrect nonce length");
}
if (sealed.length < this.tagLength) {
return null;
}
var counter = new Uint8Array(16);
counter.set(nonce, counter.length - nonce.length);
var authKey = new Uint8Array(32);
chacha_1.stream(this._key, counter, authKey, 4);
var calculatedTag = new Uint8Array(this.tagLength);
this._authenticate(calculatedTag, authKey, sealed.subarray(0, sealed.length - this.tagLength), associatedData);
if (!constant_time_12.equal(calculatedTag, sealed.subarray(sealed.length - this.tagLength, sealed.length))) {
return null;
}
var resultLength = sealed.length - this.tagLength;
var result;
if (dst) {
if (dst.length !== resultLength) {
throw new Error("ChaCha20Poly1305: incorrect destination length");
}
result = dst;
} else {
result = new Uint8Array(resultLength);
}
chacha_1.streamXOR(this._key, counter, sealed.subarray(0, sealed.length - this.tagLength), result, 4);
wipe_12.wipe(counter);
return result;
};
ChaCha20Poly13052.prototype.clean = function() {
wipe_12.wipe(this._key);
return this;
};
ChaCha20Poly13052.prototype._authenticate = function(tagOut, authKey, ciphertext, associatedData) {
var h3 = new poly1305_1.Poly1305(authKey);
if (associatedData) {
h3.update(associatedData);
if (associatedData.length % 16 > 0) {
h3.update(ZEROS.subarray(associatedData.length % 16));
}
}
h3.update(ciphertext);
if (ciphertext.length % 16 > 0) {
h3.update(ZEROS.subarray(ciphertext.length % 16));
}
var length = new Uint8Array(8);
if (associatedData) {
binary_12.writeUint64LE(associatedData.length, length);
}
h3.update(length);
binary_12.writeUint64LE(ciphertext.length, length);
h3.update(length);
var tag = h3.digest();
for (var i = 0; i < tag.length; i++) {
tagOut[i] = tag[i];
}
h3.clean();
wipe_12.wipe(tag);
wipe_12.wipe(length);
};
return ChaCha20Poly13052;
}()
);
exports.ChaCha20Poly1305 = ChaCha20Poly1305;
})(chacha20poly1305);
var hkdf = {};
var hmac$1 = {};
var hash = {};
Object.defineProperty(hash, "__esModule", { value: true });
function isSerializableHash(h3) {
return typeof h3.saveState !== "undefined" && typeof h3.restoreState !== "undefined" && typeof h3.cleanSavedState !== "undefined";
}
hash.isSerializableHash = isSerializableHash;
Object.defineProperty(hmac$1, "__esModule", { value: true });
var hash_1 = hash;
var constant_time_1 = constantTime;
var wipe_1$1 = wipe$1;
var HMAC = (
/** @class */
function() {
function HMAC2(hash2, key) {
this._finished = false;
this._inner = new hash2();
this._outer = new hash2();
this.blockSize = this._outer.blockSize;
this.digestLength = this._outer.digestLength;
var pad = new Uint8Array(this.blockSize);
if (key.length > this.blockSize) {
this._inner.update(key).finish(pad).clean();
} else {
pad.set(key);
}
for (var i = 0; i < pad.length; i++) {
pad[i] ^= 54;
}
this._inner.update(pad);
for (var i = 0; i < pad.length; i++) {
pad[i] ^= 54 ^ 92;
}
this._outer.update(pad);
if (hash_1.isSerializableHash(this._inner) && hash_1.isSerializableHash(this._outer)) {
this._innerKeyedState = this._inner.saveState();
this._outerKeyedState = this._outer.saveState();
}
wipe_1$1.wipe(pad);
}
HMAC2.prototype.reset = function() {
if (!hash_1.isSerializableHash(this._inner) || !hash_1.isSerializableHash(this._outer)) {
throw new Error("hmac: can't reset() because hash doesn't implement restoreState()");
}
this._inner.restoreState(this._innerKeyedState);
this._outer.restoreState(this._outerKeyedState);
this._finished = false;
return this;
};
HMAC2.prototype.clean = function() {
if (hash_1.isSerializableHash(this._inner)) {
this._inner.cleanSavedState(this._innerKeyedState);
}
if (hash_1.isSerializableHash(this._outer)) {
this._outer.cleanSavedState(this._outerKeyedState);
}
this._inner.clean();
this._outer.clean();
};
HMAC2.prototype.update = function(data) {
this._inner.update(data);
return this;
};
HMAC2.prototype.finish = function(out) {
if (this._finished) {
this._outer.finish(out);
return this;
}
this._inner.finish(out);
this._outer.update(out.subarray(0, this.digestLength)).finish(out);
this._finished = true;
return this;
};
HMAC2.prototype.digest = function() {
var out = new Uint8Array(this.digestLength);
this.finish(out);
return out;
};
HMAC2.prototype.saveState = function() {
if (!hash_1.isSerializableHash(this._inner)) {
throw new Error("hmac: can't saveState() because hash doesn't implement it");
}
return this._inner.saveState();
};
HMAC2.prototype.restoreState = function(savedState) {
if (!hash_1.isSerializableHash(this._inner) || !hash_1.isSerializableHash(this._outer)) {
throw new Error("hmac: can't restoreState() because hash doesn't implement it");
}
this._inner.restoreState(savedState);
this._outer.restoreState(this._outerKeyedState);
this._finished = false;
return this;
};
HMAC2.prototype.cleanSavedState = function(savedState) {
if (!hash_1.isSerializableHash(this._inner)) {
throw new Error("hmac: can't cleanSavedState() because hash doesn't implement it");
}
this._inner.cleanSavedState(savedState);
};
return HMAC2;
}()
);
hmac$1.HMAC = HMAC;
function hmac(hash2, key, data) {
var h3 = new HMAC(hash2, key);
h3.update(data);
var digest = h3.digest();
h3.clean();
return digest;
}
hmac$1.hmac = hmac;
hmac$1.equal = constant_time_1.equal;
Object.defineProperty(hkdf, "__esModule", { value: true });
var hmac_1 = hmac$1;
var wipe_1 = wipe$1;
var HKDF = (
/** @class */
function() {
function HKDF2(hash2, key, salt, info) {
if (salt === void 0) {
salt = new Uint8Array(0);
}
this._counter = new Uint8Array(1);
this._hash = hash2;
this._info = info;
var okm = hmac_1.hmac(this._hash, salt, key);
this._hmac = new hmac_1.HMAC(hash2, okm);
this._buffer = new Uint8Array(this._hmac.digestLength);
this._bufpos = this._buffer.length;
}
HKDF2.prototype._fillBuffer = function() {
this._counter[0]++;
var ctr = this._counter[0];
if (ctr === 0) {
throw new Error("hkdf: cannot expand more");
}
this._hmac.reset();
if (ctr > 1) {
this._hmac.update(this._buffer);
}
if (this._info) {
this._hmac.update(this._info);
}
this._hmac.update(this._counter);
this._hmac.finish(this._buffer);
this._bufpos = 0;
};
HKDF2.prototype.expand = function(length) {
var out = new Uint8Array(length);
for (var i = 0; i < out.length; i++) {
if (this._bufpos === this._buffer.length) {
this._fillBuffer();
}
out[i] = this._buffer[this._bufpos++];
}
return out;
};
HKDF2.prototype.clean = function() {
this._hmac.clean();
wipe_1.wipe(this._buffer);
wipe_1.wipe(this._counter);
this._bufpos = 0;
};
return HKDF2;
}()
);
var HKDF_1 = hkdf.HKDF = HKDF;
var sha256 = {};
(function(exports) {
Object.defineProperty(exports, "__esModule", { value: true });
var binary_12 = binary;
var wipe_12 = wipe$1;
exports.DIGEST_LENGTH = 32;
exports.BLOCK_SIZE = 64;
var SHA256 = (
/** @class */
function() {
function SHA2562() {
this.digestLength = exports.DIGEST_LENGTH;
this.blockSize = exports.BLOCK_SIZE;
this._state = new Int32Array(8);
this._temp = new Int32Array(64);
this._buffer = new Uint8Array(128);
this._bufferLength = 0;
this._bytesHashed = 0;
this._finished = false;
this.reset();
}
SHA2562.prototype._initState = function() {
this._state[0] = 1779033703;
this._state[1] = 3144134277;
this._state[2] = 1013904242;
this._state[3] = 2773480762;
this._state[4] = 1359893119;
this._state[5] = 2600822924;
this._state[6] = 528734635;
this._state[7] = 1541459225;
};
SHA2562.prototype.reset = function() {
this._initState();
this._bufferLength = 0;
this._bytesHashed = 0;
this._finished = false;
return this;
};
SHA2562.prototype.clean = function() {
wipe_12.wipe(this._buffer);
wipe_12.wipe(this._temp);
this.reset();
};
SHA2562.prototype.update = function(data, dataLength) {
if (dataLength === void 0) {
dataLength = data.length;
}
if (this._finished) {
throw new Error("SHA256: can't update because hash was finished.");
}
var dataPos = 0;
this._bytesHashed += dataLength;
if (this._bufferLength > 0) {
while (this._bufferLength < this.blockSize && dataLength > 0) {
this._buffer[this._bufferLength++] = data[dataPos++];
dataLength--;
}
if (this._bufferLength === this.blockSize) {
hashBlocks(this._temp, this._state, this._buffer, 0, this.blockSize);
this._bufferLength = 0;
}
}
if (dataLength >= this.blockSize) {
dataPos = hashBlocks(this._temp, this._state, data, dataPos, dataLength);
dataLength %= this.blockSize;
}
while (dataLength > 0) {
this._buffer[this._bufferLength++] = data[dataPos++];
dataLength--;
}
return this;
};
SHA2562.prototype.finish = function(out) {
if (!this._finished) {
var bytesHashed = this._bytesHashed;
var left = this._bufferLength;
var bitLenHi = bytesHashed / 536870912 | 0;
var bitLenLo = bytesHashed << 3;
var padLength = bytesHashed % 64 < 56 ? 64 : 128;
this._buffer[left] = 128;
for (var i = left + 1; i < padLength - 8; i++) {
this._buffer[i] = 0;
}
binary_12.writeUint32BE(bitLenHi, this._buffer, padLength - 8);
binary_12.writeUint32BE(bitLenLo, this._buffer, padLength - 4);
hashBlocks(this._temp, this._state, this._buffer, 0, padLength);
this._finished = true;
}
for (var i = 0; i < this.digestLength / 4; i++) {
binary_12.writeUint32BE(this._state[i], out, i * 4);
}
return this;
};
SHA2562.prototype.digest = function() {
var out = new Uint8Array(this.digestLength);
this.finish(out);
return out;
};
SHA2562.prototype.saveState = function() {
if (this._finished) {
throw new Error("SHA256: cannot save finished state");
}
return {
state: new Int32Array(this._state),
buffer: this._bufferLength > 0 ? new Uint8Array(this._buffer) : void 0,
bufferLength: this._bufferLength,
bytesHashed: this._bytesHashed
};
};
SHA2562.prototype.restoreState = function(savedState) {
this._state.set(savedState.state);
this._bufferLength = savedState.bufferLength;
if (savedState.buffer) {
this._buffer.set(savedState.buffer);
}
this._bytesHashed = savedState.bytesHashed;
this._finished = false;
return this;
};
SHA2562.prototype.cleanSavedState = function(savedState) {
wipe_12.wipe(savedState.state);
if (savedState.buffer) {
wipe_12.wipe(savedState.buffer);
}
savedState.bufferLength = 0;
savedState.bytesHashed = 0;
};
return SHA2562;
}()
);
exports.SHA256 = SHA256;
var K2 = new Int32Array([
1116352408,
1899447441,
3049323471,
3921009573,
961987163,
1508970993,
2453635748,
2870763221,
3624381080,
310598401,
607225278,
1426881987,
1925078388,
2162078206,
2614888103,
3248222580,
3835390401,
4022224774,
264347078,
604807628,
770255983,
1249150122,
1555081692,
1996064986,
2554220882,
2821834349,
2952996808,
3210313671,
3336571891,
3584528711,
113926993,
338241895,
666307205,
773529912,
1294757372,
1396182291,
1695183700,
1986661051,
2177026350,
2456956037,
2730485921,
2820302411,
3259730800,
3345764771,
3516065817,
3600352804,
4094571909,
275423344,
430227734,
506948616,
659060556,
883997877,
958139571,
1322822218,
1537002063,
1747873779,
1955562222,
2024104815,
2227730452,
2361852424,
2428436474,
2756734187,
3204031479,
3329325298
]);
function hashBlocks(w2, v2, p3, pos, len) {
while (len >= 64) {
var a3 = v2[0];
var b2 = v2[1];
var c2 = v2[2];
var d2 = v2[3];
var e = v2[4];
var f = v2[5];
var g2 = v2[6];
var h3 = v2[7];
for (var i = 0; i < 16; i++) {
var j2 = pos + i * 4;
w2[i] = binary_12.readUint32BE(p3, j2);
}
for (var i = 16; i < 64; i++) {
var u3 = w2[i - 2];
var t1 = (u3 >>> 17 | u3 << 32 - 17) ^ (u3 >>> 19 | u3 << 32 - 19) ^ u3 >>> 10;
u3 = w2[i - 15];
var t2 = (u3 >>> 7 | u3 << 32 - 7) ^ (u3 >>> 18 | u3 << 32 - 18) ^ u3 >>> 3;
w2[i] = (t1 + w2[i - 7] | 0) + (t2 + w2[i - 16] | 0);
}
for (var i = 0; i < 64; i++) {
var t1 = (((e >>> 6 | e << 32 - 6) ^ (e >>> 11 | e << 32 - 11) ^ (e >>> 25 | e << 32 - 25)) + (e & f ^ ~e & g2) | 0) + (h3 + (K2[i] + w2[i] | 0) | 0) | 0;
var t2 = ((a3 >>> 2 | a3 << 32 - 2) ^ (a3 >>> 13 | a3 << 32 - 13) ^ (a3 >>> 22 | a3 << 32 - 22)) + (a3 & b2 ^ a3 & c2 ^ b2 & c2) | 0;
h3 = g2;
g2 = f;
f = e;
e = d2 + t1 | 0;
d2 = c2;
c2 = b2;
b2 = a3;
a3 = t1 + t2 | 0;
}
v2[0] += a3;
v2[1] += b2;
v2[2] += c2;
v2[3] += d2;
v2[4] += e;
v2[5] += f;
v2[6] += g2;
v2[7] += h3;
pos += 64;
len -= 64;
}
return pos;
}
function hash2(data) {
var h3 = new SHA256();
h3.update(data);
var digest = h3.digest();
h3.clean();
return digest;
}
exports.hash = hash2;
})(sha256);
var x25519 = {};
(function(exports) {
Object.defineProperty(exports, "__esModule", { value: true });
exports.sharedKey = exports.generateKeyPair = exports.generateKeyPairFromSeed = exports.scalarMultBase = exports.scalarMult = exports.SHARED_KEY_LENGTH = exports.SECRET_KEY_LENGTH = exports.PUBLIC_KEY_LENGTH = void 0;
const random_1 = random;
const wipe_12 = wipe$1;
exports.PUBLIC_KEY_LENGTH = 32;
exports.SECRET_KEY_LENGTH = 32;
exports.SHARED_KEY_LENGTH = 32;
function gf(init) {
const r2 = new Float64Array(16);
if (init) {
for (let i = 0; i < init.length; i++) {
r2[i] = init[i];
}
}
return r2;
}
const _9 = new Uint8Array(32);
_9[0] = 9;
const _121665 = gf([56129, 1]);
function car25519(o2) {
let c2 = 1;
for (let i = 0; i < 16; i++) {
let v2 = o2[i] + c2 + 65535;
c2 = Math.floor(v2 / 65536);
o2[i] = v2 - c2 * 65536;
}
o2[0] += c2 - 1 + 37 * (c2 - 1);
}
function sel25519(p3, q2, b2) {
const c2 = ~(b2 - 1);
for (let i = 0; i < 16; i++) {
const t = c2 & (p3[i] ^ q2[i]);
p3[i] ^= t;
q2[i] ^= t;
}
}
function pack25519(o2, n2) {
const m2 = gf();
const t = gf();
for (let i = 0; i < 16; i++) {
t[i] = n2[i];
}
car25519(t);
car25519(t);
car25519(t);
for (let j2 = 0; j2 < 2; j2++) {
m2[0] = t[0] - 65517;
for (let i = 1; i < 15; i++) {
m2[i] = t[i] - 65535 - (m2[i - 1] >> 16 & 1);
m2[i - 1] &= 65535;
}
m2[15] = t[15] - 32767 - (m2[14] >> 16 & 1);
const b2 = m2[15] >> 16 & 1;
m2[14] &= 65535;
sel25519(t, m2, 1 - b2);
}
for (let i = 0; i < 16; i++) {
o2[2 * i] = t[i] & 255;
o2[2 * i + 1] = t[i] >> 8;
}
}
function unpack25519(o2, n2) {
for (let i = 0; i < 16; i++) {
o2[i] = n2[2 * i] + (n2[2 * i + 1] << 8);
}
o2[15] &= 32767;
}
function add(o2, a3, b2) {
for (let i = 0; i < 16; i++) {
o2[i] = a3[i] + b2[i];
}
}
function sub(o2, a3, b2) {
for (let i = 0; i < 16; i++) {
o2[i] = a3[i] - b2[i];
}
}
function mul(o2, a3, b2) {
let v2, c2, t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, b0 = b2[0], b1 = b2[1], b22 = b2[2], b3 = b2[3], b4 = b2[4], b5 = b2[5], b6 = b2[6], b7 = b2[7], b8 = b2[8], b9 = b2[9], b10 = b2[10], b11 = b2[11], b12 = b2[12], b13 = b2[13], b14 = b2[14], b15 = b2[15];
v2 = a3[0];
t0 += v2 * b0;
t1 += v2 * b1;
t2 += v2 * b22;
t3 += v2 * b3;
t4 += v2 * b4;
t5 += v2 * b5;
t6 += v2 * b6;
t7 += v2 * b7;
t8 += v2 * b8;
t9 += v2 * b9;
t10 += v2 * b10;
t11 += v2 * b11;
t12 += v2 * b12;
t13 += v2 * b13;
t14 += v2 * b14;
t15 += v2 * b15;
v2 = a3[1];
t1 += v2 * b0;
t2 += v2 * b1;
t3 += v2 * b22;
t4 += v2 * b3;
t5 += v2 * b4;
t6 += v2 * b5;
t7 += v2 * b6;
t8 += v2 * b7;
t9 += v2 * b8;
t10 += v2 * b9;
t11 += v2 * b10;
t12 += v2 * b11;
t13 += v2 * b12;
t14 += v2 * b13;
t15 += v2 * b14;
t16 += v2 * b15;
v2 = a3[2];
t2 += v2 * b0;
t3 += v2 * b1;
t4 += v2 * b22;
t5 += v2 * b3;
t6 += v2 * b4;
t7 += v2 * b5;
t8 += v2 * b6;
t9 += v2 * b7;
t10 += v2 * b8;
t11 += v2 * b9;
t12 += v2 * b10;
t13 += v2 * b11;
t14 += v2 * b12;
t15 += v2 * b13;
t16 += v2 * b14;
t17 += v2 * b15;
v2 = a3[3];
t3 += v2 * b0;
t4 += v2 * b1;
t5 += v2 * b22;
t6 += v2 * b3;
t7 += v2 * b4;
t8 += v2 * b5;
t9 += v2 * b6;
t10 += v2 * b7;
t11 += v2 * b8;
t12 += v2 * b9;
t13 += v2 * b10;
t14 += v2 * b11;
t15 += v2 * b12;
t16 += v2 * b13;
t17 += v2 * b14;
t18 += v2 * b15;
v2 = a3[4];
t4 += v2 * b0;
t5 += v2 * b1;
t6 += v2 * b22;
t7 += v2 * b3;
t8 += v2 * b4;
t9 += v2 * b5;
t10 += v2 * b6;
t11 += v2 * b7;
t12 += v2 * b8;
t13 += v2 * b9;
t14 += v2 * b10;
t15 += v2 * b11;
t16 += v2 * b12;
t17 += v2 * b13;
t18 += v2 * b14;
t19 += v2 * b15;
v2 = a3[5];
t5 += v2 * b0;
t6 += v2 * b1;
t7 += v2 * b22;
t8 += v2 * b3;
t9 += v2 * b4;
t10 += v2 * b5;
t11 += v2 * b6;
t12 += v2 * b7;
t13 += v2 * b8;
t14 += v2 * b9;
t15 += v2 * b10;
t16 += v2 * b11;
t17 += v2 * b12;
t18 += v2 * b13;
t19 += v2 * b14;
t20 += v2 * b15;
v2 = a3[6];
t6 += v2 * b0;
t7 += v2 * b1;
t8 += v2 * b22;
t9 += v2 * b3;
t10 += v2 * b4;
t11 += v2 * b5;
t12 += v2 * b6;
t13 += v2 * b7;
t14 += v2 * b8;
t15 += v2 * b9;
t16 += v2 * b10;
t17 += v2 * b11;
t18 += v2 * b12;
t19 += v2 * b13;
t20 += v2 * b14;
t21 += v2 * b15;
v2 = a3[7];
t7 += v2 * b0;
t8 += v2 * b1;
t9 += v2 * b22;
t10 += v2 * b3;
t11 += v2 * b4;
t12 += v2 * b5;
t13 += v2 * b6;
t14 += v2 * b7;
t15 += v2 * b8;
t16 += v2 * b9;
t17 += v2 * b10;
t18 += v2 * b11;
t19 += v2 * b12;
t20 += v2 * b13;
t21 += v2 * b14;
t22 += v2 * b15;
v2 = a3[8];
t8 += v2 * b0;
t9 += v2 * b1;
t10 += v2 * b22;
t11 += v2 * b3;
t12 += v2 * b4;
t13 += v2 * b5;
t14 += v2 * b6;
t15 += v2 * b7;
t16 += v2 * b8;
t17 += v2 * b9;
t18 += v2 * b10;
t19 += v2 * b11;
t20 += v2 * b12;
t21 += v2 * b13;
t22 += v2 * b14;
t23 += v2 * b15;
v2 = a3[9];
t9 += v2 * b0;
t10 += v2 * b1;
t11 += v2 * b22;
t12 += v2 * b3;
t13 += v2 * b4;
t14 += v2 * b5;
t15 += v2 * b6;
t16 += v2 * b7;
t17 += v2 * b8;
t18 += v2 * b9;
t19 += v2 * b10;
t20 += v2 * b11;
t21 += v2 * b12;
t22 += v2 * b13;
t23 += v2 * b14;
t24 += v2 * b15;
v2 = a3[10];
t10 += v2 * b0;
t11 += v2 * b1;
t12 += v2 * b22;
t13 += v2 * b3;
t14 += v2 * b4;
t15 += v2 * b5;
t16 += v2 * b6;
t17 += v2 * b7;
t18 += v2 * b8;
t19 += v2 * b9;
t20 += v2 * b10;
t21 += v2 * b11;
t22 += v2 * b12;
t23 += v2 * b13;
t24 += v2 * b14;
t25 += v2 * b15;
v2 = a3[11];
t11 += v2 * b0;
t12 += v2 * b1;
t13 += v2 * b22;
t14 += v2 * b3;
t15 += v2 * b4;
t16 += v2 * b5;
t17 += v2 * b6;
t18 += v2 * b7;
t19 += v2 * b8;
t20 += v2 * b9;
t21 += v2 * b10;
t22 += v2 * b11;
t23 += v2 * b12;
t24 += v2 * b13;
t25 += v2 * b14;
t26 += v2 * b15;
v2 = a3[12];
t12 += v2 * b0;
t13 += v2 * b1;
t14 += v2 * b22;
t15 += v2 * b3;
t16 += v2 * b4;
t17 += v2 * b5;
t18 += v2 * b6;
t19 += v2 * b7;
t20 += v2 * b8;
t21 += v2 * b9;
t22 += v2 * b10;
t23 += v2 * b11;
t24 += v2 * b12;
t25 += v2 * b13;
t26 += v2 * b14;
t27 += v2 * b15;
v2 = a3[13];
t13 += v2 * b0;
t14 += v2 * b1;
t15 += v2 * b22;
t16 += v2 * b3;
t17 += v2 * b4;
t18 += v2 * b5;
t19 += v2 * b6;
t20 += v2 * b7;
t21 += v2 * b8;
t22 += v2 * b9;
t23 += v2 * b10;
t24 += v2 * b11;
t25 += v2 * b12;
t26 += v2 * b13;
t27 += v2 * b14;
t28 += v2 * b15;
v2 = a3[14];
t14 += v2 * b0;
t15 += v2 * b1;
t16 += v2 * b22;
t17 += v2 * b3;
t18 += v2 * b4;
t19 += v2 * b5;
t20 += v2 * b6;
t21 += v2 * b7;
t22 += v2 * b8;
t23 += v2 * b9;
t24 += v2 * b10;
t25 += v2 * b11;
t26 += v2 * b12;
t27 += v2 * b13;
t28 += v2 * b14;
t29 += v2 * b15;
v2 = a3[15];
t15 += v2 * b0;
t16 += v2 * b1;
t17 += v2 * b22;
t18 += v2 * b3;
t19 += v2 * b4;
t20 += v2 * b5;
t21 += v2 * b6;
t22 += v2 * b7;
t23 += v2 * b8;
t24 += v2 * b9;
t25 += v2 * b10;
t26 += v2 * b11;
t27 += v2 * b12;
t28 += v2 * b13;
t29 += v2 * b14;
t30 += v2 * b15;
t0 += 38 * t16;
t1 += 38 * t17;
t2 += 38 * t18;
t3 += 38 * t19;
t4 += 38 * t20;
t5 += 38 * t21;
t6 += 38 * t22;
t7 += 38 * t23;
t8 += 38 * t24;
t9 += 38 * t25;
t10 += 38 * t26;
t11 += 38 * t27;
t12 += 38 * t28;
t13 += 38 * t29;
t14 += 38 * t30;
c2 = 1;
v2 = t0 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t0 = v2 - c2 * 65536;
v2 = t1 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t1 = v2 - c2 * 65536;
v2 = t2 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t2 = v2 - c2 * 65536;
v2 = t3 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t3 = v2 - c2 * 65536;
v2 = t4 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t4 = v2 - c2 * 65536;
v2 = t5 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t5 = v2 - c2 * 65536;
v2 = t6 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t6 = v2 - c2 * 65536;
v2 = t7 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t7 = v2 - c2 * 65536;
v2 = t8 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t8 = v2 - c2 * 65536;
v2 = t9 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t9 = v2 - c2 * 65536;
v2 = t10 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t10 = v2 - c2 * 65536;
v2 = t11 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t11 = v2 - c2 * 65536;
v2 = t12 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t12 = v2 - c2 * 65536;
v2 = t13 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t13 = v2 - c2 * 65536;
v2 = t14 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t14 = v2 - c2 * 65536;
v2 = t15 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t15 = v2 - c2 * 65536;
t0 += c2 - 1 + 37 * (c2 - 1);
c2 = 1;
v2 = t0 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t0 = v2 - c2 * 65536;
v2 = t1 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t1 = v2 - c2 * 65536;
v2 = t2 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t2 = v2 - c2 * 65536;
v2 = t3 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t3 = v2 - c2 * 65536;
v2 = t4 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t4 = v2 - c2 * 65536;
v2 = t5 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t5 = v2 - c2 * 65536;
v2 = t6 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t6 = v2 - c2 * 65536;
v2 = t7 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t7 = v2 - c2 * 65536;
v2 = t8 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t8 = v2 - c2 * 65536;
v2 = t9 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t9 = v2 - c2 * 65536;
v2 = t10 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t10 = v2 - c2 * 65536;
v2 = t11 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t11 = v2 - c2 * 65536;
v2 = t12 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t12 = v2 - c2 * 65536;
v2 = t13 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t13 = v2 - c2 * 65536;
v2 = t14 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t14 = v2 - c2 * 65536;
v2 = t15 + c2 + 65535;
c2 = Math.floor(v2 / 65536);
t15 = v2 - c2 * 65536;
t0 += c2 - 1 + 37 * (c2 - 1);
o2[0] = t0;
o2[1] = t1;
o2[2] = t2;
o2[3] = t3;
o2[4] = t4;
o2[5] = t5;
o2[6] = t6;
o2[7] = t7;
o2[8] = t8;
o2[9] = t9;
o2[10] = t10;
o2[11] = t11;
o2[12] = t12;
o2[13] = t13;
o2[14] = t14;
o2[15] = t15;
}
function square(o2, a3) {
mul(o2, a3, a3);
}
function inv25519(o2, inp) {
const c2 = gf();
for (let i = 0; i < 16; i++) {
c2[i] = inp[i];
}
for (let i = 253; i >= 0; i--) {
square(c2, c2);
if (i !== 2 && i !== 4) {
mul(c2, c2, inp);
}
}
for (let i = 0; i < 16; i++) {
o2[i] = c2[i];
}
}
function scalarMult(n2, p3) {
const z2 = new Uint8Array(32);
const x2 = new Float64Array(80);
const a3 = gf(), b2 = gf(), c2 = gf(), d2 = gf(), e = gf(), f = gf();
for (let i = 0; i < 31; i++) {
z2[i] = n2[i];
}
z2[31] = n2[31] & 127 | 64;
z2[0] &= 248;
unpack25519(x2, p3);
for (let i = 0; i < 16; i++) {
b2[i] = x2[i];
}
a3[0] = d2[0] = 1;
for (let i = 254; i >= 0; --i) {
const r2 = z2[i >>> 3] >>> (i & 7) & 1;
sel25519(a3, b2, r2);
sel25519(c2, d2, r2);
add(e, a3, c2);
sub(a3, a3, c2);
add(c2, b2, d2);
sub(b2, b2, d2);
square(d2, e);
square(f, a3);
mul(a3, c2, a3);
mul(c2, b2, e);
add(e, a3, c2);
sub(a3, a3, c2);
square(b2, a3);
sub(c2, d2, f);
mul(a3, c2, _121665);
add(a3, a3, d2);
mul(c2, c2, a3);
mul(a3, d2, f);
mul(d2, b2, x2);
square(b2, e);
sel25519(a3, b2, r2);
sel25519(c2, d2, r2);
}
for (let i = 0; i < 16; i++) {
x2[i + 16] = a3[i];
x2[i + 32] = c2[i];
x2[i + 48] = b2[i];
x2[i + 64] = d2[i];
}
const x32 = x2.subarray(32);
const x16 = x2.subarray(16);
inv25519(x32, x32);
mul(x16, x16, x32);
const q2 = new Uint8Array(32);
pack25519(q2, x16);
return q2;
}
exports.scalarMult = scalarMult;
function scalarMultBase(n2) {
return scalarMult(n2, _9);
}
exports.scalarMultBase = scalarMultBase;
function generateKeyPairFromSeed(seed) {
if (seed.length !== exports.SECRET_KEY_LENGTH) {
throw new Error(`x25519: seed must be ${exports.SECRET_KEY_LENGTH} bytes`);
}
const secretKey = new Uint8Array(seed);
const publicKey = scalarMultBase(secretKey);
return {
publicKey,
secretKey
};
}
exports.generateKeyPairFromSeed = generateKeyPairFromSeed;
function generateKeyPair2(prng) {
const seed = (0, random_1.randomBytes)(32, prng);
const result = generateKeyPairFromSeed(seed);
(0, wipe_12.wipe)(seed);
return result;
}
exports.generateKeyPair = generateKeyPair2;
function sharedKey(mySecretKey, theirPublicKey, rejectZero = false) {
if (mySecretKey.length !== exports.PUBLIC_KEY_LENGTH) {
throw new Error("X25519: incorrect secret key length");
}
if (theirPublicKey.length !== exports.PUBLIC_KEY_LENGTH) {
throw new Error("X25519: incorrect public key length");
}
const result = scalarMult(mySecretKey, theirPublicKey);
if (rejectZero) {
let zeros = 0;
for (let i = 0; i < result.length; i++) {
zeros |= result[i];
}
if (zeros === 0) {
throw new Error("X25519: invalid shared key");
}
}
return result;
}
exports.sharedKey = sharedKey;
})(x25519);
var __spreadArray = globalThis && globalThis.__spreadArray || function(to, from2, pack) {
if (pack || arguments.length === 2)
for (var i = 0, l2 = from2.length, ar2; i < l2; i++) {
if (ar2 || !(i in from2)) {
if (!ar2)
ar2 = Array.prototype.slice.call(from2, 0, i);
ar2[i] = from2[i];
}
}
return to.concat(ar2 || Array.prototype.slice.call(from2));
};
var BrowserInfo = (
/** @class */
function() {
function BrowserInfo2(name, version, os2) {
this.name = name;
this.version = version;
this.os = os2;
this.type = "browser";
}
return BrowserInfo2;
}()
);
var NodeInfo = (
/** @class */
function() {
function NodeInfo2(version) {
this.version = version;
this.type = "node";
this.name = "node";
this.os = process.platform;
}
return NodeInfo2;
}()
);
var SearchBotDeviceInfo = (
/** @class */
function() {
function SearchBotDeviceInfo2(name, version, os2, bot) {
this.name = name;
this.version = version;
this.os = os2;
this.bot = bot;
this.type = "bot-device";
}
return SearchBotDeviceInfo2;
}()
);
var BotInfo = (
/** @class */
function() {
function BotInfo2() {
this.type = "bot";
this.bot = true;
this.name = "bot";
this.version = null;
this.os = null;
}
return BotInfo2;
}()
);
var ReactNativeInfo = (
/** @class */
function() {
function ReactNativeInfo2() {
this.type = "react-native";
this.name = "react-native";
this.version = null;
this.os = null;
}
return ReactNativeInfo2;
}()
);
var SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/;
var SEARCHBOT_OS_REGEX = /(nuhk|curl|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\ Jeeves\/Teoma|ia_archiver)/;
var REQUIRED_VERSION_PARTS = 3;
var userAgentRules = [
["aol", /AOLShield\/([0-9\._]+)/],
["edge", /Edge\/([0-9\._]+)/],
["edge-ios", /EdgiOS\/([0-9\._]+)/],
["yandexbrowser", /YaBrowser\/([0-9\._]+)/],
["kakaotalk", /KAKAOTALK\s([0-9\.]+)/],
["samsung", /SamsungBrowser\/([0-9\.]+)/],
["silk", /\bSilk\/([0-9._-]+)\b/],
["miui", /MiuiBrowser\/([0-9\.]+)$/],
["beaker", /BeakerBrowser\/([0-9\.]+)/],
["edge-chromium", /EdgA?\/([0-9\.]+)/],
[
"chromium-webview",
/(?!Chrom.*OPR)wv\).*Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/
],
["chrome", /(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],
["phantomjs", /PhantomJS\/([0-9\.]+)(:?\s|$)/],
["crios", /CriOS\/([0-9\.]+)(:?\s|$)/],
["firefox", /Firefox\/([0-9\.]+)(?:\s|$)/],
["fxios", /FxiOS\/([0-9\.]+)/],
["opera-mini", /Opera Mini.*Version\/([0-9\.]+)/],
["opera", /Opera\/([0-9\.]+)(?:\s|$)/],
["opera", /OPR\/([0-9\.]+)(:?\s|$)/],
["pie", /^Microsoft Pocket Internet Explorer\/(\d+\.\d+)$/],
["pie", /^Mozilla\/\d\.\d+\s\(compatible;\s(?:MSP?IE|MSInternet Explorer) (\d+\.\d+);.*Windows CE.*\)$/],
["netfront", /^Mozilla\/\d\.\d+.*NetFront\/(\d.\d)/],
["ie", /Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/],
["ie", /MSIE\s([0-9\.]+);.*Trident\/[4-7].0/],
["ie", /MSIE\s(7\.0)/],
["bb10", /BB10;\sTouch.*Version\/([0-9\.]+)/],
["android", /Android\s([0-9\.]+)/],
["ios", /Version\/([0-9\._]+).*Mobile.*Safari.*/],
["safari", /Version\/([0-9\._]+).*Safari/],
["facebook", /FB[AS]V\/([0-9\.]+)/],
["instagram", /Instagram\s([0-9\.]+)/],
["ios-webview", /AppleWebKit\/([0-9\.]+).*Mobile/],
["ios-webview", /AppleWebKit\/([0-9\.]+).*Gecko\)$/],
["curl", /^curl\/([0-9\.]+)$/],
["searchbot", SEARCHBOX_UA_REGEX]
];
var operatingSystemRules = [
["iOS", /iP(hone|od|ad)/],
["Android OS", /Android/],
["BlackBerry OS", /BlackBerry|BB10/],
["Windows Mobile", /IEMobile/],
["Amazon OS", /Kindle/],
["Windows 3.11", /Win16/],
["Windows 95", /(Windows 95)|(Win95)|(Windows_95)/],
["Windows 98", /(Windows 98)|(Win98)/],
["Windows 2000", /(Windows NT 5.0)|(Windows 2000)/],
["Windows XP", /(Windows NT 5.1)|(Windows XP)/],
["Windows Server 2003", /(Windows NT 5.2)/],
["Windows Vista", /(Windows NT 6.0)/],
["Windows 7", /(Windows NT 6.1)/],
["Windows 8", /(Windows NT 6.2)/],
["Windows 8.1", /(Windows NT 6.3)/],
["Windows 10", /(Windows NT 10.0)/],
["Windows ME", /Windows ME/],
["Windows CE", /Windows CE|WinCE|Microsoft Pocket Internet Explorer/],
["Open BSD", /OpenBSD/],
["Sun OS", /SunOS/],
["Chrome OS", /CrOS/],
["Linux", /(Linux)|(X11)/],
["Mac OS", /(Mac_PowerPC)|(Macintosh)/],
["QNX", /QNX/],
["BeOS", /BeOS/],
["OS/2", /OS\/2/]
];
function detect(userAgent) {
if (!!userAgent) {
return parseUserAgent(userAgent);
}
if (typeof document === "undefined" && typeof navigator !== "undefined" && navigator.product === "ReactNative") {
return new ReactNativeInfo();
}
if (typeof navigator !== "undefined") {
return parseUserAgent(navigator.userAgent);
}
return getNodeVersion();
}
function matchUserAgent(ua) {
return ua !== "" && userAgentRules.reduce(function(matched, _a) {
var browser2 = _a[0], regex = _a[1];
if (matched) {
return matched;
}
var uaMatch = regex.exec(ua);
return !!uaMatch && [browser2, uaMatch];
}, false);
}
function parseUserAgent(ua) {
var matchedRule = matchUserAgent(ua);
if (!matchedRule) {
return null;
}
var name = matchedRule[0], match = matchedRule[1];
if (name === "searchbot") {
return new BotInfo();
}
var versionParts = match[1] && match[1].split(".").join("_").split("_").slice(0, 3);
if (versionParts) {
if (versionParts.length < REQUIRED_VERSION_PARTS) {
versionParts = __spreadArray(__spreadArray([], versionParts, true), createVersionParts(REQUIRED_VERSION_PARTS - versionParts.length), true);
}
} else {
versionParts = [];
}
var version = versionParts.join(".");
var os2 = detectOS(ua);
var searchBotMatch = SEARCHBOT_OS_REGEX.exec(ua);
if (searchBotMatch && searchBotMatch[1]) {
return new SearchBotDeviceInfo(name, version, os2, searchBotMatch[1]);
}
return new BrowserInfo(name, version, os2);
}
function detectOS(ua) {
for (var ii = 0, count = operatingSystemRules.length; ii < count; ii++) {
var _a = operatingSystemRules[ii], os2 = _a[0], regex = _a[1];
var match = regex.exec(ua);
if (match) {
return os2;
}
}
return null;
}
function getNodeVersion() {
var isNode = typeof process !== "undefined" && process.version;
return isNode ? new NodeInfo(process.version.slice(1)) : null;
}
function createVersionParts(count) {
var output = [];
for (var ii = 0; ii < count; ii++) {
output.push("0");
}
return output;
}
var cjs$3 = {};
Object.defineProperty(cjs$3, "__esModule", { value: true });
cjs$3.getLocalStorage = cjs$3.getLocalStorageOrThrow = cjs$3.getCrypto = cjs$3.getCryptoOrThrow = getLocation_1 = cjs$3.getLocation = cjs$3.getLocationOrThrow = getNavigator_1 = cjs$3.getNavigator = cjs$3.getNavigatorOrThrow = getDocument_1 = cjs$3.getDocument = cjs$3.getDocumentOrThrow = cjs$3.getFromWindowOrThrow = cjs$3.getFromWindow = void 0;
function getFromWindow$1(name) {
let res = void 0;
if (typeof window !== "undefined" && typeof window[name] !== "undefined") {
res = window[name];
}
return res;
}
cjs$3.getFromWindow = getFromWindow$1;
function getFromWindowOrThrow$1(name) {
const res = getFromWindow$1(name);
if (!res) {
throw new Error(`${name} is not defined in Window`);
}
return res;
}
cjs$3.getFromWindowOrThrow = getFromWindowOrThrow$1;
function getDocumentOrThrow$1() {
return getFromWindowOrThrow$1("document");
}
cjs$3.getDocumentOrThrow = getDocumentOrThrow$1;
function getDocument$1() {
return getFromWindow$1("document");
}
var getDocument_1 = cjs$3.getDocument = getDocument$1;
function getNavigatorOrThrow$1() {
return getFromWindowOrThrow$1("navigator");
}
cjs$3.getNavigatorOrThrow = getNavigatorOrThrow$1;
function getNavigator$1() {
return getFromWindow$1("navigator");
}
var getNavigator_1 = cjs$3.getNavigator = getNavigator$1;
function getLocationOrThrow$1() {
return getFromWindowOrThrow$1("location");
}
cjs$3.getLocationOrThrow = getLocationOrThrow$1;
function getLocation$1() {
return getFromWindow$1("location");
}
var getLocation_1 = cjs$3.getLocation = getLocation$1;
function getCryptoOrThrow$1() {
return getFromWindowOrThrow$1("crypto");
}
cjs$3.getCryptoOrThrow = getCryptoOrThrow$1;
function getCrypto$1() {
return getFromWindow$1("crypto");
}
cjs$3.getCrypto = getCrypto$1;
function getLocalStorageOrThrow$1() {
return getFromWindowOrThrow$1("localStorage");
}
cjs$3.getLocalStorageOrThrow = getLocalStorageOrThrow$1;
function getLocalStorage$1() {
return getFromWindow$1("localStorage");
}
cjs$3.getLocalStorage = getLocalStorage$1;
var cjs$2 = {};
Object.defineProperty(cjs$2, "__esModule", { value: true });
var getWindowMetadata_1 = cjs$2.getWindowMetadata = void 0;
const window_getters_1$1 = cjs$3;
function getWindowMetadata$1() {
let doc;
let loc;
try {
doc = window_getters_1$1.getDocumentOrThrow();
loc = window_getters_1$1.getLocationOrThrow();
} catch (e) {
return null;
}
function getIcons() {
const links = doc.getElementsByTagName("link");
const icons2 = [];
for (let i = 0; i < links.length; i++) {
const link = links[i];
const rel = link.getAttribute("rel");
if (rel) {
if (rel.toLowerCase().indexOf("icon") > -1) {
const href = link.getAttribute("href");
if (href) {
if (href.toLowerCase().indexOf("https:") === -1 && href.toLowerCase().indexOf("http:") === -1 && href.indexOf("//") !== 0) {
let absoluteHref = loc.protocol + "//" + loc.host;
if (href.indexOf("/") === 0) {
absoluteHref += href;
} else {
const path = loc.pathname.split("/");
path.pop();
const finalPath = path.join("/");
absoluteHref += finalPath + "/" + href;
}
icons2.push(absoluteHref);
} else if (href.indexOf("//") === 0) {
const absoluteUrl = loc.protocol + href;
icons2.push(absoluteUrl);
} else {
icons2.push(href);
}
}
}
}
}
return icons2;
}
function getWindowMetadataOfAny(...args) {
const metaTags = doc.getElementsByTagName("meta");
for (let i = 0; i < metaTags.length; i++) {
const tag = metaTags[i];
const attributes = ["itemprop", "property", "name"].map((target) => tag.getAttribute(target)).filter((attr) => {
if (attr) {
return args.includes(attr);
}
return false;
});
if (attributes.length && attributes) {
const content = tag.getAttribute("content");
if (content) {
return content;
}
}
}
return "";
}
function getName() {
let name2 = getWindowMetadataOfAny("name", "og:site_name", "og:title", "twitter:title");
if (!name2) {
name2 = doc.title;
}
return name2;
}
function getDescription() {
const description2 = getWindowMetadataOfAny("description", "og:description", "twitter:description", "keywords");
return description2;
}
const name = getName();
const description = getDescription();
const url = loc.origin;
const icons = getIcons();
const meta = {
description,
url,
icons,
name
};
return meta;
}
getWindowMetadata_1 = cjs$2.getWindowMetadata = getWindowMetadata$1;
var queryString$1 = {};
var filterObj = function(obj, predicate) {
var ret = {};
var keys = Object.keys(obj);
var isArr = Array.isArray(predicate);
for (var i = 0; i < keys.length; i++) {
var key = keys[i];
var val = obj[key];
if (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {
ret[key] = val;
}
}
return ret;
};
(function(exports) {
const strictUriEncode$1 = strictUriEncode;
const decodeComponent = decodeUriComponent;
const splitOnFirst$1 = splitOnFirst;
const filterObject = filterObj;
const isNullOrUndefined = (value) => value === null || value === void 0;
const encodeFragmentIdentifier = Symbol("encodeFragmentIdentifier");
function encoderForArrayFormat(options) {
switch (options.arrayFormat) {
case "index":
return (key) => (result, value) => {
const index = result.length;
if (value === void 0 || options.skipNull && value === null || options.skipEmptyString && value === "") {
return result;
}
if (value === null) {
return [...result, [encode2(key, options), "[", index, "]"].join("")];
}
return [
...result,
[encode2(key, options), "[", encode2(index, options), "]=", encode2(value, options)].join("")
];
};
case "bracket":
return (key) => (result, value) => {
if (value === void 0 || options.skipNull && value === null || options.skipEmptyString && value === "") {
return result;
}
if (value === null) {
return [...result, [encode2(key, options), "[]"].join("")];
}
return [...result, [encode2(key, options), "[]=", encode2(value, options)].join("")];
};
case "colon-list-separator":
return (key) => (result, value) => {
if (value === void 0 || options.skipNull && value === null || options.skipEmptyString && value === "") {
return result;
}
if (value === null) {
return [...result, [encode2(key, options), ":list="].join("")];
}
return [...result, [encode2(key, options), ":list=", encode2(value, options)].join("")];
};
case "comma":
case "separator":
case "bracket-separator": {
const keyValueSep = options.arrayFormat === "bracket-separator" ? "[]=" : "=";
return (key) => (result, value) => {
if (value === void 0 || options.skipNull && value === null || options.skipEmptyString && value === "") {
return result;
}
value = value === null ? "" : value;
if (result.length === 0) {
return [[encode2(key, options), keyValueSep, encode2(value, options)].join("")];
}
return [[result, encode2(value, options)].join(options.arrayFormatSeparator)];
};
}
default:
return (key) => (result, value) => {
if (value === void 0 || options.skipNull && value === null || options.skipEmptyString && value === "") {
return result;
}
if (value === null) {
return [...result, encode2(key, options)];
}
return [...result, [encode2(key, options), "=", encode2(value, options)].join("")];
};
}
}
function parserForArrayFormat(options) {
let result;
switch (options.arrayFormat) {
case "index":
return (key, value, accumulator) => {
result = /\[(\d*)\]$/.exec(key);
key = key.replace(/\[\d*\]$/, "");
if (!result) {
accumulator[key] = value;
return;
}
if (accumulator[key] === void 0) {
accumulator[key] = {};
}
accumulator[key][result[1]] = value;
};
case "bracket":
return (key, value, accumulator) => {
result = /(\[\])$/.exec(key);
key = key.replace(/\[\]$/, "");
if (!result) {
accumulator[key] = value;
return;
}
if (accumulator[key] === void 0) {
accumulator[key] = [value];
return;
}
accumulator[key] = [].concat(accumulator[key], value);
};
case "colon-list-separator":
return (key, value, accumulator) => {
result = /(:list)$/.exec(key);
key = key.replace(/:list$/, "");
if (!result) {
accumulator[key] = value;
return;
}
if (accumulator[key] === void 0) {
accumulator[key] = [value];
return;
}
accumulator[key] = [].concat(accumulator[key], value);
};
case "comma":
case "separator":
return (key, value, accumulator) => {
const isArray = typeof value === "string" && value.includes(options.arrayFormatSeparator);
const isEncodedArray = typeof value === "string" && !isArray && decode2(value, options).includes(options.arrayFormatSeparator);
value = isEncodedArray ? decode2(value, options) : value;
const newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map((item) => decode2(item, options)) : value === null ? value : decode2(value, options);
accumulator[key] = newValue;
};
case "bracket-separator":
return (key, value, accumulator) => {
const isArray = /(\[\])$/.test(key);
key = key.replace(/\[\]$/, "");
if (!isArray) {
accumulator[key] = value ? decode2(value, options) : value;
return;
}
const arrayValue = value === null ? [] : value.split(options.arrayFormatSeparator).map((item) => decode2(item, options));
if (accumulator[key] === void 0) {
accumulator[key] = arrayValue;
return;
}
accumulator[key] = [].concat(accumulator[key], arrayValue);
};
default:
return (key, value, accumulator) => {
if (accumulator[key] === void 0) {
accumulator[key] = value;
return;
}
accumulator[key] = [].concat(accumulator[key], value);
};
}
}
function validateArrayFormatSeparator(value) {
if (typeof value !== "string" || value.length !== 1) {
throw new TypeError("arrayFormatSeparator must be single character string");
}
}
function encode2(value, options) {
if (options.encode) {
return options.strict ? strictUriEncode$1(value) : encodeURIComponent(value);
}
return value;
}
function decode2(value, options) {
if (options.decode) {
return decodeComponent(value);
}
return value;
}
function keysSorter(input) {
if (Array.isArray(input)) {
return input.sort();
}
if (typeof input === "object") {
return keysSorter(Object.keys(input)).sort((a3, b2) => Number(a3) - Number(b2)).map((key) => input[key]);
}
return input;
}
function removeHash(input) {
const hashStart = input.indexOf("#");
if (hashStart !== -1) {
input = input.slice(0, hashStart);
}
return input;
}
function getHash(url) {
let hash2 = "";
const hashStart = url.indexOf("#");
if (hashStart !== -1) {
hash2 = url.slice(hashStart);
}
return hash2;
}
function extract(input) {
input = removeHash(input);
const queryStart = input.indexOf("?");
if (queryStart === -1) {
return "";
}
return input.slice(queryStart + 1);
}
function parseValue(value, options) {
if (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === "string" && value.trim() !== "")) {
value = Number(value);
} else if (options.parseBooleans && value !== null && (value.toLowerCase() === "true" || value.toLowerCase() === "false")) {
value = value.toLowerCase() === "true";
}
return value;
}
function parse(query, options) {
options = Object.assign({
decode: true,
sort: true,
arrayFormat: "none",
arrayFormatSeparator: ",",
parseNumbers: false,
parseBooleans: false
}, options);
validateArrayFormatSeparator(options.arrayFormatSeparator);
const formatter = parserForArrayFormat(options);
const ret = /* @__PURE__ */ Object.create(null);
if (typeof query !== "string") {
return ret;
}
query = query.trim().replace(/^[?#&]/, "");
if (!query) {
return ret;
}
for (const param of query.split("&")) {
if (param === "") {
continue;
}
let [key, value] = splitOnFirst$1(options.decode ? param.replace(/\+/g, " ") : param, "=");
value = value === void 0 ? null : ["comma", "separator", "bracket-separator"].includes(options.arrayFormat) ? value : decode2(value, options);
formatter(decode2(key, options), value, ret);
}
for (const key of Object.keys(ret)) {
const value = ret[key];
if (typeof value === "object" && value !== null) {
for (const k2 of Object.keys(value)) {
value[k2] = parseValue(value[k2], options);
}
} else {
ret[key] = parseValue(value, options);
}
}
if (options.sort === false) {
return ret;
}
return (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {
const value = ret[key];
if (Boolean(value) && typeof value === "object" && !Array.isArray(value)) {
result[key] = keysSorter(value);
} else {
result[key] = value;
}
return result;
}, /* @__PURE__ */ Object.create(null));
}
exports.extract = extract;
exports.parse = parse;
exports.stringify = (object, options) => {
if (!object) {
return "";
}
options = Object.assign({
encode: true,
strict: true,
arrayFormat: "none",
arrayFormatSeparator: ","
}, options);
validateArrayFormatSeparator(options.arrayFormatSeparator);
const shouldFilter = (key) => options.skipNull && isNullOrUndefined(object[key]) || options.skipEmptyString && object[key] === "";
const formatter = encoderForArrayFormat(options);
const objectCopy = {};
for (const key of Object.keys(object)) {
if (!shouldFilter(key)) {
objectCopy[key] = object[key];
}
}
const keys = Object.keys(objectCopy);
if (options.sort !== false) {
keys.sort(options.sort);
}
return keys.map((key) => {
const value = object[key];
if (value === void 0) {
return "";
}
if (value === null) {
return encode2(key, options);
}
if (Array.isArray(value)) {
if (value.length === 0 && options.arrayFormat === "bracket-separator") {
return encode2(key, options) + "[]";
}
return value.reduce(formatter(key), []).join("&");
}
return encode2(key, options) + "=" + encode2(value, options);
}).filter((x2) => x2.length > 0).join("&");
};
exports.parseUrl = (url, options) => {
options = Object.assign({
decode: true
}, options);
const [url_, hash2] = splitOnFirst$1(url, "#");
return Object.assign(
{
url: url_.split("?")[0] || "",
query: parse(extract(url), options)
},
options && options.parseFragmentIdentifier && hash2 ? { fragmentIdentifier: decode2(hash2, options) } : {}
);
};
exports.stringifyUrl = (object, options) => {
options = Object.assign({
encode: true,
strict: true,
[encodeFragmentIdentifier]: true
}, options);
const url = removeHash(object.url).split("?")[0] || "";
const queryFromUrl = exports.extract(object.url);
const parsedQueryFromUrl = exports.parse(queryFromUrl, { sort: false });
const query = Object.assign(parsedQueryFromUrl, object.query);
let queryString2 = exports.stringify(query, options);
if (queryString2) {
queryString2 = `?${queryString2}`;
}
let hash2 = getHash(object.url);
if (object.fragmentIdentifier) {
hash2 = `#${options[encodeFragmentIdentifier] ? encode2(object.fragmentIdentifier, options) : object.fragmentIdentifier}`;
}
return `${url}${queryString2}${hash2}`;
};
exports.pick = (input, filter, options) => {
options = Object.assign({
parseFragmentIdentifier: true,
[encodeFragmentIdentifier]: false
}, options);
const { url, query, fragmentIdentifier } = exports.parseUrl(input, options);
return exports.stringifyUrl({
url,
query: filterObject(query, filter),
fragmentIdentifier
}, options);
};
exports.exclude = (input, filter, options) => {
const exclusionFilter = Array.isArray(filter) ? (key) => !filter.includes(key) : (key, value) => !filter(key, value);
return exports.pick(input, exclusionFilter, options);
};
})(queryString$1);
const RELAY_JSONRPC = {
waku: {
publish: "waku_publish",
batchPublish: "waku_batchPublish",
subscribe: "waku_subscribe",
batchSubscribe: "waku_batchSubscribe",
subscription: "waku_subscription",
unsubscribe: "waku_unsubscribe",
batchUnsubscribe: "waku_batchUnsubscribe"
},
irn: {
publish: "irn_publish",
batchPublish: "irn_batchPublish",
subscribe: "irn_subscribe",
batchSubscribe: "irn_batchSubscribe",
subscription: "irn_subscription",
unsubscribe: "irn_unsubscribe",
batchUnsubscribe: "irn_batchUnsubscribe"
},
iridium: {
publish: "iridium_publish",
batchPublish: "iridium_batchPublish",
subscribe: "iridium_subscribe",
batchSubscribe: "iridium_batchSubscribe",
subscription: "iridium_subscription",
unsubscribe: "iridium_unsubscribe",
batchUnsubscribe: "iridium_batchUnsubscribe"
}
};
const V$1 = "base10", c = "base16", R$1 = "base64pad", _$1 = "utf8", M$1 = 0, N$2 = 1, sn = 0, de = 1, K$1 = 12, k$2 = 32;
function cn() {
const e = x25519.generateKeyPair();
return { privateKey: toString(e.secretKey, c), publicKey: toString(e.publicKey, c) };
}
function an() {
const e = random.randomBytes(k$2);
return toString(e, c);
}
function un(e, n2) {
const t = x25519.sharedKey(fromString(e, c), fromString(n2, c)), r2 = new HKDF_1(sha256.SHA256, t).expand(k$2);
return toString(r2, c);
}
function dn(e) {
const n2 = sha256.hash(fromString(e, c));
return toString(n2, c);
}
function ln(e) {
const n2 = sha256.hash(fromString(e, _$1));
return toString(n2, c);
}
function le(e) {
return fromString(`${e}`, V$1);
}
function S$1(e) {
return Number(toString(e, V$1));
}
function fn(e) {
const n2 = le(typeof e.type < "u" ? e.type : M$1);
if (S$1(n2) === N$2 && typeof e.senderPublicKey > "u")
throw new Error("Missing sender public key for type 1 envelope");
const t = typeof e.senderPublicKey < "u" ? fromString(e.senderPublicKey, c) : void 0, r2 = typeof e.iv < "u" ? fromString(e.iv, c) : random.randomBytes(K$1), o2 = new chacha20poly1305.ChaCha20Poly1305(fromString(e.symKey, c)).seal(r2, fromString(e.message, _$1));
return fe({ type: n2, sealed: o2, iv: r2, senderPublicKey: t });
}
function pn(e) {
const n2 = new chacha20poly1305.ChaCha20Poly1305(fromString(e.symKey, c)), { sealed: t, iv: r2 } = L$1(e.encoded), o2 = n2.open(r2, t);
if (o2 === null)
throw new Error("Failed to decrypt");
return toString(o2, _$1);
}
function fe(e) {
if (S$1(e.type) === N$2) {
if (typeof e.senderPublicKey > "u")
throw new Error("Missing sender public key for type 1 envelope");
return toString(concat([e.type, e.senderPublicKey, e.iv, e.sealed]), R$1);
}
return toString(concat([e.type, e.iv, e.sealed]), R$1);
}
function L$1(e) {
const n2 = fromString(e, R$1), t = n2.slice(sn, de), r2 = de;
if (S$1(t) === N$2) {
const u3 = r2 + k$2, f = u3 + K$1, g2 = n2.slice(r2, u3), O2 = n2.slice(u3, f), p3 = n2.slice(f);
return { type: t, sealed: p3, iv: O2, senderPublicKey: g2 };
}
const o2 = r2 + K$1, s = n2.slice(r2, o2), i = n2.slice(o2);
return { type: t, sealed: i, iv: s };
}
function mn(e, n2) {
const t = L$1(e);
return pe({ type: S$1(t.type), senderPublicKey: typeof t.senderPublicKey < "u" ? toString(t.senderPublicKey, c) : void 0, receiverPublicKey: n2 == null ? void 0 : n2.receiverPublicKey });
}
function pe(e) {
const n2 = (e == null ? void 0 : e.type) || M$1;
if (n2 === N$2) {
if (typeof (e == null ? void 0 : e.senderPublicKey) > "u")
throw new Error("missing sender public key");
if (typeof (e == null ? void 0 : e.receiverPublicKey) > "u")
throw new Error("missing receiver public key");
}
return { type: n2, senderPublicKey: e == null ? void 0 : e.senderPublicKey, receiverPublicKey: e == null ? void 0 : e.receiverPublicKey };
}
function yn(e) {
return e.type === N$2 && typeof e.senderPublicKey == "string" && typeof e.receiverPublicKey == "string";
}
var En = Object.defineProperty, me = Object.getOwnPropertySymbols, gn = Object.prototype.hasOwnProperty, hn = Object.prototype.propertyIsEnumerable, ye = (e, n2, t) => n2 in e ? En(e, n2, { enumerable: true, configurable: true, writable: true, value: t }) : e[n2] = t, Ee = (e, n2) => {
for (var t in n2 || (n2 = {}))
gn.call(n2, t) && ye(e, t, n2[t]);
if (me)
for (var t of me(n2))
hn.call(n2, t) && ye(e, t, n2[t]);
return e;
};
const ge = "ReactNative", v = { reactNative: "react-native", node: "node", browser: "browser", unknown: "unknown" }, Ne$1 = "js";
function F$1() {
return typeof process < "u" && typeof process.versions < "u" && typeof process.versions.node < "u";
}
function ve() {
return !getDocument_1() && !!getNavigator_1() && navigator.product === ge;
}
function be() {
return !F$1() && !!getNavigator_1();
}
function H$1() {
return ve() ? v.reactNative : F$1() ? v.node : be() ? v.browser : v.unknown;
}
function Oe$1(e, n2) {
let t = queryString$1.parse(e);
return t = Ee(Ee({}, t), n2), e = queryString$1.stringify(t), e;
}
function bn() {
return getWindowMetadata_1() || { name: "", description: "", url: "", icons: [""] };
}
function Se$1() {
const e = detect();
if (e === null)
return "unknown";
const n2 = e.os ? e.os.replace(" ", "").toLowerCase() : "unknown";
return e.type === "browser" ? [n2, e.name, e.version].join("-") : [n2, e.version].join("-");
}
function Ie$1() {
var e;
const n2 = H$1();
return n2 === v.browser ? [n2, ((e = getLocation_1()) == null ? void 0 : e.host) || "unknown"].join(":") : n2;
}
function Te$1(e, n2, t) {
const r2 = Se$1(), o2 = Ie$1();
return [[e, n2].join("-"), [Ne$1, t].join("-"), r2, o2].join("/");
}
function Sn({ protocol: e, version: n2, relayUrl: t, sdkVersion: r2, auth: o2, projectId: s }) {
const i = t.split("?"), u3 = Te$1(e, n2, r2), f = { auth: o2, ua: u3, projectId: s }, g2 = Oe$1(i[1] || "", f);
return i[0] + "?" + g2;
}
function m$1(e, n2) {
return e.filter((t) => n2.includes(t)).length === e.length;
}
function Un(e) {
return Object.fromEntries(e.entries());
}
function Rn(e) {
return new Map(Object.entries(e));
}
function Cn(e, n2) {
return cjs$5.fromMiliseconds((n2 || Date.now()) + cjs$5.toMiliseconds(e));
}
function Dn(e) {
return cjs$5.fromMiliseconds(Date.now()) >= cjs$5.toMiliseconds(e);
}
function $n(e) {
const n2 = cjs$5.toMiliseconds(e || cjs$5.FIVE_MINUTES);
let t, r2, o2;
return { resolve: (s) => {
o2 && t && (clearTimeout(o2), t(s));
}, reject: (s) => {
o2 && r2 && (clearTimeout(o2), r2(s));
}, done: () => new Promise((s, i) => {
o2 = setTimeout(i, n2), t = s, r2 = i;
}) };
}
function jn(e, n2) {
return new Promise(async (t, r2) => {
const o2 = setTimeout(() => r2(), n2), s = await e;
clearTimeout(o2), t(s);
});
}
function q$1(e, n2) {
if (typeof n2 == "string" && n2.startsWith(`${e}:`))
return n2;
if (e.toLowerCase() === "topic") {
if (typeof n2 != "string")
throw new Error('Value must be "string" for expirer target type: topic');
return `topic:${n2}`;
} else if (e.toLowerCase() === "id") {
if (typeof n2 != "number")
throw new Error('Value must be "number" for expirer target type: id');
return `id:${n2}`;
}
throw new Error(`Unknown expirer target type: ${e}`);
}
function Vn(e) {
return q$1("topic", e);
}
function Mn(e) {
return q$1("id", e);
}
function Kn(e) {
const [n2, t] = e.split(":"), r2 = { id: void 0, topic: void 0 };
if (n2 === "topic" && typeof t == "string")
r2.topic = t;
else if (n2 === "id" && Number.isInteger(Number(t)))
r2.id = Number(t);
else
throw new Error(`Invalid target, expected id:number or topic:string, got ${n2}:${t}`);
return r2;
}
function kn(e, n2) {
return `${e}${n2 ? `:${n2}` : ""}`;
}
const _e$1 = "irn";
function Ln(e) {
return (e == null ? void 0 : e.relay) || { protocol: _e$1 };
}
function xn(e) {
const n2 = RELAY_JSONRPC[e];
if (typeof n2 > "u")
throw new Error(`Relay Protocol not supported: ${e}`);
return n2;
}
var Fn = Object.defineProperty, Ae$1 = Object.getOwnPropertySymbols, Hn = Object.prototype.hasOwnProperty, qn = Object.prototype.propertyIsEnumerable, we = (e, n2, t) => n2 in e ? Fn(e, n2, { enumerable: true, configurable: true, writable: true, value: t }) : e[n2] = t, Bn = (e, n2) => {
for (var t in n2 || (n2 = {}))
Hn.call(n2, t) && we(e, t, n2[t]);
if (Ae$1)
for (var t of Ae$1(n2))
qn.call(n2, t) && we(e, t, n2[t]);
return e;
};
function Ce$1(e, n2 = "-") {
const t = {}, r2 = "relay" + n2;
return Object.keys(e).forEach((o2) => {
if (o2.startsWith(r2)) {
const s = o2.replace(r2, ""), i = e[o2];
t[s] = i;
}
}), t;
}
function Gn(e) {
const n2 = e.indexOf(":"), t = e.indexOf("?") !== -1 ? e.indexOf("?") : void 0, r2 = e.substring(0, n2), o2 = e.substring(n2 + 1, t).split("@"), s = typeof t < "u" ? e.substring(t) : "", i = queryString$1.parse(s);
return { protocol: r2, topic: o2[0], version: parseInt(o2[1], 10), symKey: i.symKey, relay: Ce$1(i) };
}
function De(e, n2 = "-") {
const t = "relay", r2 = {};
return Object.keys(e).forEach((o2) => {
const s = t + n2 + o2;
e[o2] && (r2[s] = e[o2]);
}), r2;
}
function zn(e) {
return `${e.protocol}:${e.topic}@${e.version}?` + queryString$1.stringify(Bn({ symKey: e.symKey }, De(e.relay)));
}
function b$2(e) {
const n2 = [];
return e.forEach((t) => {
const [r2, o2] = t.split(":");
n2.push(`${r2}:${o2}`);
}), n2;
}
function $e$1(e) {
const n2 = [];
return Object.values(e).forEach((t) => {
n2.push(...b$2(t.accounts));
}), n2;
}
function je$1(e, n2) {
const t = [];
return Object.values(e).forEach((r2) => {
b$2(r2.accounts).includes(n2) && t.push(...r2.methods);
}), t;
}
function Ve$1(e, n2) {
const t = [];
return Object.values(e).forEach((r2) => {
b$2(r2.accounts).includes(n2) && t.push(...r2.events);
}), t;
}
function Yn(e, n2) {
const t = He$2(e, n2);
if (t)
throw new Error(t.message);
const r2 = {};
for (const [o2, s] of Object.entries(e))
r2[o2] = { methods: s.methods, events: s.events, chains: s.accounts.map((i) => `${i.split(":")[0]}:${i.split(":")[1]}`) };
return r2;
}
const Wn$1 = { INVALID_METHOD: { message: "Invalid method.", code: 1001 }, INVALID_EVENT: { message: "Invalid event.", code: 1002 }, INVALID_UPDATE_REQUEST: { message: "Invalid update request.", code: 1003 }, INVALID_EXTEND_REQUEST: { message: "Invalid extend request.", code: 1004 }, INVALID_SESSION_SETTLE_REQUEST: { message: "Invalid session settle request.", code: 1005 }, UNAUTHORIZED_METHOD: { message: "Unauthorized method.", code: 3001 }, UNAUTHORIZED_EVENT: { message: "Unauthorized event.", code: 3002 }, UNAUTHORIZED_UPDATE_REQUEST: { message: "Unauthorized update request.", code: 3003 }, UNAUTHORIZED_EXTEND_REQUEST: { message: "Unauthorized extend request.", code: 3004 }, USER_REJECTED: { message: "User rejected.", code: 5e3 }, USER_REJECTED_CHAINS: { message: "User rejected chains.", code: 5001 }, USER_REJECTED_METHODS: { message: "User rejected methods.", code: 5002 }, USER_REJECTED_EVENTS: { message: "User rejected events.", code: 5003 }, UNSUPPORTED_CHAINS: { message: "Unsupported chains.", code: 5100 }, UNSUPPORTED_METHODS: { message: "Unsupported methods.", code: 5101 }, UNSUPPORTED_EVENTS: { message: "Unsupported events.", code: 5102 }, UNSUPPORTED_ACCOUNTS: { message: "Unsupported accounts.", code: 5103 }, UNSUPPORTED_NAMESPACE_KEY: { message: "Unsupported namespace key.", code: 5104 }, USER_DISCONNECTED: { message: "User disconnected.", code: 6e3 }, SESSION_SETTLEMENT_FAILED: { message: "Session settlement failed.", code: 7e3 }, WC_METHOD_UNSUPPORTED: { message: "Unsupported wc_ method.", code: 10001 } }, Jn = { NOT_INITIALIZED: { message: "Not initialized.", code: 1 }, NO_MATCHING_KEY: { message: "No matching key.", code: 2 }, RESTORE_WILL_OVERRIDE: { message: "Restore will override.", code: 3 }, RESUBSCRIBED: { message: "Resubscribed.", code: 4 }, MISSING_OR_INVALID: { message: "Missing or invalid.", code: 5 }, EXPIRED: { message: "Expired.", code: 6 }, UNKNOWN_TYPE: { message: "Unknown type.", code: 7 }, MISMATCHED_TOPIC: { message: "Mismatched topic.", code: 8 }, NON_CONFORMING_NAMESPACES: { message: "Non conforming namespaces.", code: 9 } };
function y$2(e, n2) {
const { message: t, code: r2 } = Jn[e];
return { message: n2 ? `${t} ${n2}` : t, code: r2 };
}
function h$2(e, n2) {
const { message: t, code: r2 } = Wn$1[e];
return { message: n2 ? `${t} ${n2}` : t, code: r2 };
}
function I$2(e, n2) {
return Array.isArray(e) ? typeof n2 < "u" && e.length ? e.every(n2) : true : false;
}
function B$1(e) {
return Object.getPrototypeOf(e) === Object.prototype && Object.keys(e).length;
}
function E$1(e) {
return typeof e > "u";
}
function a2(e, n2) {
return n2 && E$1(e) ? true : typeof e == "string" && Boolean(e.trim().length);
}
function w(e, n2) {
return n2 && E$1(e) ? true : typeof e == "number" && !isNaN(e);
}
function Qn(e, n2) {
const { requiredNamespaces: t } = n2, r2 = Object.keys(e.namespaces), o2 = Object.keys(t);
let s = true;
return m$1(o2, r2) ? (r2.forEach((i) => {
const { accounts: u3, methods: f, events: g2 } = e.namespaces[i], O2 = b$2(u3), p3 = t[i];
(!m$1(p3.chains, O2) || !m$1(p3.methods, f) || !m$1(p3.events, g2)) && (s = false);
}), s) : false;
}
function C$2(e) {
return a2(e, false) && e.includes(":") ? e.split(":").length === 2 : false;
}
function Me$1(e) {
if (a2(e, false) && e.includes(":")) {
const n2 = e.split(":");
if (n2.length === 3) {
const t = n2[0] + ":" + n2[1];
return !!n2[2] && C$2(t);
}
}
return false;
}
function Zn(e) {
if (a2(e, false))
try {
return typeof new URL(e) < "u";
} catch {
return false;
}
return false;
}
function Xn(e) {
var n2;
return (n2 = e == null ? void 0 : e.proposer) == null ? void 0 : n2.publicKey;
}
function et$1(e) {
return e == null ? void 0 : e.topic;
}
function nt$1(e, n2) {
let t = null;
return a2(e == null ? void 0 : e.publicKey, false) || (t = y$2("MISSING_OR_INVALID", `${n2} controller public key should be a string`)), t;
}
function G(e) {
let n2 = true;
return I$2(e) ? e.length && (n2 = e.every((t) => a2(t, false))) : n2 = false, n2;
}
function Ke$1(e, n2, t) {
let r2 = null;
return I$2(n2) ? n2.forEach((o2) => {
r2 || (!C$2(o2) || !o2.includes(e)) && (r2 = h$2("UNSUPPORTED_CHAINS", `${t}, chain ${o2} should be a string and conform to "namespace:chainId" format`));
}) : r2 = h$2("UNSUPPORTED_CHAINS", `${t}, chains ${n2} should be an array of strings conforming to "namespace:chainId" format`), r2;
}
function ke$2(e, n2) {
let t = null;
return Object.entries(e).forEach(([r2, o2]) => {
if (t)
return;
const s = Ke$1(r2, o2 == null ? void 0 : o2.chains, `${n2} requiredNamespace`);
s && (t = s);
}), t;
}
function Le$1(e, n2) {
let t = null;
return I$2(e) ? e.forEach((r2) => {
t || Me$1(r2) || (t = h$2("UNSUPPORTED_ACCOUNTS", `${n2}, account ${r2} should be a string and conform to "namespace:chainId:address" format`));
}) : t = h$2("UNSUPPORTED_ACCOUNTS", `${n2}, accounts should be an array of strings conforming to "namespace:chainId:address" format`), t;
}
function xe$1(e, n2) {
let t = null;
return Object.values(e).forEach((r2) => {
if (t)
return;
const o2 = Le$1(r2 == null ? void 0 : r2.accounts, `${n2} namespace`);
o2 && (t = o2);
}), t;
}
function Fe$2(e, n2) {
let t = null;
return G(e == null ? void 0 : e.methods) ? G(e == null ? void 0 : e.events) || (t = h$2("UNSUPPORTED_EVENTS", `${n2}, events should be an array of strings or empty array for no events`)) : t = h$2("UNSUPPORTED_METHODS", `${n2}, methods should be an array of strings or empty array for no methods`), t;
}
function z$1(e, n2) {
let t = null;
return Object.values(e).forEach((r2) => {
if (t)
return;
const o2 = Fe$2(r2, `${n2}, namespace`);
o2 && (t = o2);
}), t;
}
function tt$1(e, n2) {
let t = null;
if (e && B$1(e)) {
const r2 = z$1(e, n2);
r2 && (t = r2);
const o2 = ke$2(e, n2);
o2 && (t = o2);
} else
t = y$2("MISSING_OR_INVALID", `${n2}, requiredNamespaces should be an object with data`);
return t;
}
function He$2(e, n2) {
let t = null;
if (e && B$1(e)) {
const r2 = z$1(e, n2);
r2 && (t = r2);
const o2 = xe$1(e, n2);
o2 && (t = o2);
} else
t = y$2("MISSING_OR_INVALID", `${n2}, namespaces should be an object with data`);
return t;
}
function qe$1(e) {
return a2(e.protocol, true);
}
function rt$1(e, n2) {
let t = false;
return n2 && !e ? t = true : e && I$2(e) && e.length && e.forEach((r2) => {
t = qe$1(r2);
}), t;
}
function ot$1(e) {
return typeof e == "number";
}
function st$1(e) {
return typeof e < "u" && typeof e !== null;
}
function it$1(e) {
return !(!e || typeof e != "object" || !e.code || !w(e.code, false) || !e.message || !a2(e.message, false));
}
function ct$1(e) {
return !(E$1(e) || !a2(e.method, false));
}
function at$1(e) {
return !(E$1(e) || E$1(e.result) && E$1(e.error) || !w(e.id, false) || !a2(e.jsonrpc, false));
}
function ut$1(e) {
return !(E$1(e) || !a2(e.name, false));
}
function dt$1(e, n2) {
return !(!C$2(n2) || !$e$1(e).includes(n2));
}
function lt$1(e, n2, t) {
return a2(t, false) ? je$1(e, n2).includes(t) : false;
}
function ft$1(e, n2, t) {
return a2(t, false) ? Ve$1(e, n2).includes(t) : false;
}
function pt$1(e, n2, t) {
let r2 = null;
const o2 = Object.keys(e), s = Object.keys(n2);
return m$1(o2, s) ? o2.forEach((i) => {
if (r2)
return;
const u3 = e[i].chains, f = b$2(n2[i].accounts);
m$1(u3, f) ? m$1(e[i].methods, n2[i].methods) ? m$1(e[i].events, n2[i].events) || (r2 = y$2("NON_CONFORMING_NAMESPACES", `${t} namespaces events don't satisfy requiredNamespaces events for ${i}`)) : r2 = y$2("NON_CONFORMING_NAMESPACES", `${t} namespaces methods don't satisfy requiredNamespaces methods for ${i}`) : r2 = y$2("NON_CONFORMING_NAMESPACES", `${t} namespaces accounts don't satisfy requiredNamespaces chains for ${i}`);
}) : r2 = y$2("NON_CONFORMING_NAMESPACES", `${t} namespaces keys don't satisfy requiredNamespaces`), r2;
}
function mt$1(e, n2) {
return w(e, false) && e <= n2.max && e >= n2.min;
}
const EVENT_EMITTER_MAX_LISTENERS_DEFAULT = 10;
const resolveWebSocketImplementation = () => {
if (typeof global !== "undefined" && typeof global.WebSocket !== "undefined") {
return global.WebSocket;
}
if (typeof window !== "undefined" && typeof window.WebSocket !== "undefined") {
return window.WebSocket;
}
return require("ws");
};
const isBrowser = () => typeof window !== "undefined";
const WS = resolveWebSocketImplementation();
class WsConnection {
constructor(url) {
this.url = url;
this.events = new eventsExports.EventEmitter();
this.registering = false;
if (!isWsUrl(url)) {
throw new Error(`Provided URL is not compatible with WebSocket connection: ${url}`);
}
this.url = url;
}
get connected() {
return typeof this.socket !== "undefined";
}
get connecting() {
return this.registering;
}
on(event, listener) {
this.events.on(event, listener);
}
once(event, listener) {
this.events.once(event, listener);
}
off(event, listener) {
this.events.off(event, listener);
}
removeListener(event, listener) {
this.events.removeListener(event, listener);
}
async open(url = this.url) {
await this.register(url);
}
async close() {
return new Promise((resolve, reject) => {
if (typeof this.socket === "undefined") {
reject(new Error("Connection already closed"));
return;
}
this.socket.onclose = () => {
this.onClose();
resolve();
};
this.socket.close();
});
}
async send(payload, context) {
if (typeof this.socket === "undefined") {
this.socket = await this.register();
}
try {
this.socket.send(safeJsonStringify$1(payload));
} catch (e) {
this.onError(payload.id, e);
}
}
register(url = this.url) {
if (!isWsUrl(url)) {
throw new Error(`Provided URL is not compatible with WebSocket connection: ${url}`);
}
if (this.registering) {
const currentMaxListeners = this.events.getMaxListeners();
if (this.events.listenerCount("register_error") >= currentMaxListeners || this.events.listenerCount("open") >= currentMaxListeners) {
this.events.setMaxListeners(currentMaxListeners + 1);
}
return new Promise((resolve, reject) => {
this.events.once("register_error", (error) => {
this.resetMaxListeners();
reject(error);
});
this.events.once("open", () => {
this.resetMaxListeners();
if (typeof this.socket === "undefined") {
return reject(new Error("WebSocket connection is missing or invalid"));
}
resolve(this.socket);
});
});
}
this.url = url;
this.registering = true;
return new Promise((resolve, reject) => {
const opts = !cjs$8.isReactNative() ? { rejectUnauthorized: !isLocalhostUrl(url) } : void 0;
const socket = new WS(url, [], opts);
if (isBrowser()) {
socket.onerror = (event) => {
const errorEvent = event;
reject(this.emitError(errorEvent.error));
};
} else {
socket.on("error", (errorEvent) => {
reject(this.emitError(errorEvent));
});
}
socket.onopen = () => {
this.onOpen(socket);
resolve(socket);
};
});
}
onOpen(socket) {
socket.onmessage = (event) => this.onPayload(event);
socket.onclose = () => this.onClose();
this.socket = socket;
this.registering = false;
this.events.emit("open");
}
onClose() {
this.socket = void 0;
this.registering = false;
this.events.emit("close");
}
onPayload(e) {
if (typeof e.data === "undefined")
return;
const payload = typeof e.data === "string" ? safeJsonParse$1(e.data) : e.data;
this.events.emit("payload", payload);
}
onError(id, e) {
const error = this.parseError(e);
const message = error.message || error.toString();
const payload = formatJsonRpcError(id, message);
this.events.emit("payload", payload);
}
parseError(e, url = this.url) {
return parseConnectionError(e, url, "WS");
}
resetMaxListeners() {
if (this.events.getMaxListeners() > EVENT_EMITTER_MAX_LISTENERS_DEFAULT) {
this.events.setMaxListeners(EVENT_EMITTER_MAX_LISTENERS_DEFAULT);
}
}
emitError(errorEvent) {
const error = this.parseError(new Error((errorEvent === null || errorEvent === void 0 ? void 0 : errorEvent.message) || `WebSocket connection failed for URL: ${this.url}`));
this.events.emit("register_error", error);
return error;
}
}
var lodash_isequalExports = {};
var lodash_isequal = {
get exports() {
return lodash_isequalExports;
},
set exports(v2) {
lodash_isequalExports = v2;
}
};
(function(module, exports) {
var LARGE_ARRAY_SIZE = 200;
var HASH_UNDEFINED = "__lodash_hash_undefined__";
var COMPARE_PARTIAL_FLAG = 1, COMPARE_UNORDERED_FLAG = 2;
var MAX_SAFE_INTEGER = 9007199254740991;
var argsTag = "[object Arguments]", arrayTag = "[object Array]", asyncTag = "[object AsyncFunction]", boolTag = "[object Boolean]", dateTag = "[object Date]", errorTag = "[object Error]", funcTag = "[object Function]", genTag = "[object GeneratorFunction]", mapTag = "[object Map]", numberTag = "[object Number]", nullTag = "[object Null]", objectTag = "[object Object]", promiseTag = "[object Promise]", proxyTag = "[object Proxy]", regexpTag = "[object RegExp]", setTag = "[object Set]", stringTag = "[object String]", symbolTag = "[object Symbol]", undefinedTag = "[object Undefined]", weakMapTag = "[object WeakMap]";
var arrayBufferTag = "[object ArrayBuffer]", dataViewTag = "[object DataView]", float32Tag = "[object Float32Array]", float64Tag = "[object Float64Array]", int8Tag = "[object Int8Array]", int16Tag = "[object Int16Array]", int32Tag = "[object Int32Array]", uint8Tag = "[object Uint8Array]", uint8ClampedTag = "[object Uint8ClampedArray]", uint16Tag = "[object Uint16Array]", uint32Tag = "[object Uint32Array]";
var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
var reIsHostCtor = /^\[object .+?Constructor\]$/;
var reIsUint = /^(?:0|[1-9]\d*)$/;
var typedArrayTags = {};
typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;
typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;
var freeGlobal = typeof commonjsGlobal == "object" && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;
var freeSelf = typeof self == "object" && self && self.Object === Object && self;
var root = freeGlobal || freeSelf || Function("return this")();
var freeExports = exports && !exports.nodeType && exports;
var freeModule = freeExports && true && module && !module.nodeType && module;
var moduleExports = freeModule && freeModule.exports === freeExports;
var freeProcess = moduleExports && freeGlobal.process;
var nodeUtil = function() {
try {
return freeProcess && freeProcess.binding && freeProcess.binding("util");
} catch (e) {
}
}();
var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
function arrayFilter(array, predicate) {
var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result = [];
while (++index < length) {
var value = array[index];
if (predicate(value, index, array)) {
result[resIndex++] = value;
}
}
return result;
}
function arrayPush(array, values) {
var index = -1, length = values.length, offset = array.length;
while (++index < length) {
array[offset + index] = values[index];
}
return array;
}
function arraySome(array, predicate) {
var index = -1, length = array == null ? 0 : array.length;
while (++index < length) {
if (predicate(array[index], index, array)) {
return true;
}
}
return false;
}
function baseTimes(n2, iteratee) {
var index = -1, result = Array(n2);
while (++index < n2) {
result[index] = iteratee(index);
}
return result;
}
function baseUnary(func) {
return function(value) {
return func(value);
};
}
function cacheHas(cache, key) {
return cache.has(key);
}
function getValue(object, key) {
return object == null ? void 0 : object[key];
}
function mapToArray(map) {
var index = -1, result = Array(map.size);
map.forEach(function(value, key) {
result[++index] = [key, value];
});
return result;
}
function overArg(func, transform) {
return function(arg) {
return func(transform(arg));
};
}
function setToArray(set2) {
var index = -1, result = Array(set2.size);
set2.forEach(function(value) {
result[++index] = value;
});
return result;
}
var arrayProto = Array.prototype, funcProto = Function.prototype, objectProto = Object.prototype;
var coreJsData = root["__core-js_shared__"];
var funcToString = funcProto.toString;
var hasOwnProperty = objectProto.hasOwnProperty;
var maskSrcKey = function() {
var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || "");
return uid ? "Symbol(src)_1." + uid : "";
}();
var nativeObjectToString = objectProto.toString;
var reIsNative = RegExp(
"^" + funcToString.call(hasOwnProperty).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"
);
var Buffer = moduleExports ? root.Buffer : void 0, Symbol2 = root.Symbol, Uint8Array2 = root.Uint8Array, propertyIsEnumerable = objectProto.propertyIsEnumerable, splice = arrayProto.splice, symToStringTag = Symbol2 ? Symbol2.toStringTag : void 0;
var nativeGetSymbols = Object.getOwnPropertySymbols, nativeIsBuffer = Buffer ? Buffer.isBuffer : void 0, nativeKeys = overArg(Object.keys, Object);
var DataView2 = getNative(root, "DataView"), Map2 = getNative(root, "Map"), Promise2 = getNative(root, "Promise"), Set2 = getNative(root, "Set"), WeakMap = getNative(root, "WeakMap"), nativeCreate = getNative(Object, "create");
var dataViewCtorString = toSource(DataView2), mapCtorString = toSource(Map2), promiseCtorString = toSource(Promise2), setCtorString = toSource(Set2), weakMapCtorString = toSource(WeakMap);
var symbolProto = Symbol2 ? Symbol2.prototype : void 0, symbolValueOf = symbolProto ? symbolProto.valueOf : void 0;
function Hash(entries) {
var index = -1, length = entries == null ? 0 : entries.length;
this.clear();
while (++index < length) {
var entry = entries[index];
this.set(entry[0], entry[1]);
}
}
function hashClear() {
this.__data__ = nativeCreate ? nativeCreate(null) : {};
this.size = 0;
}
function hashDelete(key) {
var result = this.has(key) && delete this.__data__[key];
this.size -= result ? 1 : 0;
return result;
}
function hashGet(key) {
var data = this.__data__;
if (nativeCreate) {
var result = data[key];
return result === HASH_UNDEFINED ? void 0 : result;
}
return hasOwnProperty.call(data, key) ? data[key] : void 0;
}
function hashHas(key) {
var data = this.__data__;
return nativeCreate ? data[key] !== void 0 : hasOwnProperty.call(data, key);
}
function hashSet(key, value) {
var data = this.__data__;
this.size += this.has(key) ? 0 : 1;
data[key] = nativeCreate && value === void 0 ? HASH_UNDEFINED : value;
return this;
}
Hash.prototype.clear = hashClear;
Hash.prototype["delete"] = hashDelete;
Hash.prototype.get = hashGet;
Hash.prototype.has = hashHas;
Hash.prototype.set = hashSet;
function ListCache(entries) {
var index = -1, length = entries == null ? 0 : entries.length;
this.clear();
while (++index < length) {
var entry = entries[index];
this.set(entry[0], entry[1]);
}
}
function listCacheClear() {
this.__data__ = [];
this.size = 0;
}
function listCacheDelete(key) {
var data = this.__data__, index = assocIndexOf(data, key);
if (index < 0) {
return false;
}
var lastIndex = data.length - 1;
if (index == lastIndex) {
data.pop();
} else {
splice.call(data, index, 1);
}
--this.size;
return true;
}
function listCacheGet(key) {
var data = this.__data__, index = assocIndexOf(data, key);
return index < 0 ? void 0 : data[index][1];
}
function listCacheHas(key) {
return assocIndexOf(this.__data__, key) > -1;
}
function listCacheSet(key, value) {
var data = this.__data__, index = assocIndexOf(data, key);
if (index < 0) {
++this.size;
data.push([key, value]);
} else {
data[index][1] = value;
}
return this;
}
ListCache.prototype.clear = listCacheClear;
ListCache.prototype["delete"] = listCacheDelete;
ListCache.prototype.get = listCacheGet;
ListCache.prototype.has = listCacheHas;
ListCache.prototype.set = listCacheSet;
function MapCache(entries) {
var index = -1, length = entries == null ? 0 : entries.length;
this.clear();
while (++index < length) {
var entry = entries[index];
this.set(entry[0], entry[1]);
}
}
function mapCacheClear() {
this.size = 0;
this.__data__ = {
"hash": new Hash(),
"map": new (Map2 || ListCache)(),
"string": new Hash()
};
}
function mapCacheDelete(key) {
var result = getMapData(this, key)["delete"](key);
this.size -= result ? 1 : 0;
return result;
}
function mapCacheGet(key) {
return getMapData(this, key).get(key);
}
function mapCacheHas(key) {
return getMapData(this, key).has(key);
}
function mapCacheSet(key, value) {
var data = getMapData(this, key), size = data.size;
data.set(key, value);
this.size += data.size == size ? 0 : 1;
return this;
}
MapCache.prototype.clear = mapCacheClear;
MapCache.prototype["delete"] = mapCacheDelete;
MapCache.prototype.get = mapCacheGet;
MapCache.prototype.has = mapCacheHas;
MapCache.prototype.set = mapCacheSet;
function SetCache(values) {
var index = -1, length = values == null ? 0 : values.length;
this.__data__ = new MapCache();
while (++index < length) {
this.add(values[index]);
}
}
function setCacheAdd(value) {
this.__data__.set(value, HASH_UNDEFINED);
return this;
}
function setCacheHas(value) {
return this.__data__.has(value);
}
SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
SetCache.prototype.has = setCacheHas;
function Stack(entries) {
var data = this.__data__ = new ListCache(entries);
this.size = data.size;
}
function stackClear() {
this.__data__ = new ListCache();
this.size = 0;
}
function stackDelete(key) {
var data = this.__data__, result = data["delete"](key);
this.size = data.size;
return result;
}
function stackGet(key) {
return this.__data__.get(key);
}
function stackHas(key) {
return this.__data__.has(key);
}
function stackSet(key, value) {
var data = this.__data__;
if (data instanceof ListCache) {
var pairs = data.__data__;
if (!Map2 || pairs.length < LARGE_ARRAY_SIZE - 1) {
pairs.push([key, value]);
this.size = ++data.size;
return this;
}
data = this.__data__ = new MapCache(pairs);
}
data.set(key, value);
this.size = data.size;
return this;
}
Stack.prototype.clear = stackClear;
Stack.prototype["delete"] = stackDelete;
Stack.prototype.get = stackGet;
Stack.prototype.has = stackHas;
Stack.prototype.set = stackSet;
function arrayLikeKeys(value, inherited) {
var isArr = isArray(value), isArg = !isArr && isArguments(value), isBuff = !isArr && !isArg && isBuffer(value), isType = !isArr && !isArg && !isBuff && isTypedArray(value), skipIndexes = isArr || isArg || isBuff || isType, result = skipIndexes ? baseTimes(value.length, String) : [], length = result.length;
for (var key in value) {
if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && // Safari 9 has enumerable `arguments.length` in strict mode.
(key == "length" || // Node.js 0.10 has enumerable non-index properties on buffers.
isBuff && (key == "offset" || key == "parent") || // PhantomJS 2 has enumerable non-index properties on typed arrays.
isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || // Skip index properties.
isIndex(key, length)))) {
result.push(key);
}
}
return result;
}
function assocIndexOf(array, key) {
var length = array.length;
while (length--) {
if (eq(array[length][0], key)) {
return length;
}
}
return -1;
}
function baseGetAllKeys(object, keysFunc, symbolsFunc) {
var result = keysFunc(object);
return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
}
function baseGetTag(value) {
if (value == null) {
return value === void 0 ? undefinedTag : nullTag;
}
return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);
}
function baseIsArguments(value) {
return isObjectLike(value) && baseGetTag(value) == argsTag;
}
function baseIsEqual(value, other, bitmask, customizer, stack) {
if (value === other) {
return true;
}
if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) {
return value !== value && other !== other;
}
return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
}
function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
var objIsArr = isArray(object), othIsArr = isArray(other), objTag = objIsArr ? arrayTag : getTag(object), othTag = othIsArr ? arrayTag : getTag(other);
objTag = objTag == argsTag ? objectTag : objTag;
othTag = othTag == argsTag ? objectTag : othTag;
var objIsObj = objTag == objectTag, othIsObj = othTag == objectTag, isSameTag = objTag == othTag;
if (isSameTag && isBuffer(object)) {
if (!isBuffer(other)) {
return false;
}
objIsArr = true;
objIsObj = false;
}
if (isSameTag && !objIsObj) {
stack || (stack = new Stack());
return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
}
if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
var objIsWrapped = objIsObj && hasOwnProperty.call(object, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty.call(other, "__wrapped__");
if (objIsWrapped || othIsWrapped) {
var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other;
stack || (stack = new Stack());
return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
}
}
if (!isSameTag) {
return false;
}
stack || (stack = new Stack());
return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
}
function baseIsNative(value) {
if (!isObject(value) || isMasked(value)) {
return false;
}
var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
return pattern.test(toSource(value));
}
function baseIsTypedArray(value) {
return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
}
function baseKeys(object) {
if (!isPrototype(object)) {
return nativeKeys(object);
}
var result = [];
for (var key in Object(object)) {
if (hasOwnProperty.call(object, key) && key != "constructor") {
result.push(key);
}
}
return result;
}
function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
var isPartial = bitmask & COMPARE_PARTIAL_FLAG, arrLength = array.length, othLength = other.length;
if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
return false;
}
var stacked = stack.get(array);
if (stacked && stack.get(other)) {
return stacked == other;
}
var index = -1, result = true, seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache() : void 0;
stack.set(array, other);
stack.set(other, array);
while (++index < arrLength) {
var arrValue = array[index], othValue = other[index];
if (customizer) {
var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);
}
if (compared !== void 0) {
if (compared) {
continue;
}
result = false;
break;
}
if (seen) {
if (!arraySome(other, function(othValue2, othIndex) {
if (!cacheHas(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack))) {
return seen.push(othIndex);
}
})) {
result = false;
break;
}
} else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
result = false;
break;
}
}
stack["delete"](array);
stack["delete"](other);
return result;
}
function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
switch (tag) {
case dataViewTag:
if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {
return false;
}
object = object.buffer;
other = other.buffer;
case arrayBufferTag:
if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array2(object), new Uint8Array2(other))) {
return false;
}
return true;
case boolTag:
case dateTag:
case numberTag:
return eq(+object, +other);
case errorTag:
return object.name == other.name && object.message == other.message;
case regexpTag:
case stringTag:
return object == other + "";
case mapTag:
var convert2 = mapToArray;
case setTag:
var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
convert2 || (convert2 = setToArray);
if (object.size != other.size && !isPartial) {
return false;
}
var stacked = stack.get(object);
if (stacked) {
return stacked == other;
}
bitmask |= COMPARE_UNORDERED_FLAG;
stack.set(object, other);
var result = equalArrays(convert2(object), convert2(other), bitmask, customizer, equalFunc, stack);
stack["delete"](object);
return result;
case symbolTag:
if (symbolValueOf) {
return symbolValueOf.call(object) == symbolValueOf.call(other);
}
}
return false;
}
function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
var isPartial = bitmask & COMPARE_PARTIAL_FLAG, objProps = getAllKeys(object), objLength = objProps.length, othProps = getAllKeys(other), othLength = othProps.length;
if (objLength != othLength && !isPartial) {
return false;
}
var index = objLength;
while (index--) {
var key = objProps[index];
if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
return false;
}
}
var stacked = stack.get(object);
if (stacked && stack.get(other)) {
return stacked == other;
}
var result = true;
stack.set(object, other);
stack.set(other, object);
var skipCtor = isPartial;
while (++index < objLength) {
key = objProps[index];
var objValue = object[key], othValue = other[key];
if (customizer) {
var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);
}
if (!(compared === void 0 ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {
result = false;
break;
}
skipCtor || (skipCtor = key == "constructor");
}
if (result && !skipCtor) {
var objCtor = object.constructor, othCtor = other.constructor;
if (objCtor != othCtor && ("constructor" in object && "constructor" in other) && !(typeof objCtor == "function" && objCtor instanceof objCtor && typeof othCtor == "function" && othCtor instanceof othCtor)) {
result = false;
}
}
stack["delete"](object);
stack["delete"](other);
return result;
}
function getAllKeys(object) {
return baseGetAllKeys(object, keys, getSymbols);
}
function getMapData(map, key) {
var data = map.__data__;
return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map;
}
function getNative(object, key) {
var value = getValue(object, key);
return baseIsNative(value) ? value : void 0;
}
function getRawTag(value) {
var isOwn = hasOwnProperty.call(value, symToStringTag), tag = value[symToStringTag];
try {
value[symToStringTag] = void 0;
var unmasked = true;
} catch (e) {
}
var result = nativeObjectToString.call(value);
if (unmasked) {
if (isOwn) {
value[symToStringTag] = tag;
} else {
delete value[symToStringTag];
}
}
return result;
}
var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
if (object == null) {
return [];
}
object = Object(object);
return arrayFilter(nativeGetSymbols(object), function(symbol) {
return propertyIsEnumerable.call(object, symbol);
});
};
var getTag = baseGetTag;
if (DataView2 && getTag(new DataView2(new ArrayBuffer(1))) != dataViewTag || Map2 && getTag(new Map2()) != mapTag || Promise2 && getTag(Promise2.resolve()) != promiseTag || Set2 && getTag(new Set2()) != setTag || WeakMap && getTag(new WeakMap()) != weakMapTag) {
getTag = function(value) {
var result = baseGetTag(value), Ctor = result == objectTag ? value.constructor : void 0, ctorString = Ctor ? toSource(Ctor) : "";
if (ctorString) {
switch (ctorString) {
case dataViewCtorString:
return dataViewTag;
case mapCtorString:
return mapTag;
case promiseCtorString:
return promiseTag;
case setCtorString:
return setTag;
case weakMapCtorString:
return weakMapTag;
}
}
return result;
};
}
function isIndex(value, length) {
length = length == null ? MAX_SAFE_INTEGER : length;
return !!length && (typeof value == "number" || reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length);
}
function isKeyable(value) {
var type = typeof value;
return type == "string" || type == "number" || type == "symbol" || type == "boolean" ? value !== "__proto__" : value === null;
}
function isMasked(func) {
return !!maskSrcKey && maskSrcKey in func;
}
function isPrototype(value) {
var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto;
return value === proto;
}
function objectToString(value) {
return nativeObjectToString.call(value);
}
function toSource(func) {
if (func != null) {
try {
return funcToString.call(func);
} catch (e) {
}
try {
return func + "";
} catch (e) {
}
}
return "";
}
function eq(value, other) {
return value === other || value !== value && other !== other;
}
var isArguments = baseIsArguments(function() {
return arguments;
}()) ? baseIsArguments : function(value) {
return isObjectLike(value) && hasOwnProperty.call(value, "callee") && !propertyIsEnumerable.call(value, "callee");
};
var isArray = Array.isArray;
function isArrayLike(value) {
return value != null && isLength(value.length) && !isFunction(value);
}
var isBuffer = nativeIsBuffer || stubFalse;
function isEqual(value, other) {
return baseIsEqual(value, other);
}
function isFunction(value) {
if (!isObject(value)) {
return false;
}
var tag = baseGetTag(value);
return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
}
function isLength(value) {
return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
}
function isObject(value) {
var type = typeof value;
return value != null && (type == "object" || type == "function");
}
function isObjectLike(value) {
return value != null && typeof value == "object";
}
var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
function keys(object) {
return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
}
function stubArray() {
return [];
}
function stubFalse() {
return false;
}
module.exports = isEqual;
})(lodash_isequal, lodash_isequalExports);
function wi(r2, e) {
if (r2.length >= 255)
throw new TypeError("Alphabet too long");
for (var t = new Uint8Array(256), i = 0; i < t.length; i++)
t[i] = 255;
for (var s = 0; s < r2.length; s++) {
var n2 = r2.charAt(s), a3 = n2.charCodeAt(0);
if (t[a3] !== 255)
throw new TypeError(n2 + " is ambiguous");
t[a3] = s;
}
var o2 = r2.length, h3 = r2.charAt(0), d2 = Math.log(o2) / Math.log(256), l2 = Math.log(256) / Math.log(o2);
function g2(u3) {
if (u3 instanceof Uint8Array || (ArrayBuffer.isView(u3) ? u3 = new Uint8Array(u3.buffer, u3.byteOffset, u3.byteLength) : Array.isArray(u3) && (u3 = Uint8Array.from(u3))), !(u3 instanceof Uint8Array))
throw new TypeError("Expected Uint8Array");
if (u3.length === 0)
return "";
for (var y3 = 0, O2 = 0, E3 = 0, _2 = u3.length; E3 !== _2 && u3[E3] === 0; )
E3++, y3++;
for (var R2 = (_2 - E3) * l2 + 1 >>> 0, b2 = new Uint8Array(R2); E3 !== _2; ) {
for (var S2 = u3[E3], x2 = 0, f = R2 - 1; (S2 !== 0 || x2 < O2) && f !== -1; f--, x2++)
S2 += 256 * b2[f] >>> 0, b2[f] = S2 % o2 >>> 0, S2 = S2 / o2 >>> 0;
if (S2 !== 0)
throw new Error("Non-zero carry");
O2 = x2, E3++;
}
for (var T2 = R2 - O2; T2 !== R2 && b2[T2] === 0; )
T2++;
for (var K2 = h3.repeat(y3); T2 < R2; ++T2)
K2 += r2.charAt(b2[T2]);
return K2;
}
function U2(u3) {
if (typeof u3 != "string")
throw new TypeError("Expected String");
if (u3.length === 0)
return new Uint8Array();
var y3 = 0;
if (u3[y3] !== " ") {
for (var O2 = 0, E3 = 0; u3[y3] === h3; )
O2++, y3++;
for (var _2 = (u3.length - y3) * d2 + 1 >>> 0, R2 = new Uint8Array(_2); u3[y3]; ) {
var b2 = t[u3.charCodeAt(y3)];
if (b2 === 255)
return;
for (var S2 = 0, x2 = _2 - 1; (b2 !== 0 || S2 < E3) && x2 !== -1; x2--, S2++)
b2 += o2 * R2[x2] >>> 0, R2[x2] = b2 % 256 >>> 0, b2 = b2 / 256 >>> 0;
if (b2 !== 0)
throw new Error("Non-zero carry");
E3 = S2, y3++;
}
if (u3[y3] !== " ") {
for (var f = _2 - E3; f !== _2 && R2[f] === 0; )
f++;
for (var T2 = new Uint8Array(O2 + (_2 - f)), K2 = O2; f !== _2; )
T2[K2++] = R2[f++];
return T2;
}
}
}
function q2(u3) {
var y3 = U2(u3);
if (y3)
return y3;
throw new Error(`Non-${e} character`);
}
return { encode: g2, decodeUnsafe: U2, decode: q2 };
}
var vi = wi, Ii = vi;
const Ie = (r2) => {
if (r2 instanceof Uint8Array && r2.constructor.name === "Uint8Array")
return r2;
if (r2 instanceof ArrayBuffer)
return new Uint8Array(r2);
if (ArrayBuffer.isView(r2))
return new Uint8Array(r2.buffer, r2.byteOffset, r2.byteLength);
throw new Error("Unknown type, must be binary type");
}, Ci = (r2) => new TextEncoder().encode(r2), _i = (r2) => new TextDecoder().decode(r2);
class Ri {
constructor(e, t, i) {
this.name = e, this.prefix = t, this.baseEncode = i;
}
encode(e) {
if (e instanceof Uint8Array)
return `${this.prefix}${this.baseEncode(e)}`;
throw Error("Unknown type, must be binary type");
}
}
class Si {
constructor(e, t, i) {
if (this.name = e, this.prefix = t, t.codePointAt(0) === void 0)
throw new Error("Invalid prefix character");
this.prefixCodePoint = t.codePointAt(0), this.baseDecode = i;
}
decode(e) {
if (typeof e == "string") {
if (e.codePointAt(0) !== this.prefixCodePoint)
throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);
return this.baseDecode(e.slice(this.prefix.length));
} else
throw Error("Can only multibase decode strings");
}
or(e) {
return Ce(this, e);
}
}
class Ti {
constructor(e) {
this.decoders = e;
}
or(e) {
return Ce(this, e);
}
decode(e) {
const t = e[0], i = this.decoders[t];
if (i)
return i.decode(e);
throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`);
}
}
const Ce = (r2, e) => new Ti({ ...r2.decoders || { [r2.prefix]: r2 }, ...e.decoders || { [e.prefix]: e } });
class Pi {
constructor(e, t, i, s) {
this.name = e, this.prefix = t, this.baseEncode = i, this.baseDecode = s, this.encoder = new Ri(e, t, i), this.decoder = new Si(e, t, s);
}
encode(e) {
return this.encoder.encode(e);
}
decode(e) {
return this.decoder.decode(e);
}
}
const k$1 = ({ name: r2, prefix: e, encode: t, decode: i }) => new Pi(r2, e, t, i), F = ({ prefix: r2, name: e, alphabet: t }) => {
const { encode: i, decode: s } = Ii(t, e);
return k$1({ prefix: r2, name: e, encode: i, decode: (n2) => Ie(s(n2)) });
}, xi = (r2, e, t, i) => {
const s = {};
for (let l2 = 0; l2 < e.length; ++l2)
s[e[l2]] = l2;
let n2 = r2.length;
for (; r2[n2 - 1] === "="; )
--n2;
const a3 = new Uint8Array(n2 * t / 8 | 0);
let o2 = 0, h3 = 0, d2 = 0;
for (let l2 = 0; l2 < n2; ++l2) {
const g2 = s[r2[l2]];
if (g2 === void 0)
throw new SyntaxError(`Non-${i} character`);
h3 = h3 << t | g2, o2 += t, o2 >= 8 && (o2 -= 8, a3[d2++] = 255 & h3 >> o2);
}
if (o2 >= t || 255 & h3 << 8 - o2)
throw new SyntaxError("Unexpected end of data");
return a3;
}, Oi = (r2, e, t) => {
const i = e[e.length - 1] === "=", s = (1 << t) - 1;
let n2 = "", a3 = 0, o2 = 0;
for (let h3 = 0; h3 < r2.length; ++h3)
for (o2 = o2 << 8 | r2[h3], a3 += 8; a3 > t; )
a3 -= t, n2 += e[s & o2 >> a3];
if (a3 && (n2 += e[s & o2 << t - a3]), i)
for (; n2.length * t & 7; )
n2 += "=";
return n2;
}, p$1 = ({ name: r2, prefix: e, bitsPerChar: t, alphabet: i }) => k$1({ prefix: e, name: r2, encode(s) {
return Oi(s, i, t);
}, decode(s) {
return xi(s, i, t, r2);
} }), Ai = k$1({ prefix: "\0", name: "identity", encode: (r2) => _i(r2), decode: (r2) => Ci(r2) });
var zi = Object.freeze({ __proto__: null, identity: Ai });
const Ni = p$1({ prefix: "0", name: "base2", alphabet: "01", bitsPerChar: 1 });
var Ui = Object.freeze({ __proto__: null, base2: Ni });
const Li = p$1({ prefix: "7", name: "base8", alphabet: "01234567", bitsPerChar: 3 });
var Fi = Object.freeze({ __proto__: null, base8: Li });
const Mi = F({ prefix: "9", name: "base10", alphabet: "0123456789" });
var Ki = Object.freeze({ __proto__: null, base10: Mi });
const $i = p$1({ prefix: "f", name: "base16", alphabet: "0123456789abcdef", bitsPerChar: 4 }), ki = p$1({ prefix: "F", name: "base16upper", alphabet: "0123456789ABCDEF", bitsPerChar: 4 });
var Bi = Object.freeze({ __proto__: null, base16: $i, base16upper: ki });
const ji = p$1({ prefix: "b", name: "base32", alphabet: "abcdefghijklmnopqrstuvwxyz234567", bitsPerChar: 5 }), Vi = p$1({ prefix: "B", name: "base32upper", alphabet: "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567", bitsPerChar: 5 }), qi = p$1({ prefix: "c", name: "base32pad", alphabet: "abcdefghijklmnopqrstuvwxyz234567=", bitsPerChar: 5 }), Gi = p$1({ prefix: "C", name: "base32padupper", alphabet: "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=", bitsPerChar: 5 }), Yi = p$1({ prefix: "v", name: "base32hex", alphabet: "0123456789abcdefghijklmnopqrstuv", bitsPerChar: 5 }), Ji = p$1({ prefix: "V", name: "base32hexupper", alphabet: "0123456789ABCDEFGHIJKLMNOPQRSTUV", bitsPerChar: 5 }), Hi = p$1({ prefix: "t", name: "base32hexpad", alphabet: "0123456789abcdefghijklmnopqrstuv=", bitsPerChar: 5 }), Xi = p$1({ prefix: "T", name: "base32hexpadupper", alphabet: "0123456789ABCDEFGHIJKLMNOPQRSTUV=", bitsPerChar: 5 }), Wi = p$1({ prefix: "h", name: "base32z", alphabet: "ybndrfg8ejkmcpqxot1uwisza345h769", bitsPerChar: 5 });
var Zi = Object.freeze({ __proto__: null, base32: ji, base32upper: Vi, base32pad: qi, base32padupper: Gi, base32hex: Yi, base32hexupper: Ji, base32hexpad: Hi, base32hexpadupper: Xi, base32z: Wi });
const Qi = F({ prefix: "k", name: "base36", alphabet: "0123456789abcdefghijklmnopqrstuvwxyz" }), es = F({ prefix: "K", name: "base36upper", alphabet: "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" });
var ts = Object.freeze({ __proto__: null, base36: Qi, base36upper: es });
const is = F({ name: "base58btc", prefix: "z", alphabet: "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz" }), ss = F({ name: "base58flickr", prefix: "Z", alphabet: "123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ" });
var rs = Object.freeze({ __proto__: null, base58btc: is, base58flickr: ss });
const ns = p$1({ prefix: "m", name: "base64", alphabet: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", bitsPerChar: 6 }), as = p$1({ prefix: "M", name: "base64pad", alphabet: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", bitsPerChar: 6 }), os = p$1({ prefix: "u", name: "base64url", alphabet: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_", bitsPerChar: 6 }), hs = p$1({ prefix: "U", name: "base64urlpad", alphabet: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=", bitsPerChar: 6 });
var cs = Object.freeze({ __proto__: null, base64: ns, base64pad: as, base64url: os, base64urlpad: hs });
const _e = Array.from("🚀🪐☄🛰🌌🌑🌒🌓🌔🌕🌖🌗🌘🌍🌏🌎🐉☀💻🖥💾💿😂❤😍🤣😊🙏💕😭😘👍😅👏😁🔥🥰💔💖💙😢🤔😆🙄💪😉☺👌🤗💜😔😎😇🌹🤦🎉💞✌✨🤷😱😌🌸🙌😋💗💚😏💛🙂💓🤩😄😀🖤😃💯🙈👇🎶😒🤭❣😜💋👀😪😑💥🙋😞😩😡🤪👊🥳😥🤤👉💃😳✋😚😝😴🌟😬🙃🍀🌷😻😓⭐✅🥺🌈😈🤘💦✔😣🏃💐☹🎊💘😠☝😕🌺🎂🌻😐🖕💝🙊😹🗣💫💀👑🎵🤞😛🔴😤🌼😫⚽🤙☕🏆🤫👈😮🙆🍻🍃🐶💁😲🌿🧡🎁⚡🌞🎈❌✊👋😰🤨😶🤝🚶💰🍓💢🤟🙁🚨💨🤬✈🎀🍺🤓😙💟🌱😖👶🥴▶➡❓💎💸⬇😨🌚🦋😷🕺⚠🙅😟😵👎🤲🤠🤧📌🔵💅🧐🐾🍒😗🤑🌊🤯🐷☎💧😯💆👆🎤🙇🍑❄🌴💣🐸💌📍🥀🤢👅💡💩👐📸👻🤐🤮🎼🥵🚩🍎🍊👼💍📣🥂"), us = _e.reduce((r2, e, t) => (r2[t] = e, r2), []), ls = _e.reduce((r2, e, t) => (r2[e.codePointAt(0)] = t, r2), []);
function ds(r2) {
return r2.reduce((e, t) => (e += us[t], e), "");
}
function gs(r2) {
const e = [];
for (const t of r2) {
const i = ls[t.codePointAt(0)];
if (i === void 0)
throw new Error(`Non-base256emoji character: ${t}`);
e.push(i);
}
return new Uint8Array(e);
}
const ps = k$1({ prefix: "🚀", name: "base256emoji", encode: ds, decode: gs });
var Ds = Object.freeze({ __proto__: null, base256emoji: ps }), ys = Se, Re = 128, bs = 127, ms = ~bs, Es = Math.pow(2, 31);
function Se(r2, e, t) {
e = e || [], t = t || 0;
for (var i = t; r2 >= Es; )
e[t++] = r2 & 255 | Re, r2 /= 128;
for (; r2 & ms; )
e[t++] = r2 & 255 | Re, r2 >>>= 7;
return e[t] = r2 | 0, Se.bytes = t - i + 1, e;
}
var fs = ie$1, ws = 128, Te = 127;
function ie$1(r2, i) {
var t = 0, i = i || 0, s = 0, n2 = i, a3, o2 = r2.length;
do {
if (n2 >= o2)
throw ie$1.bytes = 0, new RangeError("Could not decode varint");
a3 = r2[n2++], t += s < 28 ? (a3 & Te) << s : (a3 & Te) * Math.pow(2, s), s += 7;
} while (a3 >= ws);
return ie$1.bytes = n2 - i, t;
}
var vs = Math.pow(2, 7), Is = Math.pow(2, 14), Cs = Math.pow(2, 21), _s = Math.pow(2, 28), Rs = Math.pow(2, 35), Ss = Math.pow(2, 42), Ts = Math.pow(2, 49), Ps = Math.pow(2, 56), xs = Math.pow(2, 63), Os = function(r2) {
return r2 < vs ? 1 : r2 < Is ? 2 : r2 < Cs ? 3 : r2 < _s ? 4 : r2 < Rs ? 5 : r2 < Ss ? 6 : r2 < Ts ? 7 : r2 < Ps ? 8 : r2 < xs ? 9 : 10;
}, As = { encode: ys, decode: fs, encodingLength: Os }, Pe = As;
const xe = (r2, e, t = 0) => (Pe.encode(r2, e, t), e), Oe = (r2) => Pe.encodingLength(r2), se$1 = (r2, e) => {
const t = e.byteLength, i = Oe(r2), s = i + Oe(t), n2 = new Uint8Array(s + t);
return xe(r2, n2, 0), xe(t, n2, i), n2.set(e, s), new zs(r2, t, e, n2);
};
class zs {
constructor(e, t, i, s) {
this.code = e, this.size = t, this.digest = i, this.bytes = s;
}
}
const Ae = ({ name: r2, code: e, encode: t }) => new Ns(r2, e, t);
class Ns {
constructor(e, t, i) {
this.name = e, this.code = t, this.encode = i;
}
digest(e) {
if (e instanceof Uint8Array) {
const t = this.encode(e);
return t instanceof Uint8Array ? se$1(this.code, t) : t.then((i) => se$1(this.code, i));
} else
throw Error("Unknown type, must be binary type");
}
}
const ze = (r2) => async (e) => new Uint8Array(await crypto.subtle.digest(r2, e)), Us = Ae({ name: "sha2-256", code: 18, encode: ze("SHA-256") }), Ls = Ae({ name: "sha2-512", code: 19, encode: ze("SHA-512") });
var Fs = Object.freeze({ __proto__: null, sha256: Us, sha512: Ls });
const Ne = 0, Ms = "identity", Ue = Ie, Ks = (r2) => se$1(Ne, Ue(r2)), $s = { code: Ne, name: Ms, encode: Ue, digest: Ks };
var ks = Object.freeze({ __proto__: null, identity: $s });
new TextEncoder(), new TextDecoder();
const Le = { ...zi, ...Ui, ...Fi, ...Ki, ...Bi, ...Zi, ...ts, ...rs, ...cs, ...Ds };
({ ...Fs, ...ks });
function Bs(r2 = 0) {
return globalThis.Buffer != null && globalThis.Buffer.allocUnsafe != null ? globalThis.Buffer.allocUnsafe(r2) : new Uint8Array(r2);
}
function Fe$1(r2, e, t, i) {
return { name: r2, prefix: e, encoder: { name: r2, prefix: e, encode: t }, decoder: { decode: i } };
}
const Me = Fe$1("utf8", "u", (r2) => "u" + new TextDecoder("utf8").decode(r2), (r2) => new TextEncoder().encode(r2.substring(1))), re = Fe$1("ascii", "a", (r2) => {
let e = "a";
for (let t = 0; t < r2.length; t++)
e += String.fromCharCode(r2[t]);
return e;
}, (r2) => {
r2 = r2.substring(1);
const e = Bs(r2.length);
for (let t = 0; t < r2.length; t++)
e[t] = r2.charCodeAt(t);
return e;
}), js = { utf8: Me, "utf-8": Me, hex: Le.base16, latin1: re, ascii: re, binary: re, ...Le };
function Vs(r2, e = "utf8") {
const t = js[e];
if (!t)
throw new Error(`Unsupported encoding "${e}"`);
return (e === "utf8" || e === "utf-8") && globalThis.Buffer != null && globalThis.Buffer.from != null ? globalThis.Buffer.from(r2, "utf8") : t.decoder.decode(`${t.prefix}${r2}`);
}
const ne = "wc", Ke = 2, B = "core", P$1 = `${ne}@${2}:${B}:`, $e = { name: B, logger: "error" }, ke$1 = { database: ":memory:" }, Be$1 = "crypto", ae = "client_ed25519_seed", je = cjs$5.ONE_DAY, Ve = "keychain", qe = "0.3", Ge = "messages", Ye$1 = "0.3", Je$1 = cjs$5.SIX_HOURS, He$1 = "publisher", Xe$1 = "irn", We = "error", Ze$1 = "wss://relay.walletconnect.com", Qe$1 = "relayer", D$1 = { message: "relayer_message", connect: "relayer_connect", disconnect: "relayer_disconnect", error: "relayer_error", connection_stalled: "relayer_connection_stalled", transport_closed: "relayer_transport_closed", publish: "relayer_publish" }, et = "_subscription", M = { payload: "payload", connect: "connect", disconnect: "disconnect", error: "error" }, oe = cjs$5.ONE_SECOND, tt = "2.3.3", it = "0.3", I$1 = { created: "subscription_created", deleted: "subscription_deleted", expired: "subscription_expired", disabled: "subscription_disabled", sync: "subscription_sync", resubscribed: "subscription_resubscribed" }, st = "subscription", rt = "0.3", nt = cjs$5.FIVE_SECONDS * 1e3, at = "pairing", ot = "0.3", N$1 = { wc_pairingDelete: { req: { ttl: cjs$5.ONE_DAY, prompt: false, tag: 1e3 }, res: { ttl: cjs$5.ONE_DAY, prompt: false, tag: 1001 } }, wc_pairingPing: { req: { ttl: cjs$5.THIRTY_SECONDS, prompt: false, tag: 1002 }, res: { ttl: cjs$5.THIRTY_SECONDS, prompt: false, tag: 1003 } }, unregistered_method: { req: { ttl: cjs$5.ONE_DAY, prompt: false, tag: 0 }, res: { ttl: cjs$5.ONE_DAY, prompt: false, tag: 0 } } }, C$1 = { created: "history_created", updated: "history_updated", deleted: "history_deleted", sync: "history_sync" }, ht = "history", ct = "0.3", ut = "expirer", m = { created: "expirer_created", deleted: "expirer_deleted", expired: "expirer_expired", sync: "expirer_sync" }, lt = "0.3";
class dt {
constructor(e, t) {
this.core = e, this.logger = t, this.keychain = /* @__PURE__ */ new Map(), this.name = Ve, this.version = qe, this.initialized = false, this.storagePrefix = P$1, this.init = async () => {
if (!this.initialized) {
const i = await this.getKeyChain();
typeof i < "u" && (this.keychain = i), this.initialized = true;
}
}, this.has = (i) => (this.isInitialized(), this.keychain.has(i)), this.set = async (i, s) => {
this.isInitialized(), this.keychain.set(i, s), await this.persist();
}, this.get = (i) => {
this.isInitialized();
const s = this.keychain.get(i);
if (typeof s > "u") {
const { message: n2 } = y$2("NO_MATCHING_KEY", `${this.name}: ${i}`);
throw new Error(n2);
}
return s;
}, this.del = async (i) => {
this.isInitialized(), this.keychain.delete(i), await this.persist();
}, this.core = e, this.logger = cjs$4.generateChildLogger(t, this.name);
}
get context() {
return cjs$4.getLoggerContext(this.logger);
}
get storageKey() {
return this.storagePrefix + this.version + "//" + this.name;
}
async setKeyChain(e) {
await this.core.storage.setItem(this.storageKey, Un(e));
}
async getKeyChain() {
const e = await this.core.storage.getItem(this.storageKey);
return typeof e < "u" ? Rn(e) : void 0;
}
async persist() {
await this.setKeyChain(this.keychain);
}
isInitialized() {
if (!this.initialized) {
const { message: e } = y$2("NOT_INITIALIZED", this.name);
throw new Error(e);
}
}
}
class gt {
constructor(e, t, i) {
this.core = e, this.logger = t, this.name = Be$1, this.initialized = false, this.init = async () => {
this.initialized || (await this.keychain.init(), this.initialized = true);
}, this.hasKeys = (s) => (this.isInitialized(), this.keychain.has(s)), this.getClientId = async () => {
this.isInitialized();
const s = await this.getClientSeed(), n2 = generateKeyPair(s);
return encodeIss(n2.publicKey);
}, this.generateKeyPair = () => {
this.isInitialized();
const s = cn();
return this.setPrivateKey(s.publicKey, s.privateKey);
}, this.signJWT = async (s) => {
this.isInitialized();
const n2 = await this.getClientSeed(), a3 = generateKeyPair(n2), o2 = an(), h3 = je;
return await signJWT(o2, s, h3, a3);
}, this.generateSharedKey = (s, n2, a3) => {
this.isInitialized();
const o2 = this.getPrivateKey(s), h3 = un(o2, n2);
return this.setSymKey(h3, a3);
}, this.setSymKey = async (s, n2) => {
this.isInitialized();
const a3 = n2 || dn(s);
return await this.keychain.set(a3, s), a3;
}, this.deleteKeyPair = async (s) => {
this.isInitialized(), await this.keychain.del(s);
}, this.deleteSymKey = async (s) => {
this.isInitialized(), await this.keychain.del(s);
}, this.encode = async (s, n2, a3) => {
this.isInitialized();
const o2 = pe(a3), h3 = safeJsonStringify$1(n2);
if (yn(o2)) {
const U2 = o2.senderPublicKey, q2 = o2.receiverPublicKey;
s = await this.generateSharedKey(U2, q2);
}
const d2 = this.getSymKey(s), { type: l2, senderPublicKey: g2 } = o2;
return fn({ type: l2, symKey: d2, message: h3, senderPublicKey: g2 });
}, this.decode = async (s, n2, a3) => {
this.isInitialized();
const o2 = mn(n2, a3);
if (yn(o2)) {
const l2 = o2.receiverPublicKey, g2 = o2.senderPublicKey;
s = await this.generateSharedKey(l2, g2);
}
const h3 = this.getSymKey(s), d2 = pn({ symKey: h3, encoded: n2 });
return safeJsonParse$1(d2);
}, this.core = e, this.logger = cjs$4.generateChildLogger(t, this.name), this.keychain = i || new dt(this.core, this.logger);
}
get context() {
return cjs$4.getLoggerContext(this.logger);
}
getPayloadType(e) {
const t = L$1(e);
return S$1(t.type);
}
async setPrivateKey(e, t) {
return await this.keychain.set(e, t), e;
}
getPrivateKey(e) {
return this.keychain.get(e);
}
async getClientSeed() {
let e = "";
try {
e = this.keychain.get(ae);
} catch {
e = an(), await this.keychain.set(ae, e);
}
return Vs(e, "base16");
}
getSymKey(e) {
return this.keychain.get(e);
}
isInitialized() {
if (!this.initialized) {
const { message: e } = y$2("NOT_INITIALIZED", this.name);
throw new Error(e);
}
}
}
class pt extends a$1 {
constructor(e, t) {
super(e, t), this.logger = e, this.core = t, this.messages = /* @__PURE__ */ new Map(), this.name = Ge, this.version = Ye$1, this.initialized = false, this.storagePrefix = P$1, this.init = async () => {
if (!this.initialized) {
this.logger.trace("Initialized");
try {
const i = await this.getRelayerMessages();
typeof i < "u" && (this.messages = i), this.logger.debug(`Successfully Restored records for ${this.name}`), this.logger.trace({ type: "method", method: "restore", size: this.messages.size });
} catch (i) {
this.logger.debug(`Failed to Restore records for ${this.name}`), this.logger.error(i);
} finally {
this.initialized = true;
}
}
}, this.set = async (i, s) => {
this.isInitialized();
const n2 = ln(s);
let a3 = this.messages.get(i);
return typeof a3 > "u" && (a3 = {}), typeof a3[n2] < "u" || (a3[n2] = s, this.messages.set(i, a3), await this.persist()), n2;
}, this.get = (i) => {
this.isInitialized();
let s = this.messages.get(i);
return typeof s > "u" && (s = {}), s;
}, this.has = (i, s) => {
this.isInitialized();
const n2 = this.get(i), a3 = ln(s);
return typeof n2[a3] < "u";
}, this.del = async (i) => {
this.isInitialized(), this.messages.delete(i), await this.persist();
}, this.logger = cjs$4.generateChildLogger(e, this.name), this.core = t;
}
get context() {
return cjs$4.getLoggerContext(this.logger);
}
get storageKey() {
return this.storagePrefix + this.version + "//" + this.name;
}
async setRelayerMessages(e) {
await this.core.storage.setItem(this.storageKey, Un(e));
}
async getRelayerMessages() {
const e = await this.core.storage.getItem(this.storageKey);
return typeof e < "u" ? Rn(e) : void 0;
}
async persist() {
await this.setRelayerMessages(this.messages);
}
isInitialized() {
if (!this.initialized) {
const { message: e } = y$2("NOT_INITIALIZED", this.name);
throw new Error(e);
}
}
}
class Hs extends u$1 {
constructor(e, t) {
super(e, t), this.relayer = e, this.logger = t, this.events = new eventsExports.EventEmitter(), this.name = He$1, this.queue = /* @__PURE__ */ new Map(), this.publishTimeout = 1e4, this.publish = async (i, s, n2) => {
this.logger.debug("Publishing Payload"), this.logger.trace({ type: "method", method: "publish", params: { topic: i, message: s, opts: n2 } });
try {
const a3 = (n2 == null ? void 0 : n2.ttl) || Je$1, o2 = Ln(n2), h3 = (n2 == null ? void 0 : n2.prompt) || false, d2 = (n2 == null ? void 0 : n2.tag) || 0, l2 = { topic: i, message: s, opts: { ttl: a3, relay: o2, prompt: h3, tag: d2 } }, g2 = ln(s);
this.queue.set(g2, l2);
try {
await await jn(this.rpcPublish(i, s, a3, o2, h3, d2), this.publishTimeout), this.relayer.events.emit(D$1.publish, l2);
} catch {
this.logger.debug("Publishing Payload stalled"), this.relayer.events.emit(D$1.connection_stalled);
return;
}
this.onPublish(g2, l2), this.logger.debug("Successfully Published Payload"), this.logger.trace({ type: "method", method: "publish", params: { topic: i, message: s, opts: n2 } });
} catch (a3) {
throw this.logger.debug("Failed to Publish Payload"), this.logger.error(a3), a3;
}
}, this.on = (i, s) => {
this.events.on(i, s);
}, this.once = (i, s) => {
this.events.once(i, s);
}, this.off = (i, s) => {
this.events.off(i, s);
}, this.removeListener = (i, s) => {
this.events.removeListener(i, s);
}, this.relayer = e, this.logger = cjs$4.generateChildLogger(t, this.name), this.registerEventListeners();
}
get context() {
return cjs$4.getLoggerContext(this.logger);
}
rpcPublish(e, t, i, s, n2, a3) {
var o2, h3, d2, l2;
const g2 = { method: xn(s.protocol).publish, params: { topic: e, message: t, ttl: i, prompt: n2, tag: a3 } };
return E$1((o2 = g2.params) == null ? void 0 : o2.prompt) && ((h3 = g2.params) == null || delete h3.prompt), E$1((d2 = g2.params) == null ? void 0 : d2.tag) && ((l2 = g2.params) == null || delete l2.tag), this.logger.debug("Outgoing Relay Payload"), this.logger.trace({ type: "message", direction: "outgoing", request: g2 }), this.relayer.provider.request(g2);
}
onPublish(e, t) {
this.queue.delete(e);
}
checkQueue() {
this.queue.forEach(async (e) => {
const { topic: t, message: i, opts: s } = e;
await this.publish(t, i, s);
});
}
registerEventListeners() {
this.relayer.core.heartbeat.on(cjs$6.HEARTBEAT_EVENTS.pulse, () => {
this.checkQueue();
});
}
}
class Xs {
constructor() {
this.map = /* @__PURE__ */ new Map(), this.set = (e, t) => {
const i = this.get(e);
this.exists(e, t) || this.map.set(e, [...i, t]);
}, this.get = (e) => this.map.get(e) || [], this.exists = (e, t) => this.get(e).includes(t), this.delete = (e, t) => {
if (typeof t > "u") {
this.map.delete(e);
return;
}
if (!this.map.has(e))
return;
const i = this.get(e);
if (!this.exists(e, t))
return;
const s = i.filter((n2) => n2 !== t);
if (!s.length) {
this.map.delete(e);
return;
}
this.map.set(e, s);
}, this.clear = () => {
this.map.clear();
};
}
get topics() {
return Array.from(this.map.keys());
}
}
var Ws = Object.defineProperty, Zs = Object.defineProperties, Qs = Object.getOwnPropertyDescriptors, Dt = Object.getOwnPropertySymbols, er = Object.prototype.hasOwnProperty, tr = Object.prototype.propertyIsEnumerable, yt = (r2, e, t) => e in r2 ? Ws(r2, e, { enumerable: true, configurable: true, writable: true, value: t }) : r2[e] = t, j$2 = (r2, e) => {
for (var t in e || (e = {}))
er.call(e, t) && yt(r2, t, e[t]);
if (Dt)
for (var t of Dt(e))
tr.call(e, t) && yt(r2, t, e[t]);
return r2;
}, he = (r2, e) => Zs(r2, Qs(e));
class bt extends x {
constructor(e, t) {
super(e, t), this.relayer = e, this.logger = t, this.subscriptions = /* @__PURE__ */ new Map(), this.topicMap = new Xs(), this.events = new eventsExports.EventEmitter(), this.name = st, this.version = rt, this.pending = /* @__PURE__ */ new Map(), this.cached = [], this.initialized = false, this.pendingSubscriptionWatchLabel = "pending_sub_watch_label", this.pendingSubInterval = 20, this.storagePrefix = P$1, this.subscribeTimeout = 1e4, this.init = async () => {
this.initialized || (this.logger.trace("Initialized"), await this.restart(), this.registerEventListeners(), this.onEnable());
}, this.subscribe = async (i, s) => {
this.isInitialized(), this.logger.debug("Subscribing Topic"), this.logger.trace({ type: "method", method: "subscribe", params: { topic: i, opts: s } });
try {
const n2 = Ln(s), a3 = { topic: i, relay: n2 };
this.pending.set(i, a3);
const o2 = await this.rpcSubscribe(i, n2);
return this.onSubscribe(o2, a3), this.logger.debug("Successfully Subscribed Topic"), this.logger.trace({ type: "method", method: "subscribe", params: { topic: i, opts: s } }), o2;
} catch (n2) {
throw this.logger.debug("Failed to Subscribe Topic"), this.logger.error(n2), n2;
}
}, this.unsubscribe = async (i, s) => {
this.isInitialized(), typeof (s == null ? void 0 : s.id) < "u" ? await this.unsubscribeById(i, s.id, s) : await this.unsubscribeByTopic(i, s);
}, this.isSubscribed = async (i) => this.topics.includes(i) ? true : await new Promise((s, n2) => {
const a3 = new cjs$5.Watch();
a3.start(this.pendingSubscriptionWatchLabel);
const o2 = setInterval(() => {
!this.pending.has(i) && this.topics.includes(i) && (clearInterval(o2), a3.stop(this.pendingSubscriptionWatchLabel), s(true)), a3.elapsed(this.pendingSubscriptionWatchLabel) >= nt && (clearInterval(o2), a3.stop(this.pendingSubscriptionWatchLabel), n2(false));
}, this.pendingSubInterval);
}), this.on = (i, s) => {
this.events.on(i, s);
}, this.once = (i, s) => {
this.events.once(i, s);
}, this.off = (i, s) => {
this.events.off(i, s);
}, this.removeListener = (i, s) => {
this.events.removeListener(i, s);
}, this.restart = async () => {
await this.restore(), await this.reset();
}, this.relayer = e, this.logger = cjs$4.generateChildLogger(t, this.name);
}
get context() {
return cjs$4.getLoggerContext(this.logger);
}
get storageKey() {
return this.storagePrefix + this.version + "//" + this.name;
}
get length() {
return this.subscriptions.size;
}
get ids() {
return Array.from(this.subscriptions.keys());
}
get values() {
return Array.from(this.subscriptions.values());
}
get topics() {
return this.topicMap.topics;
}
hasSubscription(e, t) {
let i = false;
try {
i = this.getSubscription(e).topic === t;
} catch {
}
return i;
}
onEnable() {
this.cached = [], this.initialized = true;
}
onDisable() {
this.cached = this.values, this.subscriptions.clear(), this.topicMap.clear(), this.initialized = false;
}
async unsubscribeByTopic(e, t) {
const i = this.topicMap.get(e);
await Promise.all(i.map(async (s) => await this.unsubscribeById(e, s, t)));
}
async unsubscribeById(e, t, i) {
this.logger.debug("Unsubscribing Topic"), this.logger.trace({ type: "method", method: "unsubscribe", params: { topic: e, id: t, opts: i } });
try {
const s = Ln(i);
await this.rpcUnsubscribe(e, t, s);
const n2 = h$2("USER_DISCONNECTED", `${this.name}, ${e}`);
await this.onUnsubscribe(e, t, n2), this.logger.debug("Successfully Unsubscribed Topic"), this.logger.trace({ type: "method", method: "unsubscribe", params: { topic: e, id: t, opts: i } });
} catch (s) {
throw this.logger.debug("Failed to Unsubscribe Topic"), this.logger.error(s), s;
}
}
async rpcSubscribe(e, t) {
const i = { method: xn(t.protocol).subscribe, params: { topic: e } };
this.logger.debug("Outgoing Relay Payload"), this.logger.trace({ type: "payload", direction: "outgoing", request: i });
let s;
try {
s = await await jn(this.relayer.provider.request(i), this.subscribeTimeout);
} catch {
this.logger.debug("Outgoing Relay Payload stalled"), this.relayer.events.emit(D$1.connection_stalled);
}
return s;
}
rpcUnsubscribe(e, t, i) {
const s = { method: xn(i.protocol).unsubscribe, params: { topic: e, id: t } };
return this.logger.debug("Outgoing Relay Payload"), this.logger.trace({ type: "payload", direction: "outgoing", request: s }), this.relayer.provider.request(s);
}
onSubscribe(e, t) {
this.setSubscription(e, he(j$2({}, t), { id: e })), this.pending.delete(t.topic);
}
onResubscribe(e, t) {
this.addSubscription(e, he(j$2({}, t), { id: e })), this.pending.delete(t.topic);
}
async onUnsubscribe(e, t, i) {
this.events.removeAllListeners(t), this.hasSubscription(t, e) && this.deleteSubscription(t, i), await this.relayer.messages.del(e);
}
async setRelayerSubscriptions(e) {
await this.relayer.core.storage.setItem(this.storageKey, e);
}
async getRelayerSubscriptions() {
return await this.relayer.core.storage.getItem(this.storageKey);
}
setSubscription(e, t) {
this.subscriptions.has(e) || (this.logger.debug("Setting subscription"), this.logger.trace({ type: "method", method: "setSubscription", id: e, subscription: t }), this.addSubscription(e, t));
}
addSubscription(e, t) {
this.subscriptions.set(e, j$2({}, t)), this.topicMap.set(t.topic, e), this.events.emit(I$1.created, t);
}
getSubscription(e) {
this.logger.debug("Getting subscription"), this.logger.trace({ type: "method", method: "getSubscription", id: e });
const t = this.subscriptions.get(e);
if (!t) {
const { message: i } = y$2("NO_MATCHING_KEY", `${this.name}: ${e}`);
throw new Error(i);
}
return t;
}
deleteSubscription(e, t) {
this.logger.debug("Deleting subscription"), this.logger.trace({ type: "method", method: "deleteSubscription", id: e, reason: t });
const i = this.getSubscription(e);
this.subscriptions.delete(e), this.topicMap.delete(i.topic, e), this.events.emit(I$1.deleted, he(j$2({}, i), { reason: t }));
}
async persist() {
await this.setRelayerSubscriptions(this.values), this.events.emit(I$1.sync);
}
async reset() {
this.cached.length && await Promise.all(this.cached.map(async (e) => await this.resubscribe(e))), this.events.emit(I$1.resubscribed);
}
async restore() {
try {
const e = await this.getRelayerSubscriptions();
if (typeof e > "u" || !e.length)
return;
if (this.subscriptions.size) {
const { message: t } = y$2("RESTORE_WILL_OVERRIDE", this.name);
throw this.logger.error(t), new Error(t);
}
this.cached = e, this.logger.debug(`Successfully Restored subscriptions for ${this.name}`), this.logger.trace({ type: "method", method: "restore", subscriptions: this.values });
} catch (e) {
this.logger.debug(`Failed to Restore subscriptions for ${this.name}`), this.logger.error(e);
}
}
async resubscribe(e) {
if (!this.ids.includes(e.id)) {
const { topic: t, relay: i } = e, s = { topic: t, relay: i };
this.pending.set(s.topic, s);
const n2 = await this.rpcSubscribe(s.topic, s.relay);
this.onResubscribe(n2, s);
}
}
async onConnect() {
await this.restart(), this.onEnable();
}
onDisconnect() {
this.onDisable();
}
checkPending() {
this.relayer.transportExplicitlyClosed || this.pending.forEach(async (e) => {
const t = await this.rpcSubscribe(e.topic, e.relay);
this.onSubscribe(t, e);
});
}
registerEventListeners() {
this.relayer.core.heartbeat.on(cjs$6.HEARTBEAT_EVENTS.pulse, () => {
this.checkPending();
}), this.relayer.on(D$1.connect, async () => {
await this.onConnect();
}), this.relayer.on(D$1.disconnect, () => {
this.onDisconnect();
}), this.events.on(I$1.created, async (e) => {
const t = I$1.created;
this.logger.info(`Emitting ${t}`), this.logger.debug({ type: "event", event: t, data: e }), await this.persist();
}), this.events.on(I$1.deleted, async (e) => {
const t = I$1.deleted;
this.logger.info(`Emitting ${t}`), this.logger.debug({ type: "event", event: t, data: e }), await this.persist();
});
}
isInitialized() {
if (!this.initialized) {
const { message: e } = y$2("NOT_INITIALIZED", this.name);
throw new Error(e);
}
}
}
var ir = Object.defineProperty, mt = Object.getOwnPropertySymbols, sr = Object.prototype.hasOwnProperty, rr = Object.prototype.propertyIsEnumerable, Et = (r2, e, t) => e in r2 ? ir(r2, e, { enumerable: true, configurable: true, writable: true, value: t }) : r2[e] = t, nr = (r2, e) => {
for (var t in e || (e = {}))
sr.call(e, t) && Et(r2, t, e[t]);
if (mt)
for (var t of mt(e))
rr.call(e, t) && Et(r2, t, e[t]);
return r2;
};
class ft extends g {
constructor(e) {
super(e), this.protocol = "wc", this.version = 2, this.events = new eventsExports.EventEmitter(), this.name = Qe$1, this.transportExplicitlyClosed = false, this.initialized = false, this.core = e.core, this.logger = typeof e.logger < "u" && typeof e.logger != "string" ? cjs$4.generateChildLogger(e.logger, this.name) : browser$2(cjs$4.getDefaultLoggerOptions({ level: e.logger || We })), this.messages = new pt(this.logger, e.core), this.subscriber = new bt(this, this.logger), this.publisher = new Hs(this, this.logger), this.relayUrl = (e == null ? void 0 : e.relayUrl) || Ze$1, this.projectId = e.projectId, this.provider = {};
}
async init() {
this.logger.trace("Initialized"), this.provider = await this.createProvider(), await Promise.all([this.messages.init(), this.transportOpen(), this.subscriber.init()]), this.registerEventListeners(), this.initialized = true;
}
get context() {
return cjs$4.getLoggerContext(this.logger);
}
get connected() {
return this.provider.connection.connected;
}
get connecting() {
return this.provider.connection.connecting;
}
async publish(e, t, i) {
this.isInitialized(), await this.publisher.publish(e, t, i), await this.recordMessageEvent({ topic: e, message: t });
}
async subscribe(e, t) {
this.isInitialized();
let i = "";
return await Promise.all([new Promise((s) => {
this.subscriber.once(I$1.created, (n2) => {
n2.topic === e && s();
});
}), new Promise(async (s) => {
i = await this.subscriber.subscribe(e, t), s();
})]), i;
}
async unsubscribe(e, t) {
this.isInitialized(), await this.subscriber.unsubscribe(e, t);
}
on(e, t) {
this.events.on(e, t);
}
once(e, t) {
this.events.once(e, t);
}
off(e, t) {
this.events.off(e, t);
}
removeListener(e, t) {
this.events.removeListener(e, t);
}
async transportClose() {
this.transportExplicitlyClosed = true, this.connected && (await this.provider.disconnect(), this.events.emit(D$1.transport_closed));
}
async transportOpen(e) {
this.relayUrl = e || this.relayUrl, this.transportExplicitlyClosed = false;
try {
await Promise.all([new Promise((t) => {
this.initialized || t(), this.subscriber.once(I$1.resubscribed, () => {
t();
});
}), await Promise.race([this.provider.connect(), new Promise((t, i) => this.once(D$1.transport_closed, () => {
i(new Error("closeTransport called before connection was established"));
}))])]);
} catch (t) {
const i = t;
if (!/socket hang up/i.test(i.message))
throw new Error(i.message);
this.logger.error(i), this.events.emit(D$1.transport_closed);
}
}
async restartTransport(e) {
await this.transportClose(), await new Promise((t) => setTimeout(t, oe)), await this.transportOpen(e);
}
async createProvider() {
const e = await this.core.crypto.signJWT(this.relayUrl);
return new JsonRpcProvider(new WsConnection(Sn({ sdkVersion: tt, protocol: this.protocol, version: this.version, relayUrl: this.relayUrl, projectId: this.projectId, auth: e })));
}
async recordMessageEvent(e) {
const { topic: t, message: i } = e;
await this.messages.set(t, i);
}
async shouldIgnoreMessageEvent(e) {
const { topic: t, message: i } = e;
return await this.subscriber.isSubscribed(t) ? this.messages.has(t, i) : true;
}
async onProviderPayload(e) {
if (this.logger.debug("Incoming Relay Payload"), this.logger.trace({ type: "payload", direction: "incoming", payload: e }), isJsonRpcRequest(e)) {
if (!e.method.endsWith(et))
return;
const t = e.params, { topic: i, message: s } = t.data, n2 = { topic: i, message: s };
this.logger.debug("Emitting Relayer Payload"), this.logger.trace(nr({ type: "event", event: t.id }, n2)), this.events.emit(t.id, n2), await this.acknowledgePayload(e), await this.onMessageEvent(n2);
}
}
async onMessageEvent(e) {
await this.shouldIgnoreMessageEvent(e) || (this.events.emit(D$1.message, e), await this.recordMessageEvent(e));
}
async acknowledgePayload(e) {
const t = formatJsonRpcResult(e.id, true);
await this.provider.connection.send(t);
}
registerEventListeners() {
this.provider.on(M.payload, (e) => this.onProviderPayload(e)), this.provider.on(M.connect, () => {
this.events.emit(D$1.connect);
}), this.provider.on(M.disconnect, () => {
this.events.emit(D$1.disconnect), this.attemptToReconnect();
}), this.provider.on(M.error, (e) => this.events.emit(D$1.error, e)), this.events.on(D$1.connection_stalled, async () => {
await this.restartTransport();
});
}
attemptToReconnect() {
this.transportExplicitlyClosed || setTimeout(async () => {
await this.transportOpen();
}, cjs$5.toMiliseconds(oe));
}
isInitialized() {
if (!this.initialized) {
const { message: e } = y$2("NOT_INITIALIZED", this.name);
throw new Error(e);
}
}
}
var ar = Object.defineProperty, wt = Object.getOwnPropertySymbols, or = Object.prototype.hasOwnProperty, hr = Object.prototype.propertyIsEnumerable, vt = (r2, e, t) => e in r2 ? ar(r2, e, { enumerable: true, configurable: true, writable: true, value: t }) : r2[e] = t, It = (r2, e) => {
for (var t in e || (e = {}))
or.call(e, t) && vt(r2, t, e[t]);
if (wt)
for (var t of wt(e))
hr.call(e, t) && vt(r2, t, e[t]);
return r2;
};
class Ct extends p$2 {
constructor(e, t, i, s = P$1, n2 = void 0) {
super(e, t, i, s), this.core = e, this.logger = t, this.name = i, this.map = /* @__PURE__ */ new Map(), this.version = it, this.cached = [], this.initialized = false, this.storagePrefix = P$1, this.init = async () => {
this.initialized || (this.logger.trace("Initialized"), await this.restore(), this.cached.forEach((a3) => {
Xn(a3) ? this.map.set(a3.id, a3) : et$1(a3) ? this.map.set(a3.topic, a3) : this.getKey && a3 !== null && !E$1(a3) && this.map.set(this.getKey(a3), a3);
}), this.cached = [], this.initialized = true);
}, this.set = async (a3, o2) => {
this.isInitialized(), this.map.has(a3) ? await this.update(a3, o2) : (this.logger.debug("Setting value"), this.logger.trace({ type: "method", method: "set", key: a3, value: o2 }), this.map.set(a3, o2), await this.persist());
}, this.get = (a3) => (this.isInitialized(), this.logger.debug("Getting value"), this.logger.trace({ type: "method", method: "get", key: a3 }), this.getData(a3)), this.getAll = (a3) => (this.isInitialized(), a3 ? this.values.filter((o2) => Object.keys(a3).every((h3) => lodash_isequalExports(o2[h3], a3[h3]))) : this.values), this.update = async (a3, o2) => {
this.isInitialized(), this.logger.debug("Updating value"), this.logger.trace({ type: "method", method: "update", key: a3, update: o2 });
const h3 = It(It({}, this.getData(a3)), o2);
this.map.set(a3, h3), await this.persist();
}, this.delete = async (a3, o2) => {
this.isInitialized(), this.map.has(a3) && (this.logger.debug("Deleting value"), this.logger.trace({ type: "method", method: "delete", key: a3, reason: o2 }), this.map.delete(a3), await this.persist());
}, this.logger = cjs$4.generateChildLogger(t, this.name), this.storagePrefix = s, this.getKey = n2;
}
get context() {
return cjs$4.getLoggerContext(this.logger);
}
get storageKey() {
return this.storagePrefix + this.version + "//" + this.name;
}
get length() {
return this.map.size;
}
get keys() {
return Array.from(this.map.keys());
}
get values() {
return Array.from(this.map.values());
}
async setDataStore(e) {
await this.core.storage.setItem(this.storageKey, e);
}
async getDataStore() {
return await this.core.storage.getItem(this.storageKey);
}
getData(e) {
const t = this.map.get(e);
if (!t) {
const { message: i } = y$2("NO_MATCHING_KEY", `${this.name}: ${e}`);
throw this.logger.error(i), new Error(i);
}
return t;
}
async persist() {
await this.setDataStore(this.values);
}
async restore() {
try {
const e = await this.getDataStore();
if (typeof e > "u" || !e.length)
return;
if (this.map.size) {
const { message: t } = y$2("RESTORE_WILL_OVERRIDE", this.name);
throw this.logger.error(t), new Error(t);
}
this.cached = e, this.logger.debug(`Successfully Restored value for ${this.name}`), this.logger.trace({ type: "method", method: "restore", value: this.values });
} catch (e) {
this.logger.debug(`Failed to Restore value for ${this.name}`), this.logger.error(e);
}
}
isInitialized() {
if (!this.initialized) {
const { message: e } = y$2("NOT_INITIALIZED", this.name);
throw new Error(e);
}
}
}
class _t {
constructor(e, t) {
this.core = e, this.logger = t, this.name = at, this.version = ot, this.events = new eventsExports(), this.initialized = false, this.storagePrefix = P$1, this.ignoredPayloadTypes = [N$2], this.registeredMethods = [], this.init = async () => {
this.initialized || (await this.pairings.init(), await this.cleanup(), this.registerRelayerEvents(), this.registerExpirerEvents(), this.initialized = true, this.logger.trace("Initialized"));
}, this.register = ({ methods: i }) => {
this.isInitialized(), this.registeredMethods = [.../* @__PURE__ */ new Set([...this.registeredMethods, ...i])];
}, this.create = async () => {
this.isInitialized();
const i = an(), s = await this.core.crypto.setSymKey(i), n2 = Cn(cjs$5.FIVE_MINUTES), a3 = { protocol: Xe$1 }, o2 = { topic: s, expiry: n2, relay: a3, active: false }, h3 = zn({ protocol: this.core.protocol, version: this.core.version, topic: s, symKey: i, relay: a3 });
return await this.pairings.set(s, o2), await this.core.relayer.subscribe(s), this.core.expirer.set(s, n2), { topic: s, uri: h3 };
}, this.pair = async (i) => {
this.isInitialized(), this.isValidPair(i);
const { topic: s, symKey: n2, relay: a3 } = Gn(i.uri), o2 = Cn(cjs$5.FIVE_MINUTES), h3 = { topic: s, relay: a3, expiry: o2, active: false };
return await this.pairings.set(s, h3), await this.core.crypto.setSymKey(n2, s), await this.core.relayer.subscribe(s, { relay: a3 }), this.core.expirer.set(s, o2), i.activatePairing && await this.activate({ topic: s }), h3;
}, this.activate = async ({ topic: i }) => {
this.isInitialized();
const s = Cn(cjs$5.THIRTY_DAYS);
await this.pairings.update(i, { active: true, expiry: s }), this.core.expirer.set(i, s);
}, this.ping = async (i) => {
this.isInitialized(), await this.isValidPing(i);
const { topic: s } = i;
if (this.pairings.keys.includes(s)) {
const n2 = await this.sendRequest(s, "wc_pairingPing", {}), { done: a3, resolve: o2, reject: h3 } = $n();
this.events.once(kn("pairing_ping", n2), ({ error: d2 }) => {
d2 ? h3(d2) : o2();
}), await a3();
}
}, this.updateExpiry = async ({ topic: i, expiry: s }) => {
this.isInitialized(), await this.pairings.update(i, { expiry: s });
}, this.updateMetadata = async ({ topic: i, metadata: s }) => {
this.isInitialized(), await this.pairings.update(i, { peerMetadata: s });
}, this.getPairings = () => (this.isInitialized(), this.pairings.values), this.disconnect = async (i) => {
this.isInitialized(), await this.isValidDisconnect(i);
const { topic: s } = i;
this.pairings.keys.includes(s) && (await this.sendRequest(s, "wc_pairingDelete", h$2("USER_DISCONNECTED")), await this.deletePairing(s));
}, this.sendRequest = async (i, s, n2) => {
const a3 = formatJsonRpcRequest(s, n2), o2 = await this.core.crypto.encode(i, a3), h3 = N$1[s].req;
return this.core.history.set(i, a3), await this.core.relayer.publish(i, o2, h3), a3.id;
}, this.sendResult = async (i, s, n2) => {
const a3 = formatJsonRpcResult(i, n2), o2 = await this.core.crypto.encode(s, a3), h3 = await this.core.history.get(s, i), d2 = N$1[h3.request.method].res;
await this.core.relayer.publish(s, o2, d2), await this.core.history.resolve(a3);
}, this.sendError = async (i, s, n2) => {
const a3 = formatJsonRpcError(i, n2), o2 = await this.core.crypto.encode(s, a3), h3 = await this.core.history.get(s, i), d2 = N$1[h3.request.method] ? N$1[h3.request.method].res : N$1.unregistered_method.res;
await this.core.relayer.publish(s, o2, d2), await this.core.history.resolve(a3);
}, this.deletePairing = async (i, s) => {
await this.core.relayer.unsubscribe(i), await Promise.all([this.pairings.delete(i, h$2("USER_DISCONNECTED")), this.core.crypto.deleteSymKey(i), s ? Promise.resolve() : this.core.expirer.del(i)]);
}, this.cleanup = async () => {
const i = this.pairings.getAll().filter((s) => Dn(s.expiry));
await Promise.all(i.map((s) => this.deletePairing(s.topic)));
}, this.onRelayEventRequest = (i) => {
const { topic: s, payload: n2 } = i, a3 = n2.method;
if (this.pairings.keys.includes(s))
switch (a3) {
case "wc_pairingPing":
return this.onPairingPingRequest(s, n2);
case "wc_pairingDelete":
return this.onPairingDeleteRequest(s, n2);
default:
return this.onUnknownRpcMethodRequest(s, n2);
}
}, this.onRelayEventResponse = async (i) => {
const { topic: s, payload: n2 } = i, a3 = (await this.core.history.get(s, n2.id)).request.method;
if (this.pairings.keys.includes(s))
switch (a3) {
case "wc_pairingPing":
return this.onPairingPingResponse(s, n2);
default:
return this.onUnknownRpcMethodResponse(a3);
}
}, this.onPairingPingRequest = async (i, s) => {
const { id: n2 } = s;
try {
this.isValidPing({ topic: i }), await this.sendResult(n2, i, true), this.events.emit("pairing_ping", { id: n2, topic: i });
} catch (a3) {
await this.sendError(n2, i, a3), this.logger.error(a3);
}
}, this.onPairingPingResponse = (i, s) => {
const { id: n2 } = s;
setTimeout(() => {
isJsonRpcResult(s) ? this.events.emit(kn("pairing_ping", n2), {}) : isJsonRpcError(s) && this.events.emit(kn("pairing_ping", n2), { error: s.error });
}, 500);
}, this.onPairingDeleteRequest = async (i, s) => {
const { id: n2 } = s;
try {
this.isValidDisconnect({ topic: i }), await this.sendResult(n2, i, true), await this.deletePairing(i), this.events.emit("pairing_delete", { id: n2, topic: i });
} catch (a3) {
await this.sendError(n2, i, a3), this.logger.error(a3);
}
}, this.onUnknownRpcMethodRequest = async (i, s) => {
const { id: n2, method: a3 } = s;
try {
if (this.registeredMethods.includes(a3))
return;
const o2 = h$2("WC_METHOD_UNSUPPORTED", a3);
await this.sendError(n2, i, o2), this.logger.error(o2);
} catch (o2) {
await this.sendError(n2, i, o2), this.logger.error(o2);
}
}, this.onUnknownRpcMethodResponse = (i) => {
this.registeredMethods.includes(i) || this.logger.error(h$2("WC_METHOD_UNSUPPORTED", i));
}, this.isValidPair = (i) => {
if (!st$1(i)) {
const { message: s } = y$2("MISSING_OR_INVALID", `pair() params: ${i}`);
throw new Error(s);
}
if (!Zn(i.uri)) {
const { message: s } = y$2("MISSING_OR_INVALID", `pair() uri: ${i.uri}`);
throw new Error(s);
}
}, this.isValidPing = async (i) => {
if (!st$1(i)) {
const { message: n2 } = y$2("MISSING_OR_INVALID", `ping() params: ${i}`);
throw new Error(n2);
}
const { topic: s } = i;
await this.isValidPairingTopic(s);
}, this.isValidDisconnect = async (i) => {
if (!st$1(i)) {
const { message: n2 } = y$2("MISSING_OR_INVALID", `disconnect() params: ${i}`);
throw new Error(n2);
}
const { topic: s } = i;
await this.isValidPairingTopic(s);
}, this.isValidPairingTopic = async (i) => {
if (!a2(i, false)) {
const { message: s } = y$2("MISSING_OR_INVALID", `pairing topic should be a string: ${i}`);
throw new Error(s);
}
if (!this.pairings.keys.includes(i)) {
const { message: s } = y$2("NO_MATCHING_KEY", `pairing topic doesn't exist: ${i}`);
throw new Error(s);
}
if (Dn(this.pairings.get(i).expiry)) {
await this.deletePairing(i);
const { message: s } = y$2("EXPIRED", `pairing topic: ${i}`);
throw new Error(s);
}
}, this.core = e, this.logger = cjs$4.generateChildLogger(t, this.name), this.pairings = new Ct(this.core, this.logger, this.name, this.storagePrefix);
}
get context() {
return cjs$4.getLoggerContext(this.logger);
}
isInitialized() {
if (!this.initialized) {
const { message: e } = y$2("NOT_INITIALIZED", this.name);
throw new Error(e);
}
}
registerRelayerEvents() {
this.core.relayer.on(D$1.message, async (e) => {
const { topic: t, message: i } = e;
if (this.ignoredPayloadTypes.includes(this.core.crypto.getPayloadType(i)))
return;
const s = await this.core.crypto.decode(t, i);
isJsonRpcRequest(s) ? (this.core.history.set(t, s), this.onRelayEventRequest({ topic: t, payload: s })) : isJsonRpcResponse(s) && (await this.core.history.resolve(s), this.onRelayEventResponse({ topic: t, payload: s }));
});
}
registerExpirerEvents() {
this.core.expirer.on(m.expired, async (e) => {
const { topic: t } = Kn(e.target);
t && this.pairings.keys.includes(t) && (await this.deletePairing(t, true), this.events.emit("pairing_expire", { topic: t }));
});
}
}
class Rt extends h$3 {
constructor(e, t) {
super(e, t), this.core = e, this.logger = t, this.records = /* @__PURE__ */ new Map(), this.events = new eventsExports.EventEmitter(), this.name = ht, this.version = ct, this.cached = [], this.initialized = false, this.storagePrefix = P$1, this.init = async () => {
this.initialized || (this.logger.trace("Initialized"), await this.restore(), this.cached.forEach((i) => this.records.set(i.id, i)), this.cached = [], this.registerEventListeners(), this.initialized = true);
}, this.set = (i, s, n2) => {
if (this.isInitialized(), this.logger.debug("Setting JSON-RPC request history record"), this.logger.trace({ type: "method", method: "set", topic: i, request: s, chainId: n2 }), this.records.has(s.id))
return;
const a3 = { id: s.id, topic: i, request: { method: s.method, params: s.params || null }, chainId: n2 };
this.records.set(a3.id, a3), this.events.emit(C$1.created, a3);
}, this.resolve = async (i) => {
if (this.isInitialized(), this.logger.debug("Updating JSON-RPC response history record"), this.logger.trace({ type: "method", method: "update", response: i }), !this.records.has(i.id))
return;
const s = await this.getRecord(i.id);
typeof s.response > "u" && (s.response = isJsonRpcError(i) ? { error: i.error } : { result: i.result }, this.records.set(s.id, s), this.events.emit(C$1.updated, s));
}, this.get = async (i, s) => (this.isInitialized(), this.logger.debug("Getting record"), this.logger.trace({ type: "method", method: "get", topic: i, id: s }), await this.getRecord(s)), this.delete = (i, s) => {
this.isInitialized(), this.logger.debug("Deleting record"), this.logger.trace({ type: "method", method: "delete", id: s }), this.values.forEach((n2) => {
if (n2.topic === i) {
if (typeof s < "u" && n2.id !== s)
return;
this.records.delete(n2.id), this.events.emit(C$1.deleted, n2);
}
});
}, this.exists = async (i, s) => (this.isInitialized(), this.records.has(s) ? (await this.getRecord(s)).topic === i : false), this.on = (i, s) => {
this.events.on(i, s);
}, this.once = (i, s) => {
this.events.once(i, s);
}, this.off = (i, s) => {
this.events.off(i, s);
}, this.removeListener = (i, s) => {
this.events.removeListener(i, s);
}, this.logger = cjs$4.generateChildLogger(t, this.name);
}
get context() {
return cjs$4.getLoggerContext(this.logger);
}
get storageKey() {
return this.storagePrefix + this.version + "//" + this.name;
}
get size() {
return this.records.size;
}
get keys() {
return Array.from(this.records.keys());
}
get values() {
return Array.from(this.records.values());
}
get pending() {
const e = [];
return this.values.forEach((t) => {
if (typeof t.response < "u")
return;
const i = { topic: t.topic, request: formatJsonRpcRequest(t.request.method, t.request.params, t.id), chainId: t.chainId };
return e.push(i);
}), e;
}
async setJsonRpcRecords(e) {
await this.core.storage.setItem(this.storageKey, e);
}
async getJsonRpcRecords() {
return await this.core.storage.getItem(this.storageKey);
}
getRecord(e) {
this.isInitialized();
const t = this.records.get(e);
if (!t) {
const { message: i } = y$2("NO_MATCHING_KEY", `${this.name}: ${e}`);
throw new Error(i);
}
return t;
}
async persist() {
await this.setJsonRpcRecords(this.values), this.events.emit(C$1.sync);
}
async restore() {
try {
const e = await this.getJsonRpcRecords();
if (typeof e > "u" || !e.length)
return;
if (this.records.size) {
const { message: t } = y$2("RESTORE_WILL_OVERRIDE", this.name);
throw this.logger.error(t), new Error(t);
}
this.cached = e, this.logger.debug(`Successfully Restored records for ${this.name}`), this.logger.trace({ type: "method", method: "restore", records: this.values });
} catch (e) {
this.logger.debug(`Failed to Restore records for ${this.name}`), this.logger.error(e);
}
}
registerEventListeners() {
this.events.on(C$1.created, (e) => {
const t = C$1.created;
this.logger.info(`Emitting ${t}`), this.logger.debug({ type: "event", event: t, record: e }), this.persist();
}), this.events.on(C$1.updated, (e) => {
const t = C$1.updated;
this.logger.info(`Emitting ${t}`), this.logger.debug({ type: "event", event: t, record: e }), this.persist();
}), this.events.on(C$1.deleted, (e) => {
const t = C$1.deleted;
this.logger.info(`Emitting ${t}`), this.logger.debug({ type: "event", event: t, record: e }), this.persist();
});
}
isInitialized() {
if (!this.initialized) {
const { message: e } = y$2("NOT_INITIALIZED", this.name);
throw new Error(e);
}
}
}
class St extends E$2 {
constructor(e, t) {
super(e, t), this.core = e, this.logger = t, this.expirations = /* @__PURE__ */ new Map(), this.events = new eventsExports.EventEmitter(), this.name = ut, this.version = lt, this.cached = [], this.initialized = false, this.storagePrefix = P$1, this.init = async () => {
this.initialized || (this.logger.trace("Initialized"), await this.restore(), this.cached.forEach((i) => this.expirations.set(i.target, i)), this.cached = [], this.registerEventListeners(), this.initialized = true);
}, this.has = (i) => {
try {
const s = this.formatTarget(i);
return typeof this.getExpiration(s) < "u";
} catch {
return false;
}
}, this.set = (i, s) => {
this.isInitialized();
const n2 = this.formatTarget(i), a3 = { target: n2, expiry: s };
this.expirations.set(n2, a3), this.checkExpiry(n2, a3), this.events.emit(m.created, { target: n2, expiration: a3 });
}, this.get = (i) => {
this.isInitialized();
const s = this.formatTarget(i);
return this.getExpiration(s);
}, this.del = (i) => {
if (this.isInitialized(), this.has(i)) {
const s = this.formatTarget(i), n2 = this.getExpiration(s);
this.expirations.delete(s), this.events.emit(m.deleted, { target: s, expiration: n2 });
}
}, this.on = (i, s) => {
this.events.on(i, s);
}, this.once = (i, s) => {
this.events.once(i, s);
}, this.off = (i, s) => {
this.events.off(i, s);
}, this.removeListener = (i, s) => {
this.events.removeListener(i, s);
}, this.logger = cjs$4.generateChildLogger(t, this.name);
}
get context() {
return cjs$4.getLoggerContext(this.logger);
}
get storageKey() {
return this.storagePrefix + this.version + "//" + this.name;
}
get length() {
return this.expirations.size;
}
get keys() {
return Array.from(this.expirations.keys());
}
get values() {
return Array.from(this.expirations.values());
}
formatTarget(e) {
if (typeof e == "string")
return Vn(e);
if (typeof e == "number")
return Mn(e);
const { message: t } = y$2("UNKNOWN_TYPE", `Target type: ${typeof e}`);
throw new Error(t);
}
async setExpirations(e) {
await this.core.storage.setItem(this.storageKey, e);
}
async getExpirations() {
return await this.core.storage.getItem(this.storageKey);
}
async persist() {
await this.setExpirations(this.values), this.events.emit(m.sync);
}
async restore() {
try {
const e = await this.getExpirations();
if (typeof e > "u" || !e.length)
return;
if (this.expirations.size) {
const { message: t } = y$2("RESTORE_WILL_OVERRIDE", this.name);
throw this.logger.error(t), new Error(t);
}
this.cached = e, this.logger.debug(`Successfully Restored expirations for ${this.name}`), this.logger.trace({ type: "method", method: "restore", expirations: this.values });
} catch (e) {
this.logger.debug(`Failed to Restore expirations for ${this.name}`), this.logger.error(e);
}
}
getExpiration(e) {
const t = this.expirations.get(e);
if (!t) {
const { message: i } = y$2("NO_MATCHING_KEY", `${this.name}: ${e}`);
throw this.logger.error(i), new Error(i);
}
return t;
}
checkExpiry(e, t) {
const { expiry: i } = t;
cjs$5.toMiliseconds(i) - Date.now() <= 0 && this.expire(e, t);
}
expire(e, t) {
this.expirations.delete(e), this.events.emit(m.expired, { target: e, expiration: t });
}
checkExpirations() {
this.expirations.forEach((e, t) => this.checkExpiry(t, e));
}
registerEventListeners() {
this.core.heartbeat.on(cjs$6.HEARTBEAT_EVENTS.pulse, () => this.checkExpirations()), this.events.on(m.created, (e) => {
const t = m.created;
this.logger.info(`Emitting ${t}`), this.logger.debug({ type: "event", event: t, data: e }), this.persist();
}), this.events.on(m.expired, (e) => {
const t = m.expired;
this.logger.info(`Emitting ${t}`), this.logger.debug({ type: "event", event: t, data: e }), this.persist();
}), this.events.on(m.deleted, (e) => {
const t = m.deleted;
this.logger.info(`Emitting ${t}`), this.logger.debug({ type: "event", event: t, data: e }), this.persist();
});
}
isInitialized() {
if (!this.initialized) {
const { message: e } = y$2("NOT_INITIALIZED", this.name);
throw new Error(e);
}
}
}
var cr = Object.defineProperty, Tt = Object.getOwnPropertySymbols, ur = Object.prototype.hasOwnProperty, lr = Object.prototype.propertyIsEnumerable, Pt = (r2, e, t) => e in r2 ? cr(r2, e, { enumerable: true, configurable: true, writable: true, value: t }) : r2[e] = t, xt = (r2, e) => {
for (var t in e || (e = {}))
ur.call(e, t) && Pt(r2, t, e[t]);
if (Tt)
for (var t of Tt(e))
lr.call(e, t) && Pt(r2, t, e[t]);
return r2;
};
class V extends n {
constructor(e) {
super(e), this.protocol = ne, this.version = Ke, this.name = B, this.events = new eventsExports.EventEmitter(), this.initialized = false, this.on = (i, s) => this.events.on(i, s), this.once = (i, s) => this.events.once(i, s), this.off = (i, s) => this.events.off(i, s), this.removeListener = (i, s) => this.events.removeListener(i, s), this.projectId = e == null ? void 0 : e.projectId;
const t = typeof (e == null ? void 0 : e.logger) < "u" && typeof (e == null ? void 0 : e.logger) != "string" ? e.logger : browser$2(cjs$4.getDefaultLoggerOptions({ level: (e == null ? void 0 : e.logger) || $e.logger }));
this.logger = cjs$4.generateChildLogger(t, this.name), this.heartbeat = new cjs$6.HeartBeat(), this.crypto = new gt(this, this.logger, e == null ? void 0 : e.keychain), this.history = new Rt(this, this.logger), this.expirer = new St(this, this.logger), this.storage = e != null && e.storage ? e.storage : new _default(xt(xt({}, ke$1), e == null ? void 0 : e.storageOptions)), this.relayer = new ft({ core: this, logger: this.logger, relayUrl: e == null ? void 0 : e.relayUrl, projectId: this.projectId }), this.pairing = new _t(this, this.logger);
}
static async init(e) {
const t = new V(e);
return await t.initialize(), t;
}
get context() {
return cjs$4.getLoggerContext(this.logger);
}
async start() {
this.initialized || await this.initialize();
}
async initialize() {
this.logger.trace("Initialized");
try {
await this.crypto.init(), await this.history.init(), await this.expirer.init(), await this.relayer.init(), await this.heartbeat.init(), await this.pairing.init(), this.initialized = true, this.logger.info("Core Initialization Success");
} catch (e) {
throw this.logger.warn(`Core Initialization Failure at epoch ${Date.now()}`, e), this.logger.error(e.message), e;
}
}
}
const dr = V;
const U$1 = "wc", K = 2, z = "client", A$1 = `${U$1}@${K}:${z}:`, b$1 = { name: z, logger: "error", controller: false, relayUrl: "wss://relay.walletconnect.com" }, Z = "proposal", W = "session", T = cjs$5.SEVEN_DAYS, ee = "engine", P = { wc_sessionPropose: { req: { ttl: cjs$5.FIVE_MINUTES, prompt: true, tag: 1100 }, res: { ttl: cjs$5.FIVE_MINUTES, prompt: false, tag: 1101 } }, wc_sessionSettle: { req: { ttl: cjs$5.FIVE_MINUTES, prompt: false, tag: 1102 }, res: { ttl: cjs$5.FIVE_MINUTES, prompt: false, tag: 1103 } }, wc_sessionUpdate: { req: { ttl: cjs$5.ONE_DAY, prompt: false, tag: 1104 }, res: { ttl: cjs$5.ONE_DAY, prompt: false, tag: 1105 } }, wc_sessionExtend: { req: { ttl: cjs$5.ONE_DAY, prompt: false, tag: 1106 }, res: { ttl: cjs$5.ONE_DAY, prompt: false, tag: 1107 } }, wc_sessionRequest: { req: { ttl: cjs$5.FIVE_MINUTES, prompt: true, tag: 1108 }, res: { ttl: cjs$5.FIVE_MINUTES, prompt: false, tag: 1109 } }, wc_sessionEvent: { req: { ttl: cjs$5.FIVE_MINUTES, prompt: true, tag: 1110 }, res: { ttl: cjs$5.FIVE_MINUTES, prompt: false, tag: 1111 } }, wc_sessionDelete: { req: { ttl: cjs$5.ONE_DAY, prompt: false, tag: 1112 }, res: { ttl: cjs$5.ONE_DAY, prompt: false, tag: 1113 } }, wc_sessionPing: { req: { ttl: cjs$5.THIRTY_SECONDS, prompt: false, tag: 1114 }, res: { ttl: cjs$5.THIRTY_SECONDS, prompt: false, tag: 1115 } } }, C2 = { min: cjs$5.FIVE_MINUTES, max: cjs$5.SEVEN_DAYS }, se = "request";
var Ye = Object.defineProperty, ke = Object.defineProperties, Xe = Object.getOwnPropertyDescriptors, te = Object.getOwnPropertySymbols, Je = Object.prototype.hasOwnProperty, He = Object.prototype.propertyIsEnumerable, ie = (h3, n2, e) => n2 in h3 ? Ye(h3, n2, { enumerable: true, configurable: true, writable: true, value: e }) : h3[n2] = e, y$1 = (h3, n2) => {
for (var e in n2 || (n2 = {}))
Je.call(n2, e) && ie(h3, e, n2[e]);
if (te)
for (var e of te(n2))
He.call(n2, e) && ie(h3, e, n2[e]);
return h3;
}, j$1 = (h3, n2) => ke(h3, Xe(n2));
class Fe extends C$3 {
constructor(n2) {
super(n2), this.name = ee, this.events = new eventsExports(), this.initialized = false, this.ignoredPayloadTypes = [N$2], this.init = async () => {
this.initialized || (await this.cleanup(), this.registerRelayerEvents(), this.registerExpirerEvents(), this.client.core.pairing.register({ methods: Object.keys(P) }), this.initialized = true);
}, this.connect = async (e) => {
this.isInitialized(), await this.isValidConnect(e);
const { pairingTopic: s, requiredNamespaces: t, relays: i } = e;
let r2 = s, o2, a3 = false;
if (r2 && (a3 = this.client.core.pairing.pairings.get(r2).active), !r2 || !a3) {
const { topic: E3, uri: g2 } = await this.client.core.pairing.create();
r2 = E3, o2 = g2;
}
const l2 = await this.client.core.crypto.generateKeyPair(), d2 = { requiredNamespaces: t, relays: i ?? [{ protocol: Xe$1 }], proposer: { publicKey: l2, metadata: this.client.metadata } }, { reject: S2, resolve: w2, done: V2 } = $n();
if (this.events.once(kn("session_connect"), async ({ error: E3, session: g2 }) => {
if (E3)
S2(E3);
else if (g2) {
g2.self.publicKey = l2;
const O2 = j$1(y$1({}, g2), { requiredNamespaces: g2.requiredNamespaces });
await this.client.session.set(g2.topic, O2), await this.setExpiry(g2.topic, g2.expiry), r2 && await this.client.core.pairing.updateMetadata({ topic: r2, metadata: g2.peer.metadata }), w2(O2);
}
}), !r2) {
const { message: E3 } = y$2("NO_MATCHING_KEY", `connect() pairing topic: ${r2}`);
throw new Error(E3);
}
const x2 = await this.sendRequest(r2, "wc_sessionPropose", d2), G2 = Cn(cjs$5.FIVE_MINUTES);
return await this.setProposal(x2, y$1({ id: x2, expiry: G2 }, d2)), { uri: o2, approval: V2 };
}, this.pair = async (e) => (this.isInitialized(), await this.client.core.pairing.pair(e)), this.approve = async (e) => {
this.isInitialized(), await this.isValidApprove(e);
const { id: s, relayProtocol: t, namespaces: i } = e, r2 = this.client.proposal.get(s);
let { pairingTopic: o2, proposer: a3, requiredNamespaces: l2 } = r2;
B$1(l2) || (l2 = Yn(i, "approve()"), this.client.proposal.set(s, j$1(y$1({}, r2), { requiredNamespaces: l2 })));
const d2 = await this.client.core.crypto.generateKeyPair(), S2 = a3.publicKey, w2 = await this.client.core.crypto.generateSharedKey(d2, S2), V2 = { relay: { protocol: t ?? "irn" }, namespaces: i, requiredNamespaces: l2, controller: { publicKey: d2, metadata: this.client.metadata }, expiry: Cn(T) };
await this.client.core.relayer.subscribe(w2);
const x2 = await this.sendRequest(w2, "wc_sessionSettle", V2), { done: G2, resolve: E3, reject: g2 } = $n();
this.events.once(kn("session_approve", x2), ({ error: Y }) => {
Y ? g2(Y) : E3(this.client.session.get(w2));
});
const O2 = j$1(y$1({}, V2), { topic: w2, acknowledged: false, self: V2.controller, peer: { publicKey: a3.publicKey, metadata: a3.metadata }, controller: d2 });
return await this.client.session.set(w2, O2), await this.setExpiry(w2, Cn(T)), o2 && await this.client.core.pairing.updateMetadata({ topic: o2, metadata: O2.peer.metadata }), o2 && s && (await this.sendResult(s, o2, { relay: { protocol: t ?? "irn" }, responderPublicKey: d2 }), await this.client.proposal.delete(s, h$2("USER_DISCONNECTED")), await this.client.core.pairing.activate({ topic: o2 })), { topic: w2, acknowledged: G2 };
}, this.reject = async (e) => {
this.isInitialized(), await this.isValidReject(e);
const { id: s, reason: t } = e, { pairingTopic: i } = this.client.proposal.get(s);
i && (await this.sendError(s, i, t), await this.client.proposal.delete(s, h$2("USER_DISCONNECTED")));
}, this.update = async (e) => {
this.isInitialized(), await this.isValidUpdate(e);
const { topic: s, namespaces: t } = e, i = await this.sendRequest(s, "wc_sessionUpdate", { namespaces: t }), { done: r2, resolve: o2, reject: a3 } = $n();
return this.events.once(kn("session_update", i), ({ error: l2 }) => {
l2 ? a3(l2) : o2();
}), await this.client.session.update(s, { namespaces: t }), { acknowledged: r2 };
}, this.extend = async (e) => {
this.isInitialized(), await this.isValidExtend(e);
const { topic: s } = e, t = await this.sendRequest(s, "wc_sessionExtend", {}), { done: i, resolve: r2, reject: o2 } = $n();
return this.events.once(kn("session_extend", t), ({ error: a3 }) => {
a3 ? o2(a3) : r2();
}), await this.setExpiry(s, Cn(T)), { acknowledged: i };
}, this.request = async (e) => {
this.isInitialized(), await this.isValidRequest(e);
const { chainId: s, request: t, topic: i, expiry: r2 } = e, o2 = await this.sendRequest(i, "wc_sessionRequest", { request: t, chainId: s }, r2), { done: a3, resolve: l2, reject: d2 } = $n(r2);
return this.events.once(kn("session_request", o2), ({ error: S2, result: w2 }) => {
S2 ? d2(S2) : l2(w2);
}), await a3();
}, this.respond = async (e) => {
this.isInitialized(), await this.isValidRespond(e);
const { topic: s, response: t } = e, { id: i } = t;
isJsonRpcResult(t) ? await this.sendResult(i, s, t.result) : isJsonRpcError(t) && await this.sendError(i, s, t.error), this.deletePendingSessionRequest(e.response.id, { message: "fulfilled", code: 0 });
}, this.ping = async (e) => {
this.isInitialized(), await this.isValidPing(e);
const { topic: s } = e;
if (this.client.session.keys.includes(s)) {
const t = await this.sendRequest(s, "wc_sessionPing", {}), { done: i, resolve: r2, reject: o2 } = $n();
this.events.once(kn("session_ping", t), ({ error: a3 }) => {
a3 ? o2(a3) : r2();
}), await i();
} else
this.client.core.pairing.pairings.keys.includes(s) && await this.client.core.pairing.ping({ topic: s });
}, this.emit = async (e) => {
this.isInitialized(), await this.isValidEmit(e);
const { topic: s, event: t, chainId: i } = e;
await this.sendRequest(s, "wc_sessionEvent", { event: t, chainId: i });
}, this.disconnect = async (e) => {
this.isInitialized(), await this.isValidDisconnect(e);
const { topic: s } = e;
this.client.session.keys.includes(s) ? (await this.sendRequest(s, "wc_sessionDelete", h$2("USER_DISCONNECTED")), await this.deleteSession(s)) : await this.client.core.pairing.disconnect({ topic: s });
}, this.find = (e) => (this.isInitialized(), this.client.session.getAll().filter((s) => Qn(s, e))), this.getPendingSessionRequests = () => (this.isInitialized(), this.client.pendingRequest.getAll()), this.deleteSession = async (e, s) => {
const { self: t } = this.client.session.get(e);
await this.client.core.relayer.unsubscribe(e), await Promise.all([this.client.session.delete(e, h$2("USER_DISCONNECTED")), this.client.core.crypto.deleteKeyPair(t.publicKey), this.client.core.crypto.deleteSymKey(e), s ? Promise.resolve() : this.client.core.expirer.del(e)]);
}, this.deleteProposal = async (e, s) => {
await Promise.all([this.client.proposal.delete(e, h$2("USER_DISCONNECTED")), s ? Promise.resolve() : this.client.core.expirer.del(e)]);
}, this.deletePendingSessionRequest = async (e, s, t = false) => {
await Promise.all([this.client.pendingRequest.delete(e, s), t ? Promise.resolve() : this.client.core.expirer.del(e)]);
}, this.setExpiry = async (e, s) => {
this.client.session.keys.includes(e) && await this.client.session.update(e, { expiry: s }), this.client.core.expirer.set(e, s);
}, this.setProposal = async (e, s) => {
await this.client.proposal.set(e, s), this.client.core.expirer.set(e, s.expiry);
}, this.setPendingSessionRequest = async (e) => {
const s = P.wc_sessionRequest.req.ttl, { id: t, topic: i, params: r2 } = e;
await this.client.pendingRequest.set(t, { id: t, topic: i, params: r2 }), s && this.client.core.expirer.set(t, Cn(s));
}, this.sendRequest = async (e, s, t, i) => {
const r2 = formatJsonRpcRequest(s, t), o2 = await this.client.core.crypto.encode(e, r2), a3 = P[s].req;
return i && (a3.ttl = i), this.client.core.history.set(e, r2), this.client.core.relayer.publish(e, o2, a3), r2.id;
}, this.sendResult = async (e, s, t) => {
const i = formatJsonRpcResult(e, t), r2 = await this.client.core.crypto.encode(s, i), o2 = await this.client.core.history.get(s, e), a3 = P[o2.request.method].res;
this.client.core.relayer.publish(s, r2, a3), await this.client.core.history.resolve(i);
}, this.sendError = async (e, s, t) => {
const i = formatJsonRpcError(e, t), r2 = await this.client.core.crypto.encode(s, i), o2 = await this.client.core.history.get(s, e), a3 = P[o2.request.method].res;
this.client.core.relayer.publish(s, r2, a3), await this.client.core.history.resolve(i);
}, this.cleanup = async () => {
const e = [], s = [];
this.client.session.getAll().forEach((t) => {
Dn(t.expiry) && e.push(t.topic);
}), this.client.proposal.getAll().forEach((t) => {
Dn(t.expiry) && s.push(t.id);
}), await Promise.all([...e.map((t) => this.deleteSession(t)), ...s.map((t) => this.deleteProposal(t))]);
}, this.onRelayEventRequest = (e) => {
const { topic: s, payload: t } = e, i = t.method;
switch (i) {
case "wc_sessionPropose":
return this.onSessionProposeRequest(s, t);
case "wc_sessionSettle":
return this.onSessionSettleRequest(s, t);
case "wc_sessionUpdate":
return this.onSessionUpdateRequest(s, t);
case "wc_sessionExtend":
return this.onSessionExtendRequest(s, t);
case "wc_sessionPing":
return this.onSessionPingRequest(s, t);
case "wc_sessionDelete":
return this.onSessionDeleteRequest(s, t);
case "wc_sessionRequest":
return this.onSessionRequest(s, t);
case "wc_sessionEvent":
return this.onSessionEventRequest(s, t);
default:
return this.client.logger.info(`Unsupported request method ${i}`);
}
}, this.onRelayEventResponse = async (e) => {
const { topic: s, payload: t } = e, i = (await this.client.core.history.get(s, t.id)).request.method;
switch (i) {
case "wc_sessionPropose":
return this.onSessionProposeResponse(s, t);
case "wc_sessionSettle":
return this.onSessionSettleResponse(s, t);
case "wc_sessionUpdate":
return this.onSessionUpdateResponse(s, t);
case "wc_sessionExtend":
return this.onSessionExtendResponse(s, t);
case "wc_sessionPing":
return this.onSessionPingResponse(s, t);
case "wc_sessionRequest":
return this.onSessionRequestResponse(s, t);
default:
return this.client.logger.info(`Unsupported response method ${i}`);
}
}, this.onSessionProposeRequest = async (e, s) => {
const { params: t, id: i } = s;
try {
this.isValidConnect(y$1({}, s.params));
const r2 = Cn(cjs$5.FIVE_MINUTES), o2 = y$1({ id: i, pairingTopic: e, expiry: r2 }, t);
await this.setProposal(i, o2), this.client.events.emit("session_proposal", { id: i, params: o2 });
} catch (r2) {
await this.sendError(i, e, r2), this.client.logger.error(r2);
}
}, this.onSessionProposeResponse = async (e, s) => {
const { id: t } = s;
if (isJsonRpcResult(s)) {
const { result: i } = s;
this.client.logger.trace({ type: "method", method: "onSessionProposeResponse", result: i });
const r2 = this.client.proposal.get(t);
this.client.logger.trace({ type: "method", method: "onSessionProposeResponse", proposal: r2 });
const o2 = r2.proposer.publicKey;
this.client.logger.trace({ type: "method", method: "onSessionProposeResponse", selfPublicKey: o2 });
const a3 = i.responderPublicKey;
this.client.logger.trace({ type: "method", method: "onSessionProposeResponse", peerPublicKey: a3 });
const l2 = await this.client.core.crypto.generateSharedKey(o2, a3);
this.client.logger.trace({ type: "method", method: "onSessionProposeResponse", sessionTopic: l2 });
const d2 = await this.client.core.relayer.subscribe(l2);
this.client.logger.trace({ type: "method", method: "onSessionProposeResponse", subscriptionId: d2 }), await this.client.core.pairing.activate({ topic: e });
} else
isJsonRpcError(s) && (await this.client.proposal.delete(t, h$2("USER_DISCONNECTED")), this.events.emit(kn("session_connect"), { error: s.error }));
}, this.onSessionSettleRequest = async (e, s) => {
const { id: t, params: i } = s;
try {
this.isValidSessionSettleRequest(i);
const { relay: r2, controller: o2, expiry: a3, namespaces: l2, requiredNamespaces: d2 } = s.params, S2 = { topic: e, relay: r2, expiry: a3, namespaces: l2, acknowledged: true, requiredNamespaces: d2, controller: o2.publicKey, self: { publicKey: "", metadata: this.client.metadata }, peer: { publicKey: o2.publicKey, metadata: o2.metadata } };
await this.sendResult(s.id, e, true), this.events.emit(kn("session_connect"), { session: S2 });
} catch (r2) {
await this.sendError(t, e, r2), this.client.logger.error(r2);
}
}, this.onSessionSettleResponse = async (e, s) => {
const { id: t } = s;
isJsonRpcResult(s) ? (await this.client.session.update(e, { acknowledged: true }), this.events.emit(kn("session_approve", t), {})) : isJsonRpcError(s) && (await this.client.session.delete(e, h$2("USER_DISCONNECTED")), this.events.emit(kn("session_approve", t), { error: s.error }));
}, this.onSessionUpdateRequest = async (e, s) => {
const { params: t, id: i } = s;
try {
this.isValidUpdate(y$1({ topic: e }, t)), await this.client.session.update(e, { namespaces: t.namespaces }), await this.sendResult(i, e, true), this.client.events.emit("session_update", { id: i, topic: e, params: t });
} catch (r2) {
await this.sendError(i, e, r2), this.client.logger.error(r2);
}
}, this.onSessionUpdateResponse = (e, s) => {
const { id: t } = s;
isJsonRpcResult(s) ? this.events.emit(kn("session_update", t), {}) : isJsonRpcError(s) && this.events.emit(kn("session_update", t), { error: s.error });
}, this.onSessionExtendRequest = async (e, s) => {
const { id: t } = s;
try {
this.isValidExtend({ topic: e }), await this.setExpiry(e, Cn(T)), await this.sendResult(t, e, true), this.client.events.emit("session_extend", { id: t, topic: e });
} catch (i) {
await this.sendError(t, e, i), this.client.logger.error(i);
}
}, this.onSessionExtendResponse = (e, s) => {
const { id: t } = s;
isJsonRpcResult(s) ? this.events.emit(kn("session_extend", t), {}) : isJsonRpcError(s) && this.events.emit(kn("session_extend", t), { error: s.error });
}, this.onSessionPingRequest = async (e, s) => {
const { id: t } = s;
try {
this.isValidPing({ topic: e }), await this.sendResult(t, e, true), this.client.events.emit("session_ping", { id: t, topic: e });
} catch (i) {
await this.sendError(t, e, i), this.client.logger.error(i);
}
}, this.onSessionPingResponse = (e, s) => {
const { id: t } = s;
setTimeout(() => {
isJsonRpcResult(s) ? this.events.emit(kn("session_ping", t), {}) : isJsonRpcError(s) && this.events.emit(kn("session_ping", t), { error: s.error });
}, 500);
}, this.onSessionDeleteRequest = async (e, s) => {
const { id: t } = s;
try {
this.isValidDisconnect({ topic: e, reason: s.params }), this.client.core.relayer.once(D$1.publish, async () => {
await this.deleteSession(e);
}), await this.sendResult(t, e, true), this.client.events.emit("session_delete", { id: t, topic: e });
} catch (i) {
await this.sendError(t, e, i), this.client.logger.error(i);
}
}, this.onSessionRequest = async (e, s) => {
const { id: t, params: i } = s;
try {
this.isValidRequest(y$1({ topic: e }, i)), await this.setPendingSessionRequest({ id: t, topic: e, params: i }), this.client.events.emit("session_request", { id: t, topic: e, params: i });
} catch (r2) {
await this.sendError(t, e, r2), this.client.logger.error(r2);
}
}, this.onSessionRequestResponse = (e, s) => {
const { id: t } = s;
isJsonRpcResult(s) ? this.events.emit(kn("session_request", t), { result: s.result }) : isJsonRpcError(s) && this.events.emit(kn("session_request", t), { error: s.error });
}, this.onSessionEventRequest = async (e, s) => {
const { id: t, params: i } = s;
try {
this.isValidEmit(y$1({ topic: e }, i)), this.client.events.emit("session_event", { id: t, topic: e, params: i });
} catch (r2) {
await this.sendError(t, e, r2), this.client.logger.error(r2);
}
}, this.isValidConnect = async (e) => {
if (!st$1(e)) {
const { message: o2 } = y$2("MISSING_OR_INVALID", `connect() params: ${JSON.stringify(e)}`);
throw new Error(o2);
}
const { pairingTopic: s, requiredNamespaces: t, relays: i } = e;
if (E$1(s) || await this.isValidPairingTopic(s), !E$1(t) && B$1(t) === 0)
return;
const r2 = tt$1(t, "connect()");
if (r2)
throw new Error(r2.message);
if (!rt$1(i, true)) {
const { message: o2 } = y$2("MISSING_OR_INVALID", `connect() relays: ${i}`);
throw new Error(o2);
}
}, this.isValidApprove = async (e) => {
if (!st$1(e))
throw new Error(y$2("MISSING_OR_INVALID", `approve() params: ${e}`).message);
const { id: s, namespaces: t, relayProtocol: i } = e;
await this.isValidProposalId(s);
const r2 = this.client.proposal.get(s), o2 = He$2(t, "approve()");
if (o2)
throw new Error(o2.message);
const a$12 = pt$1(r2.requiredNamespaces, t, "update()");
if (a$12)
throw new Error(a$12.message);
if (!a2(i, true)) {
const { message: l2 } = y$2("MISSING_OR_INVALID", `approve() relayProtocol: ${i}`);
throw new Error(l2);
}
}, this.isValidReject = async (e) => {
if (!st$1(e)) {
const { message: i } = y$2("MISSING_OR_INVALID", `reject() params: ${e}`);
throw new Error(i);
}
const { id: s, reason: t } = e;
if (await this.isValidProposalId(s), !it$1(t)) {
const { message: i } = y$2("MISSING_OR_INVALID", `reject() reason: ${JSON.stringify(t)}`);
throw new Error(i);
}
}, this.isValidSessionSettleRequest = (e) => {
if (!st$1(e)) {
const { message: l2 } = y$2("MISSING_OR_INVALID", `onSessionSettleRequest() params: ${e}`);
throw new Error(l2);
}
const { relay: s, controller: t, namespaces: i, expiry: r2 } = e;
if (!qe$1(s)) {
const { message: l2 } = y$2("MISSING_OR_INVALID", "onSessionSettleRequest() relay protocol should be a string");
throw new Error(l2);
}
const o2 = nt$1(t, "onSessionSettleRequest()");
if (o2)
throw new Error(o2.message);
const a3 = He$2(i, "onSessionSettleRequest()");
if (a3)
throw new Error(a3.message);
if (Dn(r2)) {
const { message: l2 } = y$2("EXPIRED", "onSessionSettleRequest()");
throw new Error(l2);
}
}, this.isValidUpdate = async (e) => {
if (!st$1(e)) {
const { message: a3 } = y$2("MISSING_OR_INVALID", `update() params: ${e}`);
throw new Error(a3);
}
const { topic: s, namespaces: t } = e;
await this.isValidSessionTopic(s);
const i = this.client.session.get(s), r2 = He$2(t, "update()");
if (r2)
throw new Error(r2.message);
const o2 = pt$1(i.requiredNamespaces, t, "update()");
if (o2)
throw new Error(o2.message);
}, this.isValidExtend = async (e) => {
if (!st$1(e)) {
const { message: t } = y$2("MISSING_OR_INVALID", `extend() params: ${e}`);
throw new Error(t);
}
const { topic: s } = e;
await this.isValidSessionTopic(s);
}, this.isValidRequest = async (e) => {
if (!st$1(e)) {
const { message: a3 } = y$2("MISSING_OR_INVALID", `request() params: ${e}`);
throw new Error(a3);
}
const { topic: s, request: t, chainId: i, expiry: r2 } = e;
await this.isValidSessionTopic(s);
const { namespaces: o2 } = this.client.session.get(s);
if (!dt$1(o2, i)) {
const { message: a3 } = y$2("MISSING_OR_INVALID", `request() chainId: ${i}`);
throw new Error(a3);
}
if (!ct$1(t)) {
const { message: a3 } = y$2("MISSING_OR_INVALID", `request() ${JSON.stringify(t)}`);
throw new Error(a3);
}
if (!lt$1(o2, i, t.method)) {
const { message: a3 } = y$2("MISSING_OR_INVALID", `request() method: ${t.method}`);
throw new Error(a3);
}
if (r2 && !mt$1(r2, C2)) {
const { message: a3 } = y$2("MISSING_OR_INVALID", `request() expiry: ${r2}. Expiry must be a number (in seconds) between ${C2.min} and ${C2.max}`);
throw new Error(a3);
}
}, this.isValidRespond = async (e) => {
if (!st$1(e)) {
const { message: i } = y$2("MISSING_OR_INVALID", `respond() params: ${e}`);
throw new Error(i);
}
const { topic: s, response: t } = e;
if (await this.isValidSessionTopic(s), !at$1(t)) {
const { message: i } = y$2("MISSING_OR_INVALID", `respond() response: ${JSON.stringify(t)}`);
throw new Error(i);
}
}, this.isValidPing = async (e) => {
if (!st$1(e)) {
const { message: t } = y$2("MISSING_OR_INVALID", `ping() params: ${e}`);
throw new Error(t);
}
const { topic: s } = e;
await this.isValidSessionOrPairingTopic(s);
}, this.isValidEmit = async (e) => {
if (!st$1(e)) {
const { message: o2 } = y$2("MISSING_OR_INVALID", `emit() params: ${e}`);
throw new Error(o2);
}
const { topic: s, event: t, chainId: i } = e;
await this.isValidSessionTopic(s);
const { namespaces: r2 } = this.client.session.get(s);
if (!dt$1(r2, i)) {
const { message: o2 } = y$2("MISSING_OR_INVALID", `emit() chainId: ${i}`);
throw new Error(o2);
}
if (!ut$1(t)) {
const { message: o2 } = y$2("MISSING_OR_INVALID", `emit() event: ${JSON.stringify(t)}`);
throw new Error(o2);
}
if (!ft$1(r2, i, t.name)) {
const { message: o2 } = y$2("MISSING_OR_INVALID", `emit() event: ${JSON.stringify(t)}`);
throw new Error(o2);
}
}, this.isValidDisconnect = async (e) => {
if (!st$1(e)) {
const { message: t } = y$2("MISSING_OR_INVALID", `disconnect() params: ${e}`);
throw new Error(t);
}
const { topic: s } = e;
await this.isValidSessionOrPairingTopic(s);
};
}
isInitialized() {
if (!this.initialized) {
const { message: n2 } = y$2("NOT_INITIALIZED", this.name);
throw new Error(n2);
}
}
registerRelayerEvents() {
this.client.core.relayer.on(D$1.message, async (n2) => {
const { topic: e, message: s } = n2;
if (this.ignoredPayloadTypes.includes(this.client.core.crypto.getPayloadType(s)))
return;
const t = await this.client.core.crypto.decode(e, s);
isJsonRpcRequest(t) ? (this.client.core.history.set(e, t), this.onRelayEventRequest({ topic: e, payload: t })) : isJsonRpcResponse(t) && (await this.client.core.history.resolve(t), this.onRelayEventResponse({ topic: e, payload: t }));
});
}
registerExpirerEvents() {
this.client.core.expirer.on(m.expired, async (n2) => {
const { topic: e, id: s } = Kn(n2.target);
if (s && this.client.pendingRequest.keys.includes(s))
return await this.deletePendingSessionRequest(s, y$2("EXPIRED"), true);
e ? this.client.session.keys.includes(e) && (await this.deleteSession(e, true), this.client.events.emit("session_expire", { topic: e })) : s && (await this.deleteProposal(s, true), this.client.events.emit("proposal_expire", { id: s }));
});
}
isValidPairingTopic(n2) {
if (!a2(n2, false)) {
const { message: e } = y$2("MISSING_OR_INVALID", `pairing topic should be a string: ${n2}`);
throw new Error(e);
}
if (!this.client.core.pairing.pairings.keys.includes(n2)) {
const { message: e } = y$2("NO_MATCHING_KEY", `pairing topic doesn't exist: ${n2}`);
throw new Error(e);
}
if (Dn(this.client.core.pairing.pairings.get(n2).expiry)) {
const { message: e } = y$2("EXPIRED", `pairing topic: ${n2}`);
throw new Error(e);
}
}
async isValidSessionTopic(n2) {
if (!a2(n2, false)) {
const { message: e } = y$2("MISSING_OR_INVALID", `session topic should be a string: ${n2}`);
throw new Error(e);
}
if (!this.client.session.keys.includes(n2)) {
const { message: e } = y$2("NO_MATCHING_KEY", `session topic doesn't exist: ${n2}`);
throw new Error(e);
}
if (Dn(this.client.session.get(n2).expiry)) {
await this.deleteSession(n2);
const { message: e } = y$2("EXPIRED", `session topic: ${n2}`);
throw new Error(e);
}
}
async isValidSessionOrPairingTopic(n2) {
if (this.client.session.keys.includes(n2))
await this.isValidSessionTopic(n2);
else if (this.client.core.pairing.pairings.keys.includes(n2))
this.isValidPairingTopic(n2);
else if (a2(n2, false)) {
const { message: e } = y$2("NO_MATCHING_KEY", `session or pairing topic doesn't exist: ${n2}`);
throw new Error(e);
} else {
const { message: e } = y$2("MISSING_OR_INVALID", `session or pairing topic should be a string: ${n2}`);
throw new Error(e);
}
}
async isValidProposalId(n2) {
if (!ot$1(n2)) {
const { message: e } = y$2("MISSING_OR_INVALID", `proposal id should be a number: ${n2}`);
throw new Error(e);
}
if (!this.client.proposal.keys.includes(n2)) {
const { message: e } = y$2("NO_MATCHING_KEY", `proposal id doesn't exist: ${n2}`);
throw new Error(e);
}
if (Dn(this.client.proposal.get(n2).expiry)) {
await this.deleteProposal(n2);
const { message: e } = y$2("EXPIRED", `proposal id: ${n2}`);
throw new Error(e);
}
}
}
class Qe extends Ct {
constructor(n2, e) {
super(n2, e, Z, A$1), this.core = n2, this.logger = e;
}
}
class Be extends Ct {
constructor(n2, e) {
super(n2, e, W, A$1), this.core = n2, this.logger = e;
}
}
class Ze extends Ct {
constructor(n2, e) {
super(n2, e, se, A$1), this.core = n2, this.logger = e;
}
}
class L extends y$3 {
constructor(n2) {
super(n2), this.protocol = U$1, this.version = K, this.name = b$1.name, this.events = new eventsExports.EventEmitter(), this.on = (s, t) => this.events.on(s, t), this.once = (s, t) => this.events.once(s, t), this.off = (s, t) => this.events.off(s, t), this.removeListener = (s, t) => this.events.removeListener(s, t), this.removeAllListeners = (s) => this.events.removeAllListeners(s), this.connect = async (s) => {
try {
return await this.engine.connect(s);
} catch (t) {
throw this.logger.error(t.message), t;
}
}, this.pair = async (s) => {
try {
return await this.engine.pair(s);
} catch (t) {
throw this.logger.error(t.message), t;
}
}, this.approve = async (s) => {
try {
return await this.engine.approve(s);
} catch (t) {
throw this.logger.error(t.message), t;
}
}, this.reject = async (s) => {
try {
return await this.engine.reject(s);
} catch (t) {
throw this.logger.error(t.message), t;
}
}, this.update = async (s) => {
try {
return await this.engine.update(s);
} catch (t) {
throw this.logger.error(t.message), t;
}
}, this.extend = async (s) => {
try {
return await this.engine.extend(s);
} catch (t) {
throw this.logger.error(t.message), t;
}
}, this.request = async (s) => {
try {
return await this.engine.request(s);
} catch (t) {
throw this.logger.error(t.message), t;
}
}, this.respond = async (s) => {
try {
return await this.engine.respond(s);
} catch (t) {
throw this.logger.error(t.message), t;
}
}, this.ping = async (s) => {
try {
return await this.engine.ping(s);
} catch (t) {
throw this.logger.error(t.message), t;
}
}, this.emit = async (s) => {
try {
return await this.engine.emit(s);
} catch (t) {
throw this.logger.error(t.message), t;
}
}, this.disconnect = async (s) => {
try {
return await this.engine.disconnect(s);
} catch (t) {
throw this.logger.error(t.message), t;
}
}, this.find = (s) => {
try {
return this.engine.find(s);
} catch (t) {
throw this.logger.error(t.message), t;
}
}, this.getPendingSessionRequests = () => {
try {
return this.engine.getPendingSessionRequests();
} catch (s) {
throw this.logger.error(s.message), s;
}
}, this.name = (n2 == null ? void 0 : n2.name) || b$1.name, this.metadata = (n2 == null ? void 0 : n2.metadata) || bn();
const e = typeof (n2 == null ? void 0 : n2.logger) < "u" && typeof (n2 == null ? void 0 : n2.logger) != "string" ? n2.logger : browser$2(cjs$4.getDefaultLoggerOptions({ level: (n2 == null ? void 0 : n2.logger) || b$1.logger }));
this.core = (n2 == null ? void 0 : n2.core) || new dr(n2), this.logger = cjs$4.generateChildLogger(e, this.name), this.session = new Be(this.core, this.logger), this.proposal = new Qe(this.core, this.logger), this.pendingRequest = new Ze(this.core, this.logger), this.engine = new Fe(this);
}
static async init(n2) {
const e = new L(n2);
return await e.initialize(), e;
}
get context() {
return cjs$4.getLoggerContext(this.logger);
}
get pairing() {
return this.core.pairing.pairings;
}
async initialize() {
this.logger.trace("Initialized");
try {
await this.core.start(), await this.session.init(), await this.proposal.init(), await this.pendingRequest.init(), await this.engine.init(), this.logger.info("SignClient Initialization Success");
} catch (n2) {
throw this.logger.info("SignClient Initialization Failure"), this.logger.error(n2.message), n2;
}
}
}
var cjs$1 = {};
Object.defineProperty(cjs$1, "__esModule", { value: true });
cjs$1.getLocalStorage = cjs$1.getLocalStorageOrThrow = cjs$1.getCrypto = cjs$1.getCryptoOrThrow = cjs$1.getLocation = cjs$1.getLocationOrThrow = cjs$1.getNavigator = cjs$1.getNavigatorOrThrow = cjs$1.getDocument = cjs$1.getDocumentOrThrow = cjs$1.getFromWindowOrThrow = cjs$1.getFromWindow = void 0;
function getFromWindow(name) {
let res = void 0;
if (typeof window !== "undefined" && typeof window[name] !== "undefined") {
res = window[name];
}
return res;
}
cjs$1.getFromWindow = getFromWindow;
function getFromWindowOrThrow(name) {
const res = getFromWindow(name);
if (!res) {
throw new Error(`${name} is not defined in Window`);
}
return res;
}
cjs$1.getFromWindowOrThrow = getFromWindowOrThrow;
function getDocumentOrThrow() {
return getFromWindowOrThrow("document");
}
cjs$1.getDocumentOrThrow = getDocumentOrThrow;
function getDocument() {
return getFromWindow("document");
}
cjs$1.getDocument = getDocument;
function getNavigatorOrThrow() {
return getFromWindowOrThrow("navigator");
}
cjs$1.getNavigatorOrThrow = getNavigatorOrThrow;
function getNavigator() {
return getFromWindow("navigator");
}
cjs$1.getNavigator = getNavigator;
function getLocationOrThrow() {
return getFromWindowOrThrow("location");
}
cjs$1.getLocationOrThrow = getLocationOrThrow;
function getLocation() {
return getFromWindow("location");
}
cjs$1.getLocation = getLocation;
function getCryptoOrThrow() {
return getFromWindowOrThrow("crypto");
}
cjs$1.getCryptoOrThrow = getCryptoOrThrow;
function getCrypto() {
return getFromWindow("crypto");
}
cjs$1.getCrypto = getCrypto;
function getLocalStorageOrThrow() {
return getFromWindowOrThrow("localStorage");
}
cjs$1.getLocalStorageOrThrow = getLocalStorageOrThrow;
function getLocalStorage() {
return getFromWindow("localStorage");
}
cjs$1.getLocalStorage = getLocalStorage;
var cjs = {};
Object.defineProperty(cjs, "__esModule", { value: true });
cjs.getWindowMetadata = void 0;
const window_getters_1 = cjs$1;
function getWindowMetadata() {
let doc;
let loc;
try {
doc = window_getters_1.getDocumentOrThrow();
loc = window_getters_1.getLocationOrThrow();
} catch (e) {
return null;
}
function getIcons() {
const links = doc.getElementsByTagName("link");
const icons2 = [];
for (let i = 0; i < links.length; i++) {
const link = links[i];
const rel = link.getAttribute("rel");
if (rel) {
if (rel.toLowerCase().indexOf("icon") > -1) {
const href = link.getAttribute("href");
if (href) {
if (href.toLowerCase().indexOf("https:") === -1 && href.toLowerCase().indexOf("http:") === -1 && href.indexOf("//") !== 0) {
let absoluteHref = loc.protocol + "//" + loc.host;
if (href.indexOf("/") === 0) {
absoluteHref += href;
} else {
const path = loc.pathname.split("/");
path.pop();
const finalPath = path.join("/");
absoluteHref += finalPath + "/" + href;
}
icons2.push(absoluteHref);
} else if (href.indexOf("//") === 0) {
const absoluteUrl = loc.protocol + href;
icons2.push(absoluteUrl);
} else {
icons2.push(href);
}
}
}
}
}
return icons2;
}
function getWindowMetadataOfAny(...args) {
const metaTags = doc.getElementsByTagName("meta");
for (let i = 0; i < metaTags.length; i++) {
const tag = metaTags[i];
const attributes = ["itemprop", "property", "name"].map((target) => tag.getAttribute(target)).filter((attr) => {
if (attr) {
return args.includes(attr);
}
return false;
});
if (attributes.length && attributes) {
const content = tag.getAttribute("content");
if (content) {
return content;
}
}
}
return "";
}
function getName() {
let name2 = getWindowMetadataOfAny("name", "og:site_name", "og:title", "twitter:title");
if (!name2) {
name2 = doc.title;
}
return name2;
}
function getDescription() {
const description2 = getWindowMetadataOfAny("description", "og:description", "twitter:description", "keywords");
return description2;
}
const name = getName();
const description = getDescription();
const url = loc.origin;
const icons = getIcons();
const meta = {
description,
url,
icons,
name
};
return meta;
}
cjs.getWindowMetadata = getWindowMetadata;
var queryString = {};
(function(exports) {
const strictUriEncode$1 = strictUriEncode;
const decodeComponent = decodeUriComponent;
const splitOnFirst$1 = splitOnFirst;
const filterObject = filterObj;
const isNullOrUndefined = (value) => value === null || value === void 0;
const encodeFragmentIdentifier = Symbol("encodeFragmentIdentifier");
function encoderForArrayFormat(options) {
switch (options.arrayFormat) {
case "index":
return (key) => (result, value) => {
const index = result.length;
if (value === void 0 || options.skipNull && value === null || options.skipEmptyString && value === "") {
return result;
}
if (value === null) {
return [...result, [encode2(key, options), "[", index, "]"].join("")];
}
return [
...result,
[encode2(key, options), "[", encode2(index, options), "]=", encode2(value, options)].join("")
];
};
case "bracket":
return (key) => (result, value) => {
if (value === void 0 || options.skipNull && value === null || options.skipEmptyString && value === "") {
return result;
}
if (value === null) {
return [...result, [encode2(key, options), "[]"].join("")];
}
return [...result, [encode2(key, options), "[]=", encode2(value, options)].join("")];
};
case "colon-list-separator":
return (key) => (result, value) => {
if (value === void 0 || options.skipNull && value === null || options.skipEmptyString && value === "") {
return result;
}
if (value === null) {
return [...result, [encode2(key, options), ":list="].join("")];
}
return [...result, [encode2(key, options), ":list=", encode2(value, options)].join("")];
};
case "comma":
case "separator":
case "bracket-separator": {
const keyValueSep = options.arrayFormat === "bracket-separator" ? "[]=" : "=";
return (key) => (result, value) => {
if (value === void 0 || options.skipNull && value === null || options.skipEmptyString && value === "") {
return result;
}
value = value === null ? "" : value;
if (result.length === 0) {
return [[encode2(key, options), keyValueSep, encode2(value, options)].join("")];
}
return [[result, encode2(value, options)].join(options.arrayFormatSeparator)];
};
}
default:
return (key) => (result, value) => {
if (value === void 0 || options.skipNull && value === null || options.skipEmptyString && value === "") {
return result;
}
if (value === null) {
return [...result, encode2(key, options)];
}
return [...result, [encode2(key, options), "=", encode2(value, options)].join("")];
};
}
}
function parserForArrayFormat(options) {
let result;
switch (options.arrayFormat) {
case "index":
return (key, value, accumulator) => {
result = /\[(\d*)\]$/.exec(key);
key = key.replace(/\[\d*\]$/, "");
if (!result) {
accumulator[key] = value;
return;
}
if (accumulator[key] === void 0) {
accumulator[key] = {};
}
accumulator[key][result[1]] = value;
};
case "bracket":
return (key, value, accumulator) => {
result = /(\[\])$/.exec(key);
key = key.replace(/\[\]$/, "");
if (!result) {
accumulator[key] = value;
return;
}
if (accumulator[key] === void 0) {
accumulator[key] = [value];
return;
}
accumulator[key] = [].concat(accumulator[key], value);
};
case "colon-list-separator":
return (key, value, accumulator) => {
result = /(:list)$/.exec(key);
key = key.replace(/:list$/, "");
if (!result) {
accumulator[key] = value;
return;
}
if (accumulator[key] === void 0) {
accumulator[key] = [value];
return;
}
accumulator[key] = [].concat(accumulator[key], value);
};
case "comma":
case "separator":
return (key, value, accumulator) => {
const isArray = typeof value === "string" && value.includes(options.arrayFormatSeparator);
const isEncodedArray = typeof value === "string" && !isArray && decode2(value, options).includes(options.arrayFormatSeparator);
value = isEncodedArray ? decode2(value, options) : value;
const newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map((item) => decode2(item, options)) : value === null ? value : decode2(value, options);
accumulator[key] = newValue;
};
case "bracket-separator":
return (key, value, accumulator) => {
const isArray = /(\[\])$/.test(key);
key = key.replace(/\[\]$/, "");
if (!isArray) {
accumulator[key] = value ? decode2(value, options) : value;
return;
}
const arrayValue = value === null ? [] : value.split(options.arrayFormatSeparator).map((item) => decode2(item, options));
if (accumulator[key] === void 0) {
accumulator[key] = arrayValue;
return;
}
accumulator[key] = [].concat(accumulator[key], arrayValue);
};
default:
return (key, value, accumulator) => {
if (accumulator[key] === void 0) {
accumulator[key] = value;
return;
}
accumulator[key] = [].concat(accumulator[key], value);
};
}
}
function validateArrayFormatSeparator(value) {
if (typeof value !== "string" || value.length !== 1) {
throw new TypeError("arrayFormatSeparator must be single character string");
}
}
function encode2(value, options) {
if (options.encode) {
return options.strict ? strictUriEncode$1(value) : encodeURIComponent(value);
}
return value;
}
function decode2(value, options) {
if (options.decode) {
return decodeComponent(value);
}
return value;
}
function keysSorter(input) {
if (Array.isArray(input)) {
return input.sort();
}
if (typeof input === "object") {
return keysSorter(Object.keys(input)).sort((a3, b2) => Number(a3) - Number(b2)).map((key) => input[key]);
}
return input;
}
function removeHash(input) {
const hashStart = input.indexOf("#");
if (hashStart !== -1) {
input = input.slice(0, hashStart);
}
return input;
}
function getHash(url) {
let hash2 = "";
const hashStart = url.indexOf("#");
if (hashStart !== -1) {
hash2 = url.slice(hashStart);
}
return hash2;
}
function extract(input) {
input = removeHash(input);
const queryStart = input.indexOf("?");
if (queryStart === -1) {
return "";
}
return input.slice(queryStart + 1);
}
function parseValue(value, options) {
if (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === "string" && value.trim() !== "")) {
value = Number(value);
} else if (options.parseBooleans && value !== null && (value.toLowerCase() === "true" || value.toLowerCase() === "false")) {
value = value.toLowerCase() === "true";
}
return value;
}
function parse(query, options) {
options = Object.assign({
decode: true,
sort: true,
arrayFormat: "none",
arrayFormatSeparator: ",",
parseNumbers: false,
parseBooleans: false
}, options);
validateArrayFormatSeparator(options.arrayFormatSeparator);
const formatter = parserForArrayFormat(options);
const ret = /* @__PURE__ */ Object.create(null);
if (typeof query !== "string") {
return ret;
}
query = query.trim().replace(/^[?#&]/, "");
if (!query) {
return ret;
}
for (const param of query.split("&")) {
if (param === "") {
continue;
}
let [key, value] = splitOnFirst$1(options.decode ? param.replace(/\+/g, " ") : param, "=");
value = value === void 0 ? null : ["comma", "separator", "bracket-separator"].includes(options.arrayFormat) ? value : decode2(value, options);
formatter(decode2(key, options), value, ret);
}
for (const key of Object.keys(ret)) {
const value = ret[key];
if (typeof value === "object" && value !== null) {
for (const k2 of Object.keys(value)) {
value[k2] = parseValue(value[k2], options);
}
} else {
ret[key] = parseValue(value, options);
}
}
if (options.sort === false) {
return ret;
}
return (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {
const value = ret[key];
if (Boolean(value) && typeof value === "object" && !Array.isArray(value)) {
result[key] = keysSorter(value);
} else {
result[key] = value;
}
return result;
}, /* @__PURE__ */ Object.create(null));
}
exports.extract = extract;
exports.parse = parse;
exports.stringify = (object, options) => {
if (!object) {
return "";
}
options = Object.assign({
encode: true,
strict: true,
arrayFormat: "none",
arrayFormatSeparator: ","
}, options);
validateArrayFormatSeparator(options.arrayFormatSeparator);
const shouldFilter = (key) => options.skipNull && isNullOrUndefined(object[key]) || options.skipEmptyString && object[key] === "";
const formatter = encoderForArrayFormat(options);
const objectCopy = {};
for (const key of Object.keys(object)) {
if (!shouldFilter(key)) {
objectCopy[key] = object[key];
}
}
const keys = Object.keys(objectCopy);
if (options.sort !== false) {
keys.sort(options.sort);
}
return keys.map((key) => {
const value = object[key];
if (value === void 0) {
return "";
}
if (value === null) {
return encode2(key, options);
}
if (Array.isArray(value)) {
if (value.length === 0 && options.arrayFormat === "bracket-separator") {
return encode2(key, options) + "[]";
}
return value.reduce(formatter(key), []).join("&");
}
return encode2(key, options) + "=" + encode2(value, options);
}).filter((x2) => x2.length > 0).join("&");
};
exports.parseUrl = (url, options) => {
options = Object.assign({
decode: true
}, options);
const [url_, hash2] = splitOnFirst$1(url, "#");
return Object.assign(
{
url: url_.split("?")[0] || "",
query: parse(extract(url), options)
},
options && options.parseFragmentIdentifier && hash2 ? { fragmentIdentifier: decode2(hash2, options) } : {}
);
};
exports.stringifyUrl = (object, options) => {
options = Object.assign({
encode: true,
strict: true,
[encodeFragmentIdentifier]: true
}, options);
const url = removeHash(object.url).split("?")[0] || "";
const queryFromUrl = exports.extract(object.url);
const parsedQueryFromUrl = exports.parse(queryFromUrl, { sort: false });
const query = Object.assign(parsedQueryFromUrl, object.query);
let queryString2 = exports.stringify(query, options);
if (queryString2) {
queryString2 = `?${queryString2}`;
}
let hash2 = getHash(object.url);
if (object.fragmentIdentifier) {
hash2 = `#${options[encodeFragmentIdentifier] ? encode2(object.fragmentIdentifier, options) : object.fragmentIdentifier}`;
}
return `${url}${queryString2}${hash2}`;
};
exports.pick = (input, filter, options) => {
options = Object.assign({
parseFragmentIdentifier: true,
[encodeFragmentIdentifier]: false
}, options);
const { url, query, fragmentIdentifier } = exports.parseUrl(input, options);
return exports.stringifyUrl({
url,
query: filterObject(query, filter),
fragmentIdentifier
}, options);
};
exports.exclude = (input, filter, options) => {
const exclusionFilter = Array.isArray(filter) ? (key) => !filter.includes(key) : (key, value) => !filter(key, value);
return exports.pick(input, exclusionFilter, options);
};
})(queryString);
const Wn = { INVALID_METHOD: { message: "Invalid method.", code: 1001 }, INVALID_EVENT: { message: "Invalid event.", code: 1002 }, INVALID_UPDATE_REQUEST: { message: "Invalid update request.", code: 1003 }, INVALID_EXTEND_REQUEST: { message: "Invalid extend request.", code: 1004 }, INVALID_SESSION_SETTLE_REQUEST: { message: "Invalid session settle request.", code: 1005 }, UNAUTHORIZED_METHOD: { message: "Unauthorized method.", code: 3001 }, UNAUTHORIZED_EVENT: { message: "Unauthorized event.", code: 3002 }, UNAUTHORIZED_UPDATE_REQUEST: { message: "Unauthorized update request.", code: 3003 }, UNAUTHORIZED_EXTEND_REQUEST: { message: "Unauthorized extend request.", code: 3004 }, USER_REJECTED: { message: "User rejected.", code: 5e3 }, USER_REJECTED_CHAINS: { message: "User rejected chains.", code: 5001 }, USER_REJECTED_METHODS: { message: "User rejected methods.", code: 5002 }, USER_REJECTED_EVENTS: { message: "User rejected events.", code: 5003 }, UNSUPPORTED_CHAINS: { message: "Unsupported chains.", code: 5100 }, UNSUPPORTED_METHODS: { message: "Unsupported methods.", code: 5101 }, UNSUPPORTED_EVENTS: { message: "Unsupported events.", code: 5102 }, UNSUPPORTED_ACCOUNTS: { message: "Unsupported accounts.", code: 5103 }, UNSUPPORTED_NAMESPACE_KEY: { message: "Unsupported namespace key.", code: 5104 }, USER_DISCONNECTED: { message: "User disconnected.", code: 6e3 }, SESSION_SETTLEMENT_FAILED: { message: "Session settlement failed.", code: 7e3 }, WC_METHOD_UNSUPPORTED: { message: "Unsupported wc_ method.", code: 10001 } };
function h$1(e, n2) {
const { message: t, code: r2 } = Wn[e];
return { message: n2 ? `${t} ${n2}` : t, code: r2 };
}
function I(e, n2) {
return Array.isArray(e) ? typeof n2 < "u" && e.length ? e.every(n2) : true : false;
}
function y2(i) {
var t;
const e = (t = i[Object.keys(i)[0]]) == null ? void 0 : t.chains[0];
return [e.split(":")[0], e.split(":")[1]];
}
function r(i, t) {
let e;
return t.rpcMap && (e = t.rpcMap[O([i])]), e;
}
function O(i) {
return Number(i[0].split(":")[1]);
}
class E2 {
constructor(t) {
this.name = "eip155", this.namespace = t.namespace, this.client = t.client, this.events = t.events, this.httpProviders = this.createHttpProviders(), this.chainId = this.getDefaultChainId();
}
async request(t) {
var e;
switch (t.request.method) {
case "eth_requestAccounts":
return this.getAccounts();
case "eth_accounts":
return this.getAccounts();
case "wallet_switchEthereumChain": {
const s = t.request.params ? (e = t.request.params[0]) == null ? void 0 : e.chainId : "0x0";
return this.setDefaultChain(parseInt(s, 16).toString()), null;
}
case "eth_chainId":
return this.getDefaultChainId();
}
return this.namespace.methods.includes(t.request.method) ? await this.client.request(t) : this.getHttpProvider().request(t.request);
}
updateNamespace(t) {
this.namespace = Object.assign(this.namespace, t);
}
setDefaultChain(t, e) {
if (this.chainId = parseInt(t), !this.httpProviders[t]) {
const s = e || r(`${this.name}:${t}`, this.namespace);
if (!s)
throw new Error(`No RPC url provided for chainId: ${t}`);
this.setHttpProvider(t, s);
}
this.events.emit("chainChanged", this.chainId);
}
requestAccounts() {
return this.getAccounts();
}
createHttpProvider(t, e) {
const s = e || r(t, this.namespace);
return typeof s > "u" ? void 0 : new JsonRpcProvider(new HttpConnection(s));
}
setHttpProvider(t, e) {
const s = this.createHttpProvider(t, e);
s && (this.httpProviders[t] = s);
}
createHttpProviders() {
const t = {};
return this.namespace.chains.forEach((e) => {
t[e] = this.createHttpProvider(e);
}), t;
}
getAccounts() {
const t = this.namespace.accounts;
return t ? t.filter((e) => e.split(":")[1] === this.chainId.toString()).map((e) => e.split(":")[2]) || [] : [];
}
getDefaultChainId() {
if (this.chainId)
return this.chainId;
const t = this.namespace.chains[0];
if (!t)
throw new Error("ChainId not found");
return parseInt(t.split(":")[1]);
}
getHttpProvider() {
const t = `${this.name}:${this.chainId}`, e = this.httpProviders[t];
if (typeof e > "u")
throw new Error(`JSON-RPC provider for ${t} not found`);
return e;
}
}
class q {
constructor(t) {
this.name = "solana", this.namespace = t.namespace, this.events = t.events, this.client = t.client, this.chainId = this.getDefaultChainId(), this.httpProviders = this.createHttpProviders();
}
updateNamespace(t) {
this.namespace = Object.assign(this.namespace, t);
}
requestAccounts() {
return this.getAccounts();
}
getAccounts() {
const t = this.namespace.accounts;
return t ? t.filter((e) => e.split(":")[1] === this.chainId.toString()).map((e) => e.split(":")[2]) || [] : [];
}
createHttpProviders() {
const t = {};
return this.namespace.chains.forEach((e) => {
t[e] = this.createHttpProvider(e);
}), t;
}
getDefaultChainId() {
if (this.chainId)
return this.chainId;
const t = this.namespace.chains[0];
if (!t)
throw new Error("ChainId not found");
return t.split(":")[1];
}
request(t) {
return this.namespace.methods.includes(t.request.method) ? this.client.request(t) : this.getHttpProvider().request(t.request);
}
getHttpProvider() {
const t = `${this.name}:${this.chainId}`, e = this.httpProviders[t];
if (typeof e > "u")
throw new Error(`JSON-RPC provider for ${t} not found`);
return e;
}
setDefaultChain(t, e) {
if (this.chainId = t, !this.httpProviders[t]) {
const s = e || r(`${this.name}:${t}`, this.namespace);
if (!s)
throw new Error(`No RPC url provided for chainId: ${t}`);
this.setHttpProvider(t, s);
}
this.events.emit("chainChanged", this.chainId);
}
setHttpProvider(t, e) {
const s = this.createHttpProvider(t, e);
s && (this.httpProviders[t] = s);
}
createHttpProvider(t, e) {
const s = e || r(t, this.namespace);
return typeof s > "u" ? void 0 : new JsonRpcProvider(new HttpConnection(s));
}
}
class H {
constructor(t) {
this.name = "cosmos", this.namespace = t.namespace, this.events = t.events, this.client = t.client, this.chainId = this.getDefaultChainId(), this.httpProviders = this.createHttpProviders();
}
updateNamespace(t) {
this.namespace = Object.assign(this.namespace, t);
}
requestAccounts() {
return this.getAccounts();
}
getAccounts() {
const t = this.namespace.accounts;
return t ? t.filter((e) => e.split(":")[1] === this.chainId.toString()).map((e) => e.split(":")[2]) || [] : [];
}
createHttpProviders() {
const t = {};
return this.namespace.chains.forEach((e) => {
t[e] = this.createHttpProvider(e);
}), t;
}
getDefaultChainId() {
if (this.chainId)
return this.chainId;
const t = this.namespace.chains[0];
if (!t)
throw new Error("ChainId not found");
return t.split(":")[1];
}
request(t) {
return this.namespace.methods.includes(t.request.method) ? this.client.request(t) : this.getHttpProvider().request(t.request);
}
getHttpProvider() {
const t = `${this.name}:${this.chainId}`, e = this.httpProviders[t];
if (typeof e > "u")
throw new Error(`JSON-RPC provider for ${t} not found`);
return e;
}
setDefaultChain(t, e) {
if (this.chainId = t, !this.httpProviders[t]) {
const s = e || r(`${this.name}:${t}`, this.namespace);
if (!s)
throw new Error(`No RPC url provided for chainId: ${t}`);
this.setHttpProvider(t, s);
}
this.events.emit("chainChanged", this.chainId);
}
setHttpProvider(t, e) {
const s = this.createHttpProvider(t, e);
s && (this.httpProviders[t] = s);
}
createHttpProvider(t, e) {
const s = e || r(t, this.namespace);
return typeof s > "u" ? void 0 : new JsonRpcProvider(new HttpConnection(s));
}
}
class $ {
constructor(t) {
this.name = "cip34", this.namespace = t.namespace, this.events = t.events, this.client = t.client, this.chainId = this.getDefaultChainId(), this.httpProviders = this.createHttpProviders();
}
updateNamespace(t) {
this.namespace = Object.assign(this.namespace, t);
}
requestAccounts() {
return this.getAccounts();
}
getAccounts() {
const t = this.namespace.accounts;
return t ? t.filter((e) => e.split(":")[1] === this.chainId.toString()).map((e) => e.split(":")[2]) || [] : [];
}
createHttpProviders() {
const t = {};
return this.namespace.chains.forEach((e) => {
t[e] = this.createHttpProvider(e);
}), t;
}
getDefaultChainId() {
if (this.chainId)
return this.chainId;
const t = this.namespace.chains[0];
if (!t)
throw new Error("ChainId not found");
return t.split(":")[1];
}
request(t) {
return this.namespace.methods.includes(t.request.method) ? this.client.request(t) : this.getHttpProvider().request(t.request);
}
getHttpProvider() {
const t = `${this.name}:${this.chainId}`, e = this.httpProviders[t];
if (typeof e > "u")
throw new Error(`JSON-RPC provider for ${t} not found`);
return e;
}
setDefaultChain(t, e) {
if (this.chainId = t, !this.httpProviders[t]) {
const s = e || r(`${this.name}:${t}`, this.namespace);
if (!s)
throw new Error(`No RPC url provided for chainId: ${t}`);
this.setHttpProvider(t, s);
}
this.events.emit("chainChanged", this.chainId);
}
setHttpProvider(t, e) {
const s = this.createHttpProvider(t, e);
s && (this.httpProviders[t] = s);
}
createHttpProvider(t, e) {
const s = e || r(t, this.namespace);
return typeof s > "u" ? void 0 : new JsonRpcProvider(new HttpConnection(s));
}
}
const h2 = "error", b = "wss://relay.walletconnect.com", S = "wc", A = "universal_provider", p2 = `${S}@${2}:${A}:`;
var N = Object.defineProperty, D = Object.defineProperties, j = Object.getOwnPropertyDescriptors, d = Object.getOwnPropertySymbols, k = Object.prototype.hasOwnProperty, R = Object.prototype.propertyIsEnumerable, l = (i, t, e) => t in i ? N(i, t, { enumerable: true, configurable: true, writable: true, value: e }) : i[t] = e, u2 = (i, t) => {
for (var e in t || (t = {}))
k.call(t, e) && l(i, e, t[e]);
if (d)
for (var e of d(t))
R.call(t, e) && l(i, e, t[e]);
return i;
}, _ = (i, t) => D(i, j(t));
class o {
constructor(t) {
this.events = new eventsExports(), this.rpcProviders = {}, this.providerOpts = t, this.logger = typeof (t == null ? void 0 : t.logger) < "u" && typeof (t == null ? void 0 : t.logger) != "string" ? t.logger : browser$2(cjs$4.getDefaultLoggerOptions({ level: (t == null ? void 0 : t.logger) || h2 }));
}
static async init(t) {
const e = new o(t);
return await e.initialize(), e;
}
async request(t, e) {
const [s, n2] = this.validateChain(e);
if (!this.session)
throw new Error("Please call connect() before request()");
return await this.getProvider(s).request({ request: u2({}, t), chainId: `${s}:${n2}`, topic: this.session.topic });
}
sendAsync(t, e, s) {
this.request(t, s).then((n2) => e(null, n2)).catch((n2) => e(n2, void 0));
}
async enable() {
if (!this.client)
throw new Error("Sign Client not initialized");
return this.session || await this.connect({ namespaces: this.namespaces }), await this.requestAccounts();
}
async disconnect() {
var t;
if (!this.session)
throw new Error("Please call connect() before enable()");
await this.client.disconnect({ topic: (t = this.session) == null ? void 0 : t.topic, reason: h$1("USER_DISCONNECTED") }), await this.cleanup();
}
async connect(t) {
if (!this.client)
throw new Error("Sign Client not initialized");
const { namespaces: e } = t;
return this.setNamespaces(e), this.createProviders(), await this.cleanupPendingPairings(), t.skipPairing === true ? void 0 : await this.pair(t.pairingTopic);
}
on(t, e) {
this.events.on(t, e);
}
once(t, e) {
this.events.once(t, e);
}
removeListener(t, e) {
this.events.removeListener(t, e);
}
off(t, e) {
this.events.off(t, e);
}
get isWalletConnect() {
return true;
}
async pair(t) {
const { uri: e, approval: s } = await this.client.connect({ pairingTopic: t, requiredNamespaces: this.namespaces });
return e && (this.uri = e, this.events.emit("display_uri", e)), this.session = await s(), this.onSessionUpdate(), this.onConnect(), this.session;
}
setDefaultChain(t, e) {
try {
const [s, n2] = this.validateChain(t);
this.getProvider(s).setDefaultChain(n2, e);
} catch (s) {
if (!/Please call connect/.test(s.message))
throw s;
}
}
async cleanupPendingPairings(t = {}) {
this.logger.info("Cleaning up inactive pairings...");
const e = this.client.pairing.getAll();
if (I(e)) {
for (const s of e)
t.deletePairings ? this.client.core.expirer.set(s.topic, 0) : await this.client.core.relayer.subscriber.unsubscribe(s.topic);
this.logger.info(`Inactive pairings cleared: ${e.length}`);
}
}
async checkStorage() {
if (this.namespaces = await this.client.core.storage.getItem(`${p2}/namespaces`) || {}, this.namespaces && this.createProviders(), this.client.session.length) {
const t = this.client.session.keys.length - 1;
this.session = this.client.session.get(this.client.session.keys[t]), this.onSessionUpdate();
}
}
async initialize() {
this.logger.trace("Initialized"), await this.createClient(), this.checkStorage(), this.registerEventListeners();
}
async createClient() {
this.client = this.providerOpts.client || await L.init({ logger: this.providerOpts.logger || h2, relayUrl: this.providerOpts.relayUrl || b, projectId: this.providerOpts.projectId, metadata: this.providerOpts.metadata, storageOptions: this.providerOpts.storageOptions, name: this.providerOpts.name }), this.logger.trace("SignClient Initialized");
}
createProviders() {
if (!this.client)
throw new Error("Sign Client not initialized");
Object.keys(this.namespaces).forEach((t) => {
switch (t) {
case "eip155":
this.rpcProviders[t] = new E2({ client: this.client, namespace: this.namespaces[t], events: this.events });
break;
case "solana":
this.rpcProviders[t] = new q({ client: this.client, namespace: this.namespaces[t], events: this.events });
break;
case "cosmos":
this.rpcProviders[t] = new H({ client: this.client, namespace: this.namespaces[t], events: this.events });
break;
case "polkadot":
break;
case "cip34":
this.rpcProviders[t] = new $({ client: this.client, namespace: this.namespaces[t], events: this.events });
break;
}
});
}
registerEventListeners() {
if (typeof this.client > "u")
throw new Error("Sign Client is not initialized");
this.client.on("session_ping", (t) => {
this.events.emit("session_ping", t);
}), this.client.on("session_event", (t) => {
const { params: e } = t, { event: s } = e;
s.name === "accountsChanged" ? this.events.emit("accountsChanged", s.data) : s.name === "chainChanged" ? this.onChainChanged(s.data, e.chainId) : this.events.emit(s.name, s.data), this.events.emit("session_event", t);
}), this.client.on("session_update", ({ topic: t, params: e }) => {
var s;
const { namespaces: n2 } = e, v2 = (s = this.client) == null ? void 0 : s.session.get(t);
this.session = _(u2({}, v2), { namespaces: n2 }), this.onSessionUpdate(), this.events.emit("session_update", { topic: t, params: e });
}), this.client.on("session_delete", async (t) => {
await this.cleanup(), this.events.emit("session_delete", t);
});
}
getProvider(t) {
if (!this.rpcProviders[t])
throw new Error(`Provider not found: ${t}`);
return this.rpcProviders[t];
}
onSessionUpdate() {
Object.keys(this.rpcProviders).forEach((t) => {
var e;
this.getProvider(t).updateNamespace((e = this.session) == null ? void 0 : e.namespaces[t]);
});
}
setNamespaces(t) {
if (!t || !Object.keys(t).length)
throw new Error("Namespaces must be not empty");
this.client.core.storage.setItem(`${p2}/namespaces`, t), this.namespaces = t;
}
validateChain(t) {
const [e, s] = (t == null ? void 0 : t.split(":")) || ["", ""];
if (e && !Object.keys(this.namespaces).includes(e))
throw new Error(`Namespace '${e}' is not configured. Please call connect() first with namespace config.`);
return !e || !s ? y2(this.namespaces) : [e, s];
}
async requestAccounts() {
const [t] = this.validateChain();
return await this.getProvider(t).requestAccounts();
}
onChainChanged(t, e) {
const [s, n2] = this.validateChain(e);
this.getProvider(s).setDefaultChain(n2), this.events.emit("chainChanged", t);
}
onConnect() {
this.events.emit("connect", { session: this.session });
}
async cleanup() {
this.session = void 0, await this.cleanupPendingPairings({ deletePairings: true });
}
}
const U = o;
export {
U as UniversalProvider,
o as default
};