@sats-connect/core 0.4.0-b520920 → 0.4.0-bcedde9

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/dist/index.mjs CHANGED
@@ -1,6 +1,3 @@
1
- // src/provider/index.ts
2
- import omit from "lodash.omit";
3
-
4
1
  // src/provider/types.ts
5
2
  import * as v from "valibot";
6
3
  var accountChangeEventName = "accountChange";
@@ -50,11 +47,9 @@ function removeDefaultProvider() {
50
47
  localStorage.removeItem("sats-connect_defaultProvider");
51
48
  }
52
49
  function getSupportedWallets() {
53
- const btc_providers = getProviders();
54
- const allProviders = [...btc_providers];
55
- for (const key in omit(DefaultAdaptersInfo, ["xverse"])) {
56
- allProviders.push(DefaultAdaptersInfo[key]);
57
- }
50
+ const ambientProviders = getProviders();
51
+ const { xverse, ...defaultProviders } = DefaultAdaptersInfo;
52
+ const allProviders = [...ambientProviders, ...Object.values(defaultProviders)];
58
53
  const wallets = allProviders.map((provider) => {
59
54
  {
60
55
  return {
@@ -120,6 +115,9 @@ var rpcResponseMessageSchema = v2.union([
120
115
  // src/request/index.ts
121
116
  import * as v10 from "valibot";
122
117
 
118
+ // src/request/types/stxMethods.ts
119
+ import * as v4 from "valibot";
120
+
123
121
  // src/addresses/index.ts
124
122
  import { createUnsecuredToken } from "jsontokens";
125
123
 
@@ -165,7 +163,6 @@ var getAddress = async (options) => {
165
163
  };
166
164
 
167
165
  // src/request/types/stxMethods.ts
168
- import * as v4 from "valibot";
169
166
  var stxGetAddressesMethodName = "stx_getAddresses";
170
167
  var stxGetAddressesParamsSchema = v4.nullish(
171
168
  v4.object({
@@ -385,8 +382,19 @@ var getBalanceRequestMessageSchema = v6.object({
385
382
 
386
383
  // src/request/types/walletMethods.ts
387
384
  import * as v7 from "valibot";
385
+ import { permissions } from "@secretkeylabs/xverse-core";
386
+ var permissionTemplate = v7.variant("type", [
387
+ v7.object({
388
+ ...v7.omit(permissions.resources.account.accountPermissionSchema, ["clientId", "actions"]).entries,
389
+ actions: v7.partial(permissions.resources.account.accountActionsSchema)
390
+ }),
391
+ v7.object({
392
+ ...v7.omit(permissions.resources.wallet.walletPermissionSchema, ["clientId"]).entries,
393
+ actions: v7.partial(permissions.resources.wallet.walletActionsSchema)
394
+ })
395
+ ]);
388
396
  var requestPermissionsMethodName = "wallet_requestPermissions";
389
- var requestPermissionsParamsSchema = v7.undefined();
397
+ var requestPermissionsParamsSchema = v7.nullish(v7.array(permissionTemplate));
390
398
  var requestPermissionsResultSchema = v7.literal(true);
391
399
  var requestPermissionsRequestMessageSchema = v7.object({
392
400
  ...rpcRequestMessageSchema.entries,
@@ -397,8 +405,8 @@ var requestPermissionsRequestMessageSchema = v7.object({
397
405
  }).entries
398
406
  });
399
407
  var renouncePermissionsMethodName = "wallet_renouncePermissions";
400
- var renouncePermissionsParamsSchema = v7.undefined();
401
- var renouncePermissionsResultSchema = v7.literal(true);
408
+ var renouncePermissionsParamsSchema = v7.nullish(v7.null());
409
+ var renouncePermissionsResultSchema = v7.nullish(v7.null());
402
410
  var renouncePermissionsRequestMessageSchema = v7.object({
403
411
  ...rpcRequestMessageSchema.entries,
404
412
  ...v7.object({
@@ -407,6 +415,17 @@ var renouncePermissionsRequestMessageSchema = v7.object({
407
415
  id: v7.string()
408
416
  }).entries
409
417
  });
418
+ var disconnectMethodName = "wallet_disconnect";
419
+ var disconnectParamsSchema = v7.nullish(v7.null());
420
+ var disconnectResultSchema = v7.nullish(v7.null());
421
+ var disconnectRequestMessageSchema = v7.object({
422
+ ...rpcRequestMessageSchema.entries,
423
+ ...v7.object({
424
+ method: v7.literal(disconnectMethodName),
425
+ params: disconnectParamsSchema,
426
+ id: v7.string()
427
+ }).entries
428
+ });
410
429
  var getWalletTypeMethodName = "wallet_getWalletType";
411
430
  var getWalletTypeParamsSchema = v7.nullish(v7.null());
412
431
  var getWalletTypeResultSchema = walletTypeSchema;
@@ -414,16 +433,48 @@ var getWalletTypeRequestMessageSchema = v7.object({
414
433
  ...rpcRequestMessageSchema.entries,
415
434
  ...v7.object({
416
435
  method: v7.literal(getWalletTypeMethodName),
436
+ params: getWalletTypeParamsSchema,
437
+ id: v7.string()
438
+ }).entries
439
+ });
440
+ var getCurrentPermissionsMethodName = "wallet_getCurrentPermissions";
441
+ var getCurrentPermissionsParamsSchema = v7.nullish(v7.null());
442
+ var getCurrentPermissionsResultSchema = v7.array(permissions.store.permission);
443
+ var getCurrentPermissionsRequestMessageSchema = v7.object({
444
+ ...rpcRequestMessageSchema.entries,
445
+ ...v7.object({
446
+ method: v7.literal(getCurrentPermissionsMethodName),
447
+ params: getCurrentPermissionsParamsSchema,
448
+ id: v7.string()
449
+ }).entries
450
+ });
451
+ var getAccountMethodName = "wallet_getAccount";
452
+ var getAccountParamsSchema = v7.nullish(v7.null());
453
+ var getAccountResultSchema = v7.object({
454
+ id: permissions.utils.account.accountIdSchema,
455
+ addresses: v7.array(addressSchema),
456
+ walletType: walletTypeSchema
457
+ });
458
+ var getAccountRequestMessageSchema = v7.object({
459
+ ...rpcRequestMessageSchema.entries,
460
+ ...v7.object({
461
+ method: v7.literal(getAccountMethodName),
462
+ params: getAccountParamsSchema,
417
463
  id: v7.string()
418
464
  }).entries
419
465
  });
420
- var getPermissionsMethodName = "wallet_getPermissions";
421
- var getPermissionsParamsSchema = v7.nullish(v7.null());
422
- var getPermissionsResultSchema = v7.array(v7.string());
423
- var getPermissionsRequestMessageSchema = v7.object({
466
+ var connectMethodName = "wallet_connect";
467
+ var connectParamsSchema = v7.nullish(
468
+ v7.object({
469
+ permissions: v7.optional(v7.array(permissionTemplate))
470
+ })
471
+ );
472
+ var connectResultSchema = getAccountResultSchema;
473
+ var connectRequestMessageSchema = v7.object({
424
474
  ...rpcRequestMessageSchema.entries,
425
475
  ...v7.object({
426
- method: v7.literal(getPermissionsMethodName),
476
+ method: v7.literal(connectMethodName),
477
+ params: connectParamsSchema,
427
478
  id: v7.string()
428
479
  }).entries
429
480
  });
@@ -1059,17 +1110,16 @@ var XverseAdapter = class extends SatsConnectAdapter {
1059
1110
  };
1060
1111
 
1061
1112
  // src/adapters/unisat.ts
1062
- import { Buffer } from "buffer";
1063
1113
  import { AddressType as AddressType2, getAddressInfo } from "bitcoin-address-validation";
1064
- function convertSignInputsToInputType(signInputs, allowedSignHash) {
1114
+ import { Buffer } from "buffer";
1115
+ function convertSignInputsToInputType(signInputs) {
1065
1116
  let result = [];
1066
1117
  for (let address in signInputs) {
1067
1118
  let indexes = signInputs[address];
1068
1119
  for (let index of indexes) {
1069
1120
  result.push({
1070
1121
  index,
1071
- address,
1072
- sighashTypes: allowedSignHash ? [allowedSignHash] : void 0
1122
+ address
1073
1123
  });
1074
1124
  }
1075
1125
  }
@@ -1101,10 +1151,10 @@ var UnisatAdapter = class extends SatsConnectAdapter {
1101
1151
  };
1102
1152
  const response = [];
1103
1153
  if (purposes.includes("payment" /* Payment */)) {
1104
- response.push(paymentAddress);
1154
+ response.push({ ...paymentAddress, walletType: "software" });
1105
1155
  }
1106
1156
  if (purposes.includes("ordinals" /* Ordinals */)) {
1107
- response.push(ordinalsAddress);
1157
+ response.push({ ...ordinalsAddress, walletType: "software" });
1108
1158
  }
1109
1159
  return response;
1110
1160
  }
@@ -1117,14 +1167,16 @@ var UnisatAdapter = class extends SatsConnectAdapter {
1117
1167
  return {
1118
1168
  address,
1119
1169
  messageHash: "",
1120
- signature: response2
1170
+ signature: response2,
1171
+ protocol: "BIP322" /* BIP322 */
1121
1172
  };
1122
1173
  }
1123
1174
  const response = await window.unisat.signMessage(message, "ecdsa");
1124
1175
  return {
1125
1176
  address,
1126
1177
  messageHash: "",
1127
- signature: response
1178
+ signature: response,
1179
+ protocol: "ECDSA" /* ECDSA */
1128
1180
  };
1129
1181
  }
1130
1182
  async sendTransfer(params) {
@@ -1138,11 +1190,11 @@ var UnisatAdapter = class extends SatsConnectAdapter {
1138
1190
  };
1139
1191
  }
1140
1192
  async signPsbt(params) {
1141
- const { psbt, signInputs, allowedSignHash, broadcast } = params;
1193
+ const { psbt, signInputs, broadcast } = params;
1142
1194
  const psbtHex = Buffer.from(psbt, "base64").toString("hex");
1143
1195
  const signedPsbt = await window.unisat.signPsbt(psbtHex, {
1144
1196
  autoFinalized: broadcast,
1145
- toSignInputs: convertSignInputsToInputType(signInputs, allowedSignHash)
1197
+ toSignInputs: convertSignInputsToInputType(signInputs)
1146
1198
  });
1147
1199
  if (broadcast) {
1148
1200
  const txid = await window.unisat.pushPsbt(psbtHex);
@@ -1212,6 +1264,33 @@ var UnisatAdapter = class extends SatsConnectAdapter {
1212
1264
  };
1213
1265
  }
1214
1266
  };
1267
+ addListener = (eventName, cb) => {
1268
+ switch (eventName) {
1269
+ case "accountChange": {
1270
+ const handler = () => {
1271
+ cb({ type: "accountChange" });
1272
+ };
1273
+ window.unisat.on("accountsChanged", handler);
1274
+ return () => {
1275
+ window.unisat.removeListener("accountsChanged", handler);
1276
+ };
1277
+ }
1278
+ case "networkChange": {
1279
+ const handler = () => {
1280
+ cb({ type: "networkChange" });
1281
+ };
1282
+ window.unisat.on("networkChanged", handler);
1283
+ return () => {
1284
+ window.unisat.removeListener("networkChanged", handler);
1285
+ };
1286
+ }
1287
+ default: {
1288
+ console.error("Event not supported by the selected wallet");
1289
+ return () => {
1290
+ };
1291
+ }
1292
+ }
1293
+ };
1215
1294
  };
1216
1295
 
1217
1296
  // src/adapters/BaseAdapter.ts
@@ -1476,11 +1555,23 @@ export {
1476
1555
  accountChangeSchema,
1477
1556
  addListener,
1478
1557
  addressSchema,
1558
+ connectMethodName,
1559
+ connectParamsSchema,
1560
+ connectRequestMessageSchema,
1561
+ connectResultSchema,
1479
1562
  createInscription,
1480
1563
  createRepeatInscriptions,
1481
1564
  defaultAdapters,
1482
1565
  disconnectEventName,
1566
+ disconnectMethodName,
1567
+ disconnectParamsSchema,
1568
+ disconnectRequestMessageSchema,
1569
+ disconnectResultSchema,
1483
1570
  disconnectSchema,
1571
+ getAccountMethodName,
1572
+ getAccountParamsSchema,
1573
+ getAccountRequestMessageSchema,
1574
+ getAccountResultSchema,
1484
1575
  getAccountsMethodName,
1485
1576
  getAccountsParamsSchema,
1486
1577
  getAccountsRequestMessageSchema,
@@ -1495,6 +1586,10 @@ export {
1495
1586
  getBalanceRequestMessageSchema,
1496
1587
  getBalanceResultSchema,
1497
1588
  getCapabilities,
1589
+ getCurrentPermissionsMethodName,
1590
+ getCurrentPermissionsParamsSchema,
1591
+ getCurrentPermissionsRequestMessageSchema,
1592
+ getCurrentPermissionsResultSchema,
1498
1593
  getDefaultProvider,
1499
1594
  getInfoMethodName,
1500
1595
  getInfoParamsSchema,
@@ -1504,10 +1599,6 @@ export {
1504
1599
  getInscriptionsParamsSchema,
1505
1600
  getInscriptionsResultSchema,
1506
1601
  getInscriptionsSchema,
1507
- getPermissionsMethodName,
1508
- getPermissionsParamsSchema,
1509
- getPermissionsRequestMessageSchema,
1510
- getPermissionsResultSchema,
1511
1602
  getProviderById,
1512
1603
  getProviderOrThrow,
1513
1604
  getProviders,
@@ -1523,6 +1614,7 @@ export {
1523
1614
  isProviderInstalled,
1524
1615
  networkChangeEventName,
1525
1616
  networkChangeSchema,
1617
+ permissionTemplate,
1526
1618
  removeDefaultProvider,
1527
1619
  renouncePermissionsMethodName,
1528
1620
  renouncePermissionsParamsSchema,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sats-connect/core",
3
- "version": "0.4.0-b520920",
3
+ "version": "0.4.0-bcedde9",
4
4
  "main": "dist/index.mjs",
5
5
  "module": "dist/index.mjs",
6
6
  "types": "dist/index.d.mts",
@@ -9,11 +9,12 @@
9
9
  ],
10
10
  "scripts": {
11
11
  "test": "jest",
12
- "build-debug": "webpack --mode development",
13
- "build": "npm run clean && tsup src/index.ts --format esm --dts",
14
- "build:watch": "npm run clean && tsup src/index.ts --format esm --dts --watch",
15
- "clean": "rimraf dist",
16
- "lint": "prettier --write .",
12
+ "build": "tsup",
13
+ "build:watch": "tsup --watch",
14
+ "check-types": "tsc --noEmit",
15
+ "check-format": "prettier --check .",
16
+ "format": "prettier --write .",
17
+ "ci": "npm run check-types && npm run check-format && npm run build",
17
18
  "prepare": "husky install"
18
19
  },
19
20
  "lint-staged": {
@@ -25,16 +26,15 @@
25
26
  ]
26
27
  },
27
28
  "dependencies": {
29
+ "@secretkeylabs/xverse-core": "24.0.0-4db3b55",
28
30
  "axios": "1.7.4",
29
31
  "bitcoin-address-validation": "2.2.3",
30
32
  "buffer": "6.0.3",
31
33
  "jsontokens": "4.0.1",
32
- "lodash.omit": "4.5.0",
33
- "valibot": "0.33.2"
34
+ "valibot": "0.42.1"
34
35
  },
35
36
  "devDependencies": {
36
37
  "@types/jest": "^29.2.6",
37
- "@types/lodash.omit": "4.5.9",
38
38
  "husky": "^8.0.3",
39
39
  "lint-staged": "^13.2.3",
40
40
  "prettier": "3.3.3",
@@ -46,9 +46,7 @@
46
46
  "tsup": "^8.0.2",
47
47
  "typescript": "5.4.5",
48
48
  "util": "^0.12.4",
49
- "vm-browserify": "^1.1.2",
50
- "webpack": "^5.74.0",
51
- "webpack-cli": "^4.10.0"
49
+ "vm-browserify": "^1.1.2"
52
50
  },
53
51
  "repository": {
54
52
  "type": "git",