@sphereon/oid4vci-issuer
Version:
OpenID 4 Verifiable Credential Issuance issuer REST endpoints
133 lines • 5.77 kB
JavaScript
"use strict";
// noinspection ES6MissingAwait
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
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) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.LookupStateManager = exports.lookupStateManagerMultiGet = exports.lookupStateManagerMultiGetAsserted = void 0;
function lookupStateManagerMultiGetAsserted(args) {
return __awaiter(this, void 0, void 0, function* () {
const value = yield lookupStateManagerMultiGet(args);
if (value) {
return value;
}
return Promise.reject(Error(`no value found for id ${args.id}`));
});
}
exports.lookupStateManagerMultiGetAsserted = lookupStateManagerMultiGetAsserted;
function lookupStateManagerMultiGet(_a) {
return __awaiter(this, arguments, void 0, function* ({ id, lookups, keyValueMapper, valueStateManager, }) {
for (const lookup of lookups) {
try {
const value = yield new LookupStateManager(keyValueMapper, valueStateManager, lookup).get(id);
if (value) {
return value;
}
}
catch (e) {
// intentionally ignore the error
}
}
return valueStateManager.get(id);
});
}
exports.lookupStateManagerMultiGet = lookupStateManagerMultiGet;
class LookupStateManager {
constructor(keyValueMapper, valueStateManager, lookup) {
this.keyValueMapper = keyValueMapper;
this.valueStateManager = valueStateManager;
this.lookup = lookup;
}
startCleanupRoutine(timeout) {
this.keyValueMapper.startCleanupRoutine(timeout);
return this.valueStateManager.startCleanupRoutine(timeout);
}
stopCleanupRoutine() {
this.keyValueMapper.stopCleanupRoutine();
return this.valueStateManager.stopCleanupRoutine();
}
clearAll() {
return __awaiter(this, void 0, void 0, function* () {
this.keyValueMapper.clearAll();
this.valueStateManager.clearAll();
});
}
clearExpired(timestamp) {
return __awaiter(this, void 0, void 0, function* () {
this.keyValueMapper.clearExpired(timestamp);
this.valueStateManager.clearExpired(timestamp);
});
}
assertedValueId(key) {
return __awaiter(this, void 0, void 0, function* () {
const prop = this.lookup;
const valueId = yield this.keyValueMapper
.getAsserted(key)
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
.then((keyState) => (keyState && prop in keyState ? keyState[prop] : undefined));
if (typeof valueId !== 'string') {
throw Error('no value id could be derived for key' + key);
}
return valueId;
});
}
valueId(key) {
return __awaiter(this, void 0, void 0, function* () {
const prop = this.lookup;
return (yield this.keyValueMapper
.get(key)
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
.then((keyState) => (keyState && prop in keyState ? keyState[prop] : undefined)));
});
}
delete(id) {
return __awaiter(this, void 0, void 0, function* () {
return yield this.assertedValueId(id).then((value) => __awaiter(this, void 0, void 0, function* () {
yield this.keyValueMapper.delete(id);
return yield this.valueStateManager.delete(value);
}));
});
}
get(id) {
return __awaiter(this, void 0, void 0, function* () {
return this.valueId(id).then((value) => (value ? this.valueStateManager.get(value) : undefined));
});
}
has(id) {
return __awaiter(this, void 0, void 0, function* () {
return this.valueId(id).then((value) => (value ? this.valueStateManager.has(value) : false));
});
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
set(_id, _stateValue) {
return __awaiter(this, void 0, void 0, function* () {
throw Error(`Please use the setMappedMethod that accepts both and id, value and object`);
});
}
setMapped(valueKey, keyObject, stateValue) {
return __awaiter(this, void 0, void 0, function* () {
const keys = keyObject;
if (!(this.lookup in keys) || !keys[this.lookup]) {
return Promise.reject(new Error(`keyValue ${keyObject} does not contain the lookup property ${this.lookup}`));
}
const key = keys[this.lookup];
yield this.keyValueMapper.set(key, keyObject);
yield this.valueStateManager.set(valueKey, stateValue);
});
}
getAsserted(id) {
return __awaiter(this, void 0, void 0, function* () {
return this.assertedValueId(id).then((value) => this.valueStateManager.getAsserted(value));
});
}
}
exports.LookupStateManager = LookupStateManager;
//# sourceMappingURL=LookupStateManager.js.map