@verdaccio/local-storage 14.0.0-next-9.3 → 14.0.0-next-9.5
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/build/_virtual/_rolldown/runtime.js +23 -0
- package/build/dir-utils.d.ts +1 -1
- package/build/dir-utils.js +78 -244
- package/build/dir-utils.js.map +1 -1
- package/build/dir-utils.mjs +80 -0
- package/build/dir-utils.mjs.map +1 -0
- package/build/fs.d.ts +1 -1
- package/build/fs.js +37 -51
- package/build/fs.js.map +1 -1
- package/build/fs.mjs +28 -0
- package/build/fs.mjs.map +1 -0
- package/build/index.d.ts +1 -1
- package/build/index.js +10 -14
- package/build/index.js.map +1 -1
- package/build/index.mjs +7 -0
- package/build/index.mjs.map +1 -0
- package/build/local-database.d.ts +4 -5
- package/build/local-database.js +280 -715
- package/build/local-database.js.map +1 -1
- package/build/local-database.mjs +275 -0
- package/build/local-database.mjs.map +1 -0
- package/build/local-fs.d.ts +3 -3
- package/build/local-fs.js +328 -847
- package/build/local-fs.js.map +1 -1
- package/build/local-fs.mjs +327 -0
- package/build/local-fs.mjs.map +1 -0
- package/build/pkg-utils.d.ts +1 -1
- package/build/pkg-utils.js +27 -61
- package/build/pkg-utils.js.map +1 -1
- package/build/pkg-utils.mjs +27 -0
- package/build/pkg-utils.mjs.map +1 -0
- package/build/utils.d.ts +2 -2
- package/build/utils.js +12 -153
- package/build/utils.js.map +1 -1
- package/build/utils.mjs +11 -0
- package/build/utils.mjs.map +1 -0
- package/package.json +23 -12
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
//#region \0rolldown/runtime.js
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __copyProps = (to, from, except, desc) => {
|
|
9
|
+
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
10
|
+
key = keys[i];
|
|
11
|
+
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
12
|
+
get: ((k) => from[k]).bind(null, key),
|
|
13
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
19
|
+
value: mod,
|
|
20
|
+
enumerable: true
|
|
21
|
+
}) : target, mod));
|
|
22
|
+
//#endregion
|
|
23
|
+
exports.__toESM = __toESM;
|
package/build/dir-utils.d.ts
CHANGED
package/build/dir-utils.js
CHANGED
|
@@ -1,249 +1,83 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
var
|
|
10
|
-
var _globby = _interopRequireDefault(require("globby"));
|
|
11
|
-
var _nodePath = require("node:path");
|
|
12
|
-
var _core = require("@verdaccio/core");
|
|
13
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
14
|
-
function _regeneratorValues(e) { if (null != e) { var t = e["function" == typeof Symbol && Symbol.iterator || "@@iterator"], r = 0; if (t) return t.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) return { next: function next() { return e && r >= e.length && (e = void 0), { value: e && e[r++], done: !e }; } }; } throw new TypeError(_typeof(e) + " is not iterable"); }
|
|
15
|
-
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
|
|
16
|
-
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
17
|
-
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
|
|
18
|
-
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
|
|
19
|
-
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
20
|
-
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
21
|
-
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
22
|
-
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
23
|
-
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
24
|
-
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
25
|
-
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
26
|
-
var debug = (0, _debug["default"])('verdaccio:plugin:local-storage:utils');
|
|
27
|
-
|
|
1
|
+
const require_runtime = require("./_virtual/_rolldown/runtime.js");
|
|
2
|
+
let debug = require("debug");
|
|
3
|
+
debug = require_runtime.__toESM(debug);
|
|
4
|
+
let node_path = require("node:path");
|
|
5
|
+
let _verdaccio_core = require("@verdaccio/core");
|
|
6
|
+
let globby = require("globby");
|
|
7
|
+
globby = require_runtime.__toESM(globby);
|
|
8
|
+
//#region src/dir-utils.ts
|
|
9
|
+
var debug$1 = (0, debug.default)("verdaccio:plugin:local-storage:utils");
|
|
28
10
|
/**
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
function getFolders(
|
|
34
|
-
|
|
11
|
+
* Retrieve a list of absolute paths to all folders in the given storage path
|
|
12
|
+
* @param storagePath the base path of the storage
|
|
13
|
+
* @return a promise that resolves to an array of absolute paths
|
|
14
|
+
*/
|
|
15
|
+
async function getFolders(storagePath, pattern = "*") {
|
|
16
|
+
return await (0, globby.default)(pattern, {
|
|
17
|
+
cwd: storagePath,
|
|
18
|
+
expandDirectories: true,
|
|
19
|
+
onlyDirectories: true,
|
|
20
|
+
onlyFiles: false,
|
|
21
|
+
deep: 10,
|
|
22
|
+
dot: false,
|
|
23
|
+
followSymbolicLinks: true,
|
|
24
|
+
caseSensitiveMatch: true,
|
|
25
|
+
unique: true
|
|
26
|
+
});
|
|
35
27
|
}
|
|
36
28
|
/**
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
function
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
});
|
|
88
|
-
case 1:
|
|
89
|
-
files = _context.v;
|
|
90
|
-
return _context.a(2, files);
|
|
91
|
-
}
|
|
92
|
-
}, _callee);
|
|
93
|
-
}));
|
|
94
|
-
return _getFolders.apply(this, arguments);
|
|
95
|
-
}
|
|
96
|
-
function searchOnStorage(_x2, _x3) {
|
|
97
|
-
return _searchOnStorage.apply(this, arguments);
|
|
98
|
-
}
|
|
99
|
-
function _searchOnStorage() {
|
|
100
|
-
_searchOnStorage = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(storagePath, storages) {
|
|
101
|
-
var matchedStorages, storageFolders, results, basePathFolders, _iterator, _step, _loop2, _i, _storageFolders, store, foldersOnStorage, _iterator2, _step2, _loop, _t, _t2;
|
|
102
|
-
return _regenerator().w(function (_context4) {
|
|
103
|
-
while (1) switch (_context4.p = _context4.n) {
|
|
104
|
-
case 0:
|
|
105
|
-
matchedStorages = Array.from(storages);
|
|
106
|
-
storageFolders = Array.from(storages.keys());
|
|
107
|
-
debug('search on %o', storagePath);
|
|
108
|
-
debug('storage folders %o', matchedStorages.length);
|
|
109
|
-
results = []; // watch base path and ignore storage folders
|
|
110
|
-
_context4.n = 1;
|
|
111
|
-
return getFolders(storagePath, '*');
|
|
112
|
-
case 1:
|
|
113
|
-
basePathFolders = _context4.v.filter(function (storageFolder) {
|
|
114
|
-
return !storageFolders.includes(storageFolder);
|
|
115
|
-
});
|
|
116
|
-
_iterator = _createForOfIteratorHelper(basePathFolders);
|
|
117
|
-
_context4.p = 2;
|
|
118
|
-
_loop2 = /*#__PURE__*/_regenerator().m(function _loop2() {
|
|
119
|
-
var store, scopedPackages, listScoped;
|
|
120
|
-
return _regenerator().w(function (_context3) {
|
|
121
|
-
while (1) switch (_context3.n) {
|
|
122
|
-
case 0:
|
|
123
|
-
store = _step.value;
|
|
124
|
-
if (!_core.validationUtils.isPackageNameScoped(store)) {
|
|
125
|
-
_context3.n = 2;
|
|
126
|
-
break;
|
|
127
|
-
}
|
|
128
|
-
_context3.n = 1;
|
|
129
|
-
return getFolders((0, _nodePath.join)(storagePath, store), '*');
|
|
130
|
-
case 1:
|
|
131
|
-
scopedPackages = _context3.v;
|
|
132
|
-
listScoped = scopedPackages.map(function (scoped) {
|
|
133
|
-
return {
|
|
134
|
-
name: "".concat(store, "/").concat(scoped),
|
|
135
|
-
scoped: store
|
|
136
|
-
};
|
|
137
|
-
});
|
|
138
|
-
results.push.apply(results, _toConsumableArray(listScoped));
|
|
139
|
-
_context3.n = 3;
|
|
140
|
-
break;
|
|
141
|
-
case 2:
|
|
142
|
-
results.push({
|
|
143
|
-
name: store
|
|
144
|
-
});
|
|
145
|
-
case 3:
|
|
146
|
-
return _context3.a(2);
|
|
147
|
-
}
|
|
148
|
-
}, _loop2);
|
|
149
|
-
});
|
|
150
|
-
_iterator.s();
|
|
151
|
-
case 3:
|
|
152
|
-
if ((_step = _iterator.n()).done) {
|
|
153
|
-
_context4.n = 5;
|
|
154
|
-
break;
|
|
155
|
-
}
|
|
156
|
-
return _context4.d(_regeneratorValues(_loop2()), 4);
|
|
157
|
-
case 4:
|
|
158
|
-
_context4.n = 3;
|
|
159
|
-
break;
|
|
160
|
-
case 5:
|
|
161
|
-
_context4.n = 7;
|
|
162
|
-
break;
|
|
163
|
-
case 6:
|
|
164
|
-
_context4.p = 6;
|
|
165
|
-
_t = _context4.v;
|
|
166
|
-
_iterator.e(_t);
|
|
167
|
-
case 7:
|
|
168
|
-
_context4.p = 7;
|
|
169
|
-
_iterator.f();
|
|
170
|
-
return _context4.f(7);
|
|
171
|
-
case 8:
|
|
172
|
-
_i = 0, _storageFolders = storageFolders;
|
|
173
|
-
case 9:
|
|
174
|
-
if (!(_i < _storageFolders.length)) {
|
|
175
|
-
_context4.n = 18;
|
|
176
|
-
break;
|
|
177
|
-
}
|
|
178
|
-
store = _storageFolders[_i];
|
|
179
|
-
_context4.n = 10;
|
|
180
|
-
return getFolders((0, _nodePath.join)(storagePath, store), '*');
|
|
181
|
-
case 10:
|
|
182
|
-
foldersOnStorage = _context4.v;
|
|
183
|
-
_iterator2 = _createForOfIteratorHelper(foldersOnStorage);
|
|
184
|
-
_context4.p = 11;
|
|
185
|
-
_loop = /*#__PURE__*/_regenerator().m(function _loop() {
|
|
186
|
-
var pkgName, scopedPackages, listScoped;
|
|
187
|
-
return _regenerator().w(function (_context2) {
|
|
188
|
-
while (1) switch (_context2.n) {
|
|
189
|
-
case 0:
|
|
190
|
-
pkgName = _step2.value;
|
|
191
|
-
if (!_core.validationUtils.isPackageNameScoped(pkgName)) {
|
|
192
|
-
_context2.n = 2;
|
|
193
|
-
break;
|
|
194
|
-
}
|
|
195
|
-
_context2.n = 1;
|
|
196
|
-
return getFolders((0, _nodePath.join)(storagePath, store, pkgName), '*');
|
|
197
|
-
case 1:
|
|
198
|
-
scopedPackages = _context2.v;
|
|
199
|
-
listScoped = scopedPackages.map(function (scoped) {
|
|
200
|
-
return {
|
|
201
|
-
name: "".concat(pkgName, "/").concat(scoped),
|
|
202
|
-
scoped: pkgName
|
|
203
|
-
};
|
|
204
|
-
});
|
|
205
|
-
results.push.apply(results, _toConsumableArray(listScoped));
|
|
206
|
-
_context2.n = 3;
|
|
207
|
-
break;
|
|
208
|
-
case 2:
|
|
209
|
-
results.push({
|
|
210
|
-
name: pkgName
|
|
211
|
-
});
|
|
212
|
-
case 3:
|
|
213
|
-
return _context2.a(2);
|
|
214
|
-
}
|
|
215
|
-
}, _loop);
|
|
216
|
-
});
|
|
217
|
-
_iterator2.s();
|
|
218
|
-
case 12:
|
|
219
|
-
if ((_step2 = _iterator2.n()).done) {
|
|
220
|
-
_context4.n = 14;
|
|
221
|
-
break;
|
|
222
|
-
}
|
|
223
|
-
return _context4.d(_regeneratorValues(_loop()), 13);
|
|
224
|
-
case 13:
|
|
225
|
-
_context4.n = 12;
|
|
226
|
-
break;
|
|
227
|
-
case 14:
|
|
228
|
-
_context4.n = 16;
|
|
229
|
-
break;
|
|
230
|
-
case 15:
|
|
231
|
-
_context4.p = 15;
|
|
232
|
-
_t2 = _context4.v;
|
|
233
|
-
_iterator2.e(_t2);
|
|
234
|
-
case 16:
|
|
235
|
-
_context4.p = 16;
|
|
236
|
-
_iterator2.f();
|
|
237
|
-
return _context4.f(16);
|
|
238
|
-
case 17:
|
|
239
|
-
_i++;
|
|
240
|
-
_context4.n = 9;
|
|
241
|
-
break;
|
|
242
|
-
case 18:
|
|
243
|
-
return _context4.a(2, results);
|
|
244
|
-
}
|
|
245
|
-
}, _callee2, null, [[11, 15, 16, 17], [2, 6, 7, 8]]);
|
|
246
|
-
}));
|
|
247
|
-
return _searchOnStorage.apply(this, arguments);
|
|
29
|
+
* Search packages on the the storage. The storage could be
|
|
30
|
+
* - storage
|
|
31
|
+
* - pkg1
|
|
32
|
+
* - @company
|
|
33
|
+
* - pkg2 -> @scompany/pkg2
|
|
34
|
+
* - storage1
|
|
35
|
+
* - pkg2
|
|
36
|
+
* - pkg3
|
|
37
|
+
* - storage2
|
|
38
|
+
* - @scope
|
|
39
|
+
* - pkg4 > @scope/pkg4
|
|
40
|
+
* The search return a data structure like:
|
|
41
|
+
* [
|
|
42
|
+
* {
|
|
43
|
+
* name: 'pkg1', // package name could be @scope/pkg1
|
|
44
|
+
* path: absolute/path/package/name
|
|
45
|
+
* }
|
|
46
|
+
* ]
|
|
47
|
+
* @param {string} storagePath is the base path of the storage folder,
|
|
48
|
+
* inside could be packages, storages and @scope packages.
|
|
49
|
+
* @param {Set<string>} storages storages are defined peer package access pattern via `storage` property
|
|
50
|
+
* @param query is the search query from the user via npm search command.
|
|
51
|
+
* and are intended to organize packages in a tree structure.
|
|
52
|
+
* @returns {Promise<searchUtils.SearchItemPkg[]>}
|
|
53
|
+
*/
|
|
54
|
+
async function searchOnStorage(storagePath, storages) {
|
|
55
|
+
const matchedStorages = Array.from(storages);
|
|
56
|
+
const storageFolders = Array.from(storages.keys());
|
|
57
|
+
debug$1("search on %o", storagePath);
|
|
58
|
+
debug$1("storage folders %o", matchedStorages.length);
|
|
59
|
+
const results = [];
|
|
60
|
+
const basePathFolders = (await getFolders(storagePath, "*")).filter((storageFolder) => !storageFolders.includes(storageFolder));
|
|
61
|
+
for (const store of basePathFolders) if (_verdaccio_core.validationUtils.isPackageNameScoped(store)) {
|
|
62
|
+
const listScoped = (await getFolders((0, node_path.join)(storagePath, store), "*")).map((scoped) => ({
|
|
63
|
+
name: `${store}/${scoped}`,
|
|
64
|
+
scoped: store
|
|
65
|
+
}));
|
|
66
|
+
results.push(...listScoped);
|
|
67
|
+
} else results.push({ name: store });
|
|
68
|
+
for (const store of storageFolders) {
|
|
69
|
+
const foldersOnStorage = await getFolders((0, node_path.join)(storagePath, store), "*");
|
|
70
|
+
for (const pkgName of foldersOnStorage) if (_verdaccio_core.validationUtils.isPackageNameScoped(pkgName)) {
|
|
71
|
+
const listScoped = (await getFolders((0, node_path.join)(storagePath, store, pkgName), "*")).map((scoped) => ({
|
|
72
|
+
name: `${pkgName}/${scoped}`,
|
|
73
|
+
scoped: pkgName
|
|
74
|
+
}));
|
|
75
|
+
results.push(...listScoped);
|
|
76
|
+
} else results.push({ name: pkgName });
|
|
77
|
+
}
|
|
78
|
+
return results;
|
|
248
79
|
}
|
|
80
|
+
//#endregion
|
|
81
|
+
exports.searchOnStorage = searchOnStorage;
|
|
82
|
+
|
|
249
83
|
//# sourceMappingURL=dir-utils.js.map
|
package/build/dir-utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dir-utils.js","names":["_debug","_interopRequireDefault","require","_globby","_nodePath","_core","e","__esModule","_regeneratorValues","t","Symbol","iterator","r","call","next","isNaN","length","value","done","TypeError","_typeof","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","Array","from","isArray","_arrayLikeToArray","_createForOfIteratorHelper","_n","F","s","n","f","o","a","u","toString","slice","constructor","name","test","_regenerator","toStringTag","i","c","prototype","Generator","Object","create","_regeneratorDefine2","p","y","G","v","d","bind","l","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","w","m","defineProperty","_regeneratorDefine","_invoke","enumerable","configurable","writable","asyncGeneratorStep","Promise","resolve","then","_asyncToGenerator","arguments","apply","_next","_throw","debug","buildDebug","getFolders","_x","_getFolders","_callee","storagePath","pattern","files","_args","_context","undefined","globby","cwd","expandDirectories","onlyDirectories","onlyFiles","deep","dot","followSymbolicLinks","caseSensitiveMatch","unique","searchOnStorage","_x2","_x3","_searchOnStorage","_callee2","storages","matchedStorages","storageFolders","results","basePathFolders","_iterator","_step","_loop2","_i","_storageFolders","store","foldersOnStorage","_iterator2","_step2","_loop","_t","_t2","_context4","keys","filter","storageFolder","includes","scopedPackages","listScoped","_context3","validationUtils","isPackageNameScoped","join","map","scoped","concat","push","pkgName","_context2"],"sources":["../src/dir-utils.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport globby from 'globby';\nimport { join } from 'node:path';\n\nimport type { searchUtils } from '@verdaccio/core';\nimport { validationUtils } from '@verdaccio/core';\n\nconst debug = buildDebug('verdaccio:plugin:local-storage:utils');\n\n/**\n * Retrieve a list of absolute paths to all folders in the given storage path\n * @param storagePath the base path of the storage\n * @return a promise that resolves to an array of absolute paths\n */\nexport async function getFolders(storagePath: string, pattern = '*'): Promise<string[]> {\n const files = await globby(pattern, {\n // @ts-ignore\n cwd: storagePath,\n expandDirectories: true,\n onlyDirectories: true,\n onlyFiles: false,\n // should not go deeper than the storage path (10 is reasonable for the storage)\n deep: 10,\n dot: false,\n followSymbolicLinks: true,\n caseSensitiveMatch: true,\n unique: true,\n // FIXME: add here list of forbiden patterns\n // don't include scoped folders.\n // ignore: [`@*`],\n });\n return files;\n}\n\n/**\n * Search packages on the the storage. The storage could be\n * - storage\n * - pkg1\n * - @company\n * - pkg2 -> @scompany/pkg2\n * - storage1\n * - pkg2\n * - pkg3\n * - storage2\n * - @scope\n * - pkg4 > @scope/pkg4\n * The search return a data structure like:\n * [\n * {\n * name: 'pkg1', // package name could be @scope/pkg1\n * path: absolute/path/package/name\n * }\n * ]\n * @param {string} storagePath is the base path of the storage folder,\n * inside could be packages, storages and @scope packages.\n * @param {Set<string>} storages storages are defined peer package access pattern via `storage` property\n * @param query is the search query from the user via npm search command.\n * and are intended to organize packages in a tree structure.\n * @returns {Promise<searchUtils.SearchItemPkg[]>}\n */\nexport async function searchOnStorage(\n storagePath: string,\n storages: Map<string, string>\n): Promise<searchUtils.SearchItemPkg[]> {\n const matchedStorages = Array.from(storages);\n const storageFolders = Array.from(storages.keys());\n debug('search on %o', storagePath);\n debug('storage folders %o', matchedStorages.length);\n const results: searchUtils.SearchItemPkg[] = [];\n // watch base path and ignore storage folders\n const basePathFolders = (await getFolders(storagePath, '*')).filter(\n (storageFolder) => !storageFolders.includes(storageFolder)\n );\n\n for (const store of basePathFolders) {\n if (validationUtils.isPackageNameScoped(store)) {\n const scopedPackages = await getFolders(join(storagePath, store), '*');\n const listScoped = scopedPackages.map((scoped) => ({\n name: `${store}/${scoped}`,\n scoped: store,\n }));\n results.push(...listScoped);\n } else {\n results.push({\n name: store,\n });\n }\n }\n\n // iterate each storage folder\n for (const store of storageFolders) {\n const foldersOnStorage = await getFolders(join(storagePath, store), '*');\n for (const pkgName of foldersOnStorage) {\n if (validationUtils.isPackageNameScoped(pkgName)) {\n const scopedPackages = await getFolders(join(storagePath, store, pkgName), '*');\n const listScoped = scopedPackages.map((scoped) => ({\n name: `${pkgName}/${scoped}`,\n scoped: pkgName,\n }));\n results.push(...listScoped);\n } else {\n results.push({\n name: pkgName,\n });\n }\n }\n }\n\n return results;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"dir-utils.js","names":[],"sources":["../src/dir-utils.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport globby from 'globby';\nimport { join } from 'node:path';\n\nimport type { searchUtils } from '@verdaccio/core';\nimport { validationUtils } from '@verdaccio/core';\n\nconst debug = buildDebug('verdaccio:plugin:local-storage:utils');\n\n/**\n * Retrieve a list of absolute paths to all folders in the given storage path\n * @param storagePath the base path of the storage\n * @return a promise that resolves to an array of absolute paths\n */\nexport async function getFolders(storagePath: string, pattern = '*'): Promise<string[]> {\n const files = await globby(pattern, {\n // @ts-ignore\n cwd: storagePath,\n expandDirectories: true,\n onlyDirectories: true,\n onlyFiles: false,\n // should not go deeper than the storage path (10 is reasonable for the storage)\n deep: 10,\n dot: false,\n followSymbolicLinks: true,\n caseSensitiveMatch: true,\n unique: true,\n // FIXME: add here list of forbiden patterns\n // don't include scoped folders.\n // ignore: [`@*`],\n });\n return files;\n}\n\n/**\n * Search packages on the the storage. The storage could be\n * - storage\n * - pkg1\n * - @company\n * - pkg2 -> @scompany/pkg2\n * - storage1\n * - pkg2\n * - pkg3\n * - storage2\n * - @scope\n * - pkg4 > @scope/pkg4\n * The search return a data structure like:\n * [\n * {\n * name: 'pkg1', // package name could be @scope/pkg1\n * path: absolute/path/package/name\n * }\n * ]\n * @param {string} storagePath is the base path of the storage folder,\n * inside could be packages, storages and @scope packages.\n * @param {Set<string>} storages storages are defined peer package access pattern via `storage` property\n * @param query is the search query from the user via npm search command.\n * and are intended to organize packages in a tree structure.\n * @returns {Promise<searchUtils.SearchItemPkg[]>}\n */\nexport async function searchOnStorage(\n storagePath: string,\n storages: Map<string, string>\n): Promise<searchUtils.SearchItemPkg[]> {\n const matchedStorages = Array.from(storages);\n const storageFolders = Array.from(storages.keys());\n debug('search on %o', storagePath);\n debug('storage folders %o', matchedStorages.length);\n const results: searchUtils.SearchItemPkg[] = [];\n // watch base path and ignore storage folders\n const basePathFolders = (await getFolders(storagePath, '*')).filter(\n (storageFolder) => !storageFolders.includes(storageFolder)\n );\n\n for (const store of basePathFolders) {\n if (validationUtils.isPackageNameScoped(store)) {\n const scopedPackages = await getFolders(join(storagePath, store), '*');\n const listScoped = scopedPackages.map((scoped) => ({\n name: `${store}/${scoped}`,\n scoped: store,\n }));\n results.push(...listScoped);\n } else {\n results.push({\n name: store,\n });\n }\n }\n\n // iterate each storage folder\n for (const store of storageFolders) {\n const foldersOnStorage = await getFolders(join(storagePath, store), '*');\n for (const pkgName of foldersOnStorage) {\n if (validationUtils.isPackageNameScoped(pkgName)) {\n const scopedPackages = await getFolders(join(storagePath, store, pkgName), '*');\n const listScoped = scopedPackages.map((scoped) => ({\n name: `${pkgName}/${scoped}`,\n scoped: pkgName,\n }));\n results.push(...listScoped);\n } else {\n results.push({\n name: pkgName,\n });\n }\n }\n }\n\n return results;\n}\n"],"mappings":";;;;;;;;AAOA,IAAM,WAAA,GAAA,MAAA,SAAmB,uCAAuC;;;;;;AAOhE,eAAsB,WAAW,aAAqB,UAAU,KAAwB;AAiBtF,QAhBc,OAAA,GAAA,OAAA,SAAa,SAAS;EAElC,KAAK;EACL,mBAAmB;EACnB,iBAAiB;EACjB,WAAW;EAEX,MAAM;EACN,KAAK;EACL,qBAAqB;EACrB,oBAAoB;EACpB,QAAQ;EAIT,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BJ,eAAsB,gBACpB,aACA,UACsC;CACtC,MAAM,kBAAkB,MAAM,KAAK,SAAS;CAC5C,MAAM,iBAAiB,MAAM,KAAK,SAAS,MAAM,CAAC;AAClD,SAAM,gBAAgB,YAAY;AAClC,SAAM,sBAAsB,gBAAgB,OAAO;CACnD,MAAM,UAAuC,EAAE;CAE/C,MAAM,mBAAmB,MAAM,WAAW,aAAa,IAAI,EAAE,QAC1D,kBAAkB,CAAC,eAAe,SAAS,cAAc,CAC3D;AAED,MAAK,MAAM,SAAS,gBAClB,KAAI,gBAAA,gBAAgB,oBAAoB,MAAM,EAAE;EAE9C,MAAM,cADiB,MAAM,YAAA,GAAA,UAAA,MAAgB,aAAa,MAAM,EAAE,IAAI,EACpC,KAAK,YAAY;GACjD,MAAM,GAAG,MAAM,GAAG;GAClB,QAAQ;GACT,EAAE;AACH,UAAQ,KAAK,GAAG,WAAW;OAE3B,SAAQ,KAAK,EACX,MAAM,OACP,CAAC;AAKN,MAAK,MAAM,SAAS,gBAAgB;EAClC,MAAM,mBAAmB,MAAM,YAAA,GAAA,UAAA,MAAgB,aAAa,MAAM,EAAE,IAAI;AACxE,OAAK,MAAM,WAAW,iBACpB,KAAI,gBAAA,gBAAgB,oBAAoB,QAAQ,EAAE;GAEhD,MAAM,cADiB,MAAM,YAAA,GAAA,UAAA,MAAgB,aAAa,OAAO,QAAQ,EAAE,IAAI,EAC7C,KAAK,YAAY;IACjD,MAAM,GAAG,QAAQ,GAAG;IACpB,QAAQ;IACT,EAAE;AACH,WAAQ,KAAK,GAAG,WAAW;QAE3B,SAAQ,KAAK,EACX,MAAM,SACP,CAAC;;AAKR,QAAO"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import buildDebug from "debug";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { validationUtils } from "@verdaccio/core";
|
|
4
|
+
import globby from "globby";
|
|
5
|
+
//#region src/dir-utils.ts
|
|
6
|
+
var debug = buildDebug("verdaccio:plugin:local-storage:utils");
|
|
7
|
+
/**
|
|
8
|
+
* Retrieve a list of absolute paths to all folders in the given storage path
|
|
9
|
+
* @param storagePath the base path of the storage
|
|
10
|
+
* @return a promise that resolves to an array of absolute paths
|
|
11
|
+
*/
|
|
12
|
+
async function getFolders(storagePath, pattern = "*") {
|
|
13
|
+
return await globby(pattern, {
|
|
14
|
+
cwd: storagePath,
|
|
15
|
+
expandDirectories: true,
|
|
16
|
+
onlyDirectories: true,
|
|
17
|
+
onlyFiles: false,
|
|
18
|
+
deep: 10,
|
|
19
|
+
dot: false,
|
|
20
|
+
followSymbolicLinks: true,
|
|
21
|
+
caseSensitiveMatch: true,
|
|
22
|
+
unique: true
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Search packages on the the storage. The storage could be
|
|
27
|
+
* - storage
|
|
28
|
+
* - pkg1
|
|
29
|
+
* - @company
|
|
30
|
+
* - pkg2 -> @scompany/pkg2
|
|
31
|
+
* - storage1
|
|
32
|
+
* - pkg2
|
|
33
|
+
* - pkg3
|
|
34
|
+
* - storage2
|
|
35
|
+
* - @scope
|
|
36
|
+
* - pkg4 > @scope/pkg4
|
|
37
|
+
* The search return a data structure like:
|
|
38
|
+
* [
|
|
39
|
+
* {
|
|
40
|
+
* name: 'pkg1', // package name could be @scope/pkg1
|
|
41
|
+
* path: absolute/path/package/name
|
|
42
|
+
* }
|
|
43
|
+
* ]
|
|
44
|
+
* @param {string} storagePath is the base path of the storage folder,
|
|
45
|
+
* inside could be packages, storages and @scope packages.
|
|
46
|
+
* @param {Set<string>} storages storages are defined peer package access pattern via `storage` property
|
|
47
|
+
* @param query is the search query from the user via npm search command.
|
|
48
|
+
* and are intended to organize packages in a tree structure.
|
|
49
|
+
* @returns {Promise<searchUtils.SearchItemPkg[]>}
|
|
50
|
+
*/
|
|
51
|
+
async function searchOnStorage(storagePath, storages) {
|
|
52
|
+
const matchedStorages = Array.from(storages);
|
|
53
|
+
const storageFolders = Array.from(storages.keys());
|
|
54
|
+
debug("search on %o", storagePath);
|
|
55
|
+
debug("storage folders %o", matchedStorages.length);
|
|
56
|
+
const results = [];
|
|
57
|
+
const basePathFolders = (await getFolders(storagePath, "*")).filter((storageFolder) => !storageFolders.includes(storageFolder));
|
|
58
|
+
for (const store of basePathFolders) if (validationUtils.isPackageNameScoped(store)) {
|
|
59
|
+
const listScoped = (await getFolders(join(storagePath, store), "*")).map((scoped) => ({
|
|
60
|
+
name: `${store}/${scoped}`,
|
|
61
|
+
scoped: store
|
|
62
|
+
}));
|
|
63
|
+
results.push(...listScoped);
|
|
64
|
+
} else results.push({ name: store });
|
|
65
|
+
for (const store of storageFolders) {
|
|
66
|
+
const foldersOnStorage = await getFolders(join(storagePath, store), "*");
|
|
67
|
+
for (const pkgName of foldersOnStorage) if (validationUtils.isPackageNameScoped(pkgName)) {
|
|
68
|
+
const listScoped = (await getFolders(join(storagePath, store, pkgName), "*")).map((scoped) => ({
|
|
69
|
+
name: `${pkgName}/${scoped}`,
|
|
70
|
+
scoped: pkgName
|
|
71
|
+
}));
|
|
72
|
+
results.push(...listScoped);
|
|
73
|
+
} else results.push({ name: pkgName });
|
|
74
|
+
}
|
|
75
|
+
return results;
|
|
76
|
+
}
|
|
77
|
+
//#endregion
|
|
78
|
+
export { searchOnStorage };
|
|
79
|
+
|
|
80
|
+
//# sourceMappingURL=dir-utils.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dir-utils.mjs","names":[],"sources":["../src/dir-utils.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport globby from 'globby';\nimport { join } from 'node:path';\n\nimport type { searchUtils } from '@verdaccio/core';\nimport { validationUtils } from '@verdaccio/core';\n\nconst debug = buildDebug('verdaccio:plugin:local-storage:utils');\n\n/**\n * Retrieve a list of absolute paths to all folders in the given storage path\n * @param storagePath the base path of the storage\n * @return a promise that resolves to an array of absolute paths\n */\nexport async function getFolders(storagePath: string, pattern = '*'): Promise<string[]> {\n const files = await globby(pattern, {\n // @ts-ignore\n cwd: storagePath,\n expandDirectories: true,\n onlyDirectories: true,\n onlyFiles: false,\n // should not go deeper than the storage path (10 is reasonable for the storage)\n deep: 10,\n dot: false,\n followSymbolicLinks: true,\n caseSensitiveMatch: true,\n unique: true,\n // FIXME: add here list of forbiden patterns\n // don't include scoped folders.\n // ignore: [`@*`],\n });\n return files;\n}\n\n/**\n * Search packages on the the storage. The storage could be\n * - storage\n * - pkg1\n * - @company\n * - pkg2 -> @scompany/pkg2\n * - storage1\n * - pkg2\n * - pkg3\n * - storage2\n * - @scope\n * - pkg4 > @scope/pkg4\n * The search return a data structure like:\n * [\n * {\n * name: 'pkg1', // package name could be @scope/pkg1\n * path: absolute/path/package/name\n * }\n * ]\n * @param {string} storagePath is the base path of the storage folder,\n * inside could be packages, storages and @scope packages.\n * @param {Set<string>} storages storages are defined peer package access pattern via `storage` property\n * @param query is the search query from the user via npm search command.\n * and are intended to organize packages in a tree structure.\n * @returns {Promise<searchUtils.SearchItemPkg[]>}\n */\nexport async function searchOnStorage(\n storagePath: string,\n storages: Map<string, string>\n): Promise<searchUtils.SearchItemPkg[]> {\n const matchedStorages = Array.from(storages);\n const storageFolders = Array.from(storages.keys());\n debug('search on %o', storagePath);\n debug('storage folders %o', matchedStorages.length);\n const results: searchUtils.SearchItemPkg[] = [];\n // watch base path and ignore storage folders\n const basePathFolders = (await getFolders(storagePath, '*')).filter(\n (storageFolder) => !storageFolders.includes(storageFolder)\n );\n\n for (const store of basePathFolders) {\n if (validationUtils.isPackageNameScoped(store)) {\n const scopedPackages = await getFolders(join(storagePath, store), '*');\n const listScoped = scopedPackages.map((scoped) => ({\n name: `${store}/${scoped}`,\n scoped: store,\n }));\n results.push(...listScoped);\n } else {\n results.push({\n name: store,\n });\n }\n }\n\n // iterate each storage folder\n for (const store of storageFolders) {\n const foldersOnStorage = await getFolders(join(storagePath, store), '*');\n for (const pkgName of foldersOnStorage) {\n if (validationUtils.isPackageNameScoped(pkgName)) {\n const scopedPackages = await getFolders(join(storagePath, store, pkgName), '*');\n const listScoped = scopedPackages.map((scoped) => ({\n name: `${pkgName}/${scoped}`,\n scoped: pkgName,\n }));\n results.push(...listScoped);\n } else {\n results.push({\n name: pkgName,\n });\n }\n }\n }\n\n return results;\n}\n"],"mappings":";;;;;AAOA,IAAM,QAAQ,WAAW,uCAAuC;;;;;;AAOhE,eAAsB,WAAW,aAAqB,UAAU,KAAwB;AAiBtF,QAhBc,MAAM,OAAO,SAAS;EAElC,KAAK;EACL,mBAAmB;EACnB,iBAAiB;EACjB,WAAW;EAEX,MAAM;EACN,KAAK;EACL,qBAAqB;EACrB,oBAAoB;EACpB,QAAQ;EAIT,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BJ,eAAsB,gBACpB,aACA,UACsC;CACtC,MAAM,kBAAkB,MAAM,KAAK,SAAS;CAC5C,MAAM,iBAAiB,MAAM,KAAK,SAAS,MAAM,CAAC;AAClD,OAAM,gBAAgB,YAAY;AAClC,OAAM,sBAAsB,gBAAgB,OAAO;CACnD,MAAM,UAAuC,EAAE;CAE/C,MAAM,mBAAmB,MAAM,WAAW,aAAa,IAAI,EAAE,QAC1D,kBAAkB,CAAC,eAAe,SAAS,cAAc,CAC3D;AAED,MAAK,MAAM,SAAS,gBAClB,KAAI,gBAAgB,oBAAoB,MAAM,EAAE;EAE9C,MAAM,cADiB,MAAM,WAAW,KAAK,aAAa,MAAM,EAAE,IAAI,EACpC,KAAK,YAAY;GACjD,MAAM,GAAG,MAAM,GAAG;GAClB,QAAQ;GACT,EAAE;AACH,UAAQ,KAAK,GAAG,WAAW;OAE3B,SAAQ,KAAK,EACX,MAAM,OACP,CAAC;AAKN,MAAK,MAAM,SAAS,gBAAgB;EAClC,MAAM,mBAAmB,MAAM,WAAW,KAAK,aAAa,MAAM,EAAE,IAAI;AACxE,OAAK,MAAM,WAAW,iBACpB,KAAI,gBAAgB,oBAAoB,QAAQ,EAAE;GAEhD,MAAM,cADiB,MAAM,WAAW,KAAK,aAAa,OAAO,QAAQ,EAAE,IAAI,EAC7C,KAAK,YAAY;IACjD,MAAM,GAAG,QAAQ,GAAG;IACpB,QAAQ;IACT,EAAE;AACH,WAAQ,KAAK,GAAG,WAAW;QAE3B,SAAQ,KAAK,EACX,MAAM,SACP,CAAC;;AAKR,QAAO"}
|
package/build/fs.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import fsCallback from 'node:fs';
|
|
1
|
+
import { default as fsCallback } from 'node:fs';
|
|
2
2
|
declare const mkdirPromise: typeof fsCallback.promises.mkdir;
|
|
3
3
|
declare const accessPromise: typeof fsCallback.promises.access;
|
|
4
4
|
declare const writeFilePromise: typeof fsCallback.promises.writeFile;
|
package/build/fs.js
CHANGED
|
@@ -1,54 +1,40 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
var
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
var accessPromise = exports.accessPromise = fsP.access;
|
|
21
|
-
var writeFilePromise = exports.writeFilePromise = fsP.writeFile;
|
|
22
|
-
var readdirPromise = exports.readdirPromise = fsP.readdir;
|
|
23
|
-
var statPromise = exports.statPromise = fsP.stat;
|
|
24
|
-
var unlinkPromise = exports.unlinkPromise = fsP.unlink;
|
|
25
|
-
var rmdirPromise = exports.rmdirPromise = fsP.rmdir;
|
|
26
|
-
var renamePromise = exports.renamePromise = fsP.rename;
|
|
27
|
-
var openPromise = exports.openPromise = fsP.open;
|
|
28
|
-
var readFilePromise = exports.readFilePromise = /*#__PURE__*/function () {
|
|
29
|
-
var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(path) {
|
|
30
|
-
return _regenerator().w(function (_context) {
|
|
31
|
-
while (1) switch (_context.n) {
|
|
32
|
-
case 0:
|
|
33
|
-
_context.n = 1;
|
|
34
|
-
return readFile(path, 'utf8');
|
|
35
|
-
case 1:
|
|
36
|
-
return _context.a(2, _context.v);
|
|
37
|
-
}
|
|
38
|
-
}, _callee);
|
|
39
|
-
}));
|
|
40
|
-
return function readFilePromise(_x) {
|
|
41
|
-
return _ref.apply(this, arguments);
|
|
42
|
-
};
|
|
43
|
-
}();
|
|
1
|
+
const require_runtime = require("./_virtual/_rolldown/runtime.js");
|
|
2
|
+
let node_fs = require("node:fs");
|
|
3
|
+
node_fs = require_runtime.__toESM(node_fs);
|
|
4
|
+
let node_fs_promises = require("node:fs/promises");
|
|
5
|
+
node_fs_promises = require_runtime.__toESM(node_fs_promises);
|
|
6
|
+
//#region src/fs.ts
|
|
7
|
+
var readFile = node_fs_promises.readFile;
|
|
8
|
+
var mkdirPromise = node_fs_promises.mkdir;
|
|
9
|
+
var accessPromise = node_fs_promises.access;
|
|
10
|
+
var writeFilePromise = node_fs_promises.writeFile;
|
|
11
|
+
node_fs_promises.readdir;
|
|
12
|
+
var statPromise = node_fs_promises.stat;
|
|
13
|
+
var unlinkPromise = node_fs_promises.unlink;
|
|
14
|
+
var rmdirPromise = node_fs_promises.rmdir;
|
|
15
|
+
var renamePromise = node_fs_promises.rename;
|
|
16
|
+
var openPromise = node_fs_promises.open;
|
|
17
|
+
var readFilePromise = async (path) => {
|
|
18
|
+
return await readFile(path, "utf8");
|
|
19
|
+
};
|
|
44
20
|
function fstatPromise(fd) {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
});
|
|
52
|
-
});
|
|
21
|
+
return new Promise((resolve, reject) => {
|
|
22
|
+
node_fs.default.fstat(fd, function(err, stats) {
|
|
23
|
+
if (err) return reject(err);
|
|
24
|
+
return resolve(stats);
|
|
25
|
+
});
|
|
26
|
+
});
|
|
53
27
|
}
|
|
28
|
+
//#endregion
|
|
29
|
+
exports.accessPromise = accessPromise;
|
|
30
|
+
exports.fstatPromise = fstatPromise;
|
|
31
|
+
exports.mkdirPromise = mkdirPromise;
|
|
32
|
+
exports.openPromise = openPromise;
|
|
33
|
+
exports.readFilePromise = readFilePromise;
|
|
34
|
+
exports.renamePromise = renamePromise;
|
|
35
|
+
exports.rmdirPromise = rmdirPromise;
|
|
36
|
+
exports.statPromise = statPromise;
|
|
37
|
+
exports.unlinkPromise = unlinkPromise;
|
|
38
|
+
exports.writeFilePromise = writeFilePromise;
|
|
39
|
+
|
|
54
40
|
//# sourceMappingURL=fs.js.map
|