https-did-resolver
Advanced tools
Comparing version 0.0.1 to 0.0.2
"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/**" | ||
] | ||
} | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
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
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
10
11674
6
143
1