1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const tslib_1 = require("tslib");
|
4 | const stream_1 = require("stream");
|
5 | const splitTaggedFilename_1 = tslib_1.__importDefault(require("./splitTaggedFilename"));
|
6 | class FilterResourceTag extends stream_1.Transform {
|
7 | constructor(resourceFilterTag) {
|
8 | super({ objectMode: true });
|
9 | this.resourceFilterTag = resourceFilterTag;
|
10 | this.files = new Map();
|
11 | }
|
12 | _transform(file, _, callback) {
|
13 | if (file.isDirectory()) {
|
14 | callback(undefined, file);
|
15 | return;
|
16 | }
|
17 | const { basename, tag } = splitTaggedFilename_1.default(file.basename);
|
18 | if (tag === this.resourceFilterTag ||
|
19 | (tag === undefined && !this.files.has(file.path))) {
|
20 | const newFile = file.clone({ contents: false });
|
21 | newFile.basename = basename;
|
22 | this.files.set(newFile.path, newFile);
|
23 | }
|
24 | callback();
|
25 | }
|
26 | _flush(callback) {
|
27 | for (const file of this.files.values()) {
|
28 | this.push(file);
|
29 | }
|
30 | this.files.clear();
|
31 | callback();
|
32 | }
|
33 | }
|
34 | function filterResourceTag(tagName) {
|
35 | return new FilterResourceTag(tagName);
|
36 | }
|
37 | exports.default = filterResourceTag;
|