@gjsify/path 0.3.16 → 0.3.17
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/lib/esm/_virtual/_rolldown/runtime.js +1 -18
- package/lib/esm/constants.js +1 -13
- package/lib/esm/index.js +1 -25
- package/lib/esm/posix.js +1 -343
- package/lib/esm/util.js +1 -106
- package/lib/esm/win32.js +1 -573
- package/package.json +4 -4
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1,18 +1 @@
|
|
|
1
|
-
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __exportAll = (all, no_symbols) => {
|
|
4
|
-
let target = {};
|
|
5
|
-
for (var name in all) {
|
|
6
|
-
__defProp(target, name, {
|
|
7
|
-
get: all[name],
|
|
8
|
-
enumerable: true
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
if (!no_symbols) {
|
|
12
|
-
__defProp(target, Symbol.toStringTag, { value: "Module" });
|
|
13
|
-
}
|
|
14
|
-
return target;
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
//#endregion
|
|
18
|
-
export { __exportAll };
|
|
1
|
+
var e=Object.defineProperty,t=(t,n)=>{let r={};for(var i in t)e(r,i,{get:t[i],enumerable:!0});return n||e(r,Symbol.toStringTag,{value:`Module`}),r};export{t as __exportAll};
|
package/lib/esm/constants.js
CHANGED
|
@@ -1,13 +1 @@
|
|
|
1
|
-
|
|
2
|
-
const CHAR_DOT = 46;
|
|
3
|
-
const CHAR_FORWARD_SLASH = 47;
|
|
4
|
-
const CHAR_BACKWARD_SLASH = 92;
|
|
5
|
-
const CHAR_COLON = 58;
|
|
6
|
-
const CHAR_QUESTION_MARK = 63;
|
|
7
|
-
const CHAR_LOWERCASE_A = 97;
|
|
8
|
-
const CHAR_LOWERCASE_Z = 122;
|
|
9
|
-
const CHAR_UPPERCASE_A = 65;
|
|
10
|
-
const CHAR_UPPERCASE_Z = 90;
|
|
11
|
-
|
|
12
|
-
//#endregion
|
|
13
|
-
export { CHAR_BACKWARD_SLASH, CHAR_COLON, CHAR_DOT, CHAR_FORWARD_SLASH, CHAR_LOWERCASE_A, CHAR_LOWERCASE_Z, CHAR_QUESTION_MARK, CHAR_UPPERCASE_A, CHAR_UPPERCASE_Z };
|
|
1
|
+
const e=46,t=47,n=92,r=58,i=63,a=97,o=122,s=65,c=90;export{n as CHAR_BACKWARD_SLASH,r as CHAR_COLON,e as CHAR_DOT,t as CHAR_FORWARD_SLASH,a as CHAR_LOWERCASE_A,o as CHAR_LOWERCASE_Z,i as CHAR_QUESTION_MARK,s as CHAR_UPPERCASE_A,c as CHAR_UPPERCASE_Z};
|
package/lib/esm/index.js
CHANGED
|
@@ -1,25 +1 @@
|
|
|
1
|
-
import { basename as basename
|
|
2
|
-
import { win32_exports } from "./win32.js";
|
|
3
|
-
|
|
4
|
-
//#region src/index.ts
|
|
5
|
-
const { resolve, normalize, isAbsolute, join, relative, toNamespacedPath, dirname, basename, extname, format, parse, sep, delimiter } = posix_exports;
|
|
6
|
-
var src_default = {
|
|
7
|
-
resolve: resolve$1,
|
|
8
|
-
normalize: normalize$1,
|
|
9
|
-
isAbsolute: isAbsolute$1,
|
|
10
|
-
join: join$1,
|
|
11
|
-
relative: relative$1,
|
|
12
|
-
toNamespacedPath: toNamespacedPath$1,
|
|
13
|
-
dirname: dirname$1,
|
|
14
|
-
basename: basename$1,
|
|
15
|
-
extname: extname$1,
|
|
16
|
-
format: format$1,
|
|
17
|
-
parse: parse$1,
|
|
18
|
-
sep: "/",
|
|
19
|
-
delimiter: ":",
|
|
20
|
-
posix: posix_exports,
|
|
21
|
-
win32: win32_exports
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
//#endregion
|
|
25
|
-
export { basename, src_default as default, delimiter, dirname, extname, format, isAbsolute, join, normalize, parse, posix_exports as posix, relative, resolve, sep, toNamespacedPath, win32_exports as win32 };
|
|
1
|
+
import{basename as e,dirname as t,extname as n,format as r,isAbsolute as i,join as a,normalize as o,parse as s,posix_exports as c,relative as l,resolve as u,toNamespacedPath as d}from"./posix.js";import{win32_exports as f}from"./win32.js";const{resolve:p,normalize:m,isAbsolute:h,join:g,relative:_,toNamespacedPath:v,dirname:y,basename:b,extname:x,format:S,parse:C,sep:w,delimiter:T}=c;var E={resolve:u,normalize:o,isAbsolute:i,join:a,relative:l,toNamespacedPath:d,dirname:t,basename:e,extname:n,format:r,parse:s,sep:`/`,delimiter:`:`,posix:c,win32:f};export{b as basename,E as default,T as delimiter,y as dirname,x as extname,S as format,h as isAbsolute,g as join,m as normalize,C as parse,c as posix,_ as relative,p as resolve,w as sep,v as toNamespacedPath,f as win32};
|
package/lib/esm/posix.js
CHANGED
|
@@ -1,343 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { CHAR_DOT, CHAR_FORWARD_SLASH } from "./constants.js";
|
|
3
|
-
import { _format, assertPath, isPosixPathSeparator, normalizeString } from "./util.js";
|
|
4
|
-
|
|
5
|
-
//#region src/posix.ts
|
|
6
|
-
var posix_exports = /* @__PURE__ */ __exportAll({
|
|
7
|
-
basename: () => basename,
|
|
8
|
-
delimiter: () => ":",
|
|
9
|
-
dirname: () => dirname,
|
|
10
|
-
extname: () => extname,
|
|
11
|
-
format: () => format,
|
|
12
|
-
isAbsolute: () => isAbsolute,
|
|
13
|
-
join: () => join,
|
|
14
|
-
normalize: () => normalize,
|
|
15
|
-
parse: () => parse,
|
|
16
|
-
relative: () => relative,
|
|
17
|
-
resolve: () => resolve,
|
|
18
|
-
sep: () => "/",
|
|
19
|
-
toNamespacedPath: () => toNamespacedPath
|
|
20
|
-
});
|
|
21
|
-
const sep = "/";
|
|
22
|
-
const delimiter = ":";
|
|
23
|
-
function posixCwd() {
|
|
24
|
-
if (typeof globalThis.process?.cwd === "function") {
|
|
25
|
-
return globalThis.process.cwd();
|
|
26
|
-
}
|
|
27
|
-
try {
|
|
28
|
-
const GLib = globalThis.imports?.gi?.GLib;
|
|
29
|
-
if (GLib?.get_current_dir) {
|
|
30
|
-
return GLib.get_current_dir();
|
|
31
|
-
}
|
|
32
|
-
} catch {}
|
|
33
|
-
return "/";
|
|
34
|
-
}
|
|
35
|
-
function resolve(...pathSegments) {
|
|
36
|
-
let resolvedPath = "";
|
|
37
|
-
let resolvedAbsolute = false;
|
|
38
|
-
for (let i = pathSegments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
|
|
39
|
-
let path;
|
|
40
|
-
if (i >= 0) {
|
|
41
|
-
path = pathSegments[i];
|
|
42
|
-
assertPath(path);
|
|
43
|
-
if (path.length === 0) continue;
|
|
44
|
-
} else {
|
|
45
|
-
path = posixCwd();
|
|
46
|
-
}
|
|
47
|
-
resolvedPath = `${path}/${resolvedPath}`;
|
|
48
|
-
resolvedAbsolute = path.charCodeAt(0) === 47;
|
|
49
|
-
}
|
|
50
|
-
resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute, "/", isPosixPathSeparator);
|
|
51
|
-
if (resolvedAbsolute) {
|
|
52
|
-
if (resolvedPath.length > 0) {
|
|
53
|
-
return `/${resolvedPath}`;
|
|
54
|
-
}
|
|
55
|
-
return "/";
|
|
56
|
-
} else if (resolvedPath.length > 0) {
|
|
57
|
-
return resolvedPath;
|
|
58
|
-
}
|
|
59
|
-
return ".";
|
|
60
|
-
}
|
|
61
|
-
function normalize(path) {
|
|
62
|
-
assertPath(path);
|
|
63
|
-
if (path.length === 0) return ".";
|
|
64
|
-
const isAbsolutePath = path.charCodeAt(0) === 47;
|
|
65
|
-
const trailingSeparator = path.charCodeAt(path.length - 1) === 47;
|
|
66
|
-
let normalized = normalizeString(path, !isAbsolutePath, "/", isPosixPathSeparator);
|
|
67
|
-
if (normalized.length === 0 && !isAbsolutePath) {
|
|
68
|
-
normalized = ".";
|
|
69
|
-
}
|
|
70
|
-
if (normalized.length > 0 && trailingSeparator) {
|
|
71
|
-
normalized += "/";
|
|
72
|
-
}
|
|
73
|
-
if (isAbsolutePath) {
|
|
74
|
-
return `/${normalized}`;
|
|
75
|
-
}
|
|
76
|
-
return normalized;
|
|
77
|
-
}
|
|
78
|
-
function isAbsolute(path) {
|
|
79
|
-
assertPath(path);
|
|
80
|
-
return path.length > 0 && path.charCodeAt(0) === 47;
|
|
81
|
-
}
|
|
82
|
-
function join(...paths) {
|
|
83
|
-
if (paths.length === 0) return ".";
|
|
84
|
-
let joined;
|
|
85
|
-
for (let i = 0; i < paths.length; ++i) {
|
|
86
|
-
const arg = paths[i];
|
|
87
|
-
assertPath(arg);
|
|
88
|
-
if (arg.length > 0) {
|
|
89
|
-
if (joined === undefined) {
|
|
90
|
-
joined = arg;
|
|
91
|
-
} else {
|
|
92
|
-
joined += `/${arg}`;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
if (joined === undefined) return ".";
|
|
97
|
-
return normalize(joined);
|
|
98
|
-
}
|
|
99
|
-
function relative(from, to) {
|
|
100
|
-
assertPath(from);
|
|
101
|
-
assertPath(to);
|
|
102
|
-
if (from === to) return "";
|
|
103
|
-
from = resolve(from);
|
|
104
|
-
to = resolve(to);
|
|
105
|
-
if (from === to) return "";
|
|
106
|
-
let fromStart = 1;
|
|
107
|
-
const fromEnd = from.length;
|
|
108
|
-
const fromLen = fromEnd - fromStart;
|
|
109
|
-
let toStart = 1;
|
|
110
|
-
const toLen = to.length - toStart;
|
|
111
|
-
const length = fromLen < toLen ? fromLen : toLen;
|
|
112
|
-
let lastCommonSep = -1;
|
|
113
|
-
let i = 0;
|
|
114
|
-
for (; i <= length; ++i) {
|
|
115
|
-
if (i === length) {
|
|
116
|
-
if (toLen > length) {
|
|
117
|
-
if (to.charCodeAt(toStart + i) === 47) {
|
|
118
|
-
return to.slice(toStart + i + 1);
|
|
119
|
-
} else if (i === 0) {
|
|
120
|
-
return to.slice(toStart + i);
|
|
121
|
-
}
|
|
122
|
-
} else if (fromLen > length) {
|
|
123
|
-
if (from.charCodeAt(fromStart + i) === 47) {
|
|
124
|
-
lastCommonSep = i;
|
|
125
|
-
} else if (i === 0) {
|
|
126
|
-
lastCommonSep = 0;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
break;
|
|
130
|
-
}
|
|
131
|
-
const fromCode = from.charCodeAt(fromStart + i);
|
|
132
|
-
const toCode = to.charCodeAt(toStart + i);
|
|
133
|
-
if (fromCode !== toCode) break;
|
|
134
|
-
if (fromCode === 47) lastCommonSep = i;
|
|
135
|
-
}
|
|
136
|
-
let out = "";
|
|
137
|
-
for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {
|
|
138
|
-
if (i === fromEnd || from.charCodeAt(i) === 47) {
|
|
139
|
-
if (out.length === 0) {
|
|
140
|
-
out += "..";
|
|
141
|
-
} else {
|
|
142
|
-
out += "/..";
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
if (out.length > 0) {
|
|
147
|
-
return out + to.slice(toStart + lastCommonSep);
|
|
148
|
-
}
|
|
149
|
-
toStart += lastCommonSep;
|
|
150
|
-
if (to.charCodeAt(toStart) === 47) {
|
|
151
|
-
++toStart;
|
|
152
|
-
}
|
|
153
|
-
return to.slice(toStart);
|
|
154
|
-
}
|
|
155
|
-
function toNamespacedPath(path) {
|
|
156
|
-
return path;
|
|
157
|
-
}
|
|
158
|
-
function dirname(path) {
|
|
159
|
-
assertPath(path);
|
|
160
|
-
if (path.length === 0) return ".";
|
|
161
|
-
const hasRoot = path.charCodeAt(0) === 47;
|
|
162
|
-
let end = -1;
|
|
163
|
-
let matchedSlash = true;
|
|
164
|
-
for (let i = path.length - 1; i >= 1; --i) {
|
|
165
|
-
if (path.charCodeAt(i) === 47) {
|
|
166
|
-
if (!matchedSlash) {
|
|
167
|
-
end = i;
|
|
168
|
-
break;
|
|
169
|
-
}
|
|
170
|
-
} else {
|
|
171
|
-
matchedSlash = false;
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
if (end === -1) return hasRoot ? "/" : ".";
|
|
175
|
-
if (hasRoot && end === 1) return "//";
|
|
176
|
-
return path.slice(0, end);
|
|
177
|
-
}
|
|
178
|
-
function basename(path, ext) {
|
|
179
|
-
if (ext !== undefined) assertPath(ext);
|
|
180
|
-
assertPath(path);
|
|
181
|
-
let start = 0;
|
|
182
|
-
let end = -1;
|
|
183
|
-
let matchedSlash = true;
|
|
184
|
-
if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {
|
|
185
|
-
if (ext.length === path.length && ext === path) return "";
|
|
186
|
-
let extIdx = ext.length - 1;
|
|
187
|
-
let firstNonSlashEnd = -1;
|
|
188
|
-
for (let i = path.length - 1; i >= 0; --i) {
|
|
189
|
-
const code = path.charCodeAt(i);
|
|
190
|
-
if (code === 47) {
|
|
191
|
-
if (!matchedSlash) {
|
|
192
|
-
start = i + 1;
|
|
193
|
-
break;
|
|
194
|
-
}
|
|
195
|
-
} else {
|
|
196
|
-
if (firstNonSlashEnd === -1) {
|
|
197
|
-
matchedSlash = false;
|
|
198
|
-
firstNonSlashEnd = i + 1;
|
|
199
|
-
}
|
|
200
|
-
if (extIdx >= 0) {
|
|
201
|
-
if (code === ext.charCodeAt(extIdx)) {
|
|
202
|
-
if (--extIdx === -1) {
|
|
203
|
-
end = i;
|
|
204
|
-
}
|
|
205
|
-
} else {
|
|
206
|
-
extIdx = -1;
|
|
207
|
-
end = firstNonSlashEnd;
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
if (start === end) end = firstNonSlashEnd;
|
|
213
|
-
else if (end === -1) end = path.length;
|
|
214
|
-
return path.slice(start, end);
|
|
215
|
-
} else {
|
|
216
|
-
for (let i = path.length - 1; i >= 0; --i) {
|
|
217
|
-
if (path.charCodeAt(i) === 47) {
|
|
218
|
-
if (!matchedSlash) {
|
|
219
|
-
start = i + 1;
|
|
220
|
-
break;
|
|
221
|
-
}
|
|
222
|
-
} else if (end === -1) {
|
|
223
|
-
matchedSlash = false;
|
|
224
|
-
end = i + 1;
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
if (end === -1) return "";
|
|
228
|
-
return path.slice(start, end);
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
function extname(path) {
|
|
232
|
-
assertPath(path);
|
|
233
|
-
let startDot = -1;
|
|
234
|
-
let startPart = 0;
|
|
235
|
-
let end = -1;
|
|
236
|
-
let matchedSlash = true;
|
|
237
|
-
let preDotState = 0;
|
|
238
|
-
for (let i = path.length - 1; i >= 0; --i) {
|
|
239
|
-
const code = path.charCodeAt(i);
|
|
240
|
-
if (code === 47) {
|
|
241
|
-
if (!matchedSlash) {
|
|
242
|
-
startPart = i + 1;
|
|
243
|
-
break;
|
|
244
|
-
}
|
|
245
|
-
continue;
|
|
246
|
-
}
|
|
247
|
-
if (end === -1) {
|
|
248
|
-
matchedSlash = false;
|
|
249
|
-
end = i + 1;
|
|
250
|
-
}
|
|
251
|
-
if (code === 46) {
|
|
252
|
-
if (startDot === -1) {
|
|
253
|
-
startDot = i;
|
|
254
|
-
} else if (preDotState !== 1) {
|
|
255
|
-
preDotState = 1;
|
|
256
|
-
}
|
|
257
|
-
} else if (startDot !== -1) {
|
|
258
|
-
preDotState = -1;
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
if (startDot === -1 || end === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {
|
|
262
|
-
return "";
|
|
263
|
-
}
|
|
264
|
-
return path.slice(startDot, end);
|
|
265
|
-
}
|
|
266
|
-
function format(pathObject) {
|
|
267
|
-
if (pathObject === null || typeof pathObject !== "object") {
|
|
268
|
-
throw new TypeError("The \"pathObject\" argument must be of type Object. Received type " + typeof pathObject);
|
|
269
|
-
}
|
|
270
|
-
return _format("/", pathObject);
|
|
271
|
-
}
|
|
272
|
-
function parse(path) {
|
|
273
|
-
assertPath(path);
|
|
274
|
-
const ret = {
|
|
275
|
-
root: "",
|
|
276
|
-
dir: "",
|
|
277
|
-
base: "",
|
|
278
|
-
ext: "",
|
|
279
|
-
name: ""
|
|
280
|
-
};
|
|
281
|
-
if (path.length === 0) return ret;
|
|
282
|
-
const isAbsolutePath = path.charCodeAt(0) === 47;
|
|
283
|
-
let start;
|
|
284
|
-
if (isAbsolutePath) {
|
|
285
|
-
ret.root = "/";
|
|
286
|
-
start = 1;
|
|
287
|
-
} else {
|
|
288
|
-
start = 0;
|
|
289
|
-
}
|
|
290
|
-
let startDot = -1;
|
|
291
|
-
let startPart = 0;
|
|
292
|
-
let end = -1;
|
|
293
|
-
let matchedSlash = true;
|
|
294
|
-
let i = path.length - 1;
|
|
295
|
-
let preDotState = 0;
|
|
296
|
-
for (; i >= start; --i) {
|
|
297
|
-
const code = path.charCodeAt(i);
|
|
298
|
-
if (code === 47) {
|
|
299
|
-
if (!matchedSlash) {
|
|
300
|
-
startPart = i + 1;
|
|
301
|
-
break;
|
|
302
|
-
}
|
|
303
|
-
continue;
|
|
304
|
-
}
|
|
305
|
-
if (end === -1) {
|
|
306
|
-
matchedSlash = false;
|
|
307
|
-
end = i + 1;
|
|
308
|
-
}
|
|
309
|
-
if (code === 46) {
|
|
310
|
-
if (startDot === -1) startDot = i;
|
|
311
|
-
else if (preDotState !== 1) preDotState = 1;
|
|
312
|
-
} else if (startDot !== -1) {
|
|
313
|
-
preDotState = -1;
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
if (startDot === -1 || end === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {
|
|
317
|
-
if (end !== -1) {
|
|
318
|
-
if (startPart === 0 && isAbsolutePath) {
|
|
319
|
-
ret.base = ret.name = path.slice(1, end);
|
|
320
|
-
} else {
|
|
321
|
-
ret.base = ret.name = path.slice(startPart, end);
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
} else {
|
|
325
|
-
if (startPart === 0 && isAbsolutePath) {
|
|
326
|
-
ret.name = path.slice(1, startDot);
|
|
327
|
-
ret.base = path.slice(1, end);
|
|
328
|
-
} else {
|
|
329
|
-
ret.name = path.slice(startPart, startDot);
|
|
330
|
-
ret.base = path.slice(startPart, end);
|
|
331
|
-
}
|
|
332
|
-
ret.ext = path.slice(startDot, end);
|
|
333
|
-
}
|
|
334
|
-
if (startPart > 0) {
|
|
335
|
-
ret.dir = path.slice(0, startPart - 1);
|
|
336
|
-
} else if (isAbsolutePath) {
|
|
337
|
-
ret.dir = "/";
|
|
338
|
-
}
|
|
339
|
-
return ret;
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
//#endregion
|
|
343
|
-
export { basename, delimiter, dirname, extname, format, isAbsolute, join, normalize, parse, posix_exports, relative, resolve, sep, toNamespacedPath };
|
|
1
|
+
import{__exportAll as e}from"./_virtual/_rolldown/runtime.js";import"./constants.js";import{_format as t,assertPath as n,isPosixPathSeparator as r,normalizeString as i}from"./util.js";var a=e({basename:()=>g,delimiter:()=>`:`,dirname:()=>h,extname:()=>_,format:()=>v,isAbsolute:()=>d,join:()=>f,normalize:()=>u,parse:()=>y,relative:()=>p,resolve:()=>l,sep:()=>`/`,toNamespacedPath:()=>m});const o=`/`,s=`:`;function c(){if(typeof globalThis.process?.cwd==`function`)return globalThis.process.cwd();try{let e=globalThis.imports?.gi?.GLib;if(e?.get_current_dir)return e.get_current_dir()}catch{}return`/`}function l(...e){let t=``,a=!1;for(let r=e.length-1;r>=-1&&!a;r--){let i;if(r>=0){if(i=e[r],n(i),i.length===0)continue}else i=c();t=`${i}/${t}`,a=i.charCodeAt(0)===47}return t=i(t,!a,`/`,r),a?t.length>0?`/${t}`:`/`:t.length>0?t:`.`}function u(e){if(n(e),e.length===0)return`.`;let t=e.charCodeAt(0)===47,a=e.charCodeAt(e.length-1)===47,o=i(e,!t,`/`,r);return o.length===0&&!t&&(o=`.`),o.length>0&&a&&(o+=`/`),t?`/${o}`:o}function d(e){return n(e),e.length>0&&e.charCodeAt(0)===47}function f(...e){if(e.length===0)return`.`;let t;for(let r=0;r<e.length;++r){let i=e[r];n(i),i.length>0&&(t===void 0?t=i:t+=`/${i}`)}return t===void 0?`.`:u(t)}function p(e,t){if(n(e),n(t),e===t||(e=l(e),t=l(t),e===t))return``;let r=e.length,i=r-1,a=1,o=t.length-a,s=i<o?i:o,c=-1,u=0;for(;u<=s;++u){if(u===s){if(o>s){if(t.charCodeAt(a+u)===47)return t.slice(a+u+1);if(u===0)return t.slice(a+u)}else i>s&&(e.charCodeAt(1+u)===47?c=u:u===0&&(c=0));break}let n=e.charCodeAt(1+u);if(n!==t.charCodeAt(a+u))break;n===47&&(c=u)}let d=``;for(u=1+c+1;u<=r;++u)(u===r||e.charCodeAt(u)===47)&&(d.length===0?d+=`..`:d+=`/..`);return d.length>0?d+t.slice(a+c):(a+=c,t.charCodeAt(a)===47&&++a,t.slice(a))}function m(e){return e}function h(e){if(n(e),e.length===0)return`.`;let t=e.charCodeAt(0)===47,r=-1,i=!0;for(let t=e.length-1;t>=1;--t)if(e.charCodeAt(t)===47){if(!i){r=t;break}}else i=!1;return r===-1?t?`/`:`.`:t&&r===1?`//`:e.slice(0,r)}function g(e,t){t!==void 0&&n(t),n(e);let r=0,i=-1,a=!0;if(t!==void 0&&t.length>0&&t.length<=e.length){if(t.length===e.length&&t===e)return``;let n=t.length-1,o=-1;for(let s=e.length-1;s>=0;--s){let c=e.charCodeAt(s);if(c===47){if(!a){r=s+1;break}}else o===-1&&(a=!1,o=s+1),n>=0&&(c===t.charCodeAt(n)?--n===-1&&(i=s):(n=-1,i=o))}return r===i?i=o:i===-1&&(i=e.length),e.slice(r,i)}else{for(let t=e.length-1;t>=0;--t)if(e.charCodeAt(t)===47){if(!a){r=t+1;break}}else i===-1&&(a=!1,i=t+1);return i===-1?``:e.slice(r,i)}}function _(e){n(e);let t=-1,r=0,i=-1,a=!0,o=0;for(let n=e.length-1;n>=0;--n){let s=e.charCodeAt(n);if(s===47){if(!a){r=n+1;break}continue}i===-1&&(a=!1,i=n+1),s===46?t===-1?t=n:o!==1&&(o=1):t!==-1&&(o=-1)}return t===-1||i===-1||o===0||o===1&&t===i-1&&t===r+1?``:e.slice(t,i)}function v(e){if(typeof e!=`object`||!e)throw TypeError(`The "pathObject" argument must be of type Object. Received type `+typeof e);return t(`/`,e)}function y(e){n(e);let t={root:``,dir:``,base:``,ext:``,name:``};if(e.length===0)return t;let r=e.charCodeAt(0)===47,i;r?(t.root=`/`,i=1):i=0;let a=-1,o=0,s=-1,c=!0,l=e.length-1,u=0;for(;l>=i;--l){let t=e.charCodeAt(l);if(t===47){if(!c){o=l+1;break}continue}s===-1&&(c=!1,s=l+1),t===46?a===-1?a=l:u!==1&&(u=1):a!==-1&&(u=-1)}return a===-1||s===-1||u===0||u===1&&a===s-1&&a===o+1?s!==-1&&(o===0&&r?t.base=t.name=e.slice(1,s):t.base=t.name=e.slice(o,s)):(o===0&&r?(t.name=e.slice(1,a),t.base=e.slice(1,s)):(t.name=e.slice(o,a),t.base=e.slice(o,s)),t.ext=e.slice(a,s)),o>0?t.dir=e.slice(0,o-1):r&&(t.dir=`/`),t}export{g as basename,s as delimiter,h as dirname,_ as extname,v as format,d as isAbsolute,f as join,u as normalize,y as parse,a as posix_exports,p as relative,l as resolve,o as sep,m as toNamespacedPath};
|
package/lib/esm/util.js
CHANGED
|
@@ -1,106 +1 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
//#region src/util.ts
|
|
4
|
-
function assertPath(path) {
|
|
5
|
-
if (typeof path !== "string") {
|
|
6
|
-
throw new TypeError("The \"path\" argument must be of type string. Received type " + typeof path);
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
function isPosixPathSeparator(code) {
|
|
10
|
-
return code === 47;
|
|
11
|
-
}
|
|
12
|
-
function isPathSeparator(code) {
|
|
13
|
-
return code === 47 || code === 92;
|
|
14
|
-
}
|
|
15
|
-
function isWindowsDeviceRoot(code) {
|
|
16
|
-
return code >= 65 && code <= 90 || code >= 97 && code <= 122;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Resolves `.` and `..` segments in a path string.
|
|
20
|
-
*/
|
|
21
|
-
function normalizeString(path, allowAboveRoot, separator, isPathSep) {
|
|
22
|
-
let res = "";
|
|
23
|
-
let lastSegmentLength = 0;
|
|
24
|
-
let lastSlash = -1;
|
|
25
|
-
let dots = 0;
|
|
26
|
-
let code;
|
|
27
|
-
for (let i = 0; i <= path.length; ++i) {
|
|
28
|
-
if (i < path.length) {
|
|
29
|
-
code = path.charCodeAt(i);
|
|
30
|
-
} else if (isPathSep(code)) {
|
|
31
|
-
break;
|
|
32
|
-
} else {
|
|
33
|
-
code = 47;
|
|
34
|
-
}
|
|
35
|
-
if (isPathSep(code)) {
|
|
36
|
-
if (lastSlash === i - 1 || dots === 1) {} else if (lastSlash !== i - 1 && dots === 2) {
|
|
37
|
-
if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 || res.charCodeAt(res.length - 2) !== 46) {
|
|
38
|
-
if (res.length > 2) {
|
|
39
|
-
const lastSlashIndex = res.lastIndexOf(separator);
|
|
40
|
-
if (lastSlashIndex === -1) {
|
|
41
|
-
res = "";
|
|
42
|
-
lastSegmentLength = 0;
|
|
43
|
-
} else {
|
|
44
|
-
res = res.slice(0, lastSlashIndex);
|
|
45
|
-
lastSegmentLength = res.length - 1 - res.lastIndexOf(separator);
|
|
46
|
-
}
|
|
47
|
-
lastSlash = i;
|
|
48
|
-
dots = 0;
|
|
49
|
-
continue;
|
|
50
|
-
} else if (res.length === 2 || res.length === 1) {
|
|
51
|
-
res = "";
|
|
52
|
-
lastSegmentLength = 0;
|
|
53
|
-
lastSlash = i;
|
|
54
|
-
dots = 0;
|
|
55
|
-
continue;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
if (allowAboveRoot) {
|
|
59
|
-
if (res.length > 0) {
|
|
60
|
-
res += `${separator}..`;
|
|
61
|
-
} else {
|
|
62
|
-
res = "..";
|
|
63
|
-
}
|
|
64
|
-
lastSegmentLength = 2;
|
|
65
|
-
}
|
|
66
|
-
} else {
|
|
67
|
-
if (res.length > 0) {
|
|
68
|
-
res += separator + path.slice(lastSlash + 1, i);
|
|
69
|
-
} else {
|
|
70
|
-
res = path.slice(lastSlash + 1, i);
|
|
71
|
-
}
|
|
72
|
-
lastSegmentLength = i - lastSlash - 1;
|
|
73
|
-
}
|
|
74
|
-
lastSlash = i;
|
|
75
|
-
dots = 0;
|
|
76
|
-
} else if (code === 46 && dots !== -1) {
|
|
77
|
-
++dots;
|
|
78
|
-
} else {
|
|
79
|
-
dots = -1;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
return res;
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Format a parsed path object into a path string.
|
|
86
|
-
*/
|
|
87
|
-
function _format(sep, pathObject) {
|
|
88
|
-
if (pathObject === null || typeof pathObject !== "object") {
|
|
89
|
-
throw new TypeError("The \"pathObject\" argument must be of type Object. Received type " + typeof pathObject);
|
|
90
|
-
}
|
|
91
|
-
const dir = pathObject.dir || pathObject.root;
|
|
92
|
-
const base = pathObject.base || (pathObject.name || "") + formatExt(pathObject.ext);
|
|
93
|
-
if (!dir) {
|
|
94
|
-
return base;
|
|
95
|
-
}
|
|
96
|
-
if (dir === pathObject.root) {
|
|
97
|
-
return dir + base;
|
|
98
|
-
}
|
|
99
|
-
return dir + sep + base;
|
|
100
|
-
}
|
|
101
|
-
function formatExt(ext) {
|
|
102
|
-
return ext ? `${ext[0] === "." ? "" : "."}${ext}` : "";
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
//#endregion
|
|
106
|
-
export { _format, assertPath, isPathSeparator, isPosixPathSeparator, isWindowsDeviceRoot, normalizeString };
|
|
1
|
+
import"./constants.js";function e(e){if(typeof e!=`string`)throw TypeError(`The "path" argument must be of type string. Received type `+typeof e)}function t(e){return e===47}function n(e){return e===47||e===92}function r(e){return e>=65&&e<=90||e>=97&&e<=122}function i(e,t,n,r){let i=``,a=0,o=-1,s=0,c;for(let l=0;l<=e.length;++l){if(l<e.length)c=e.charCodeAt(l);else if(r(c))break;else c=47;if(r(c)){if(!(o===l-1||s===1))if(o!==l-1&&s===2){if(i.length<2||a!==2||i.charCodeAt(i.length-1)!==46||i.charCodeAt(i.length-2)!==46){if(i.length>2){let e=i.lastIndexOf(n);e===-1?(i=``,a=0):(i=i.slice(0,e),a=i.length-1-i.lastIndexOf(n)),o=l,s=0;continue}else if(i.length===2||i.length===1){i=``,a=0,o=l,s=0;continue}}t&&(i.length>0?i+=`${n}..`:i=`..`,a=2)}else i.length>0?i+=n+e.slice(o+1,l):i=e.slice(o+1,l),a=l-o-1;o=l,s=0}else c===46&&s!==-1?++s:s=-1}return i}function a(e,t){if(typeof t!=`object`||!t)throw TypeError(`The "pathObject" argument must be of type Object. Received type `+typeof t);let n=t.dir||t.root,r=t.base||(t.name||``)+o(t.ext);return n?n===t.root?n+r:n+e+r:r}function o(e){return e?`${e[0]===`.`?``:`.`}${e}`:``}export{a as _format,e as assertPath,n as isPathSeparator,t as isPosixPathSeparator,r as isWindowsDeviceRoot,i as normalizeString};
|