UNPKG

@beyond-js/bundles-sdk

Version:
54 lines (45 loc) 1.45 kB
const DynamicProcessor = require('@beyond-js/dynamic-processor')(); const equal = require('@beyond-js/equal'); const crc32 = require('@beyond-js/crc32'); module.exports = class extends DynamicProcessor { get dp() { return 'processor.analyzer.hash'; } #analyzer; get analyzer() { return this.#analyzer; } constructor(analyzer) { super(); this.#analyzer = analyzer; const events = ['item.initialised', 'item.change']; const { processor } = analyzer; const { files, overwrites, extensions } = processor.sources; const children = [ ['files', { child: files, events }], ['extensions', { child: extensions, events }], ]; overwrites && children.push(['overwrites', { child: overwrites, events }]); super.setup(new Map(children)); } #value; get value() { return this.#value; } _prepared(check) { const { files, overwrites } = this.#analyzer.processor.sources; files.forEach(source => check(source)); overwrites?.forEach(source => check(source)); } _process() { const { files, overwrites, extensions } = this.#analyzer.processor.sources; const compute = {}; files.forEach(source => (compute[source.file] = source.hash)); overwrites?.forEach(source => (compute[source.file] = source.hash)); extensions.forEach(source => (compute[source.file] = source.hash)); const value = crc32(equal.generate(compute)); const changed = value !== this.#value; this.#value = value; return changed; } };