Socket
Socket
Sign inDemoInstall

https-did-resolver

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

https-did-resolver - npm Package Compare versions

Comparing version 0.0.1 to 0.0.2

index.d.ts

221

lib/register.js
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = register;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _didResolver = require("did-resolver");
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
Object.defineProperty(exports, "__esModule", { value: true });
var did_resolver_1 = require("did-resolver");
var DOC_PATH = '/.well-known/did.json';
function get(url) {
return new Promise(function (resolve, reject) {
// declare XMLHttpRequest in here so it can be mocked for tests
var XMLHttpRequest = typeof window !== 'undefined' ? window.XMLHttpRequest : require('xmlhttprequest').XMLHttpRequest;
var request = new XMLHttpRequest();
request.open('GET', url);
request.onreadystatechange = function () {
if (!request || request.readyState !== 4) return;
if (request.status === 200) {
resolve(request.response);
} else {
reject(new Error("Invalid http response status ".concat(request.status, " ").concat(request.responseText).trim()));
}
};
request.setRequestHeader('accept', 'application/json');
request.send();
});
return new Promise(function (resolve, reject) {
// declare XMLHttpRequest in here so it can be mocked for tests
var XMLHttpRequest = typeof window !== 'undefined'
? window.XMLHttpRequest
: require('xmlhttprequest').XMLHttpRequest;
var request = new XMLHttpRequest();
request.open('GET', url);
request.onreadystatechange = function () {
if (!request || request.readyState !== 4)
return;
if (request.status === 200) {
resolve(request.response);
}
else {
reject(new Error(("Invalid http response status " + request.status + " " + request.responseText).trim()));
}
};
request.setRequestHeader('accept', 'application/json');
request.send();
});
}
function register() {
function resolve(_x, _x2) {
return _resolve.apply(this, arguments);
}
function _resolve() {
_resolve = (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee(did, parsed) {
var url, response, data, hasContext, docIdMatchesDid, docHasPublicKey;
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
url = "https://".concat(parsed.id).concat(DOC_PATH);
response = null;
_context.prev = 2;
_context.next = 5;
return get(url);
case 5:
response = _context.sent;
_context.next = 11;
break;
case 8:
_context.prev = 8;
_context.t0 = _context["catch"](2);
throw new Error("DID must resolve to a valid https URL: ".concat(_context.t0.message));
case 11:
data = null;
_context.prev = 12;
data = JSON.parse(response);
_context.next = 19;
break;
case 16:
_context.prev = 16;
_context.t1 = _context["catch"](12);
throw new Error('DID must resolve to a JSON document');
case 19:
hasContext = data['@context'] === 'https://w3id.org/did/v1';
if (hasContext) {
_context.next = 22;
break;
}
throw new Error('DID document missing context');
case 22:
docIdMatchesDid = data.id === did;
if (docIdMatchesDid) {
_context.next = 25;
break;
}
throw new Error('DID document id does not match requested did');
case 25:
docHasPublicKey = Array.isArray(data.publicKey) && data.publicKey.length > 0;
if (docHasPublicKey) {
_context.next = 28;
break;
}
throw new Error('DID document has no public keys');
case 28:
return _context.abrupt("return", data);
case 29:
case "end":
return _context.stop();
}
}
}, _callee, this, [[2, 8], [12, 16]]);
}));
return _resolve.apply(this, arguments);
}
(0, _didResolver.registerMethod)('https', resolve);
function resolve(did, parsed) {
return __awaiter(this, void 0, void 0, function () {
var url, response, error_1, data, hasContext, docIdMatchesDid, docHasPublicKey;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
url = "https://" + parsed.id + DOC_PATH;
response = null;
_a.label = 1;
case 1:
_a.trys.push([1, 3, , 4]);
return [4 /*yield*/, get(url)];
case 2:
response = _a.sent();
return [3 /*break*/, 4];
case 3:
error_1 = _a.sent();
throw new Error("DID must resolve to a valid https URL: " + error_1.message);
case 4:
data = null;
try {
data = JSON.parse(response);
}
catch (error) {
throw new Error('DID must resolve to a JSON document');
}
hasContext = data['@context'] === 'https://w3id.org/did/v1';
if (!hasContext)
throw new Error('DID document missing context');
docIdMatchesDid = data.id === did;
if (!docIdMatchesDid)
throw new Error('DID document id does not match requested did');
docHasPublicKey = Array.isArray(data.publicKey) && data.publicKey.length > 0;
if (!docHasPublicKey)
throw new Error('DID document has no public keys');
return [2 /*return*/, data];
}
});
});
}
did_resolver_1.registerMethod('https', resolve);
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yZWdpc3Rlci50cyJdLCJuYW1lcyI6WyJET0NfUEFUSCIsImdldCIsInVybCIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiWE1MSHR0cFJlcXVlc3QiLCJ3aW5kb3ciLCJyZXF1aXJlIiwicmVxdWVzdCIsIm9wZW4iLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCJyZWFkeVN0YXRlIiwic3RhdHVzIiwicmVzcG9uc2UiLCJFcnJvciIsInJlc3BvbnNlVGV4dCIsInRyaW0iLCJzZXRSZXF1ZXN0SGVhZGVyIiwic2VuZCIsInJlZ2lzdGVyIiwiZGlkIiwicGFyc2VkIiwiaWQiLCJtZXNzYWdlIiwiZGF0YSIsIkpTT04iLCJwYXJzZSIsImhhc0NvbnRleHQiLCJkb2NJZE1hdGNoZXNEaWQiLCJkb2NIYXNQdWJsaWNLZXkiLCJBcnJheSIsImlzQXJyYXkiLCJwdWJsaWNLZXkiLCJsZW5ndGgiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFTQSxJQUFNQSxRQUFRLEdBQUcsdUJBQWpCOztBQUVBLFNBQVNDLEdBQVQsQ0FBYUMsR0FBYixFQUF3QztBQUN0QyxTQUFPLElBQUlDLE9BQUosQ0FBWSxVQUFDQyxPQUFELEVBQVVDLE1BQVYsRUFBcUI7QUFDdEM7QUFDQSxRQUFNQyxjQUFjLEdBQ2xCLE9BQU9DLE1BQVAsS0FBa0IsV0FBbEIsR0FDSUEsTUFBTSxDQUFDRCxjQURYLEdBRUlFLE9BQU8sQ0FBQyxnQkFBRCxDQUFQLENBQTBCRixjQUhoQztBQUtBLFFBQU1HLE9BQU8sR0FBRyxJQUFJSCxjQUFKLEVBQWhCO0FBQ0FHLElBQUFBLE9BQU8sQ0FBQ0MsSUFBUixDQUFhLEtBQWIsRUFBb0JSLEdBQXBCOztBQUNBTyxJQUFBQSxPQUFPLENBQUNFLGtCQUFSLEdBQTZCLFlBQU07QUFDakMsVUFBSSxDQUFDRixPQUFELElBQVlBLE9BQU8sQ0FBQ0csVUFBUixLQUF1QixDQUF2QyxFQUEwQzs7QUFDMUMsVUFBSUgsT0FBTyxDQUFDSSxNQUFSLEtBQW1CLEdBQXZCLEVBQTRCO0FBQzFCVCxRQUFBQSxPQUFPLENBQUNLLE9BQU8sQ0FBQ0ssUUFBVCxDQUFQO0FBQ0QsT0FGRCxNQUVPO0FBQ0xULFFBQUFBLE1BQU0sQ0FDSixJQUFJVSxLQUFKLENBQ0UsdUNBQWdDTixPQUFPLENBQUNJLE1BQXhDLGNBQ0VKLE9BQU8sQ0FBQ08sWUFEVixFQUVHQyxJQUZILEVBREYsQ0FESSxDQUFOO0FBT0Q7QUFDRixLQWJEOztBQWNBUixJQUFBQSxPQUFPLENBQUNTLGdCQUFSLENBQXlCLFFBQXpCLEVBQW1DLGtCQUFuQztBQUNBVCxJQUFBQSxPQUFPLENBQUNVLElBQVI7QUFDRCxHQXpCTSxDQUFQO0FBMEJEOztBQUVjLFNBQVNDLFFBQVQsR0FBb0I7QUFBQSxXQUNsQmhCLE9BRGtCO0FBQUE7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQSw4QkFDakMsaUJBQ0VpQixHQURGLEVBRUVDLE1BRkY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSVFwQixjQUFBQSxHQUpSLHFCQUlpQ29CLE1BQU0sQ0FBQ0MsRUFKeEMsU0FJNkN2QixRQUo3QztBQU1NYyxjQUFBQSxRQU5OLEdBTXNCLElBTnRCO0FBQUE7QUFBQTtBQUFBLHFCQVFxQmIsR0FBRyxDQUFDQyxHQUFELENBUnhCOztBQUFBO0FBUUlZLGNBQUFBLFFBUko7QUFBQTtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBLG9CQVVVLElBQUlDLEtBQUosa0RBQW9ELFlBQU1TLE9BQTFELEVBVlY7O0FBQUE7QUFhTUMsY0FBQUEsSUFiTixHQWFrQixJQWJsQjtBQUFBO0FBZUlBLGNBQUFBLElBQUksR0FBR0MsSUFBSSxDQUFDQyxLQUFMLENBQVdiLFFBQVgsQ0FBUDtBQWZKO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUEsb0JBaUJVLElBQUlDLEtBQUosQ0FBVSxxQ0FBVixDQWpCVjs7QUFBQTtBQW9CUWEsY0FBQUEsVUFwQlIsR0FvQnFCSCxJQUFJLENBQUMsVUFBRCxDQUFKLEtBQXFCLHlCQXBCMUM7O0FBQUEsa0JBcUJPRyxVQXJCUDtBQUFBO0FBQUE7QUFBQTs7QUFBQSxvQkFxQnlCLElBQUliLEtBQUosQ0FBVSw4QkFBVixDQXJCekI7O0FBQUE7QUF1QlFjLGNBQUFBLGVBdkJSLEdBdUIwQkosSUFBSSxDQUFDRixFQUFMLEtBQVlGLEdBdkJ0Qzs7QUFBQSxrQkF3Qk9RLGVBeEJQO0FBQUE7QUFBQTtBQUFBOztBQUFBLG9CQXlCVSxJQUFJZCxLQUFKLENBQVUsOENBQVYsQ0F6QlY7O0FBQUE7QUEyQlFlLGNBQUFBLGVBM0JSLEdBNEJJQyxLQUFLLENBQUNDLE9BQU4sQ0FBY1AsSUFBSSxDQUFDUSxTQUFuQixLQUFpQ1IsSUFBSSxDQUFDUSxTQUFMLENBQWVDLE1BQWYsR0FBd0IsQ0E1QjdEOztBQUFBLGtCQTZCT0osZUE3QlA7QUFBQTtBQUFBO0FBQUE7O0FBQUEsb0JBNkI4QixJQUFJZixLQUFKLENBQVUsaUNBQVYsQ0E3QjlCOztBQUFBO0FBQUEsK0NBK0JTVSxJQS9CVDs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxLQURpQztBQUFBO0FBQUE7O0FBa0NqQyxtQ0FBZSxPQUFmLEVBQXdCckIsT0FBeEI7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlZ2lzdGVyTWV0aG9kIH0gZnJvbSAnZGlkLXJlc29sdmVyJ1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIFhNTEh0dHBSZXF1ZXN0OiBhbnlcbiAgfVxufVxuZGVjbGFyZSB2YXIgcmVxdWlyZTogYW55XG5cbmNvbnN0IERPQ19QQVRIID0gJy8ud2VsbC1rbm93bi9kaWQuanNvbidcblxuZnVuY3Rpb24gZ2V0KHVybDogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAvLyBkZWNsYXJlIFhNTEh0dHBSZXF1ZXN0IGluIGhlcmUgc28gaXQgY2FuIGJlIG1vY2tlZCBmb3IgdGVzdHNcbiAgICBjb25zdCBYTUxIdHRwUmVxdWVzdCA9XG4gICAgICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICA/IHdpbmRvdy5YTUxIdHRwUmVxdWVzdFxuICAgICAgICA6IHJlcXVpcmUoJ3htbGh0dHByZXF1ZXN0JykuWE1MSHR0cFJlcXVlc3RcblxuICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKVxuICAgIHJlcXVlc3Qub3BlbignR0VUJywgdXJsKVxuICAgIHJlcXVlc3Qub25yZWFkeXN0YXRlY2hhbmdlID0gKCkgPT4ge1xuICAgICAgaWYgKCFyZXF1ZXN0IHx8IHJlcXVlc3QucmVhZHlTdGF0ZSAhPT0gNCkgcmV0dXJuXG4gICAgICBpZiAocmVxdWVzdC5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICByZXNvbHZlKHJlcXVlc3QucmVzcG9uc2UpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWplY3QoXG4gICAgICAgICAgbmV3IEVycm9yKFxuICAgICAgICAgICAgYEludmFsaWQgaHR0cCByZXNwb25zZSBzdGF0dXMgJHtyZXF1ZXN0LnN0YXR1c30gJHtcbiAgICAgICAgICAgICAgcmVxdWVzdC5yZXNwb25zZVRleHRcbiAgICAgICAgICAgIH1gLnRyaW0oKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cbiAgICByZXF1ZXN0LnNldFJlcXVlc3RIZWFkZXIoJ2FjY2VwdCcsICdhcHBsaWNhdGlvbi9qc29uJylcbiAgICByZXF1ZXN0LnNlbmQoKVxuICB9KVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZWdpc3RlcigpIHtcbiAgYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZShcbiAgICBkaWQ6IHN0cmluZyxcbiAgICBwYXJzZWQ6IFBhcnNlZERJRFxuICApOiBQcm9taXNlPERJRERvYyB8IG51bGw+IHtcbiAgICBjb25zdCB1cmw6IHN0cmluZyA9IGBodHRwczovLyR7cGFyc2VkLmlkfSR7RE9DX1BBVEh9YFxuXG4gICAgbGV0IHJlc3BvbnNlOiBhbnkgPSBudWxsXG4gICAgdHJ5IHtcbiAgICAgIHJlc3BvbnNlID0gYXdhaXQgZ2V0KHVybClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBESUQgbXVzdCByZXNvbHZlIHRvIGEgdmFsaWQgaHR0cHMgVVJMOiAke2Vycm9yLm1lc3NhZ2V9YClcbiAgICB9XG5cbiAgICBsZXQgZGF0YTogYW55ID0gbnVsbFxuICAgIHRyeSB7XG4gICAgICBkYXRhID0gSlNPTi5wYXJzZShyZXNwb25zZSlcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdESUQgbXVzdCByZXNvbHZlIHRvIGEgSlNPTiBkb2N1bWVudCcpXG4gICAgfVxuXG4gICAgY29uc3QgaGFzQ29udGV4dCA9IGRhdGFbJ0Bjb250ZXh0J10gPT09ICdodHRwczovL3czaWQub3JnL2RpZC92MSdcbiAgICBpZiAoIWhhc0NvbnRleHQpIHRocm93IG5ldyBFcnJvcignRElEIGRvY3VtZW50IG1pc3NpbmcgY29udGV4dCcpXG5cbiAgICBjb25zdCBkb2NJZE1hdGNoZXNEaWQgPSBkYXRhLmlkID09PSBkaWRcbiAgICBpZiAoIWRvY0lkTWF0Y2hlc0RpZClcbiAgICAgIHRocm93IG5ldyBFcnJvcignRElEIGRvY3VtZW50IGlkIGRvZXMgbm90IG1hdGNoIHJlcXVlc3RlZCBkaWQnKVxuXG4gICAgY29uc3QgZG9jSGFzUHVibGljS2V5ID1cbiAgICAgIEFycmF5LmlzQXJyYXkoZGF0YS5wdWJsaWNLZXkpICYmIGRhdGEucHVibGljS2V5Lmxlbmd0aCA+IDBcbiAgICBpZiAoIWRvY0hhc1B1YmxpY0tleSkgdGhyb3cgbmV3IEVycm9yKCdESUQgZG9jdW1lbnQgaGFzIG5vIHB1YmxpYyBrZXlzJylcblxuICAgIHJldHVybiBkYXRhXG4gIH1cbiAgcmVnaXN0ZXJNZXRob2QoJ2h0dHBzJywgcmVzb2x2ZSlcbn1cbiJdfQ==
exports.default = register;
//# sourceMappingURL=register.js.map
{
"name": "https-did-resolver",
"version": "0.0.1",
"version": "0.0.2",
"description": "Resolve DID documents from an https domain",
"main": "lib/register.js",
"types": "lib/register.d.ts",
"author": "Mike Xu <mike.xu@consensys.net>",

@@ -13,20 +14,12 @@ "license": "Apache-2.0",

"scripts": {
"type-check": "tsc --noEmit",
"type-check:watch": "npm run type-check -- --watch",
"build": "npm run build:types && npm run build:js",
"build:types": "tsc --emitDeclarationOnly",
"build:js": "babel src --out-dir lib --extensions \".ts,.tsx\" --source-maps inline",
"test": "jest"
"build": "tsc",
"test": "jest",
"dev": "tsc --watch",
"format": "prettier"
},
"browser": {
"xmlhttprequest": false
},
"devDependencies": {
"@babel/cli": "^7.0.0",
"@babel/core": "^7.0.1",
"@babel/plugin-proposal-class-properties": "^7.0.0",
"@babel/plugin-proposal-object-rest-spread": "^7.0.0",
"@babel/plugin-transform-runtime": "^7.1.0",
"@babel/preset-env": "^7.0.0",
"@babel/preset-typescript": "^7.0.0",
"@types/jest": "^23.3.2",
"babel-core": "7.0.0-bridge.0",
"babel-jest": "^23.6.0",
"@types/jest": "^23.1.1",
"jest": "^23.6.0",

@@ -36,2 +29,5 @@ "prettier": "^1.14.2",

"ts-jest": "^23.1.4",
"tslint": "^5.11.0",
"tslint-config-prettier": "^1.15.0",
"tslint-eslint-rules": "^5.4.0",
"typescript": "^3.0.3",

@@ -41,5 +37,20 @@ "xhr-mock": "^2.4.1"

"jest": {
"coverateDirectory": "./coverage/",
"collectCoverage": true
"transform": {
"^.+\\.tsx?$": "ts-jest"
},
"testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$",
"moduleFileExtensions": [
"ts",
"tsx",
"js",
"jsx",
"json"
],
"coverageDirectory": "./coverage/",
"collectCoverageFrom": [
"src/**/*.{ts,tsx}",
"!src/**/*.d.ts",
"!**/node_modules/**"
]
}
}
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