Socket
Socket
Sign inDemoInstall

@did-connect/handler

Package Overview
Dependencies
Maintainers
1
Versions
77
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@did-connect/handler - npm Package Compare versions

Comparing version 2.0.15 to 2.0.16

121

lib/index.js

@@ -161,3 +161,3 @@ "use strict";

updaterPk,
strategy,
strategy: onlyConnect && strategy === 'smart' ? 'default' : strategy,
authUrl,

@@ -254,33 +254,5 @@ connectUrl,

target: (0, did_1.isValid)(strategy) ? strategy : '',
supervised: onlyConnect || !!previousConnected,
supervised: onlyConnect || !previousConnected,
};
};
const handleClaimRequest = (context) => __awaiter(this, void 0, void 0, function* () {
const { sessionId, session, didwallet, locale } = context;
try {
if (isValidContext(context) === false) {
throw new types_1.CustomError('CONTEXT_INVALID', errors.invalidContext[locale]);
}
if (storage.isFinalized(session.status)) {
throw new types_1.CustomError('SESSION_FINALIZED', (0, types_1.t)(errors.sessionFinalized[locale], {
status: `${session.status}${session.error ? `: ${session.error}` : ''}`,
}));
}
// if we are in created status, we should return authPrincipal claim
if (session.status === 'created') {
logger.debug('session.walletScanned', sessionId);
wsServer.broadcast(sessionId, { status: 'walletScanned', didwallet });
yield storage.update(sessionId, { status: 'walletScanned' });
return signClaims([getAuthPrincipalRequest(session)], context);
}
// else we should perform a step by step style
return signClaims(session.requestedClaims[session.currentStep], context);
}
catch (err) {
logger.error(err);
wsServer.broadcast(sessionId, { status: 'error', error: err.message });
yield storage.update(sessionId, { status: 'error', error: err.message });
return signJson({ error: err.message }, context);
}
});
const waitForSession = (sessionId, timeout, checkFn, reason, locale) => __awaiter(this, void 0, void 0, function* () {

@@ -323,2 +295,5 @@ let session = {};

catch (err) {
if (err.response) {
console.warn(err.response);
}
throw new types_1.CustomError('AppError', (0, types_1.t)(errors.invalidConnectUrl[locale], { url: session.connectUrl, error: err.message }));

@@ -343,5 +318,72 @@ }

catch (err) {
if (err.response) {
console.warn(err.response);
}
throw new types_1.CustomError('AppError', (0, types_1.t)(errors.invalidApproveUrl[locale], { url: session.approveUrl, error: err.message }));
}
});
const ensureAppConnected = (session, locale) => __awaiter(this, void 0, void 0, function* () {
let newSession;
// If our claims are populated already, move to appConnected without waiting
if (session.requestedClaims.length > 0) {
newSession = yield storage.update(session.sessionId, { status: 'appConnected' });
}
else if (session.connectUrl) {
// If we should fetch claims from some url, fetch and verify
const requestedClaims = yield fetchRequestList(session, locale);
newSession = yield storage.update(session.sessionId, { status: 'appConnected', requestedClaims });
}
else {
// else wait for webapp to fill the claims
newSession = yield waitForAppConnect(session.sessionId, session.timeout.app, locale);
yield storage.update(session.sessionId, { status: 'appConnected' });
}
wsServer.broadcast(session.sessionId, { status: 'appConnected', requestedClaims: newSession.requestedClaims });
logger.debug('session.appConnected', session.sessionId);
return newSession;
});
const handleClaimRequest = (context) => __awaiter(this, void 0, void 0, function* () {
const { sessionId, session, didwallet, locale } = context;
try {
if (isValidContext(context) === false) {
throw new types_1.CustomError('CONTEXT_INVALID', errors.invalidContext[locale]);
}
if (storage.isFinalized(session.status)) {
throw new types_1.CustomError('SESSION_FINALIZED', (0, types_1.t)(errors.sessionFinalized[locale], {
status: `${session.status}${session.error ? `: ${session.error}` : ''}`,
}));
}
let newSession;
// if we are in created status,
if (session.status === 'created') {
logger.debug('session.walletScanned', sessionId);
wsServer.broadcast(sessionId, { status: 'walletScanned', didwallet });
yield storage.update(sessionId, { status: 'walletScanned' });
// skip authPrincipal step if we are using smart strategy
if (session.strategy === 'smart' && session.previousConnected) {
logger.debug('session.walletConnected', sessionId);
newSession = yield storage.update(sessionId, {
status: 'walletConnected',
currentConnected: Object.assign(Object.assign({}, session.previousConnected), { didwallet }),
});
wsServer.broadcast(sessionId, {
status: 'walletConnected',
currentConnected: Object.assign(Object.assign({}, session.previousConnected), { didwallet }),
});
newSession = yield ensureAppConnected(newSession, locale);
return signClaims(newSession.requestedClaims[session.currentStep], Object.assign(Object.assign({}, context), { session: newSession }));
}
// else we should return authPrincipal claim
return signClaims([getAuthPrincipalRequest(session)], context);
}
// else we should perform a step by step style
return signClaims(session.requestedClaims[session.currentStep], context);
}
catch (err) {
logger.error(err);
wsServer.broadcast(sessionId, { status: 'error', error: err.message });
yield storage.update(sessionId, { status: 'error', error: err.message });
return signJson({ error: err.message }, context);
}
});
const handleClaimResponse = (context) => __awaiter(this, void 0, void 0, function* () {

@@ -407,3 +449,3 @@ const { sessionId, session, body, locale, didwallet } = context;

logger.debug('session.walletConnected', sessionId);
yield storage.update(sessionId, {
newSession = yield storage.update(sessionId, {
status: 'walletConnected',

@@ -424,18 +466,3 @@ currentConnected: { userDid, userPk, didwallet },

}
// If our claims are populated already, move to appConnected without waiting
if (session.requestedClaims.length > 0) {
newSession = yield storage.update(sessionId, { status: 'appConnected' });
}
else if (session.connectUrl) {
// If we should fetch claims from some url, fetch and verify
const requestedClaims = yield fetchRequestList(session, locale);
newSession = yield storage.update(sessionId, { status: 'appConnected', requestedClaims });
}
else {
// else wait for webapp to fill the claims
newSession = yield waitForAppConnect(sessionId, session.timeout.app, locale);
yield storage.update(sessionId, { status: 'appConnected' });
}
wsServer.broadcast(sessionId, { status: 'appConnected', requestedClaims: newSession.requestedClaims });
logger.debug('session.appConnected', sessionId);
newSession = yield ensureAppConnected(newSession, locale);
return signClaims(newSession.requestedClaims[session.currentStep], Object.assign(Object.assign({}, context), { session: newSession }));

@@ -442,0 +469,0 @@ }

{
"name": "@did-connect/handler",
"description": "Abstract handler for did-connect relay server",
"version": "2.0.15",
"version": "2.0.16",
"author": {

@@ -24,5 +24,5 @@ "name": "wangshijun",

"@arcblock/ws": "^1.17.5",
"@did-connect/authenticator": "2.0.15",
"@did-connect/storage": "2.0.15",
"@did-connect/types": "2.0.15",
"@did-connect/authenticator": "2.0.16",
"@did-connect/storage": "2.0.16",
"@did-connect/types": "2.0.16",
"@ocap/mcrypto": "^1.17.5",

@@ -74,3 +74,3 @@ "@ocap/util": "^1.17.5",

"resolutions": {},
"gitHead": "d3ffabd337e3e0b41f642b3243da99c20f2dd75e"
"gitHead": "2cba02ab1605e1404795f1f8d0879919cd57f72a"
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc