@beyond-js/bundles-sdk
Version:
BeyondJS Bundles SDK
43 lines (35 loc) • 983 B
JavaScript
const DynamicProcessor = require('@beyond-js/dynamic-processor')();
const equal = require('@beyond-js/equal');
const crc32 = require('@beyond-js/crc32');
/**
* Hash of a collection of sources. It is used by files and overwrites
*/
module.exports = class extends DynamicProcessor {
get dp() {
return 'processor.sources.hash';
}
constructor(sources) {
super();
super.setup(new Map([['sources', { child: sources }]]));
}
#value;
get value() {
return this.#value;
}
_prepared(require) {
const sources = this.children.get('sources').child;
sources.forEach(source => require(source));
}
_process() {
const done = value => {
const changed = this.#value !== value;
this.#value = value;
return changed;
};
const sources = this.children.get('sources').child;
if (!sources.size) return done(0);
const compute = {};
sources.forEach(source => (compute[source.relative.file] = source.hash));
return done(crc32(equal.generate(compute)));
}
};