@0xsequence/signhub
Advanced tools
Comparing version 0.0.0-20231017151531 to 0.0.0-20231019141610
@@ -29,8 +29,2 @@ 'use strict'; | ||
var index = /*#__PURE__*/Object.freeze({ | ||
__proto__: null, | ||
isSapientSigner: isSapientSigner, | ||
SignerWrapper: SignerWrapper | ||
}); | ||
function isSignerStatusRejected(status) { | ||
@@ -180,2 +174,78 @@ return status.rejected; | ||
class InteractiveSigner { | ||
constructor(signer, dependencies) { | ||
this.requests = new Map(); | ||
this.signer = signer; | ||
this.dependencies = dependencies; | ||
} | ||
async prompt(id) { | ||
const request = this.requests.get(id); | ||
if (request === undefined) { | ||
return; | ||
} | ||
this.signer.requestSignature(id, request.message, request.metadata, { | ||
onSignature(signature) { | ||
request.callbacks.onSignature(signature); | ||
request.resolve(); | ||
}, | ||
onRejection(_error) {}, | ||
onStatus(_situation) {} | ||
}); | ||
} | ||
getAddress() { | ||
return this.signer.getAddress(); | ||
} | ||
requestSignature(id, message, metadata, callbacks) { | ||
return new Promise(resolve => { | ||
const request = { | ||
message, | ||
metadata, | ||
callbacks, | ||
autoPrompts: 0, | ||
resolve: () => resolve(true) | ||
}; | ||
this.requests.set(id, request); | ||
// prompt immediately if we're not waiting for other signers | ||
if (this.dependencies.length === 0) { | ||
request.autoPrompts++; | ||
this.prompt(id); | ||
} | ||
}); | ||
} | ||
notifyStatusChange(id, status, metadata) { | ||
const request = this.requests.get(id); | ||
if (request === undefined) { | ||
return; | ||
} | ||
request.metadata = metadata; | ||
if (status.ended) { | ||
this.requests.delete(id); | ||
return; | ||
} | ||
if (request.autoPrompts > 0) { | ||
return; | ||
} | ||
const isPending = dependency => { | ||
const signerStatus = status.signers[dependency]; | ||
return signerStatus !== undefined && isSignerStatusPending(signerStatus); | ||
}; | ||
if (this.dependencies.some(isPending)) { | ||
return; | ||
} | ||
request.autoPrompts++; | ||
this.prompt(id); | ||
} | ||
suffix() { | ||
return this.signer.suffix(); | ||
} | ||
} | ||
var index = /*#__PURE__*/Object.freeze({ | ||
__proto__: null, | ||
InteractiveSigner: InteractiveSigner, | ||
isSapientSigner: isSapientSigner, | ||
SignerWrapper: SignerWrapper | ||
}); | ||
exports.InitialSituation = InitialSituation; | ||
@@ -182,0 +252,0 @@ exports.Orchestrator = Orchestrator; |
@@ -29,8 +29,2 @@ 'use strict'; | ||
var index = /*#__PURE__*/Object.freeze({ | ||
__proto__: null, | ||
isSapientSigner: isSapientSigner, | ||
SignerWrapper: SignerWrapper | ||
}); | ||
function isSignerStatusRejected(status) { | ||
@@ -180,2 +174,78 @@ return status.rejected; | ||
class InteractiveSigner { | ||
constructor(signer, dependencies) { | ||
this.requests = new Map(); | ||
this.signer = signer; | ||
this.dependencies = dependencies; | ||
} | ||
async prompt(id) { | ||
const request = this.requests.get(id); | ||
if (request === undefined) { | ||
return; | ||
} | ||
this.signer.requestSignature(id, request.message, request.metadata, { | ||
onSignature(signature) { | ||
request.callbacks.onSignature(signature); | ||
request.resolve(); | ||
}, | ||
onRejection(_error) {}, | ||
onStatus(_situation) {} | ||
}); | ||
} | ||
getAddress() { | ||
return this.signer.getAddress(); | ||
} | ||
requestSignature(id, message, metadata, callbacks) { | ||
return new Promise(resolve => { | ||
const request = { | ||
message, | ||
metadata, | ||
callbacks, | ||
autoPrompts: 0, | ||
resolve: () => resolve(true) | ||
}; | ||
this.requests.set(id, request); | ||
// prompt immediately if we're not waiting for other signers | ||
if (this.dependencies.length === 0) { | ||
request.autoPrompts++; | ||
this.prompt(id); | ||
} | ||
}); | ||
} | ||
notifyStatusChange(id, status, metadata) { | ||
const request = this.requests.get(id); | ||
if (request === undefined) { | ||
return; | ||
} | ||
request.metadata = metadata; | ||
if (status.ended) { | ||
this.requests.delete(id); | ||
return; | ||
} | ||
if (request.autoPrompts > 0) { | ||
return; | ||
} | ||
const isPending = dependency => { | ||
const signerStatus = status.signers[dependency]; | ||
return signerStatus !== undefined && isSignerStatusPending(signerStatus); | ||
}; | ||
if (this.dependencies.some(isPending)) { | ||
return; | ||
} | ||
request.autoPrompts++; | ||
this.prompt(id); | ||
} | ||
suffix() { | ||
return this.signer.suffix(); | ||
} | ||
} | ||
var index = /*#__PURE__*/Object.freeze({ | ||
__proto__: null, | ||
InteractiveSigner: InteractiveSigner, | ||
isSapientSigner: isSapientSigner, | ||
SignerWrapper: SignerWrapper | ||
}); | ||
exports.InitialSituation = InitialSituation; | ||
@@ -182,0 +252,0 @@ exports.Orchestrator = Orchestrator; |
@@ -25,8 +25,2 @@ import { ethers } from 'ethers'; | ||
var index = /*#__PURE__*/Object.freeze({ | ||
__proto__: null, | ||
isSapientSigner: isSapientSigner, | ||
SignerWrapper: SignerWrapper | ||
}); | ||
function isSignerStatusRejected(status) { | ||
@@ -176,2 +170,78 @@ return status.rejected; | ||
class InteractiveSigner { | ||
constructor(signer, dependencies) { | ||
this.requests = new Map(); | ||
this.signer = signer; | ||
this.dependencies = dependencies; | ||
} | ||
async prompt(id) { | ||
const request = this.requests.get(id); | ||
if (request === undefined) { | ||
return; | ||
} | ||
this.signer.requestSignature(id, request.message, request.metadata, { | ||
onSignature(signature) { | ||
request.callbacks.onSignature(signature); | ||
request.resolve(); | ||
}, | ||
onRejection(_error) {}, | ||
onStatus(_situation) {} | ||
}); | ||
} | ||
getAddress() { | ||
return this.signer.getAddress(); | ||
} | ||
requestSignature(id, message, metadata, callbacks) { | ||
return new Promise(resolve => { | ||
const request = { | ||
message, | ||
metadata, | ||
callbacks, | ||
autoPrompts: 0, | ||
resolve: () => resolve(true) | ||
}; | ||
this.requests.set(id, request); | ||
// prompt immediately if we're not waiting for other signers | ||
if (this.dependencies.length === 0) { | ||
request.autoPrompts++; | ||
this.prompt(id); | ||
} | ||
}); | ||
} | ||
notifyStatusChange(id, status, metadata) { | ||
const request = this.requests.get(id); | ||
if (request === undefined) { | ||
return; | ||
} | ||
request.metadata = metadata; | ||
if (status.ended) { | ||
this.requests.delete(id); | ||
return; | ||
} | ||
if (request.autoPrompts > 0) { | ||
return; | ||
} | ||
const isPending = dependency => { | ||
const signerStatus = status.signers[dependency]; | ||
return signerStatus !== undefined && isSignerStatusPending(signerStatus); | ||
}; | ||
if (this.dependencies.some(isPending)) { | ||
return; | ||
} | ||
request.autoPrompts++; | ||
this.prompt(id); | ||
} | ||
suffix() { | ||
return this.signer.suffix(); | ||
} | ||
} | ||
var index = /*#__PURE__*/Object.freeze({ | ||
__proto__: null, | ||
InteractiveSigner: InteractiveSigner, | ||
isSapientSigner: isSapientSigner, | ||
SignerWrapper: SignerWrapper | ||
}); | ||
export { InitialSituation, Orchestrator, isSignerStatusPending, isSignerStatusRejected, isSignerStatusSigned, index as signers }; |
@@ -0,2 +1,3 @@ | ||
export * from "./interactive.js"; | ||
export * from "./signer.js"; | ||
export * from "./wrapper.js"; |
{ | ||
"name": "@0xsequence/signhub", | ||
"version": "0.0.0-20231017151531", | ||
"version": "0.0.0-20231019141610", | ||
"description": "orchestrates a series of signers, provides visibility into the signing process, and to the signers themselves", | ||
@@ -5,0 +5,0 @@ "repository": "https://github.com/0xsequence/sequence.js/tree/master/packages/signhub", |
@@ -0,2 +1,3 @@ | ||
export * from './interactive' | ||
export * from './signer' | ||
export * from './wrapper' |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
48971
20
1114
0
145