@ps-aux/nodebup 0.9.8 → 0.9.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,9 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.Zipper = void 0;
7
-
8
- var _admZip = _interopRequireDefault(require("adm-zip"));
6
+ exports.buildZipFromDirectory = exports.Zipper = void 0;
9
7
 
10
8
  var _inversify = require("inversify");
11
9
 
@@ -15,6 +13,12 @@ var _unzipper = _interopRequireDefault(require("unzipper"));
15
13
 
16
14
  var _nodeFs = _interopRequireDefault(require("node:fs"));
17
15
 
16
+ var _jszip = _interopRequireDefault(require("jszip"));
17
+
18
+ var _path = _interopRequireDefault(require("path"));
19
+
20
+ var _promises = _interopRequireDefault(require("stream/promises"));
21
+
18
22
  var _dec, _class;
19
23
 
20
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -25,20 +29,39 @@ let Zipper = (_dec = (0, _inversify.injectable)(), _dec(_class = class Zipper {
25
29
  constructor() {
26
30
  _defineProperty(this, "log", (0, _logging.classObjLog)(this));
27
31
 
28
- _defineProperty(this, "zipDir", async (dir, to) => {
29
- this.log.trace(`Zipping %s to %s`, dir.str(), to.str()); // TODO replace with unzipper
32
+ _defineProperty(this, "zipDir", async (dirPath, to) => {
33
+ const srcDir = dirPath.str();
34
+ const dst = to.str();
35
+
36
+ const dstDir = _path.default.dirname(dst);
30
37
 
31
- const z = new _admZip.default();
32
- z.addLocalFolder(dir.str());
33
- z.writeZip(to.str());
38
+ this.log.trace(`Zipping %s to %s`, srcDir, dst);
39
+ const zip = new _jszip.default();
40
+ buildZipFromDirectory(srcDir, zip);
41
+ const r = await zip.generateNodeStream();
42
+
43
+ if (!_nodeFs.default.existsSync(dstDir)) {
44
+ _nodeFs.default.mkdirSync(dstDir);
45
+ }
46
+
47
+ const ws = _nodeFs.default.createWriteStream(dst);
48
+
49
+ await _promises.default.pipeline(r, ws);
34
50
  });
35
51
 
36
52
  _defineProperty(this, "unzipDir", async (zipFile, toDir) => {
53
+ // TODO can be replaced with JsZip ?
37
54
  this.log.trace(`Unzipping %s to %s`, zipFile.str(), toDir.str());
55
+
56
+ const input = _nodeFs.default.createReadStream(zipFile.str());
57
+
58
+ const out = _unzipper.default.Extract({
59
+ path: toDir.str()
60
+ }); // Cannot use Streams.pipeline bcs it sometimes resolves before the file exists
61
+
62
+
38
63
  return new Promise((res, rej) => {
39
- _nodeFs.default.createReadStream(zipFile.str()).pipe(_unzipper.default.Extract({
40
- path: toDir.str()
41
- })).on('close', () => {
64
+ input.pipe(out).on('close', () => {
42
65
  res();
43
66
  }).on('error', rej);
44
67
  });
@@ -46,4 +69,26 @@ let Zipper = (_dec = (0, _inversify.injectable)(), _dec(_class = class Zipper {
46
69
  }
47
70
 
48
71
  }) || _class);
49
- exports.Zipper = Zipper;
72
+ exports.Zipper = Zipper;
73
+
74
+ const buildZipFromDirectory = (dir, zip, root = dir) => {
75
+ const list = _nodeFs.default.readdirSync(dir);
76
+
77
+ for (let file of list) {
78
+ file = _path.default.resolve(dir, file);
79
+
80
+ const stat = _nodeFs.default.statSync(file);
81
+
82
+ if (stat && stat.isDirectory()) {
83
+ buildZipFromDirectory(file, zip, root);
84
+ } else {
85
+ const filedata = _nodeFs.default.createReadStream(file);
86
+
87
+ const p = _path.default.relative(root, file);
88
+
89
+ zip.file(p, filedata);
90
+ }
91
+ }
92
+ };
93
+
94
+ exports.buildZipFromDirectory = buildZipFromDirectory;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ps-aux/nodebup",
3
- "version": "0.9.8",
3
+ "version": "0.9.9",
4
4
  "description": "",
5
5
  "module": "lib/index.js",
6
6
  "main": "lib/index.js",
@@ -80,12 +80,12 @@
80
80
  "@hapi/joi": "^17.1.1",
81
81
  "@ps-aux/nclif": "^0.0.7-alpha.1",
82
82
  "@types/hapi__joi": "^17.1.8",
83
- "adm-zip": "^0.5.9",
84
83
  "axios": "^0.24.0",
85
84
  "handlebars": "^4.7.7",
86
85
  "ini": "^2.0.0",
87
86
  "inversify": "^6.0.1",
88
87
  "js-yaml": "^4.1.0",
88
+ "jszip": "^3.10.1",
89
89
  "pino": "^7.11.0",
90
90
  "pino-pretty": "^9.1.1",
91
91
  "ramda": "^0.27.1",