UNPKG

4.04 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.default = void 0;
7
8var _del = _interopRequireDefault(require("del"));
9
10var _sbFs = _interopRequireDefault(require("sb-fs"));
11
12var _path = _interopRequireDefault(require("path"));
13
14var _pMap = _interopRequireDefault(require("p-map"));
15
16var _makeDir = _interopRequireDefault(require("make-dir"));
17
18var _anymatch = _interopRequireDefault(require("anymatch"));
19
20function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
22function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
23
24function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
25
26function iterate(_x) {
27 return _iterate.apply(this, arguments);
28}
29
30function _iterate() {
31 _iterate = _asyncToGenerator(function* ({
32 extensions,
33 getOutputFilePath,
34 rootDirectory,
35 sourceDirectory,
36 outputDirectory,
37 ignored,
38 keepExtraFiles,
39 filesToKeep,
40 callback
41 }) {
42 const contents = yield _sbFs.default.readdir(sourceDirectory);
43 let outputStats;
44 let outputDirectoryExists = false;
45
46 try {
47 outputStats = yield _sbFs.default.stat(outputDirectory);
48 } catch (_) {
49 /* No Op */
50 }
51
52 if (outputStats) {
53 if (outputStats.isDirectory()) {
54 outputDirectoryExists = true;
55 } else {
56 yield (0, _del.default)(outputDirectory);
57 outputStats = null;
58 }
59 }
60
61 const outputContents = outputStats ? yield _sbFs.default.readdir(outputDirectory) : [];
62
63 if (!keepExtraFiles) {
64 const whitelist = filesToKeep(contents).map(getOutputFilePath);
65 const filesToDelete = outputContents.filter(item => !whitelist.includes(item)).map(item => _path.default.resolve(outputDirectory, item));
66 yield Promise.all(filesToDelete.map(item => (0, _del.default)(item)));
67 }
68
69 yield (0, _pMap.default)(contents,
70 /*#__PURE__*/
71 function () {
72 var _ref = _asyncToGenerator(function* (fileName) {
73 const filePath = _path.default.join(sourceDirectory, fileName);
74
75 const stat = yield _sbFs.default.lstat(filePath);
76
77 if (stat.isSymbolicLink()) {
78 // NOTE: We ignore symlinks
79 return;
80 }
81
82 if ((0, _anymatch.default)(ignored, fileName) || (0, _anymatch.default)(ignored, filePath) || (0, _anymatch.default)(ignored, _path.default.relative(rootDirectory, filePath))) {
83 // NOTE: We ignore ignored files
84 return;
85 }
86
87 if (stat.isFile()) {
88 if (!extensions.includes(_path.default.extname(fileName))) return;
89
90 if (!outputDirectoryExists) {
91 yield (0, _makeDir.default)(outputDirectory);
92 outputDirectoryExists = true;
93 }
94
95 const outputFile = getOutputFilePath(_path.default.join(outputDirectory, fileName));
96 yield callback(filePath, outputFile, stat);
97 } else if (stat.isDirectory()) {
98 yield iterate({
99 extensions,
100 getOutputFilePath,
101 rootDirectory,
102 sourceDirectory: _path.default.join(sourceDirectory, fileName),
103 outputDirectory: _path.default.join(outputDirectory, fileName),
104 ignored,
105 keepExtraFiles,
106 filesToKeep,
107 callback
108 });
109 }
110 });
111
112 return function (_x2) {
113 return _ref.apply(this, arguments);
114 };
115 }());
116 });
117 return _iterate.apply(this, arguments);
118}
119
120var _default = iterate;
121exports.default = _default;
\No newline at end of file