@solid/community-server
Version:
Community Solid Server: an open and modular implementation of the Solid specifications
31 lines • 1.53 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ValidatingDataAccessor = void 0;
const BasicRepresentation_1 = require("../../http/representation/BasicRepresentation");
const PassthroughDataAccessor_1 = require("./PassthroughDataAccessor");
/**
* A ValidatingDataAccessor wraps a DataAccessor such that the data stream is validated while being written.
* An AtomicDataAccessor can be used to prevent data being written in case validation fails.
*/
class ValidatingDataAccessor extends PassthroughDataAccessor_1.PassthroughDataAccessor {
validator;
constructor(accessor, validator) {
super(accessor);
this.validator = validator;
}
async writeDocument(identifier, data, metadata) {
const pipedRep = await this.validator.handleSafe({
representation: new BasicRepresentation_1.BasicRepresentation(data, metadata),
identifier,
});
return this.accessor.writeDocument(identifier, pipedRep.data, metadata);
}
async writeContainer(identifier, metadata) {
// A container's data mainly resides in its metadata,
// of which we can't calculate the disk size of at this point in the code.
// Extra info can be found here: https://github.com/CommunitySolidServer/CommunitySolidServer/pull/973#discussion_r723376888
return this.accessor.writeContainer(identifier, metadata);
}
}
exports.ValidatingDataAccessor = ValidatingDataAccessor;
//# sourceMappingURL=ValidatingDataAccessor.js.map