@partylayer/sdk 0.2.5 → 0.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/dist/index.d.mts +173 -17
- package/dist/index.d.ts +173 -17
- package/dist/index.js +431 -50
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +344 -53
- package/dist/index.mjs.map +1 -1
- package/package.json +21 -18
- package/LICENSE +0 -21
package/dist/index.js
CHANGED
|
@@ -5,9 +5,16 @@ var registryClient = require('@partylayer/registry-client');
|
|
|
5
5
|
var adapterConsole = require('@partylayer/adapter-console');
|
|
6
6
|
var adapterLoop = require('@partylayer/adapter-loop');
|
|
7
7
|
var adapterCantor8 = require('@partylayer/adapter-cantor8');
|
|
8
|
+
var adapterNightly = require('@partylayer/adapter-nightly');
|
|
8
9
|
var adapterBron = require('@partylayer/adapter-bron');
|
|
10
|
+
var provider = require('@partylayer/provider');
|
|
9
11
|
|
|
10
|
-
|
|
12
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
13
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
14
|
+
}) : x)(function(x) {
|
|
15
|
+
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
16
|
+
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
17
|
+
});
|
|
11
18
|
|
|
12
19
|
// src/config.ts
|
|
13
20
|
var DEFAULT_REGISTRY_URL = "https://registry.partylayer.xyz";
|
|
@@ -166,12 +173,196 @@ function getBuiltinAdapters() {
|
|
|
166
173
|
// Console Wallet - browser extension
|
|
167
174
|
new adapterLoop.LoopAdapter(),
|
|
168
175
|
// 5N Loop - QR code / popup
|
|
169
|
-
new adapterCantor8.Cantor8Adapter()
|
|
176
|
+
new adapterCantor8.Cantor8Adapter(),
|
|
170
177
|
// Cantor8 - deep link transport
|
|
178
|
+
new adapterNightly.NightlyAdapter()
|
|
179
|
+
// Nightly - multichain wallet (injected)
|
|
171
180
|
];
|
|
172
181
|
}
|
|
173
|
-
|
|
174
|
-
|
|
182
|
+
var SDK_VERSION = "0.3.0";
|
|
183
|
+
var MetricsTelemetryAdapter = class {
|
|
184
|
+
config;
|
|
185
|
+
metrics = /* @__PURE__ */ new Map();
|
|
186
|
+
buffer = [];
|
|
187
|
+
flushTimer = null;
|
|
188
|
+
appIdHash = null;
|
|
189
|
+
originHash = null;
|
|
190
|
+
initialized = false;
|
|
191
|
+
constructor(config) {
|
|
192
|
+
this.config = {
|
|
193
|
+
enabled: config.enabled ?? false,
|
|
194
|
+
endpoint: config.endpoint,
|
|
195
|
+
sampleRate: config.sampleRate ?? 1,
|
|
196
|
+
appId: config.appId,
|
|
197
|
+
includeOrigin: config.includeOrigin ?? false,
|
|
198
|
+
batchSize: config.batchSize ?? 10,
|
|
199
|
+
flushIntervalMs: config.flushIntervalMs ?? 3e4,
|
|
200
|
+
network: config.network
|
|
201
|
+
};
|
|
202
|
+
this.initialize();
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Initialize async components (hashing)
|
|
206
|
+
*/
|
|
207
|
+
async initialize() {
|
|
208
|
+
if (this.initialized) return;
|
|
209
|
+
if (this.config.appId) {
|
|
210
|
+
this.appIdHash = await core.hashForPrivacy(this.config.appId);
|
|
211
|
+
}
|
|
212
|
+
if (this.config.includeOrigin && typeof window !== "undefined") {
|
|
213
|
+
this.originHash = await core.hashForPrivacy(window.location.origin);
|
|
214
|
+
}
|
|
215
|
+
if (this.config.enabled && this.config.flushIntervalMs) {
|
|
216
|
+
this.flushTimer = setInterval(() => {
|
|
217
|
+
this.flush().catch(console.error);
|
|
218
|
+
}, this.config.flushIntervalMs);
|
|
219
|
+
}
|
|
220
|
+
this.initialized = true;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Check if telemetry is enabled
|
|
224
|
+
*/
|
|
225
|
+
isEnabled() {
|
|
226
|
+
return this.config.enabled;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Track a named event (TelemetryAdapter interface)
|
|
230
|
+
*/
|
|
231
|
+
track(event, properties) {
|
|
232
|
+
if (!this.config.enabled) return;
|
|
233
|
+
const sampleRate = this.config.sampleRate ?? 1;
|
|
234
|
+
if (sampleRate < 1 && Math.random() >= sampleRate) {
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
const current = this.metrics.get(`event_${event}`) ?? 0;
|
|
238
|
+
this.metrics.set(`event_${event}`, current + 1);
|
|
239
|
+
this.bufferEvent({ type: "increment", metric: `event_${event}`, value: 1, timestamp: Date.now() });
|
|
240
|
+
if (properties) {
|
|
241
|
+
for (const [key, value] of Object.entries(properties)) {
|
|
242
|
+
if (typeof value === "number") {
|
|
243
|
+
this.gauge(`${event}_${key}`, value);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Track an error (TelemetryAdapter interface)
|
|
250
|
+
*/
|
|
251
|
+
error(error, properties) {
|
|
252
|
+
if (!this.config.enabled) return;
|
|
253
|
+
const code = error.code ?? "UNKNOWN";
|
|
254
|
+
this.increment(`error_${code}`);
|
|
255
|
+
if (properties) {
|
|
256
|
+
this.track("error", properties);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Increment a metric counter
|
|
261
|
+
*/
|
|
262
|
+
increment(metric, value = 1) {
|
|
263
|
+
if (!this.config.enabled) return;
|
|
264
|
+
const sampleRate = this.config.sampleRate ?? 1;
|
|
265
|
+
if (sampleRate < 1 && Math.random() >= sampleRate) {
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
268
|
+
const current = this.metrics.get(metric) ?? 0;
|
|
269
|
+
this.metrics.set(metric, current + value);
|
|
270
|
+
this.bufferEvent({
|
|
271
|
+
type: "increment",
|
|
272
|
+
metric,
|
|
273
|
+
value,
|
|
274
|
+
timestamp: Date.now()
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Set a gauge metric value
|
|
279
|
+
*/
|
|
280
|
+
gauge(metric, value) {
|
|
281
|
+
if (!this.config.enabled) return;
|
|
282
|
+
this.metrics.set(metric, value);
|
|
283
|
+
this.bufferEvent({
|
|
284
|
+
type: "gauge",
|
|
285
|
+
metric,
|
|
286
|
+
value,
|
|
287
|
+
timestamp: Date.now()
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Buffer an event for batched sending
|
|
292
|
+
*/
|
|
293
|
+
bufferEvent(event) {
|
|
294
|
+
this.buffer.push(event);
|
|
295
|
+
if (this.config.batchSize && this.buffer.length >= this.config.batchSize) {
|
|
296
|
+
this.flush().catch(console.error);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Flush buffered metrics to backend
|
|
301
|
+
*/
|
|
302
|
+
async flush() {
|
|
303
|
+
if (!this.config.enabled) return;
|
|
304
|
+
if (this.metrics.size === 0) return;
|
|
305
|
+
if (!this.config.endpoint) {
|
|
306
|
+
this.buffer = [];
|
|
307
|
+
return;
|
|
308
|
+
}
|
|
309
|
+
if (!this.initialized) {
|
|
310
|
+
await this.initialize();
|
|
311
|
+
}
|
|
312
|
+
try {
|
|
313
|
+
const payload = core.createMetricsPayload({
|
|
314
|
+
sdkVersion: SDK_VERSION,
|
|
315
|
+
network: this.config.network ?? "unknown",
|
|
316
|
+
metrics: Object.fromEntries(this.metrics),
|
|
317
|
+
appIdHash: this.appIdHash ?? void 0,
|
|
318
|
+
originHash: this.originHash ?? void 0
|
|
319
|
+
});
|
|
320
|
+
await fetch(this.config.endpoint, {
|
|
321
|
+
method: "POST",
|
|
322
|
+
headers: {
|
|
323
|
+
"Content-Type": "application/json"
|
|
324
|
+
},
|
|
325
|
+
body: JSON.stringify(payload)
|
|
326
|
+
});
|
|
327
|
+
this.buffer = [];
|
|
328
|
+
} catch (error) {
|
|
329
|
+
console.debug("[PartyLayer Telemetry] Flush failed:", error);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Get current metrics snapshot (for testing/debugging)
|
|
334
|
+
*/
|
|
335
|
+
getMetrics() {
|
|
336
|
+
return Object.fromEntries(this.metrics);
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Reset all metrics (for testing)
|
|
340
|
+
*/
|
|
341
|
+
reset() {
|
|
342
|
+
this.metrics.clear();
|
|
343
|
+
this.buffer = [];
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Destroy the adapter (cleanup timers)
|
|
347
|
+
*/
|
|
348
|
+
destroy() {
|
|
349
|
+
if (this.flushTimer) {
|
|
350
|
+
clearInterval(this.flushTimer);
|
|
351
|
+
this.flushTimer = null;
|
|
352
|
+
}
|
|
353
|
+
this.flush().catch(console.error);
|
|
354
|
+
}
|
|
355
|
+
};
|
|
356
|
+
function isTelemetryConfig(value) {
|
|
357
|
+
return typeof value === "object" && value !== null && "enabled" in value && typeof value.enabled === "boolean";
|
|
358
|
+
}
|
|
359
|
+
function createTelemetryAdapter(config) {
|
|
360
|
+
if (!config) return void 0;
|
|
361
|
+
if (isTelemetryConfig(config)) {
|
|
362
|
+
return new MetricsTelemetryAdapter(config);
|
|
363
|
+
}
|
|
364
|
+
return config;
|
|
365
|
+
}
|
|
175
366
|
var PartyLayerClient = class {
|
|
176
367
|
config;
|
|
177
368
|
adapters = /* @__PURE__ */ new Map();
|
|
@@ -196,7 +387,8 @@ var PartyLayerClient = class {
|
|
|
196
387
|
this.logger = config.logger || new DefaultLogger();
|
|
197
388
|
this.crypto = config.crypto || new DefaultCrypto();
|
|
198
389
|
this.storage = config.storage || new DefaultStorage();
|
|
199
|
-
|
|
390
|
+
const telemetryAdapter = createTelemetryAdapter(config.telemetry);
|
|
391
|
+
this.telemetry = telemetryAdapter || new DefaultTelemetry();
|
|
200
392
|
const adaptersToRegister = config.adapters ?? getBuiltinAdapters();
|
|
201
393
|
for (const adapterOrClass of adaptersToRegister) {
|
|
202
394
|
let adapter;
|
|
@@ -242,33 +434,49 @@ var PartyLayerClient = class {
|
|
|
242
434
|
* List available wallets
|
|
243
435
|
*/
|
|
244
436
|
async listWallets(filter) {
|
|
437
|
+
let registryWallets;
|
|
245
438
|
try {
|
|
246
|
-
|
|
439
|
+
registryWallets = await this.registryClient.getWallets();
|
|
247
440
|
this.updateRegistryStatus();
|
|
248
|
-
if (filter?.requiredCapabilities) {
|
|
249
|
-
return allWalletInfos.filter(
|
|
250
|
-
(walletInfo) => filter.requiredCapabilities.every(
|
|
251
|
-
(cap) => walletInfo.capabilities.includes(cap)
|
|
252
|
-
)
|
|
253
|
-
);
|
|
254
|
-
}
|
|
255
|
-
if (!filter?.includeExperimental) {
|
|
256
|
-
return allWalletInfos.filter((walletInfo) => walletInfo.channel === "stable");
|
|
257
|
-
}
|
|
258
|
-
return allWalletInfos;
|
|
259
441
|
} catch (err) {
|
|
260
442
|
this.updateRegistryStatus();
|
|
261
|
-
|
|
262
|
-
|
|
443
|
+
this.logger.warn("Registry fetch failed, using registered adapters only", {
|
|
444
|
+
error: err instanceof Error ? err.message : String(err)
|
|
263
445
|
});
|
|
264
|
-
|
|
265
|
-
throw error;
|
|
446
|
+
registryWallets = [];
|
|
266
447
|
}
|
|
448
|
+
const registryIds = new Set(registryWallets.map((w) => String(w.walletId)));
|
|
449
|
+
for (const [, adapter] of this.adapters) {
|
|
450
|
+
if (registryIds.has(String(adapter.walletId))) continue;
|
|
451
|
+
registryWallets.push({
|
|
452
|
+
walletId: adapter.walletId,
|
|
453
|
+
name: adapter.name,
|
|
454
|
+
website: "",
|
|
455
|
+
icons: {},
|
|
456
|
+
capabilities: adapter.getCapabilities(),
|
|
457
|
+
adapter: { packageName: "builtin", versionRange: "*" },
|
|
458
|
+
docs: [],
|
|
459
|
+
networks: [this.config.network || "devnet"],
|
|
460
|
+
channel: "stable"
|
|
461
|
+
});
|
|
462
|
+
}
|
|
463
|
+
if (filter?.requiredCapabilities) {
|
|
464
|
+
return registryWallets.filter(
|
|
465
|
+
(walletInfo) => filter.requiredCapabilities.every(
|
|
466
|
+
(cap) => walletInfo.capabilities.includes(cap)
|
|
467
|
+
)
|
|
468
|
+
);
|
|
469
|
+
}
|
|
470
|
+
if (!filter?.includeExperimental) {
|
|
471
|
+
return registryWallets.filter((walletInfo) => walletInfo.channel === "stable");
|
|
472
|
+
}
|
|
473
|
+
return registryWallets;
|
|
267
474
|
}
|
|
268
475
|
/**
|
|
269
476
|
* Connect to a wallet
|
|
270
477
|
*/
|
|
271
478
|
async connect(options) {
|
|
479
|
+
this.telemetry?.increment?.(core.METRICS.WALLET_CONNECT_ATTEMPTS);
|
|
272
480
|
try {
|
|
273
481
|
const wallets = await this.listWallets({
|
|
274
482
|
requiredCapabilities: options?.requiredCapabilities,
|
|
@@ -280,31 +488,33 @@ var PartyLayerClient = class {
|
|
|
280
488
|
(w) => options.allowWallets.includes(w.walletId)
|
|
281
489
|
);
|
|
282
490
|
}
|
|
283
|
-
if (options?.preferInstalled) {
|
|
284
|
-
const installedWallets = [];
|
|
285
|
-
const notInstalledWallets = [];
|
|
286
|
-
for (const wallet of availableWallets) {
|
|
287
|
-
const adapter2 = this.adapters.get(wallet.walletId);
|
|
288
|
-
if (adapter2) {
|
|
289
|
-
const detect = await adapter2.detectInstalled();
|
|
290
|
-
if (detect.installed) {
|
|
291
|
-
installedWallets.push(wallet);
|
|
292
|
-
} else {
|
|
293
|
-
notInstalledWallets.push(wallet);
|
|
294
|
-
}
|
|
295
|
-
} else {
|
|
296
|
-
notInstalledWallets.push(wallet);
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
availableWallets = [...installedWallets, ...notInstalledWallets];
|
|
300
|
-
}
|
|
301
491
|
let selectedWallet;
|
|
492
|
+
let isNativeWallet = false;
|
|
302
493
|
if (options?.walletId) {
|
|
303
|
-
|
|
494
|
+
const found = availableWallets.find(
|
|
304
495
|
(w) => w.walletId === options.walletId
|
|
305
496
|
);
|
|
306
|
-
if (
|
|
307
|
-
|
|
497
|
+
if (found) {
|
|
498
|
+
selectedWallet = found;
|
|
499
|
+
} else {
|
|
500
|
+
const nativeAdapter = this.adapters.get(options.walletId);
|
|
501
|
+
if (nativeAdapter) {
|
|
502
|
+
isNativeWallet = true;
|
|
503
|
+
selectedWallet = {
|
|
504
|
+
walletId: options.walletId,
|
|
505
|
+
name: nativeAdapter.name,
|
|
506
|
+
website: "",
|
|
507
|
+
icons: {},
|
|
508
|
+
capabilities: nativeAdapter.getCapabilities(),
|
|
509
|
+
adapter: { packageName: "native-cip0103", versionRange: "*" },
|
|
510
|
+
docs: [],
|
|
511
|
+
networks: [this.config.network],
|
|
512
|
+
channel: "stable",
|
|
513
|
+
metadata: { source: "native-cip0103" }
|
|
514
|
+
};
|
|
515
|
+
} else {
|
|
516
|
+
throw new core.WalletNotFoundError(String(options.walletId));
|
|
517
|
+
}
|
|
308
518
|
}
|
|
309
519
|
} else if (availableWallets.length === 0) {
|
|
310
520
|
throw new core.WalletNotFoundError("No wallets available");
|
|
@@ -315,14 +525,22 @@ var PartyLayerClient = class {
|
|
|
315
525
|
if (!adapter) {
|
|
316
526
|
throw new core.WalletNotFoundError(String(selectedWallet.walletId));
|
|
317
527
|
}
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
528
|
+
if (!isNativeWallet) {
|
|
529
|
+
try {
|
|
530
|
+
const walletEntry = await this.registryClient.getWalletEntry(String(selectedWallet.walletId));
|
|
531
|
+
if (walletEntry.originAllowlist && walletEntry.originAllowlist.length > 0) {
|
|
532
|
+
if (!walletEntry.originAllowlist.includes(this.origin)) {
|
|
533
|
+
const { OriginNotAllowedError: OriginNotAllowedError2 } = await import('@partylayer/core');
|
|
534
|
+
throw new OriginNotAllowedError2(
|
|
535
|
+
this.origin,
|
|
536
|
+
walletEntry.originAllowlist
|
|
537
|
+
);
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
} catch (e) {
|
|
541
|
+
if (!(e instanceof core.WalletNotFoundError)) {
|
|
542
|
+
throw e;
|
|
543
|
+
}
|
|
326
544
|
}
|
|
327
545
|
}
|
|
328
546
|
if (options?.requiredCapabilities) {
|
|
@@ -356,6 +574,8 @@ var PartyLayerClient = class {
|
|
|
356
574
|
await this.persistSession(session);
|
|
357
575
|
this.activeSession = session;
|
|
358
576
|
this.updateRegistryStatus();
|
|
577
|
+
this.telemetry?.increment?.(core.METRICS.WALLET_CONNECT_SUCCESS);
|
|
578
|
+
this.telemetry?.increment?.(core.METRICS.SESSIONS_CREATED);
|
|
359
579
|
this.emit("session:connected", {
|
|
360
580
|
type: "session:connected",
|
|
361
581
|
session
|
|
@@ -515,6 +735,33 @@ var PartyLayerClient = class {
|
|
|
515
735
|
throw error;
|
|
516
736
|
}
|
|
517
737
|
}
|
|
738
|
+
/**
|
|
739
|
+
* Proxy a JSON Ledger API request through the active wallet adapter
|
|
740
|
+
*/
|
|
741
|
+
async ledgerApi(params) {
|
|
742
|
+
const session = await this.getActiveSession();
|
|
743
|
+
if (!session) {
|
|
744
|
+
throw new Error("No active session");
|
|
745
|
+
}
|
|
746
|
+
const adapter = this.adapters.get(session.walletId);
|
|
747
|
+
if (!adapter || !adapter.ledgerApi) {
|
|
748
|
+
throw new core.CapabilityNotSupportedError(
|
|
749
|
+
session.walletId,
|
|
750
|
+
"ledgerApi"
|
|
751
|
+
);
|
|
752
|
+
}
|
|
753
|
+
try {
|
|
754
|
+
const ctx = this.createAdapterContext();
|
|
755
|
+
return await adapter.ledgerApi(ctx, session, params);
|
|
756
|
+
} catch (err) {
|
|
757
|
+
const error = core.mapUnknownErrorToPartyLayerError(err, {
|
|
758
|
+
phase: "ledgerApi",
|
|
759
|
+
walletId: String(session.walletId)
|
|
760
|
+
});
|
|
761
|
+
this.emit("error", { type: "error", error });
|
|
762
|
+
throw error;
|
|
763
|
+
}
|
|
764
|
+
}
|
|
518
765
|
/**
|
|
519
766
|
* Subscribe to events
|
|
520
767
|
*/
|
|
@@ -536,10 +783,36 @@ var PartyLayerClient = class {
|
|
|
536
783
|
handlers.delete(handler);
|
|
537
784
|
}
|
|
538
785
|
}
|
|
786
|
+
/**
|
|
787
|
+
* Get a CIP-0103 Provider backed by this client.
|
|
788
|
+
*
|
|
789
|
+
* This bridge routes all request() calls through the existing
|
|
790
|
+
* PartyLayerClient methods and maps events to CIP-0103 format.
|
|
791
|
+
*
|
|
792
|
+
* The bridge implements the full CIP-0103 specification:
|
|
793
|
+
* - All 10 mandatory methods including `ledgerApi` (when adapter supports it)
|
|
794
|
+
* - Full transaction lifecycle: pending -> signed -> executed/failed
|
|
795
|
+
* - All CIP-0103 events: statusChanged, accountsChanged, txChanged, connected
|
|
796
|
+
*
|
|
797
|
+
* **Note:** Async wallets (userUrl pattern) are not supported through the
|
|
798
|
+
* bridge. For async wallet support, use `PartyLayerProvider` directly.
|
|
799
|
+
*
|
|
800
|
+
* @returns CIP-0103 compliant Provider
|
|
801
|
+
*/
|
|
802
|
+
asProvider() {
|
|
803
|
+
const { createProviderBridge: createProviderBridge2 } = __require("@partylayer/provider");
|
|
804
|
+
return createProviderBridge2(this);
|
|
805
|
+
}
|
|
539
806
|
/**
|
|
540
807
|
* Destroy client and cleanup
|
|
541
808
|
*/
|
|
542
809
|
destroy() {
|
|
810
|
+
if (this.telemetry && "destroy" in this.telemetry && typeof this.telemetry.destroy === "function") {
|
|
811
|
+
this.telemetry.destroy();
|
|
812
|
+
} else if (this.telemetry?.flush) {
|
|
813
|
+
this.telemetry.flush().catch(() => {
|
|
814
|
+
});
|
|
815
|
+
}
|
|
543
816
|
this.eventHandlers.clear();
|
|
544
817
|
this.activeSession = null;
|
|
545
818
|
}
|
|
@@ -593,6 +866,7 @@ var PartyLayerClient = class {
|
|
|
593
866
|
* Restore session from storage
|
|
594
867
|
*/
|
|
595
868
|
async restoreSession() {
|
|
869
|
+
this.telemetry?.increment?.(core.METRICS.RESTORE_ATTEMPTS);
|
|
596
870
|
try {
|
|
597
871
|
const encrypted = await this.storage.get("active_session");
|
|
598
872
|
if (!encrypted) {
|
|
@@ -617,6 +891,8 @@ var PartyLayerClient = class {
|
|
|
617
891
|
if (restored) {
|
|
618
892
|
this.activeSession = restored;
|
|
619
893
|
await this.persistSession(restored);
|
|
894
|
+
this.telemetry?.increment?.(core.METRICS.SESSIONS_RESTORED);
|
|
895
|
+
this.telemetry?.increment?.(core.METRICS.WALLET_CONNECT_SUCCESS);
|
|
620
896
|
this.emit("session:connected", {
|
|
621
897
|
type: "session:connected",
|
|
622
898
|
session: restored
|
|
@@ -644,6 +920,14 @@ var PartyLayerClient = class {
|
|
|
644
920
|
updateRegistryStatus() {
|
|
645
921
|
const status = this.registryClient.getStatus();
|
|
646
922
|
if (status) {
|
|
923
|
+
if (status.source === "network") {
|
|
924
|
+
this.telemetry?.increment?.(core.METRICS.REGISTRY_FETCH);
|
|
925
|
+
} else if (status.source === "cache") {
|
|
926
|
+
this.telemetry?.increment?.(core.METRICS.REGISTRY_CACHE_HIT);
|
|
927
|
+
}
|
|
928
|
+
if (status.stale) {
|
|
929
|
+
this.telemetry?.increment?.(core.METRICS.REGISTRY_STALE);
|
|
930
|
+
}
|
|
647
931
|
this.emit("registry:status", {
|
|
648
932
|
type: "registry:status",
|
|
649
933
|
status: {
|
|
@@ -669,6 +953,12 @@ var PartyLayerClient = class {
|
|
|
669
953
|
* Emit event to handlers
|
|
670
954
|
*/
|
|
671
955
|
emit(event, payload) {
|
|
956
|
+
if (event === "error" && "error" in payload) {
|
|
957
|
+
const error = payload.error;
|
|
958
|
+
if (error.code) {
|
|
959
|
+
this.telemetry?.increment?.(core.errorMetricName(error.code));
|
|
960
|
+
}
|
|
961
|
+
}
|
|
672
962
|
const handlers = this.eventHandlers.get(event);
|
|
673
963
|
if (handlers) {
|
|
674
964
|
for (const handler of handlers) {
|
|
@@ -693,10 +983,22 @@ Object.defineProperty(exports, "CapabilityNotSupportedError", {
|
|
|
693
983
|
enumerable: true,
|
|
694
984
|
get: function () { return core.CapabilityNotSupportedError; }
|
|
695
985
|
});
|
|
986
|
+
Object.defineProperty(exports, "ENABLEMENT_METRICS", {
|
|
987
|
+
enumerable: true,
|
|
988
|
+
get: function () { return core.ENABLEMENT_METRICS; }
|
|
989
|
+
});
|
|
990
|
+
Object.defineProperty(exports, "ERROR_METRICS", {
|
|
991
|
+
enumerable: true,
|
|
992
|
+
get: function () { return core.ERROR_METRICS; }
|
|
993
|
+
});
|
|
696
994
|
Object.defineProperty(exports, "InternalError", {
|
|
697
995
|
enumerable: true,
|
|
698
996
|
get: function () { return core.InternalError; }
|
|
699
997
|
});
|
|
998
|
+
Object.defineProperty(exports, "METRICS", {
|
|
999
|
+
enumerable: true,
|
|
1000
|
+
get: function () { return core.METRICS; }
|
|
1001
|
+
});
|
|
700
1002
|
Object.defineProperty(exports, "OriginNotAllowedError", {
|
|
701
1003
|
enumerable: true,
|
|
702
1004
|
get: function () { return core.OriginNotAllowedError; }
|
|
@@ -705,6 +1007,10 @@ Object.defineProperty(exports, "PartyLayerError", {
|
|
|
705
1007
|
enumerable: true,
|
|
706
1008
|
get: function () { return core.PartyLayerError; }
|
|
707
1009
|
});
|
|
1010
|
+
Object.defineProperty(exports, "REGISTRY_METRICS", {
|
|
1011
|
+
enumerable: true,
|
|
1012
|
+
get: function () { return core.REGISTRY_METRICS; }
|
|
1013
|
+
});
|
|
708
1014
|
Object.defineProperty(exports, "RegistryFetchFailedError", {
|
|
709
1015
|
enumerable: true,
|
|
710
1016
|
get: function () { return core.RegistryFetchFailedError; }
|
|
@@ -741,6 +1047,10 @@ Object.defineProperty(exports, "WalletNotInstalledError", {
|
|
|
741
1047
|
enumerable: true,
|
|
742
1048
|
get: function () { return core.WalletNotInstalledError; }
|
|
743
1049
|
});
|
|
1050
|
+
Object.defineProperty(exports, "errorMetricName", {
|
|
1051
|
+
enumerable: true,
|
|
1052
|
+
get: function () { return core.errorMetricName; }
|
|
1053
|
+
});
|
|
744
1054
|
Object.defineProperty(exports, "ConsoleAdapter", {
|
|
745
1055
|
enumerable: true,
|
|
746
1056
|
get: function () { return adapterConsole.ConsoleAdapter; }
|
|
@@ -753,15 +1063,86 @@ Object.defineProperty(exports, "Cantor8Adapter", {
|
|
|
753
1063
|
enumerable: true,
|
|
754
1064
|
get: function () { return adapterCantor8.Cantor8Adapter; }
|
|
755
1065
|
});
|
|
1066
|
+
Object.defineProperty(exports, "NightlyAdapter", {
|
|
1067
|
+
enumerable: true,
|
|
1068
|
+
get: function () { return adapterNightly.NightlyAdapter; }
|
|
1069
|
+
});
|
|
756
1070
|
Object.defineProperty(exports, "BronAdapter", {
|
|
757
1071
|
enumerable: true,
|
|
758
1072
|
get: function () { return adapterBron.BronAdapter; }
|
|
759
1073
|
});
|
|
1074
|
+
Object.defineProperty(exports, "CANTON_NETWORKS", {
|
|
1075
|
+
enumerable: true,
|
|
1076
|
+
get: function () { return provider.CANTON_NETWORKS; }
|
|
1077
|
+
});
|
|
1078
|
+
Object.defineProperty(exports, "CIP0103EventBus", {
|
|
1079
|
+
enumerable: true,
|
|
1080
|
+
get: function () { return provider.CIP0103EventBus; }
|
|
1081
|
+
});
|
|
1082
|
+
Object.defineProperty(exports, "CIP0103_EVENTS", {
|
|
1083
|
+
enumerable: true,
|
|
1084
|
+
get: function () { return provider.CIP0103_EVENTS; }
|
|
1085
|
+
});
|
|
1086
|
+
Object.defineProperty(exports, "CIP0103_MANDATORY_METHODS", {
|
|
1087
|
+
enumerable: true,
|
|
1088
|
+
get: function () { return provider.CIP0103_MANDATORY_METHODS; }
|
|
1089
|
+
});
|
|
1090
|
+
Object.defineProperty(exports, "CIP0103_METHODS", {
|
|
1091
|
+
enumerable: true,
|
|
1092
|
+
get: function () { return provider.CIP0103_METHODS; }
|
|
1093
|
+
});
|
|
1094
|
+
Object.defineProperty(exports, "JSON_RPC_ERRORS", {
|
|
1095
|
+
enumerable: true,
|
|
1096
|
+
get: function () { return provider.JSON_RPC_ERRORS; }
|
|
1097
|
+
});
|
|
1098
|
+
Object.defineProperty(exports, "PartyLayerProvider", {
|
|
1099
|
+
enumerable: true,
|
|
1100
|
+
get: function () { return provider.PartyLayerProvider; }
|
|
1101
|
+
});
|
|
1102
|
+
Object.defineProperty(exports, "ProviderRpcError", {
|
|
1103
|
+
enumerable: true,
|
|
1104
|
+
get: function () { return provider.ProviderRpcError; }
|
|
1105
|
+
});
|
|
1106
|
+
Object.defineProperty(exports, "RPC_ERRORS", {
|
|
1107
|
+
enumerable: true,
|
|
1108
|
+
get: function () { return provider.RPC_ERRORS; }
|
|
1109
|
+
});
|
|
1110
|
+
Object.defineProperty(exports, "createProviderBridge", {
|
|
1111
|
+
enumerable: true,
|
|
1112
|
+
get: function () { return provider.createProviderBridge; }
|
|
1113
|
+
});
|
|
1114
|
+
Object.defineProperty(exports, "discoverInjectedProviders", {
|
|
1115
|
+
enumerable: true,
|
|
1116
|
+
get: function () { return provider.discoverInjectedProviders; }
|
|
1117
|
+
});
|
|
1118
|
+
Object.defineProperty(exports, "fromCAIP2Network", {
|
|
1119
|
+
enumerable: true,
|
|
1120
|
+
get: function () { return provider.fromCAIP2Network; }
|
|
1121
|
+
});
|
|
1122
|
+
Object.defineProperty(exports, "isCIP0103Provider", {
|
|
1123
|
+
enumerable: true,
|
|
1124
|
+
get: function () { return provider.isCIP0103Provider; }
|
|
1125
|
+
});
|
|
1126
|
+
Object.defineProperty(exports, "isValidCAIP2", {
|
|
1127
|
+
enumerable: true,
|
|
1128
|
+
get: function () { return provider.isValidCAIP2; }
|
|
1129
|
+
});
|
|
1130
|
+
Object.defineProperty(exports, "toCAIP2Network", {
|
|
1131
|
+
enumerable: true,
|
|
1132
|
+
get: function () { return provider.toCAIP2Network; }
|
|
1133
|
+
});
|
|
1134
|
+
Object.defineProperty(exports, "waitForProvider", {
|
|
1135
|
+
enumerable: true,
|
|
1136
|
+
get: function () { return provider.waitForProvider; }
|
|
1137
|
+
});
|
|
760
1138
|
exports.CantonConnectClient = PartyLayerClient;
|
|
761
1139
|
exports.DEFAULT_REGISTRY_URL = DEFAULT_REGISTRY_URL;
|
|
1140
|
+
exports.MetricsTelemetryAdapter = MetricsTelemetryAdapter;
|
|
762
1141
|
exports.PartyLayerClient = PartyLayerClient;
|
|
763
1142
|
exports.createCantonConnect = createPartyLayer;
|
|
764
1143
|
exports.createPartyLayer = createPartyLayer;
|
|
1144
|
+
exports.createTelemetryAdapter = createTelemetryAdapter;
|
|
765
1145
|
exports.getBuiltinAdapters = getBuiltinAdapters;
|
|
1146
|
+
exports.isTelemetryConfig = isTelemetryConfig;
|
|
766
1147
|
//# sourceMappingURL=index.js.map
|
|
767
1148
|
//# sourceMappingURL=index.js.map
|