UNPKG

4.62 kBJavaScriptView Raw
1'use strict';
2
3var _keyidSchemas = require('./schemas/keyid-schemas');
4
5var _schemas = require('./schemas');
6
7let $cause = Symbol('cause');
8
9class MalformedKeyIdError extends Error {
10 constructor(message, cause) {
11 super(message);
12 this.name = this.constructor.name;
13 this.message = message;
14 this[$cause] = cause;
15 Error.captureStackTrace(this, this.constructor.name);
16 }
17
18 get cause() {
19 return this[$cause];
20 }
21}
22
23let $parsed = Symbol('parsed');
24
25class KeyId {
26 constructor(pId, kId) {
27 const principalId = (0, _schemas.validate)(pId, _keyidSchemas.principalidSchema);
28 const keyId = (0, _schemas.validate)(kId, _keyidSchemas.keyidSchema);
29 this[$parsed] = [principalId, keyId];
30 }
31
32 get principalId() {
33 return this[$parsed][0];
34 }
35
36 get keyId() {
37 return this[$parsed][1];
38 }
39
40 toString() {
41 return `${ encodeURIComponent(this.principalId) }/${ encodeURIComponent(this.keyId) }`;
42 }
43}
44
45function parse(kId) {
46 const keyId = (0, _schemas.validate)(kId, _keyidSchemas.identifierSchema);
47 let parsed = keyId.split('/');
48 return new KeyId(decodeURIComponent(parsed[0]), decodeURIComponent(parsed[1]));
49}
50
51KeyId.parse = parse;
52
53module.exports = {
54 KeyId: KeyId,
55 MalformedKeyIdError: MalformedKeyIdError
56};
57//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9rZXlpZC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBOztBQUNBOztBQUNBLElBQUksU0FBUyxPQUFPLE9BQVAsQ0FBVDs7QUFFSixNQUFNLG1CQUFOLFNBQWtDLEtBQWxDLENBQXdDO0FBQ3RDLGNBQVksT0FBWixFQUFxQixLQUFyQixFQUE0QjtBQUMxQixVQUFNLE9BQU4sRUFEMEI7QUFFMUIsU0FBSyxJQUFMLEdBQVksS0FBSyxXQUFMLENBQWlCLElBQWpCLENBRmM7QUFHMUIsU0FBSyxPQUFMLEdBQWUsT0FBZixDQUgwQjtBQUkxQixTQUFLLE1BQUwsSUFBZSxLQUFmLENBSjBCO0FBSzFCLFVBQU0saUJBQU4sQ0FBd0IsSUFBeEIsRUFBOEIsS0FBSyxXQUFMLENBQWlCLElBQWpCLENBQTlCLENBTDBCO0dBQTVCOztBQVFBLE1BQUksS0FBSixHQUFZO0FBQ1YsV0FBTyxLQUFLLE1BQUwsQ0FBUCxDQURVO0dBQVo7Q0FURjs7QUFjQSxJQUFJLFVBQVUsT0FBTyxRQUFQLENBQVY7O0FBRUosTUFBTSxLQUFOLENBQVk7QUFDVixjQUFZLEdBQVosRUFBaUIsR0FBakIsRUFBc0I7QUFDcEIsVUFBTSxjQUFjLHVCQUFTLEdBQVQsa0NBQWQsQ0FEYztBQUVwQixVQUFNLFFBQVEsdUJBQVMsR0FBVCw0QkFBUixDQUZjO0FBR3BCLFNBQUssT0FBTCxJQUFnQixDQUFDLFdBQUQsRUFBYyxLQUFkLENBQWhCLENBSG9CO0dBQXRCOztBQU1BLE1BQUksV0FBSixHQUFrQjtBQUNoQixXQUFPLEtBQUssT0FBTCxFQUFjLENBQWQsQ0FBUCxDQURnQjtHQUFsQjs7QUFJQSxNQUFJLEtBQUosR0FBWTtBQUNWLFdBQU8sS0FBSyxPQUFMLEVBQWMsQ0FBZCxDQUFQLENBRFU7R0FBWjs7QUFJQSxhQUFXO0FBQ1QsV0FBTyxDQUFDLEdBQUUsbUJBQW1CLEtBQUssV0FBTCxDQUF0QixFQUF3QyxDQUF4QyxHQUEyQyxtQkFBbUIsS0FBSyxLQUFMLENBQTlELEVBQTBFLENBQWpGLENBRFM7R0FBWDtDQWZGOztBQW9CQSxTQUFTLEtBQVQsQ0FBZSxHQUFmLEVBQW9CO0FBQ2xCLFFBQU0sUUFBUSx1QkFBUyxHQUFULGlDQUFSLENBRFk7QUFFbEIsTUFBSSxTQUFTLE1BQU0sS0FBTixDQUFZLEdBQVosQ0FBVCxDQUZjO0FBR2xCLFNBQU8sSUFBSSxLQUFKLENBQVUsbUJBQW1CLE9BQU8sQ0FBUCxDQUFuQixDQUFWLEVBQXlDLG1CQUFtQixPQUFPLENBQVAsQ0FBbkIsQ0FBekMsQ0FBUCxDQUhrQjtDQUFwQjs7QUFNQSxNQUFNLEtBQU4sR0FBYyxLQUFkOztBQUVBLE9BQU8sT0FBUCxHQUFpQjtBQUNmLGNBRGU7QUFFZiwwQ0FGZTtDQUFqQiIsImZpbGUiOiJrZXlpZC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGtleWlkU2NoZW1hLCBwcmluY2lwYWxpZFNjaGVtYSwgaWRlbnRpZmllclNjaGVtYSB9IGZyb20gJy4vc2NoZW1hcy9rZXlpZC1zY2hlbWFzJztcbmltcG9ydCB7IHZhbGlkYXRlIH0gZnJvbSAnLi9zY2hlbWFzJztcbmxldCAkY2F1c2UgPSBTeW1ib2woJ2NhdXNlJyk7XG5cbmNsYXNzIE1hbGZvcm1lZEtleUlkRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2UsIGNhdXNlKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgdGhpc1skY2F1c2VdID0gY2F1c2U7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgdGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcbiAgfVxuXG4gIGdldCBjYXVzZSgpIHtcbiAgICByZXR1cm4gdGhpc1skY2F1c2VdO1xuICB9XG59XG5cbmxldCAkcGFyc2VkID0gU3ltYm9sKCdwYXJzZWQnKTtcblxuY2xhc3MgS2V5SWQge1xuICBjb25zdHJ1Y3RvcihwSWQsIGtJZCkge1xuICAgIGNvbnN0IHByaW5jaXBhbElkID0gdmFsaWRhdGUocElkLCBwcmluY2lwYWxpZFNjaGVtYSk7XG4gICAgY29uc3Qga2V5SWQgPSB2YWxpZGF0ZShrSWQsIGtleWlkU2NoZW1hKTtcbiAgICB0aGlzWyRwYXJzZWRdID0gW3ByaW5jaXBhbElkLCBrZXlJZF07XG4gIH1cblxuICBnZXQgcHJpbmNpcGFsSWQoKSB7XG4gICAgcmV0dXJuIHRoaXNbJHBhcnNlZF1bMF07XG4gIH1cblxuICBnZXQga2V5SWQoKSB7XG4gICAgcmV0dXJuIHRoaXNbJHBhcnNlZF1bMV07XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gYCR7ZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMucHJpbmNpcGFsSWQpfS8ke2VuY29kZVVSSUNvbXBvbmVudCh0aGlzLmtleUlkKX1gO1xuICB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlKGtJZCkge1xuICBjb25zdCBrZXlJZCA9IHZhbGlkYXRlKGtJZCwgaWRlbnRpZmllclNjaGVtYSk7XG4gIGxldCBwYXJzZWQgPSBrZXlJZC5zcGxpdCgnLycpO1xuICByZXR1cm4gbmV3IEtleUlkKGRlY29kZVVSSUNvbXBvbmVudChwYXJzZWRbMF0pLCBkZWNvZGVVUklDb21wb25lbnQocGFyc2VkWzFdKSk7XG59XG5cbktleUlkLnBhcnNlID0gcGFyc2U7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBLZXlJZCxcbiAgTWFsZm9ybWVkS2V5SWRFcnJvclxufTtcbiJdfQ==
\No newline at end of file