@polkahub/multisig 0.1.0 → 0.2.2

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/provider.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { getMultisigSigner } from '@polkadot-api/meta-signers';
2
2
  import { AccountId, getMultisigAccountId, getSs58AddressInfo } from '@polkadot-api/substrate-bindings';
3
- import { localStorageProvider, persistedState } from '@polkahub/plugin';
3
+ import { localStorageProvider, persistedState, addrEq } from '@polkahub/plugin';
4
4
  import { state } from '@react-rxjs/core';
5
5
  import { BehaviorSubject, combineLatest, switchMap } from 'rxjs';
6
6
 
@@ -55,9 +55,9 @@ const createMultisigProvider = (getMultisigInfo, txPaymentInfo, opts) => {
55
55
  provider,
56
56
  extra: info
57
57
  }),
58
- eq: (a, b) => a.address === b.address && a.info.parentSigner?.address === b.info.parentSigner?.address,
58
+ eq: (a, b) => addrEq(a.address, b.address) && addrEq(a.info.parentSigner?.address, b.info.parentSigner?.address),
59
59
  accounts$,
60
- receivePlugins: (plugins) => plugins$.next(plugins),
60
+ receiveContext: (ctx) => plugins$.next(ctx.plugins),
61
61
  subscription$: accounts$,
62
62
  setMultisigs: setPersistedAccounts,
