@0xpolygonid/js-sdk
Version:
SDK to work with Polygon ID
64 lines (63 loc) • 2.27 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CredentialStorage = void 0;
const verifiable_1 = require("../../verifiable");
const filters_1 = require("../filters");
/**
* Implementation of ICredentialStorage with KV Data source
*
* @public
* @class CredentialStorage
* @implements {ICredentialStorage}
*/
class CredentialStorage {
/**
* Creates an instance of CredentialStorage.
* @param {IDataSource<W3CCredential>} _dataSource - W3CCredential credential KV data source
*/
constructor(_dataSource) {
this._dataSource = _dataSource;
}
/** {@inheritdoc ICredentialStorage.listCredentials } */
async listCredentials() {
const creds = await this._dataSource.load();
return creds.filter((i) => i !== undefined).map((cred) => cred && verifiable_1.W3CCredential.fromJSON(cred));
}
/** @inheritdoc */
async saveCredential(credential) {
return this._dataSource.save(credential.id, credential.toJSON());
}
/** {@inheritdoc ICredentialStorage.listCredentials } */
async saveAllCredentials(credentials) {
for (const credential of credentials) {
await this.saveCredential(credential);
}
}
/** {@inheritdoc ICredentialStorage.listCredentials } */
async removeCredential(id) {
return this._dataSource.delete(id);
}
/** {@inheritdoc ICredentialStorage.listCredentials } */
async findCredentialById(id) {
const cred = await this._dataSource.get(id);
return cred && verifiable_1.W3CCredential.fromJSON(cred);
}
/** {@inheritdoc ICredentialStorage.listCredentials }
* uses JSON query
*/
async findCredentialsByQuery(query) {
const filters = (0, filters_1.StandardJSONCredentialsQueryFilter)(query);
const creds = (await this._dataSource.load()).filter((credential) => filters.every((filter) => filter.execute(credential)));
const mappedCreds = creds
.filter((i) => i !== undefined)
.map((cred) => verifiable_1.W3CCredential.fromJSON(cred));
return mappedCreds;
}
}
exports.CredentialStorage = CredentialStorage;
/**
* key for storage
*
* @static
*/
CredentialStorage.storageKey = 'credentials';