UNPKG

@beyond-js/bundles-sdk

Version:
43 lines (35 loc) 983 B
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))); } };