63
63
  addMultisig: (multisig) => {
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sources":["../src/provider.ts"],"sourcesContent":["import {\n getMultisigSigner,\n MultisigSignerOptions,\n} from \"@polkadot-api/meta-signers\";\nimport {\n AccountId,\n FixedSizeBinary,\n getMultisigAccountId,\n getSs58AddressInfo,\n} from \"@polkadot-api/substrate-bindings\";\nimport {\n Account,\n AccountAddress,\n localStorageProvider,\n persistedState,\n PersistenceProvider,\n Plugin,\n SerializableAccount,\n} from \"@polkahub/plugin\";\nimport { DefaultedStateObservable, state } from \"@react-rxjs/core\";\nimport { Binary, PolkadotSigner } from \"polkadot-api\";\nimport { BehaviorSubject, combineLatest, switchMap } from \"rxjs\";\n\nexport interface MultisigInfo {\n threshold: number;\n signatories: AccountAddress[];\n // If not set, it will be a read-only account.\n // But with the advantage that it will still figure out the resulting address\n parentSigner?: SerializableAccount;\n}\n\nexport interface MultisigAccount extends Account {\n provider: \"multisig\";\n info: MultisigInfo;\n}\n\nexport interface MultisigProvider extends Plugin<MultisigAccount> {\n id: \"multisig\";\n accounts$: DefaultedStateObservable<MultisigAccount[]>;\n\n setMultisigs: (multisigs: MultisigInfo[]) => void;\n addMultisig: (multisig: MultisigInfo) => Promise<MultisigAccount>;\n removeMultisig: (addr: AccountAddress) => void;\n}\n\nexport const createMultisigProvider = (\n getMultisigInfo: (\n multisig: AccountAddress,\n callHash: FixedSizeBinary<32>\n ) => Promise<\n | {\n when: {\n height: number;\n index: number;\n };\n approvals: Array<AccountAddress>;\n }\n | undefined\n >,\n txPaymentInfo: (\n uxt: Binary,\n len: number\n ) => Promise<{\n weight: {\n ref_time: bigint;\n proof_size: bigint;\n };\n }>,\n opts?: Partial<\n {\n persist: PersistenceProvider;\n } & MultisigSignerOptions<AccountAddress>\n >\n): MultisigProvider => {\n const { persist } = {\n persist: localStorageProvider(\"multisigs\"),\n ...opts,\n };\n\n const [persistedAccounts$, setPersistedAccounts] = persistedState(\n persist,\n [] as MultisigInfo[]\n );\n const plugins$ = new BehaviorSubject<Plugin<Account>[]>([]);\n\n const getAccount = (\n info: MultisigInfo,\n parentSigner: PolkadotSigner | undefined\n ): MultisigAccount => ({\n provider: \"multisig\",\n address: getMultisigAddress(info),\n signer: parentSigner\n ? getMultisigSigner(\n info,\n getMultisigInfo,\n txPaymentInfo,\n parentSigner,\n opts?.method\n ? {\n method: opts.method,\n }\n : undefined\n )\n : undefined,\n info,\n });\n\n const multisigInfoToAccount = async (info: MultisigInfo) => {\n if (!info.parentSigner) return getAccount(info, undefined);\n\n const plugins = plugins$.getValue();\n const plugin = plugins.find((p) => info.parentSigner?.provider === p.id);\n if (!plugin) return getAccount(info, undefined);\n const parentSigner = await plugin.deserialize(info.parentSigner);\n return getAccount(info, parentSigner?.signer);\n };\n\n const accounts$ = state(\n combineLatest([persistedAccounts$, plugins$]).pipe(\n switchMap(\n async ([accounts]) =>\n await Promise.all(accounts.map(multisigInfoToAccount))\n )\n ),\n []\n );\n\n return {\n id: \"multisig\",\n deserialize: (account) => {\n const extra = account.extra as MultisigInfo;\n return multisigInfoToAccount(extra);\n },\n serialize: ({ address, info, provider }) => ({\n address,\n provider,\n extra: info,\n }),\n eq: (a, b) =>\n a.address === b.address &&\n a.info.parentSigner?.address === b.info.parentSigner?.address,\n accounts$,\n receivePlugins: (plugins) => plugins$.next(plugins),\n subscription$: accounts$,\n setMultisigs: setPersistedAccounts,\n addMultisig: (multisig) => {\n const addr = getMultisigAddress(multisig);\n setPersistedAccounts((prev) => {\n if (prev.some((v) => getMultisigAddress(v) === addr)) return prev;\n return [...prev, multisig];\n });\n return multisigInfoToAccount(multisig);\n },\n removeMultisig: (addr) =>\n setPersistedAccounts((prev) =>\n prev.filter((v) => getMultisigAddress(v) !== addr)\n ),\n };\n};\n\nconst getPublicKey = AccountId().enc;\nconst getMultisigAddress = (info: MultisigInfo) => {\n const accountId = getMultisigAccountId({\n threshold: info.threshold,\n signatories: info.signatories.map(getPublicKey),\n });\n const addrInfo = getSs58AddressInfo(info.signatories[0]);\n if (!addrInfo.isValid) {\n throw new Error(\"Unreachable\");\n }\n return AccountId(addrInfo.ss58Format).dec(accountId);\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider.js","sources":["../src/provider.ts"],"sourcesContent":["import {\n getMultisigSigner,\n MultisigSignerOptions,\n} from \"@polkadot-api/meta-signers\";\nimport {\n AccountId,\n FixedSizeBinary,\n getMultisigAccountId,\n getSs58AddressInfo,\n} from \"@polkadot-api/substrate-bindings\";\nimport {\n Account,\n AccountAddress,\n addrEq,\n localStorageProvider,\n persistedState,\n PersistenceProvider,\n Plugin,\n SerializableAccount,\n} from \"@polkahub/plugin\";\nimport { DefaultedStateObservable, state } from \"@react-rxjs/core\";\nimport { Binary, PolkadotSigner } from \"polkadot-api\";\nimport { BehaviorSubject, combineLatest, switchMap } from \"rxjs\";\n\nexport interface MultisigInfo {\n threshold: number;\n signatories: AccountAddress[];\n // If not set, it will be a read-only account.\n // But with the advantage that it will still figure out the resulting address\n parentSigner?: SerializableAccount;\n}\n\nexport interface MultisigAccount extends Account {\n provider: \"multisig\";\n info: MultisigInfo;\n}\n\nexport interface MultisigProvider extends Plugin<MultisigAccount> {\n id: \"multisig\";\n accounts$: DefaultedStateObservable<MultisigAccount[]>;\n\n setMultisigs: (multisigs: MultisigInfo[]) => void;\n addMultisig: (multisig: MultisigInfo) => Promise<MultisigAccount>;\n removeMultisig: (addr: AccountAddress) => void;\n}\n\nexport const createMultisigProvider = (\n getMultisigInfo: (\n multisig: AccountAddress,\n callHash: FixedSizeBinary<32>\n ) => Promise<\n | {\n when: {\n height: number;\n index: number;\n };\n approvals: Array<AccountAddress>;\n }\n | undefined\n >,\n txPaymentInfo: (\n uxt: Binary,\n len: number\n ) => Promise<{\n weight: {\n ref_time: bigint;\n proof_size: bigint;\n };\n }>,\n opts?: Partial<\n {\n persist: PersistenceProvider;\n } & MultisigSignerOptions<AccountAddress>\n >\n): MultisigProvider => {\n const { persist } = {\n persist: localStorageProvider(\"multisigs\"),\n ...opts,\n };\n\n const [persistedAccounts$, setPersistedAccounts] = persistedState(\n persist,\n [] as MultisigInfo[]\n );\n const plugins$ = new BehaviorSubject<Plugin<Account>[]>([]);\n\n const getAccount = (\n info: MultisigInfo,\n parentSigner: PolkadotSigner | undefined\n ): MultisigAccount => ({\n provider: \"multisig\",\n address: getMultisigAddress(info),\n signer: parentSigner\n ? getMultisigSigner(\n info,\n getMultisigInfo,\n txPaymentInfo,\n parentSigner,\n opts?.method\n ? {\n method: opts.method,\n }\n : undefined\n )\n : undefined,\n info,\n });\n\n const multisigInfoToAccount = async (info: MultisigInfo) => {\n if (!info.parentSigner) return getAccount(info, undefined);\n\n const plugins = plugins$.getValue();\n const plugin = plugins.find((p) => info.parentSigner?.provider === p.id);\n if (!plugin) return getAccount(info, undefined);\n const parentSigner = await plugin.deserialize(info.parentSigner);\n return getAccount(info, parentSigner?.signer);\n };\n\n const accounts$ = state(\n combineLatest([persistedAccounts$, plugins$]).pipe(\n switchMap(\n async ([accounts]) =>\n await Promise.all(accounts.map(multisigInfoToAccount))\n )\n ),\n []\n );\n\n return {\n id: \"multisig\",\n deserialize: (account) => {\n const extra = account.extra as MultisigInfo;\n return multisigInfoToAccount(extra);\n },\n serialize: ({ address, info, provider }) => ({\n address,\n provider,\n extra: info,\n }),\n eq: (a, b) =>\n addrEq(a.address, b.address) &&\n addrEq(a.info.parentSigner?.address, b.info.parentSigner?.address),\n accounts$,\n receiveContext: (ctx) => plugins$.next(ctx.plugins),\n subscription$: accounts$,\n setMultisigs: setPersistedAccounts,\n addMultisig: (multisig) => {\n const addr = getMultisigAddress(multisig);\n setPersistedAccounts((prev) => {\n if (prev.some((v) => getMultisigAddress(v) === addr)) return prev;\n return [...prev, multisig];\n });\n return multisigInfoToAccount(multisig);\n },\n removeMultisig: (addr) =>\n setPersistedAccounts((prev) =>\n prev.filter((v) => getMultisigAddress(v) !== addr)\n ),\n };\n};\n\nconst getPublicKey = AccountId().enc;\nconst getMultisigAddress = (info: MultisigInfo) => {\n const accountId = getMultisigAccountId({\n threshold: info.threshold,\n signatories: info.signatories.map(getPublicKey),\n });\n const addrInfo = getSs58AddressInfo(info.signatories[0]);\n if (!addrInfo.isValid) {\n throw new Error(\"Unreachable\");\n }\n return AccountId(addrInfo.ss58Format).dec(accountId);\n};\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@polkahub/multisig",
3
- "version": "0.1.0",
3
+ "version": "0.2.2",
4
4
  "license": "MIT",
5
5
  "sideEffects": false,
6
6
  "type": "module",
@@ -27,7 +27,7 @@
27
27
  "@react-rxjs/utils": "^0.9.7",
28
28
  "polkadot-api": "^1.20.1",
29
29
  "rxjs": "^7.8.2",
30
- "@polkahub/plugin": "0.1.0"
30
+ "@polkahub/plugin": "0.2.2"
31
31
  },
32
32
  "peerDependencies": {
33
33
  "@types/react": "^19.2.2",