extract-base-iterator 1.1.1 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/DirectoryEntry.js +6 -6
- package/dist/cjs/FileEntry.js +12 -10
- package/dist/cjs/FileEntry.js.map +1 -1
- package/dist/cjs/LinkEntry.js +12 -10
- package/dist/cjs/LinkEntry.js.map +1 -1
- package/dist/cjs/SymbolicLinkEntry.js +14 -12
- package/dist/cjs/SymbolicLinkEntry.js.map +1 -1
- package/dist/cjs/fs/chmod.js +5 -5
- package/dist/cjs/fs/chown.js +2 -2
- package/dist/cjs/polyfills.js +1 -1
- package/dist/esm/FileEntry.mjs +4 -2
- package/dist/esm/FileEntry.mjs.map +1 -1
- package/dist/esm/LinkEntry.mjs +4 -2
- package/dist/esm/LinkEntry.mjs.map +1 -1
- package/dist/esm/SymbolicLinkEntry.mjs +4 -2
- package/dist/esm/SymbolicLinkEntry.mjs.map +1 -1
- package/dist/esm/stripPath.mjs.map +1 -1
- package/dist/esm/validateAttributes.mjs.map +1 -1
- package/package.json +4 -4
|
@@ -22,23 +22,23 @@ function _interop_require_default(obj) {
|
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
24
|
var MANDATORY_ATTRIBUTES = [
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
'mode',
|
|
26
|
+
'mtime',
|
|
27
|
+
'path'
|
|
28
28
|
];
|
|
29
29
|
function DirectoryEntry(attributes) {
|
|
30
30
|
(0, _validateAttributes.default)(attributes, MANDATORY_ATTRIBUTES);
|
|
31
31
|
Object.assign(this, attributes);
|
|
32
|
-
if (this.type === undefined) this.type =
|
|
32
|
+
if (this.type === undefined) this.type = 'directory';
|
|
33
33
|
if (this.basename === undefined) this.basename = _path.default.basename(this.path);
|
|
34
34
|
}
|
|
35
35
|
DirectoryEntry.prototype.create = function create(dest, options, callback) {
|
|
36
|
-
if (typeof options ===
|
|
36
|
+
if (typeof options === 'function') {
|
|
37
37
|
callback = options;
|
|
38
38
|
options = null;
|
|
39
39
|
}
|
|
40
40
|
var self = this;
|
|
41
|
-
if (typeof callback ===
|
|
41
|
+
if (typeof callback === 'function') {
|
|
42
42
|
options = options || {};
|
|
43
43
|
try {
|
|
44
44
|
var normalizedPath = _path.default.normalize(self.path);
|
package/dist/cjs/FileEntry.js
CHANGED
|
@@ -11,7 +11,7 @@ Object.defineProperty(exports, "default", {
|
|
|
11
11
|
var _path = /*#__PURE__*/ _interop_require_default(require("path"));
|
|
12
12
|
var _mkpath = /*#__PURE__*/ _interop_require_default(require("mkpath"));
|
|
13
13
|
var _queuecb = /*#__PURE__*/ _interop_require_default(require("queue-cb"));
|
|
14
|
-
var
|
|
14
|
+
var _rimraf2 = /*#__PURE__*/ _interop_require_default(require("rimraf2"));
|
|
15
15
|
var _chmod = /*#__PURE__*/ _interop_require_default(require("./fs/chmod.js"));
|
|
16
16
|
var _chown = /*#__PURE__*/ _interop_require_default(require("./fs/chown.js"));
|
|
17
17
|
var _utimes = /*#__PURE__*/ _interop_require_default(require("./fs/utimes.js"));
|
|
@@ -23,24 +23,24 @@ function _interop_require_default(obj) {
|
|
|
23
23
|
};
|
|
24
24
|
}
|
|
25
25
|
var MANDATORY_ATTRIBUTES = [
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
'mode',
|
|
27
|
+
'mtime',
|
|
28
|
+
'path'
|
|
29
29
|
];
|
|
30
30
|
function FileEntry(attributes) {
|
|
31
31
|
(0, _validateAttributes.default)(attributes, MANDATORY_ATTRIBUTES);
|
|
32
32
|
Object.assign(this, attributes);
|
|
33
33
|
if (this.basename === undefined) this.basename = _path.default.basename(this.path);
|
|
34
|
-
if (this.type === undefined) this.type =
|
|
35
|
-
if (this._writeFile === undefined) throw new Error(
|
|
34
|
+
if (this.type === undefined) this.type = 'file';
|
|
35
|
+
if (this._writeFile === undefined) throw new Error('File self missing _writeFile. Please implement this method in your subclass');
|
|
36
36
|
}
|
|
37
37
|
FileEntry.prototype.create = function create(dest, options, callback) {
|
|
38
|
-
if (typeof options ===
|
|
38
|
+
if (typeof options === 'function') {
|
|
39
39
|
callback = options;
|
|
40
40
|
options = null;
|
|
41
41
|
}
|
|
42
42
|
var self = this;
|
|
43
|
-
if (typeof callback ===
|
|
43
|
+
if (typeof callback === 'function') {
|
|
44
44
|
options = options || {};
|
|
45
45
|
try {
|
|
46
46
|
var normalizedPath = _path.default.normalize(self.path);
|
|
@@ -48,8 +48,10 @@ FileEntry.prototype.create = function create(dest, options, callback) {
|
|
|
48
48
|
var queue = new _queuecb.default(1);
|
|
49
49
|
if (options.force) {
|
|
50
50
|
queue.defer(function(callback) {
|
|
51
|
-
(0,
|
|
52
|
-
|
|
51
|
+
(0, _rimraf2.default)(fullPath, {
|
|
52
|
+
disableGlob: true
|
|
53
|
+
}, function(err) {
|
|
54
|
+
err && err.code !== 'ENOENT' ? callback(err) : callback();
|
|
53
55
|
});
|
|
54
56
|
});
|
|
55
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["FileEntry.mjs"],"sourcesContent":["import path from 'path';\nimport mkpath from 'mkpath';\nimport Queue from 'queue-cb';\n\nimport
|
|
1
|
+
{"version":3,"sources":["FileEntry.mjs"],"sourcesContent":["import path from 'path';\nimport mkpath from 'mkpath';\nimport Queue from 'queue-cb';\n\nimport rimraf2 from 'rimraf2';\nimport chmod from './fs/chmod.mjs';\nimport chown from './fs/chown.mjs';\nimport utimes from './fs/utimes.mjs';\nimport stripPath from './stripPath.mjs';\nimport validateAttributes from './validateAttributes.mjs';\n\nconst MANDATORY_ATTRIBUTES = ['mode', 'mtime', 'path'];\n\nexport default function FileEntry(attributes) {\n validateAttributes(attributes, MANDATORY_ATTRIBUTES);\n Object.assign(this, attributes);\n if (this.basename === undefined) this.basename = path.basename(this.path);\n if (this.type === undefined) this.type = 'file';\n if (this._writeFile === undefined) throw new Error('File self missing _writeFile. Please implement this method in your subclass');\n}\n\nFileEntry.prototype.create = function create(dest, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = null;\n }\n\n const self = this;\n if (typeof callback === 'function') {\n options = options || {};\n try {\n const normalizedPath = path.normalize(self.path);\n const fullPath = path.join(dest, stripPath(normalizedPath, options));\n\n const queue = new Queue(1);\n if (options.force) {\n queue.defer((callback) => {\n rimraf2(fullPath, { disableGlob: true }, (err) => {\n err && err.code !== 'ENOENT' ? callback(err) : callback();\n });\n });\n }\n queue.defer(mkpath.bind(null, path.dirname(fullPath)));\n queue.defer(this._writeFile.bind(this, fullPath, options));\n queue.defer(chmod.bind(null, fullPath, self, options));\n queue.defer(chown.bind(null, fullPath, self, options));\n queue.defer(utimes.bind(null, fullPath, self, options));\n return queue.await(callback);\n } catch (err) {\n return callback(err);\n }\n }\n\n return new Promise(function createPromise(resolve, reject) {\n self.create(dest, options, function createCallback(err, done) {\n err ? reject(err) : resolve(done);\n });\n });\n};\n\nFileEntry.prototype.destroy = function destroy() {};\n"],"names":["FileEntry","MANDATORY_ATTRIBUTES","attributes","validateAttributes","Object","assign","basename","undefined","path","type","_writeFile","Error","prototype","create","dest","options","callback","self","normalizedPath","normalize","fullPath","join","stripPath","queue","Queue","force","defer","rimraf2","disableGlob","err","code","mkpath","bind","dirname","chmod","chown","utimes","await","Promise","createPromise","resolve","reject","createCallback","done","destroy"],"mappings":";;;;+BAaA;;;eAAwBA;;;2DAbP;6DACE;8DACD;8DAEE;4DACF;4DACA;6DACC;gEACG;yEACS;;;;;;AAE/B,IAAMC,uBAAuB;IAAC;IAAQ;IAAS;CAAO;AAEvC,SAASD,UAAUE,UAAU;IAC1CC,IAAAA,2BAAkB,EAACD,YAAYD;IAC/BG,OAAOC,MAAM,CAAC,IAAI,EAAEH;IACpB,IAAI,IAAI,CAACI,QAAQ,KAAKC,WAAW,IAAI,CAACD,QAAQ,GAAGE,aAAI,CAACF,QAAQ,CAAC,IAAI,CAACE,IAAI;IACxE,IAAI,IAAI,CAACC,IAAI,KAAKF,WAAW,IAAI,CAACE,IAAI,GAAG;IACzC,IAAI,IAAI,CAACC,UAAU,KAAKH,WAAW,MAAM,IAAII,MAAM;AACrD;AAEAX,UAAUY,SAAS,CAACC,MAAM,GAAG,SAASA,OAAOC,IAAI,EAAEC,OAAO,EAAEC,QAAQ;IAClE,IAAI,OAAOD,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU;IACZ;IAEA,IAAME,OAAO,IAAI;IACjB,IAAI,OAAOD,aAAa,YAAY;QAClCD,UAAUA,WAAW,CAAC;QACtB,IAAI;YACF,IAAMG,iBAAiBV,aAAI,CAACW,SAAS,CAACF,KAAKT,IAAI;YAC/C,IAAMY,WAAWZ,aAAI,CAACa,IAAI,CAACP,MAAMQ,IAAAA,kBAAS,EAACJ,gBAAgBH;YAE3D,IAAMQ,QAAQ,IAAIC,gBAAK,CAAC;YACxB,IAAIT,QAAQU,KAAK,EAAE;gBACjBF,MAAMG,KAAK,CAAC,SAACV;oBACXW,IAAAA,gBAAO,EAACP,UAAU;wBAAEQ,aAAa;oBAAK,GAAG,SAACC;wBACxCA,OAAOA,IAAIC,IAAI,KAAK,WAAWd,SAASa,OAAOb;oBACjD;gBACF;YACF;YACAO,MAAMG,KAAK,CAACK,eAAM,CAACC,IAAI,CAAC,MAAMxB,aAAI,CAACyB,OAAO,CAACb;YAC3CG,MAAMG,KAAK,CAAC,IAAI,CAAChB,UAAU,CAACsB,IAAI,CAAC,IAAI,EAAEZ,UAAUL;YACjDQ,MAAMG,KAAK,CAACQ,cAAK,CAACF,IAAI,CAAC,MAAMZ,UAAUH,MAAMF;YAC7CQ,MAAMG,KAAK,CAACS,cAAK,CAACH,IAAI,CAAC,MAAMZ,UAAUH,MAAMF;YAC7CQ,MAAMG,KAAK,CAACU,eAAM,CAACJ,IAAI,CAAC,MAAMZ,UAAUH,MAAMF;YAC9C,OAAOQ,MAAMc,KAAK,CAACrB;QACrB,EAAE,OAAOa,KAAK;YACZ,OAAOb,SAASa;QAClB;IACF;IAEA,OAAO,IAAIS,QAAQ,SAASC,cAAcC,OAAO,EAAEC,MAAM;QACvDxB,KAAKJ,MAAM,CAACC,MAAMC,SAAS,SAAS2B,eAAeb,GAAG,EAAEc,IAAI;YAC1Dd,MAAMY,OAAOZ,OAAOW,QAAQG;QAC9B;IACF;AACF;AAEA3C,UAAUY,SAAS,CAACgC,OAAO,GAAG,SAASA,WAAW"}
|
package/dist/cjs/LinkEntry.js
CHANGED
|
@@ -12,7 +12,7 @@ var _path = /*#__PURE__*/ _interop_require_default(require("path"));
|
|
|
12
12
|
var _gracefulfs = /*#__PURE__*/ _interop_require_default(require("graceful-fs"));
|
|
13
13
|
var _mkpath = /*#__PURE__*/ _interop_require_default(require("mkpath"));
|
|
14
14
|
var _queuecb = /*#__PURE__*/ _interop_require_default(require("queue-cb"));
|
|
15
|
-
var
|
|
15
|
+
var _rimraf2 = /*#__PURE__*/ _interop_require_default(require("rimraf2"));
|
|
16
16
|
var _chmod = /*#__PURE__*/ _interop_require_default(require("./fs/chmod.js"));
|
|
17
17
|
var _chown = /*#__PURE__*/ _interop_require_default(require("./fs/chown.js"));
|
|
18
18
|
var _utimes = /*#__PURE__*/ _interop_require_default(require("./fs/utimes.js"));
|
|
@@ -24,24 +24,24 @@ function _interop_require_default(obj) {
|
|
|
24
24
|
};
|
|
25
25
|
}
|
|
26
26
|
var MANDATORY_ATTRIBUTES = [
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
'mode',
|
|
28
|
+
'mtime',
|
|
29
|
+
'path',
|
|
30
|
+
'linkpath'
|
|
31
31
|
];
|
|
32
32
|
function LinkEntry(attributes, _type) {
|
|
33
33
|
(0, _validateAttributes.default)(attributes, MANDATORY_ATTRIBUTES);
|
|
34
34
|
Object.assign(this, attributes);
|
|
35
35
|
if (this.basename === undefined) this.basename = _path.default.basename(this.path);
|
|
36
|
-
if (this.type === undefined) this.type =
|
|
36
|
+
if (this.type === undefined) this.type = 'link';
|
|
37
37
|
}
|
|
38
38
|
LinkEntry.prototype.create = function create(dest, options, callback) {
|
|
39
|
-
if (typeof options ===
|
|
39
|
+
if (typeof options === 'function') {
|
|
40
40
|
callback = options;
|
|
41
41
|
options = null;
|
|
42
42
|
}
|
|
43
43
|
var self = this;
|
|
44
|
-
if (typeof callback ===
|
|
44
|
+
if (typeof callback === 'function') {
|
|
45
45
|
options = options || {};
|
|
46
46
|
try {
|
|
47
47
|
var normalizedPath = _path.default.normalize(self.path);
|
|
@@ -51,8 +51,10 @@ LinkEntry.prototype.create = function create(dest, options, callback) {
|
|
|
51
51
|
var queue = new _queuecb.default(1);
|
|
52
52
|
if (options.force) {
|
|
53
53
|
queue.defer(function(callback) {
|
|
54
|
-
(0,
|
|
55
|
-
|
|
54
|
+
(0, _rimraf2.default)(fullPath, {
|
|
55
|
+
disableGlob: true
|
|
56
|
+
}, function(err) {
|
|
57
|
+
err && err.code !== 'ENOENT' ? callback(err) : callback();
|
|
56
58
|
});
|
|
57
59
|
});
|
|
58
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["LinkEntry.mjs"],"sourcesContent":["import path from 'path';\nimport fs from 'graceful-fs';\nimport mkpath from 'mkpath';\nimport Queue from 'queue-cb';\nimport
|
|
1
|
+
{"version":3,"sources":["LinkEntry.mjs"],"sourcesContent":["import path from 'path';\nimport fs from 'graceful-fs';\nimport mkpath from 'mkpath';\nimport Queue from 'queue-cb';\nimport rimraf2 from 'rimraf2';\n\nimport chmod from './fs/chmod.mjs';\nimport chown from './fs/chown.mjs';\nimport utimes from './fs/utimes.mjs';\nimport stripPath from './stripPath.mjs';\nimport validateAttributes from './validateAttributes.mjs';\n\nconst MANDATORY_ATTRIBUTES = ['mode', 'mtime', 'path', 'linkpath'];\n\nexport default function LinkEntry(attributes, _type) {\n validateAttributes(attributes, MANDATORY_ATTRIBUTES);\n Object.assign(this, attributes);\n if (this.basename === undefined) this.basename = path.basename(this.path);\n if (this.type === undefined) this.type = 'link';\n}\n\nLinkEntry.prototype.create = function create(dest, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = null;\n }\n\n const self = this;\n if (typeof callback === 'function') {\n options = options || {};\n try {\n const normalizedPath = path.normalize(self.path);\n const fullPath = path.join(dest, stripPath(normalizedPath, options));\n const normalizedLinkpath = path.normalize(self.linkpath);\n const linkFullPath = path.join(dest, stripPath(normalizedLinkpath, options));\n\n const queue = new Queue(1);\n if (options.force) {\n queue.defer((callback) => {\n rimraf2(fullPath, { disableGlob: true }, (err) => {\n err && err.code !== 'ENOENT' ? callback(err) : callback();\n });\n });\n }\n queue.defer(mkpath.bind(null, path.dirname(fullPath)));\n queue.defer(fs.link.bind(fs, linkFullPath, fullPath));\n queue.defer(chmod.bind(null, fullPath, self, options));\n queue.defer(chown.bind(null, fullPath, self, options));\n queue.defer(utimes.bind(null, fullPath, self, options));\n return queue.await(callback);\n } catch (err) {\n return callback(err);\n }\n }\n\n return new Promise(function createPromise(resolve, reject) {\n self.create(dest, options, function createCallback(err, done) {\n err ? reject(err) : resolve(done);\n });\n });\n};\n\nLinkEntry.prototype.destroy = function destroy() {};\n"],"names":["LinkEntry","MANDATORY_ATTRIBUTES","attributes","_type","validateAttributes","Object","assign","basename","undefined","path","type","prototype","create","dest","options","callback","self","normalizedPath","normalize","fullPath","join","stripPath","normalizedLinkpath","linkpath","linkFullPath","queue","Queue","force","defer","rimraf2","disableGlob","err","code","mkpath","bind","dirname","fs","link","chmod","chown","utimes","await","Promise","createPromise","resolve","reject","createCallback","done","destroy"],"mappings":";;;;+BAcA;;;eAAwBA;;;2DAdP;iEACF;6DACI;8DACD;8DACE;4DAEF;4DACA;6DACC;gEACG;yEACS;;;;;;AAE/B,IAAMC,uBAAuB;IAAC;IAAQ;IAAS;IAAQ;CAAW;AAEnD,SAASD,UAAUE,UAAU,EAAEC,KAAK;IACjDC,IAAAA,2BAAkB,EAACF,YAAYD;IAC/BI,OAAOC,MAAM,CAAC,IAAI,EAAEJ;IACpB,IAAI,IAAI,CAACK,QAAQ,KAAKC,WAAW,IAAI,CAACD,QAAQ,GAAGE,aAAI,CAACF,QAAQ,CAAC,IAAI,CAACE,IAAI;IACxE,IAAI,IAAI,CAACC,IAAI,KAAKF,WAAW,IAAI,CAACE,IAAI,GAAG;AAC3C;AAEAV,UAAUW,SAAS,CAACC,MAAM,GAAG,SAASA,OAAOC,IAAI,EAAEC,OAAO,EAAEC,QAAQ;IAClE,IAAI,OAAOD,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU;IACZ;IAEA,IAAME,OAAO,IAAI;IACjB,IAAI,OAAOD,aAAa,YAAY;QAClCD,UAAUA,WAAW,CAAC;QACtB,IAAI;YACF,IAAMG,iBAAiBR,aAAI,CAACS,SAAS,CAACF,KAAKP,IAAI;YAC/C,IAAMU,WAAWV,aAAI,CAACW,IAAI,CAACP,MAAMQ,IAAAA,kBAAS,EAACJ,gBAAgBH;YAC3D,IAAMQ,qBAAqBb,aAAI,CAACS,SAAS,CAACF,KAAKO,QAAQ;YACvD,IAAMC,eAAef,aAAI,CAACW,IAAI,CAACP,MAAMQ,IAAAA,kBAAS,EAACC,oBAAoBR;YAEnE,IAAMW,QAAQ,IAAIC,gBAAK,CAAC;YACxB,IAAIZ,QAAQa,KAAK,EAAE;gBACjBF,MAAMG,KAAK,CAAC,SAACb;oBACXc,IAAAA,gBAAO,EAACV,UAAU;wBAAEW,aAAa;oBAAK,GAAG,SAACC;wBACxCA,OAAOA,IAAIC,IAAI,KAAK,WAAWjB,SAASgB,OAAOhB;oBACjD;gBACF;YACF;YACAU,MAAMG,KAAK,CAACK,eAAM,CAACC,IAAI,CAAC,MAAMzB,aAAI,CAAC0B,OAAO,CAAChB;YAC3CM,MAAMG,KAAK,CAACQ,mBAAE,CAACC,IAAI,CAACH,IAAI,CAACE,mBAAE,EAAEZ,cAAcL;YAC3CM,MAAMG,KAAK,CAACU,cAAK,CAACJ,IAAI,CAAC,MAAMf,UAAUH,MAAMF;YAC7CW,MAAMG,KAAK,CAACW,cAAK,CAACL,IAAI,CAAC,MAAMf,UAAUH,MAAMF;YAC7CW,MAAMG,KAAK,CAACY,eAAM,CAACN,IAAI,CAAC,MAAMf,UAAUH,MAAMF;YAC9C,OAAOW,MAAMgB,KAAK,CAAC1B;QACrB,EAAE,OAAOgB,KAAK;YACZ,OAAOhB,SAASgB;QAClB;IACF;IAEA,OAAO,IAAIW,QAAQ,SAASC,cAAcC,OAAO,EAAEC,MAAM;QACvD7B,KAAKJ,MAAM,CAACC,MAAMC,SAAS,SAASgC,eAAef,GAAG,EAAEgB,IAAI;YAC1DhB,MAAMc,OAAOd,OAAOa,QAAQG;QAC9B;IACF;AACF;AAEA/C,UAAUW,SAAS,CAACqC,OAAO,GAAG,SAASA,WAAW"}
|
|
@@ -13,7 +13,7 @@ var _gracefulfs = /*#__PURE__*/ _interop_require_default(require("graceful-fs"))
|
|
|
13
13
|
var _isabsolute = /*#__PURE__*/ _interop_require_default(require("is-absolute"));
|
|
14
14
|
var _mkpath = /*#__PURE__*/ _interop_require_default(require("mkpath"));
|
|
15
15
|
var _queuecb = /*#__PURE__*/ _interop_require_default(require("queue-cb"));
|
|
16
|
-
var
|
|
16
|
+
var _rimraf2 = /*#__PURE__*/ _interop_require_default(require("rimraf2"));
|
|
17
17
|
var _chmod = /*#__PURE__*/ _interop_require_default(require("./fs/chmod.js"));
|
|
18
18
|
var _chown = /*#__PURE__*/ _interop_require_default(require("./fs/chown.js"));
|
|
19
19
|
var _lstatReal = /*#__PURE__*/ _interop_require_default(require("./fs/lstatReal.js"));
|
|
@@ -28,30 +28,30 @@ function _interop_require_default(obj) {
|
|
|
28
28
|
function symlinkWin32(linkFullPath, linkpath, fullPath, callback) {
|
|
29
29
|
(0, _lstatReal.default)(linkFullPath, function(err, targetStat) {
|
|
30
30
|
if (err || !targetStat) return callback(err || new Error("Symlink path does not exist".concat(linkFullPath)));
|
|
31
|
-
var type = targetStat.isDirectory() ?
|
|
31
|
+
var type = targetStat.isDirectory() ? 'dir' : 'file';
|
|
32
32
|
_gracefulfs.default.symlink(linkpath, fullPath, type, callback);
|
|
33
33
|
});
|
|
34
34
|
}
|
|
35
|
-
var isWindows = process.platform ===
|
|
35
|
+
var isWindows = process.platform === 'win32';
|
|
36
36
|
var MANDATORY_ATTRIBUTES = [
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
37
|
+
'mode',
|
|
38
|
+
'mtime',
|
|
39
|
+
'path',
|
|
40
|
+
'linkpath'
|
|
41
41
|
];
|
|
42
42
|
function SymbolicLinkEntry(attributes) {
|
|
43
43
|
(0, _validateAttributes.default)(attributes, MANDATORY_ATTRIBUTES);
|
|
44
44
|
Object.assign(this, attributes);
|
|
45
45
|
if (this.basename === undefined) this.basename = _path.default.basename(this.path);
|
|
46
|
-
if (this.type === undefined) this.type =
|
|
46
|
+
if (this.type === undefined) this.type = 'symlink';
|
|
47
47
|
}
|
|
48
48
|
SymbolicLinkEntry.prototype.create = function create(dest, options, callback) {
|
|
49
|
-
if (typeof options ===
|
|
49
|
+
if (typeof options === 'function') {
|
|
50
50
|
callback = options;
|
|
51
51
|
options = null;
|
|
52
52
|
}
|
|
53
53
|
var self = this;
|
|
54
|
-
if (typeof callback ===
|
|
54
|
+
if (typeof callback === 'function') {
|
|
55
55
|
options = options || {};
|
|
56
56
|
try {
|
|
57
57
|
var normalizedPath = _path.default.normalize(self.path);
|
|
@@ -66,8 +66,10 @@ SymbolicLinkEntry.prototype.create = function create(dest, options, callback) {
|
|
|
66
66
|
var queue = new _queuecb.default(1);
|
|
67
67
|
if (options.force) {
|
|
68
68
|
queue.defer(function(callback) {
|
|
69
|
-
(0,
|
|
70
|
-
|
|
69
|
+
(0, _rimraf2.default)(fullPath, {
|
|
70
|
+
disableGlob: true
|
|
71
|
+
}, function(err) {
|
|
72
|
+
err && err.code !== 'ENOENT' ? callback(err) : callback();
|
|
71
73
|
});
|
|
72
74
|
});
|
|
73
75
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["SymbolicLinkEntry.mjs"],"sourcesContent":["import path from 'path';\nimport fs from 'graceful-fs';\nimport isAbsolute from 'is-absolute';\nimport mkpath from 'mkpath';\nimport Queue from 'queue-cb';\nimport
|
|
1
|
+
{"version":3,"sources":["SymbolicLinkEntry.mjs"],"sourcesContent":["import path from 'path';\nimport fs from 'graceful-fs';\nimport isAbsolute from 'is-absolute';\nimport mkpath from 'mkpath';\nimport Queue from 'queue-cb';\nimport rimraf2 from 'rimraf2';\n\nimport chmod from './fs/chmod.mjs';\nimport chown from './fs/chown.mjs';\nimport lstatReal from './fs/lstatReal.mjs';\nimport utimes from './fs/utimes.mjs';\nimport stripPath from './stripPath.mjs';\nimport validateAttributes from './validateAttributes.mjs';\n\nfunction symlinkWin32(linkFullPath, linkpath, fullPath, callback) {\n lstatReal(linkFullPath, (err, targetStat) => {\n if (err || !targetStat) return callback(err || new Error(`Symlink path does not exist${linkFullPath}`));\n const type = targetStat.isDirectory() ? 'dir' : 'file';\n fs.symlink(linkpath, fullPath, type, callback);\n });\n}\nconst isWindows = process.platform === 'win32';\n\nconst MANDATORY_ATTRIBUTES = ['mode', 'mtime', 'path', 'linkpath'];\n\nexport default function SymbolicLinkEntry(attributes) {\n validateAttributes(attributes, MANDATORY_ATTRIBUTES);\n Object.assign(this, attributes);\n if (this.basename === undefined) this.basename = path.basename(this.path);\n if (this.type === undefined) this.type = 'symlink';\n}\n\nSymbolicLinkEntry.prototype.create = function create(dest, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = null;\n }\n\n const self = this;\n if (typeof callback === 'function') {\n options = options || {};\n try {\n const normalizedPath = path.normalize(self.path);\n const fullPath = path.join(dest, stripPath(normalizedPath, options));\n let normalizedLinkpath = path.normalize(self.linkpath);\n let linkFullPath = path.join(dest, stripPath(normalizedLinkpath, options));\n if (!isAbsolute(normalizedLinkpath)) {\n const linkRelativePath = path.join(path.dirname(normalizedPath), self.linkpath);\n linkFullPath = path.join(dest, stripPath(linkRelativePath, options));\n normalizedLinkpath = path.relative(path.dirname(fullPath), linkFullPath);\n }\n\n const queue = new Queue(1);\n if (options.force) {\n queue.defer((callback) => {\n rimraf2(fullPath, { disableGlob: true }, (err) => {\n err && err.code !== 'ENOENT' ? callback(err) : callback();\n });\n });\n }\n queue.defer(mkpath.bind(null, path.dirname(fullPath)));\n if (isWindows) queue.defer(symlinkWin32.bind(null, linkFullPath, normalizedLinkpath, fullPath));\n else queue.defer(fs.symlink.bind(fs, normalizedLinkpath, fullPath));\n queue.defer(chmod.bind(null, fullPath, self, options));\n queue.defer(chown.bind(null, fullPath, self, options));\n queue.defer(utimes.bind(null, fullPath, self, options));\n return queue.await(callback);\n } catch (err) {\n return callback(err);\n }\n }\n\n return new Promise(function createPromise(resolve, reject) {\n self.create(dest, options, function createCallback(err, done) {\n err ? reject(err) : resolve(done);\n });\n });\n};\n\nSymbolicLinkEntry.prototype.destroy = function destroy() {};\n"],"names":["SymbolicLinkEntry","symlinkWin32","linkFullPath","linkpath","fullPath","callback","lstatReal","err","targetStat","Error","type","isDirectory","fs","symlink","isWindows","process","platform","MANDATORY_ATTRIBUTES","attributes","validateAttributes","Object","assign","basename","undefined","path","prototype","create","dest","options","self","normalizedPath","normalize","join","stripPath","normalizedLinkpath","isAbsolute","linkRelativePath","dirname","relative","queue","Queue","force","defer","rimraf2","disableGlob","code","mkpath","bind","chmod","chown","utimes","await","Promise","createPromise","resolve","reject","createCallback","done","destroy"],"mappings":"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"}
|
package/dist/cjs/fs/chmod.js
CHANGED
|
@@ -21,21 +21,21 @@ var FMODE = parseInt(644, 8);
|
|
|
21
21
|
var SMODE = parseInt(755, 8);
|
|
22
22
|
var LMODE = parseInt(644, 8);
|
|
23
23
|
function chmodFn(fullPath, entry, _options, callback) {
|
|
24
|
-
var chmod = entry.type ===
|
|
24
|
+
var chmod = entry.type === 'symlink' ? _gracefulfs.default.lchmod : _gracefulfs.default.chmod;
|
|
25
25
|
if (!chmod || UMASK === null) return callback();
|
|
26
26
|
var mode = entry.mode;
|
|
27
27
|
if (!mode) {
|
|
28
28
|
switch(entry.type){
|
|
29
|
-
case
|
|
29
|
+
case 'directory':
|
|
30
30
|
mode = DMODE;
|
|
31
31
|
break;
|
|
32
|
-
case
|
|
32
|
+
case 'file':
|
|
33
33
|
mode = FMODE;
|
|
34
34
|
break;
|
|
35
|
-
case
|
|
35
|
+
case 'symlink':
|
|
36
36
|
mode = SMODE;
|
|
37
37
|
break;
|
|
38
|
-
case
|
|
38
|
+
case 'link':
|
|
39
39
|
mode = LMODE;
|
|
40
40
|
break;
|
|
41
41
|
}
|
package/dist/cjs/fs/chown.js
CHANGED
|
@@ -16,9 +16,9 @@ function _interop_require_default(obj) {
|
|
|
16
16
|
};
|
|
17
17
|
}
|
|
18
18
|
var UID = process.getuid ? process.getuid() : -1;
|
|
19
|
-
var OWN = process.platform !==
|
|
19
|
+
var OWN = process.platform !== 'win32' && UID === 0;
|
|
20
20
|
function chownFn(fullPath, entry, _options, callback) {
|
|
21
|
-
var chown = entry.type ===
|
|
21
|
+
var chown = entry.type === 'symlink' ? _gracefulfs.default.lchown : _gracefulfs.default.chown;
|
|
22
22
|
if (!chown || !OWN || !entry.uid || !entry.gid) return callback();
|
|
23
23
|
chown(fullPath, entry.uid, entry.gid, callback);
|
|
24
24
|
}
|
package/dist/cjs/polyfills.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
require(
|
|
2
|
+
require('core-js/actual/object/assign');
|
|
3
3
|
/* CJS INTEROP */ if (exports.__esModule && exports.default) { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) exports.default[key] = exports[key]; module.exports = exports.default; }
|
package/dist/esm/FileEntry.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
2
|
import mkpath from 'mkpath';
|
|
3
3
|
import Queue from 'queue-cb';
|
|
4
|
-
import
|
|
4
|
+
import rimraf2 from 'rimraf2';
|
|
5
5
|
import chmod from './fs/chmod.mjs';
|
|
6
6
|
import chown from './fs/chown.mjs';
|
|
7
7
|
import utimes from './fs/utimes.mjs';
|
|
@@ -33,7 +33,9 @@ FileEntry.prototype.create = function create(dest, options, callback) {
|
|
|
33
33
|
const queue = new Queue(1);
|
|
34
34
|
if (options.force) {
|
|
35
35
|
queue.defer((callback)=>{
|
|
36
|
-
|
|
36
|
+
rimraf2(fullPath, {
|
|
37
|
+
disableGlob: true
|
|
38
|
+
}, (err)=>{
|
|
37
39
|
err && err.code !== 'ENOENT' ? callback(err) : callback();
|
|
38
40
|
});
|
|
39
41
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["FileEntry.mjs"],"sourcesContent":["import path from 'path';\nimport mkpath from 'mkpath';\nimport Queue from 'queue-cb';\n\nimport
|
|
1
|
+
{"version":3,"sources":["FileEntry.mjs"],"sourcesContent":["import path from 'path';\nimport mkpath from 'mkpath';\nimport Queue from 'queue-cb';\n\nimport rimraf2 from 'rimraf2';\nimport chmod from './fs/chmod.mjs';\nimport chown from './fs/chown.mjs';\nimport utimes from './fs/utimes.mjs';\nimport stripPath from './stripPath.mjs';\nimport validateAttributes from './validateAttributes.mjs';\n\nconst MANDATORY_ATTRIBUTES = ['mode', 'mtime', 'path'];\n\nexport default function FileEntry(attributes) {\n validateAttributes(attributes, MANDATORY_ATTRIBUTES);\n Object.assign(this, attributes);\n if (this.basename === undefined) this.basename = path.basename(this.path);\n if (this.type === undefined) this.type = 'file';\n if (this._writeFile === undefined) throw new Error('File self missing _writeFile. Please implement this method in your subclass');\n}\n\nFileEntry.prototype.create = function create(dest, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = null;\n }\n\n const self = this;\n if (typeof callback === 'function') {\n options = options || {};\n try {\n const normalizedPath = path.normalize(self.path);\n const fullPath = path.join(dest, stripPath(normalizedPath, options));\n\n const queue = new Queue(1);\n if (options.force) {\n queue.defer((callback) => {\n rimraf2(fullPath, { disableGlob: true }, (err) => {\n err && err.code !== 'ENOENT' ? callback(err) : callback();\n });\n });\n }\n queue.defer(mkpath.bind(null, path.dirname(fullPath)));\n queue.defer(this._writeFile.bind(this, fullPath, options));\n queue.defer(chmod.bind(null, fullPath, self, options));\n queue.defer(chown.bind(null, fullPath, self, options));\n queue.defer(utimes.bind(null, fullPath, self, options));\n return queue.await(callback);\n } catch (err) {\n return callback(err);\n }\n }\n\n return new Promise(function createPromise(resolve, reject) {\n self.create(dest, options, function createCallback(err, done) {\n err ? reject(err) : resolve(done);\n });\n });\n};\n\nFileEntry.prototype.destroy = function destroy() {};\n"],"names":["path","mkpath","Queue","rimraf2","chmod","chown","utimes","stripPath","validateAttributes","MANDATORY_ATTRIBUTES","FileEntry","attributes","Object","assign","basename","undefined","type","_writeFile","Error","prototype","create","dest","options","callback","self","normalizedPath","normalize","fullPath","join","queue","force","defer","disableGlob","err","code","bind","dirname","await","Promise","createPromise","resolve","reject","createCallback","done","destroy"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,OAAOC,YAAY,SAAS;AAC5B,OAAOC,WAAW,WAAW;AAE7B,OAAOC,aAAa,UAAU;AAC9B,OAAOC,WAAW,iBAAiB;AACnC,OAAOC,WAAW,iBAAiB;AACnC,OAAOC,YAAY,kBAAkB;AACrC,OAAOC,eAAe,kBAAkB;AACxC,OAAOC,wBAAwB,2BAA2B;AAE1D,MAAMC,uBAAuB;IAAC;IAAQ;IAAS;CAAO;AAEtD,eAAe,SAASC,UAAUC,UAAU;IAC1CH,mBAAmBG,YAAYF;IAC/BG,OAAOC,MAAM,CAAC,IAAI,EAAEF;IACpB,IAAI,IAAI,CAACG,QAAQ,KAAKC,WAAW,IAAI,CAACD,QAAQ,GAAGd,KAAKc,QAAQ,CAAC,IAAI,CAACd,IAAI;IACxE,IAAI,IAAI,CAACgB,IAAI,KAAKD,WAAW,IAAI,CAACC,IAAI,GAAG;IACzC,IAAI,IAAI,CAACC,UAAU,KAAKF,WAAW,MAAM,IAAIG,MAAM;AACrD;AAEAR,UAAUS,SAAS,CAACC,MAAM,GAAG,SAASA,OAAOC,IAAI,EAAEC,OAAO,EAAEC,QAAQ;IAClE,IAAI,OAAOD,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU;IACZ;IAEA,MAAME,OAAO,IAAI;IACjB,IAAI,OAAOD,aAAa,YAAY;QAClCD,UAAUA,WAAW,CAAC;QACtB,IAAI;YACF,MAAMG,iBAAiBzB,KAAK0B,SAAS,CAACF,KAAKxB,IAAI;YAC/C,MAAM2B,WAAW3B,KAAK4B,IAAI,CAACP,MAAMd,UAAUkB,gBAAgBH;YAE3D,MAAMO,QAAQ,IAAI3B,MAAM;YACxB,IAAIoB,QAAQQ,KAAK,EAAE;gBACjBD,MAAME,KAAK,CAAC,CAACR;oBACXpB,QAAQwB,UAAU;wBAAEK,aAAa;oBAAK,GAAG,CAACC;wBACxCA,OAAOA,IAAIC,IAAI,KAAK,WAAWX,SAASU,OAAOV;oBACjD;gBACF;YACF;YACAM,MAAME,KAAK,CAAC9B,OAAOkC,IAAI,CAAC,MAAMnC,KAAKoC,OAAO,CAACT;YAC3CE,MAAME,KAAK,CAAC,IAAI,CAACd,UAAU,CAACkB,IAAI,CAAC,IAAI,EAAER,UAAUL;YACjDO,MAAME,KAAK,CAAC3B,MAAM+B,IAAI,CAAC,MAAMR,UAAUH,MAAMF;YAC7CO,MAAME,KAAK,CAAC1B,MAAM8B,IAAI,CAAC,MAAMR,UAAUH,MAAMF;YAC7CO,MAAME,KAAK,CAACzB,OAAO6B,IAAI,CAAC,MAAMR,UAAUH,MAAMF;YAC9C,OAAOO,MAAMQ,KAAK,CAACd;QACrB,EAAE,OAAOU,KAAK;YACZ,OAAOV,SAASU;QAClB;IACF;IAEA,OAAO,IAAIK,QAAQ,SAASC,cAAcC,OAAO,EAAEC,MAAM;QACvDjB,KAAKJ,MAAM,CAACC,MAAMC,SAAS,SAASoB,eAAeT,GAAG,EAAEU,IAAI;YAC1DV,MAAMQ,OAAOR,OAAOO,QAAQG;QAC9B;IACF;AACF;AAEAjC,UAAUS,SAAS,CAACyB,OAAO,GAAG,SAASA,WAAW"}
|
package/dist/esm/LinkEntry.mjs
CHANGED
|
@@ -2,7 +2,7 @@ import path from 'path';
|
|
|
2
2
|
import fs from 'graceful-fs';
|
|
3
3
|
import mkpath from 'mkpath';
|
|
4
4
|
import Queue from 'queue-cb';
|
|
5
|
-
import
|
|
5
|
+
import rimraf2 from 'rimraf2';
|
|
6
6
|
import chmod from './fs/chmod.mjs';
|
|
7
7
|
import chown from './fs/chown.mjs';
|
|
8
8
|
import utimes from './fs/utimes.mjs';
|
|
@@ -36,7 +36,9 @@ LinkEntry.prototype.create = function create(dest, options, callback) {
|
|
|
36
36
|
const queue = new Queue(1);
|
|
37
37
|
if (options.force) {
|
|
38
38
|
queue.defer((callback)=>{
|
|
39
|
-
|
|
39
|
+
rimraf2(fullPath, {
|
|
40
|
+
disableGlob: true
|
|
41
|
+
}, (err)=>{
|
|
40
42
|
err && err.code !== 'ENOENT' ? callback(err) : callback();
|
|
41
43
|
});
|
|
42
44
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["LinkEntry.mjs"],"sourcesContent":["import path from 'path';\nimport fs from 'graceful-fs';\nimport mkpath from 'mkpath';\nimport Queue from 'queue-cb';\nimport
|
|
1
|
+
{"version":3,"sources":["LinkEntry.mjs"],"sourcesContent":["import path from 'path';\nimport fs from 'graceful-fs';\nimport mkpath from 'mkpath';\nimport Queue from 'queue-cb';\nimport rimraf2 from 'rimraf2';\n\nimport chmod from './fs/chmod.mjs';\nimport chown from './fs/chown.mjs';\nimport utimes from './fs/utimes.mjs';\nimport stripPath from './stripPath.mjs';\nimport validateAttributes from './validateAttributes.mjs';\n\nconst MANDATORY_ATTRIBUTES = ['mode', 'mtime', 'path', 'linkpath'];\n\nexport default function LinkEntry(attributes, _type) {\n validateAttributes(attributes, MANDATORY_ATTRIBUTES);\n Object.assign(this, attributes);\n if (this.basename === undefined) this.basename = path.basename(this.path);\n if (this.type === undefined) this.type = 'link';\n}\n\nLinkEntry.prototype.create = function create(dest, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = null;\n }\n\n const self = this;\n if (typeof callback === 'function') {\n options = options || {};\n try {\n const normalizedPath = path.normalize(self.path);\n const fullPath = path.join(dest, stripPath(normalizedPath, options));\n const normalizedLinkpath = path.normalize(self.linkpath);\n const linkFullPath = path.join(dest, stripPath(normalizedLinkpath, options));\n\n const queue = new Queue(1);\n if (options.force) {\n queue.defer((callback) => {\n rimraf2(fullPath, { disableGlob: true }, (err) => {\n err && err.code !== 'ENOENT' ? callback(err) : callback();\n });\n });\n }\n queue.defer(mkpath.bind(null, path.dirname(fullPath)));\n queue.defer(fs.link.bind(fs, linkFullPath, fullPath));\n queue.defer(chmod.bind(null, fullPath, self, options));\n queue.defer(chown.bind(null, fullPath, self, options));\n queue.defer(utimes.bind(null, fullPath, self, options));\n return queue.await(callback);\n } catch (err) {\n return callback(err);\n }\n }\n\n return new Promise(function createPromise(resolve, reject) {\n self.create(dest, options, function createCallback(err, done) {\n err ? reject(err) : resolve(done);\n });\n });\n};\n\nLinkEntry.prototype.destroy = function destroy() {};\n"],"names":["path","fs","mkpath","Queue","rimraf2","chmod","chown","utimes","stripPath","validateAttributes","MANDATORY_ATTRIBUTES","LinkEntry","attributes","_type","Object","assign","basename","undefined","type","prototype","create","dest","options","callback","self","normalizedPath","normalize","fullPath","join","normalizedLinkpath","linkpath","linkFullPath","queue","force","defer","disableGlob","err","code","bind","dirname","link","await","Promise","createPromise","resolve","reject","createCallback","done","destroy"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,OAAOC,QAAQ,cAAc;AAC7B,OAAOC,YAAY,SAAS;AAC5B,OAAOC,WAAW,WAAW;AAC7B,OAAOC,aAAa,UAAU;AAE9B,OAAOC,WAAW,iBAAiB;AACnC,OAAOC,WAAW,iBAAiB;AACnC,OAAOC,YAAY,kBAAkB;AACrC,OAAOC,eAAe,kBAAkB;AACxC,OAAOC,wBAAwB,2BAA2B;AAE1D,MAAMC,uBAAuB;IAAC;IAAQ;IAAS;IAAQ;CAAW;AAElE,eAAe,SAASC,UAAUC,UAAU,EAAEC,KAAK;IACjDJ,mBAAmBG,YAAYF;IAC/BI,OAAOC,MAAM,CAAC,IAAI,EAAEH;IACpB,IAAI,IAAI,CAACI,QAAQ,KAAKC,WAAW,IAAI,CAACD,QAAQ,GAAGhB,KAAKgB,QAAQ,CAAC,IAAI,CAAChB,IAAI;IACxE,IAAI,IAAI,CAACkB,IAAI,KAAKD,WAAW,IAAI,CAACC,IAAI,GAAG;AAC3C;AAEAP,UAAUQ,SAAS,CAACC,MAAM,GAAG,SAASA,OAAOC,IAAI,EAAEC,OAAO,EAAEC,QAAQ;IAClE,IAAI,OAAOD,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU;IACZ;IAEA,MAAME,OAAO,IAAI;IACjB,IAAI,OAAOD,aAAa,YAAY;QAClCD,UAAUA,WAAW,CAAC;QACtB,IAAI;YACF,MAAMG,iBAAiBzB,KAAK0B,SAAS,CAACF,KAAKxB,IAAI;YAC/C,MAAM2B,WAAW3B,KAAK4B,IAAI,CAACP,MAAMb,UAAUiB,gBAAgBH;YAC3D,MAAMO,qBAAqB7B,KAAK0B,SAAS,CAACF,KAAKM,QAAQ;YACvD,MAAMC,eAAe/B,KAAK4B,IAAI,CAACP,MAAMb,UAAUqB,oBAAoBP;YAEnE,MAAMU,QAAQ,IAAI7B,MAAM;YACxB,IAAImB,QAAQW,KAAK,EAAE;gBACjBD,MAAME,KAAK,CAAC,CAACX;oBACXnB,QAAQuB,UAAU;wBAAEQ,aAAa;oBAAK,GAAG,CAACC;wBACxCA,OAAOA,IAAIC,IAAI,KAAK,WAAWd,SAASa,OAAOb;oBACjD;gBACF;YACF;YACAS,MAAME,KAAK,CAAChC,OAAOoC,IAAI,CAAC,MAAMtC,KAAKuC,OAAO,CAACZ;YAC3CK,MAAME,KAAK,CAACjC,GAAGuC,IAAI,CAACF,IAAI,CAACrC,IAAI8B,cAAcJ;YAC3CK,MAAME,KAAK,CAAC7B,MAAMiC,IAAI,CAAC,MAAMX,UAAUH,MAAMF;YAC7CU,MAAME,KAAK,CAAC5B,MAAMgC,IAAI,CAAC,MAAMX,UAAUH,MAAMF;YAC7CU,MAAME,KAAK,CAAC3B,OAAO+B,IAAI,CAAC,MAAMX,UAAUH,MAAMF;YAC9C,OAAOU,MAAMS,KAAK,CAAClB;QACrB,EAAE,OAAOa,KAAK;YACZ,OAAOb,SAASa;QAClB;IACF;IAEA,OAAO,IAAIM,QAAQ,SAASC,cAAcC,OAAO,EAAEC,MAAM;QACvDrB,KAAKJ,MAAM,CAACC,MAAMC,SAAS,SAASwB,eAAeV,GAAG,EAAEW,IAAI;YAC1DX,MAAMS,OAAOT,OAAOQ,QAAQG;QAC9B;IACF;AACF;AAEApC,UAAUQ,SAAS,CAAC6B,OAAO,GAAG,SAASA,WAAW"}
|
|
@@ -3,7 +3,7 @@ import fs from 'graceful-fs';
|
|
|
3
3
|
import isAbsolute from 'is-absolute';
|
|
4
4
|
import mkpath from 'mkpath';
|
|
5
5
|
import Queue from 'queue-cb';
|
|
6
|
-
import
|
|
6
|
+
import rimraf2 from 'rimraf2';
|
|
7
7
|
import chmod from './fs/chmod.mjs';
|
|
8
8
|
import chown from './fs/chown.mjs';
|
|
9
9
|
import lstatReal from './fs/lstatReal.mjs';
|
|
@@ -51,7 +51,9 @@ SymbolicLinkEntry.prototype.create = function create(dest, options, callback) {
|
|
|
51
51
|
const queue = new Queue(1);
|
|
52
52
|
if (options.force) {
|
|
53
53
|
queue.defer((callback)=>{
|
|
54
|
-
|
|
54
|
+
rimraf2(fullPath, {
|
|
55
|
+
disableGlob: true
|
|
56
|
+
}, (err)=>{
|
|
55
57
|
err && err.code !== 'ENOENT' ? callback(err) : callback();
|
|
56
58
|
});
|
|
57
59
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["SymbolicLinkEntry.mjs"],"sourcesContent":["import path from 'path';\nimport fs from 'graceful-fs';\nimport isAbsolute from 'is-absolute';\nimport mkpath from 'mkpath';\nimport Queue from 'queue-cb';\nimport
|
|
1
|
+
{"version":3,"sources":["SymbolicLinkEntry.mjs"],"sourcesContent":["import path from 'path';\nimport fs from 'graceful-fs';\nimport isAbsolute from 'is-absolute';\nimport mkpath from 'mkpath';\nimport Queue from 'queue-cb';\nimport rimraf2 from 'rimraf2';\n\nimport chmod from './fs/chmod.mjs';\nimport chown from './fs/chown.mjs';\nimport lstatReal from './fs/lstatReal.mjs';\nimport utimes from './fs/utimes.mjs';\nimport stripPath from './stripPath.mjs';\nimport validateAttributes from './validateAttributes.mjs';\n\nfunction symlinkWin32(linkFullPath, linkpath, fullPath, callback) {\n lstatReal(linkFullPath, (err, targetStat) => {\n if (err || !targetStat) return callback(err || new Error(`Symlink path does not exist${linkFullPath}`));\n const type = targetStat.isDirectory() ? 'dir' : 'file';\n fs.symlink(linkpath, fullPath, type, callback);\n });\n}\nconst isWindows = process.platform === 'win32';\n\nconst MANDATORY_ATTRIBUTES = ['mode', 'mtime', 'path', 'linkpath'];\n\nexport default function SymbolicLinkEntry(attributes) {\n validateAttributes(attributes, MANDATORY_ATTRIBUTES);\n Object.assign(this, attributes);\n if (this.basename === undefined) this.basename = path.basename(this.path);\n if (this.type === undefined) this.type = 'symlink';\n}\n\nSymbolicLinkEntry.prototype.create = function create(dest, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = null;\n }\n\n const self = this;\n if (typeof callback === 'function') {\n options = options || {};\n try {\n const normalizedPath = path.normalize(self.path);\n const fullPath = path.join(dest, stripPath(normalizedPath, options));\n let normalizedLinkpath = path.normalize(self.linkpath);\n let linkFullPath = path.join(dest, stripPath(normalizedLinkpath, options));\n if (!isAbsolute(normalizedLinkpath)) {\n const linkRelativePath = path.join(path.dirname(normalizedPath), self.linkpath);\n linkFullPath = path.join(dest, stripPath(linkRelativePath, options));\n normalizedLinkpath = path.relative(path.dirname(fullPath), linkFullPath);\n }\n\n const queue = new Queue(1);\n if (options.force) {\n queue.defer((callback) => {\n rimraf2(fullPath, { disableGlob: true }, (err) => {\n err && err.code !== 'ENOENT' ? callback(err) : callback();\n });\n });\n }\n queue.defer(mkpath.bind(null, path.dirname(fullPath)));\n if (isWindows) queue.defer(symlinkWin32.bind(null, linkFullPath, normalizedLinkpath, fullPath));\n else queue.defer(fs.symlink.bind(fs, normalizedLinkpath, fullPath));\n queue.defer(chmod.bind(null, fullPath, self, options));\n queue.defer(chown.bind(null, fullPath, self, options));\n queue.defer(utimes.bind(null, fullPath, self, options));\n return queue.await(callback);\n } catch (err) {\n return callback(err);\n }\n }\n\n return new Promise(function createPromise(resolve, reject) {\n self.create(dest, options, function createCallback(err, done) {\n err ? reject(err) : resolve(done);\n });\n });\n};\n\nSymbolicLinkEntry.prototype.destroy = function destroy() {};\n"],"names":["path","fs","isAbsolute","mkpath","Queue","rimraf2","chmod","chown","lstatReal","utimes","stripPath","validateAttributes","symlinkWin32","linkFullPath","linkpath","fullPath","callback","err","targetStat","Error","type","isDirectory","symlink","isWindows","process","platform","MANDATORY_ATTRIBUTES","SymbolicLinkEntry","attributes","Object","assign","basename","undefined","prototype","create","dest","options","self","normalizedPath","normalize","join","normalizedLinkpath","linkRelativePath","dirname","relative","queue","force","defer","disableGlob","code","bind","await","Promise","createPromise","resolve","reject","createCallback","done","destroy"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["stripPath.mjs"],"sourcesContent":["import path from 'path';\nimport compact from 'lodash.compact';\n\nexport default function stripPath(relativePath, options) {\n const strip = options.strip || 0;\n if (!strip) return relativePath;\n const parts = compact(relativePath.split(path.sep));\n if (parts.length < strip) throw new Error(`You cannot strip more levels than there are directories. Strip: ${strip}. Path: ${relativePath}`);\n return parts.slice(strip).join(path.sep);\n}\n"],"names":["path","compact","stripPath","relativePath","options","strip","parts","split","sep","length","Error","slice","join"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,OAAOC,aAAa,iBAAiB;AAErC,eAAe,SAASC,UAAUC,YAAY,EAAEC,OAAO;IACrD,MAAMC,QAAQD,QAAQC,KAAK,IAAI;IAC/B,IAAI,CAACA,OAAO,OAAOF;IACnB,MAAMG,QAAQL,QAAQE,aAAaI,KAAK,CAACP,KAAKQ,GAAG;IACjD,IAAIF,MAAMG,MAAM,GAAGJ,OAAO,MAAM,IAAIK,MAAM,CAAC,gEAAgE,EAAEL,MAAM,QAAQ,EAAEF,
|
|
1
|
+
{"version":3,"sources":["stripPath.mjs"],"sourcesContent":["import path from 'path';\nimport compact from 'lodash.compact';\n\nexport default function stripPath(relativePath, options) {\n const strip = options.strip || 0;\n if (!strip) return relativePath;\n const parts = compact(relativePath.split(path.sep));\n if (parts.length < strip) throw new Error(`You cannot strip more levels than there are directories. Strip: ${strip}. Path: ${relativePath}`);\n return parts.slice(strip).join(path.sep);\n}\n"],"names":["path","compact","stripPath","relativePath","options","strip","parts","split","sep","length","Error","slice","join"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,OAAOC,aAAa,iBAAiB;AAErC,eAAe,SAASC,UAAUC,YAAY,EAAEC,OAAO;IACrD,MAAMC,QAAQD,QAAQC,KAAK,IAAI;IAC/B,IAAI,CAACA,OAAO,OAAOF;IACnB,MAAMG,QAAQL,QAAQE,aAAaI,KAAK,CAACP,KAAKQ,GAAG;IACjD,IAAIF,MAAMG,MAAM,GAAGJ,OAAO,MAAM,IAAIK,MAAM,CAAC,gEAAgE,EAAEL,MAAM,QAAQ,EAAEF,cAAc;IAC3I,OAAOG,MAAMK,KAAK,CAACN,OAAOO,IAAI,CAACZ,KAAKQ,GAAG;AACzC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["validateAttributes.mjs"],"sourcesContent":["export default function validateAttributes(attributes, keys) {\n let key;\n for (let index = 0; index < keys.length; index++) {\n key = keys[index];\n if (attributes[key] === undefined) throw new Error(`Missing attribute ${key}.Attributes ${JSON.stringify(attributes)}`);\n }\n}\n"],"names":["validateAttributes","attributes","keys","key","index","length","undefined","Error","JSON","stringify"],"mappings":"AAAA,eAAe,SAASA,mBAAmBC,UAAU,EAAEC,IAAI;IACzD,IAAIC;IACJ,IAAK,IAAIC,QAAQ,GAAGA,QAAQF,KAAKG,MAAM,EAAED,QAAS;QAChDD,MAAMD,IAAI,CAACE,MAAM;QACjB,IAAIH,UAAU,CAACE,IAAI,KAAKG,WAAW,MAAM,IAAIC,MAAM,CAAC,kBAAkB,EAAEJ,IAAI,YAAY,EAAEK,KAAKC,SAAS,CAACR,
|
|
1
|
+
{"version":3,"sources":["validateAttributes.mjs"],"sourcesContent":["export default function validateAttributes(attributes, keys) {\n let key;\n for (let index = 0; index < keys.length; index++) {\n key = keys[index];\n if (attributes[key] === undefined) throw new Error(`Missing attribute ${key}.Attributes ${JSON.stringify(attributes)}`);\n }\n}\n"],"names":["validateAttributes","attributes","keys","key","index","length","undefined","Error","JSON","stringify"],"mappings":"AAAA,eAAe,SAASA,mBAAmBC,UAAU,EAAEC,IAAI;IACzD,IAAIC;IACJ,IAAK,IAAIC,QAAQ,GAAGA,QAAQF,KAAKG,MAAM,EAAED,QAAS;QAChDD,MAAMD,IAAI,CAACE,MAAM;QACjB,IAAIH,UAAU,CAACE,IAAI,KAAKG,WAAW,MAAM,IAAIC,MAAM,CAAC,kBAAkB,EAAEJ,IAAI,YAAY,EAAEK,KAAKC,SAAS,CAACR,aAAa;IACxH;AACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "extract-base-iterator",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.2",
|
|
4
4
|
"description": "Base iterator for extract iterators like tar-iterator and zip-iterator",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"extract",
|
|
@@ -51,20 +51,20 @@
|
|
|
51
51
|
"lodash.compact": "^3.0.1",
|
|
52
52
|
"mkpath": "^1.0.0",
|
|
53
53
|
"queue-cb": "^1.2.1",
|
|
54
|
-
"
|
|
54
|
+
"rimraf2": "^2.7.1",
|
|
55
55
|
"stack-base-iterator": "^1.1.2"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
58
|
"@biomejs/biome": "^1.9.4",
|
|
59
59
|
"@types/mocha": "^10.0.10",
|
|
60
|
-
"@types/node": "^22.
|
|
60
|
+
"@types/node": "^22.10.1",
|
|
61
61
|
"cr": "^0.1.0",
|
|
62
62
|
"depcheck": "^1.4.7",
|
|
63
63
|
"fs-iterator": "^5.1.0",
|
|
64
64
|
"fs-stats-spys": "^1.0.2",
|
|
65
65
|
"inherits": "^2.0.4",
|
|
66
66
|
"lodash.find": "^4.6.0",
|
|
67
|
-
"ts-dev-stack": "^0.
|
|
67
|
+
"ts-dev-stack": "^0.16.2"
|
|
68
68
|
},
|
|
69
69
|
"engines": {
|
|
70
70
|
"node": ">=0.8"
|