@romanilyin/canonicalpath-standalone 2026.5.18-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/LICENSE.md +331 -0
- package/LICENSE.ru.md +331 -0
- package/NOTICE.md +45 -0
- package/README.md +21 -0
- package/dist/canonicalpath.d.ts +46 -0
- package/dist/canonicalpath.d.ts.map +1 -0
- package/dist/canonicalpath.js +417 -0
- package/dist/canonicalpath.js.map +1 -0
- package/package.json +42 -0
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
export class CanonicalPathError extends Error {
|
|
2
|
+
code;
|
|
3
|
+
constructor(code, message) {
|
|
4
|
+
super(message);
|
|
5
|
+
this.name = "CanonicalPathError";
|
|
6
|
+
this.code = code;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export function errorCode(error) {
|
|
10
|
+
if (error instanceof CanonicalPathError)
|
|
11
|
+
return error.code;
|
|
12
|
+
return "ERR_INVALID_PATH";
|
|
13
|
+
}
|
|
14
|
+
export function normalize(raw, options = {}) {
|
|
15
|
+
if (options.trimOuterWhitespace)
|
|
16
|
+
raw = raw.trim();
|
|
17
|
+
if (raw === "")
|
|
18
|
+
throw pathError("ERR_EMPTY_PATH", "path is empty");
|
|
19
|
+
if (raw.includes("\0"))
|
|
20
|
+
throw pathError("ERR_NUL_BYTE", "path contains NUL");
|
|
21
|
+
let value = raw;
|
|
22
|
+
if (hasUriScheme(value) || options.sourceHost === "vscode-file-uri")
|
|
23
|
+
value = parseFileUri(value, options);
|
|
24
|
+
if (!options.windows?.preserveExtendedLength)
|
|
25
|
+
value = unwrapWindowsExtendedPrefix(value);
|
|
26
|
+
value = value.replaceAll("\\", "/");
|
|
27
|
+
if (options.targetProfile !== "posix")
|
|
28
|
+
value = mapWSLDrive(value, options.wsl) ?? value;
|
|
29
|
+
if (isUriWindowsDrivePath(value))
|
|
30
|
+
value = value.slice(1);
|
|
31
|
+
if (isDriveRelative(value))
|
|
32
|
+
throw pathError("ERR_DRIVE_RELATIVE_PATH", "Windows drive-relative paths are not canonical");
|
|
33
|
+
if (hasDriveRoot(value))
|
|
34
|
+
value = `${value[0]?.toLowerCase()}${value.slice(1)}`;
|
|
35
|
+
if (options.windows?.rejectADS && hasWindowsADS(value))
|
|
36
|
+
throw pathError("ERR_ALTERNATE_DATA_STREAM", "Windows alternate data stream is not allowed");
|
|
37
|
+
if (options.windows?.rejectDeviceNames && hasReservedDeviceName(value))
|
|
38
|
+
throw pathError("ERR_RESERVED_DEVICE_NAME", "Windows reserved device name is not allowed");
|
|
39
|
+
const cleaned = cleanCanonical(value);
|
|
40
|
+
validateTargetProfile(cleaned, options.targetProfile);
|
|
41
|
+
return cleaned;
|
|
42
|
+
}
|
|
43
|
+
export function relative(root, target) {
|
|
44
|
+
const rootParts = canonicalParts(root);
|
|
45
|
+
const targetParts = canonicalParts(target);
|
|
46
|
+
if (rootParts.prefix !== targetParts.prefix || targetParts.parts.length < rootParts.parts.length) {
|
|
47
|
+
throw pathError("ERR_OUTSIDE_ROOT", "target is outside root");
|
|
48
|
+
}
|
|
49
|
+
for (let index = 0; index < rootParts.parts.length; index += 1) {
|
|
50
|
+
if (targetParts.parts[index] !== rootParts.parts[index])
|
|
51
|
+
throw pathError("ERR_OUTSIDE_ROOT", "target is outside root");
|
|
52
|
+
}
|
|
53
|
+
if (targetParts.parts.length === rootParts.parts.length)
|
|
54
|
+
return ".";
|
|
55
|
+
return targetParts.parts.slice(rootParts.parts.length).join("/");
|
|
56
|
+
}
|
|
57
|
+
export function join(root, rel) {
|
|
58
|
+
const cleanRelative = normalizeRelative(rel);
|
|
59
|
+
if (root.includes("\0"))
|
|
60
|
+
throw pathError("ERR_NUL_BYTE", "root contains NUL");
|
|
61
|
+
if (cleanRelative === ".")
|
|
62
|
+
return root;
|
|
63
|
+
if (root === "/" || root.endsWith("/"))
|
|
64
|
+
return `${root}${cleanRelative}`;
|
|
65
|
+
return `${root}/${cleanRelative}`;
|
|
66
|
+
}
|
|
67
|
+
export function normalizeRelative(raw) {
|
|
68
|
+
if (raw === "")
|
|
69
|
+
throw pathError("ERR_EMPTY_PATH", "relative path is empty");
|
|
70
|
+
if (raw === ".")
|
|
71
|
+
return ".";
|
|
72
|
+
if (raw.includes("\0"))
|
|
73
|
+
throw pathError("ERR_NUL_BYTE", "relative path contains NUL");
|
|
74
|
+
if (isAbsolutePathLike(raw))
|
|
75
|
+
throw pathError("ERR_ABSOLUTE_PATH", "relative path must not be absolute");
|
|
76
|
+
if (isDriveRelative(raw))
|
|
77
|
+
throw pathError("ERR_DRIVE_RELATIVE_PATH", "drive-relative path is not allowed");
|
|
78
|
+
if (raw.includes("\\"))
|
|
79
|
+
throw pathError("ERR_INVALID_PATH", "relative path must use slash separators");
|
|
80
|
+
const parts = [];
|
|
81
|
+
for (const part of raw.split("/")) {
|
|
82
|
+
if (part === "" || part === ".")
|
|
83
|
+
continue;
|
|
84
|
+
if (part === "..") {
|
|
85
|
+
if (parts.length === 0)
|
|
86
|
+
throw pathError("ERR_OUTSIDE_ROOT", "relative path escapes root");
|
|
87
|
+
parts.pop();
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
parts.push(part);
|
|
91
|
+
}
|
|
92
|
+
if (parts.length === 0)
|
|
93
|
+
throw pathError("ERR_EMPTY_PATH", "relative path is empty after cleaning");
|
|
94
|
+
return parts.join("/");
|
|
95
|
+
}
|
|
96
|
+
export function isEqual(left, right, options = {}) {
|
|
97
|
+
return normalize(left, options) === normalize(right, options);
|
|
98
|
+
}
|
|
99
|
+
export function toWin32(canonical) {
|
|
100
|
+
if (canonical.includes("\0"))
|
|
101
|
+
throw pathError("ERR_NUL_BYTE", "path contains NUL");
|
|
102
|
+
if (hasDriveRoot(canonical))
|
|
103
|
+
return `${canonical[0]?.toUpperCase()}:\\${canonical.slice(3).replaceAll("/", "\\")}`;
|
|
104
|
+
if (canonical.startsWith("//"))
|
|
105
|
+
return `\\\\${canonical.slice(2).replaceAll("/", "\\")}`;
|
|
106
|
+
return canonical.replaceAll("/", "\\");
|
|
107
|
+
}
|
|
108
|
+
export function toWSL(canonical, options = {}) {
|
|
109
|
+
if (canonical.includes("\0"))
|
|
110
|
+
throw pathError("ERR_NUL_BYTE", "path contains NUL");
|
|
111
|
+
if (!hasDriveRoot(canonical))
|
|
112
|
+
return canonical;
|
|
113
|
+
const mountRoot = (options.mountRoot ?? "/mnt").replace(/\/+$/, "");
|
|
114
|
+
const drive = canonical[0]?.toLowerCase();
|
|
115
|
+
const rest = canonical.slice(3);
|
|
116
|
+
if (rest === "")
|
|
117
|
+
return `${mountRoot}/${drive}`;
|
|
118
|
+
return `${mountRoot}/${drive}/${rest}`;
|
|
119
|
+
}
|
|
120
|
+
export function toPOSIX(canonical) {
|
|
121
|
+
if (canonical.includes("\0"))
|
|
122
|
+
throw pathError("ERR_NUL_BYTE", "path contains NUL");
|
|
123
|
+
if (hasDriveRoot(canonical))
|
|
124
|
+
throw pathError("ERR_INVALID_PATH", "win32 drive paths require an explicit host mapping such as toWSL");
|
|
125
|
+
if (canonical.includes("\\"))
|
|
126
|
+
throw pathError("ERR_INVALID_PATH", "canonical paths must use slash separators");
|
|
127
|
+
return canonical;
|
|
128
|
+
}
|
|
129
|
+
export function sanitizeComponent(name, profile) {
|
|
130
|
+
if (name === "")
|
|
131
|
+
throw pathError("ERR_INVALID_COMPONENT", "component is empty");
|
|
132
|
+
if (name.includes("\0"))
|
|
133
|
+
throw pathError("ERR_NUL_BYTE", "component contains NUL");
|
|
134
|
+
let value = name.replace(/[\\/:\t\n\r]+/g, "-").replace(/^[ ._-]+|[ ._-]+$/g, "");
|
|
135
|
+
if (value === "")
|
|
136
|
+
value = "component";
|
|
137
|
+
if (profile === "win32")
|
|
138
|
+
value = escapeReservedWin32Component(value);
|
|
139
|
+
return value;
|
|
140
|
+
}
|
|
141
|
+
export function encodeComponent(name, profile) {
|
|
142
|
+
return sanitizeComponent(name, profile);
|
|
143
|
+
}
|
|
144
|
+
export function encodeGitRef(raw) {
|
|
145
|
+
if (raw === "")
|
|
146
|
+
throw pathError("ERR_INVALID_COMPONENT", "git ref is empty");
|
|
147
|
+
if (raw.includes("\0"))
|
|
148
|
+
throw pathError("ERR_NUL_BYTE", "git ref contains NUL");
|
|
149
|
+
const slug = raw.replace(/[^A-Za-z0-9._-]+/g, "-").replace(/^[._-]+|[._-]+$/g, "") || "ref";
|
|
150
|
+
return `${slug}--${sha256Hex(raw).slice(0, 12)}`;
|
|
151
|
+
}
|
|
152
|
+
function pathError(code, message) {
|
|
153
|
+
return new CanonicalPathError(code, message);
|
|
154
|
+
}
|
|
155
|
+
function parseFileUri(uri, options) {
|
|
156
|
+
if (uri.includes("\0"))
|
|
157
|
+
throw pathError("ERR_NUL_BYTE", "URI contains NUL");
|
|
158
|
+
if (uri.startsWith("file://")) {
|
|
159
|
+
if (!options.uri?.allowFileUri)
|
|
160
|
+
throw pathError("ERR_UNSUPPORTED_URI_SCHEME", "file URI is not allowed");
|
|
161
|
+
return parseHierarchicalURIPath(uri, "file://", options);
|
|
162
|
+
}
|
|
163
|
+
if (uri.startsWith("vscode-file://")) {
|
|
164
|
+
if (!options.uri?.allowVSCodeFileUri)
|
|
165
|
+
throw pathError("ERR_UNSUPPORTED_URI_SCHEME", "vscode-file URI is not allowed");
|
|
166
|
+
return parseHierarchicalURIPath(uri, "vscode-file://", options);
|
|
167
|
+
}
|
|
168
|
+
if (hasUriScheme(uri))
|
|
169
|
+
throw pathError("ERR_UNSUPPORTED_URI_SCHEME", "unsupported URI scheme");
|
|
170
|
+
return uri;
|
|
171
|
+
}
|
|
172
|
+
function parseHierarchicalURIPath(raw, prefix, options) {
|
|
173
|
+
if (options.uri?.rejectEncodedSlash !== false && /%(2f|2F|5c|5C)/.test(raw))
|
|
174
|
+
throw pathError("ERR_ENCODED_SEPARATOR", "URI contains an encoded path separator");
|
|
175
|
+
const rest = raw.slice(prefix.length);
|
|
176
|
+
const slash = rest.indexOf("/");
|
|
177
|
+
if (slash < 0)
|
|
178
|
+
throw pathError("ERR_INVALID_URI", "URI path is empty");
|
|
179
|
+
const authority = rest.slice(0, slash);
|
|
180
|
+
const pathPart = rest.slice(slash);
|
|
181
|
+
try {
|
|
182
|
+
const decoded = decodeURIComponent(pathPart);
|
|
183
|
+
const decodedAuthority = decodeURIComponent(authority);
|
|
184
|
+
if (decoded === "")
|
|
185
|
+
throw pathError("ERR_INVALID_URI", "URI path is empty");
|
|
186
|
+
if (prefix === "file://" && decodedAuthority !== "" && decodedAuthority.toLowerCase() !== "localhost")
|
|
187
|
+
return `//${decodedAuthority}${decoded}`;
|
|
188
|
+
return decoded;
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
if (error instanceof CanonicalPathError)
|
|
192
|
+
throw error;
|
|
193
|
+
throw pathError("ERR_INVALID_PERCENT_ENCODING", "URI percent encoding is invalid");
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
function validateTargetProfile(value, targetProfile) {
|
|
197
|
+
switch (targetProfile) {
|
|
198
|
+
case undefined:
|
|
199
|
+
case "portable":
|
|
200
|
+
return;
|
|
201
|
+
case "posix":
|
|
202
|
+
if (hasDriveRoot(value) || value.startsWith("//"))
|
|
203
|
+
throw pathError("ERR_INVALID_PATH", "targetProfile posix does not allow Windows drive or UNC roots");
|
|
204
|
+
return;
|
|
205
|
+
case "win32-drive":
|
|
206
|
+
if (value.startsWith("/"))
|
|
207
|
+
throw pathError("ERR_INVALID_PATH", "targetProfile win32-drive does not allow POSIX or UNC roots");
|
|
208
|
+
return;
|
|
209
|
+
default:
|
|
210
|
+
throw pathError("ERR_INVALID_PATH", "unsupported targetProfile");
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
function isAsciiLetter(value) {
|
|
214
|
+
if (value.length !== 1)
|
|
215
|
+
return false;
|
|
216
|
+
const code = value.charCodeAt(0);
|
|
217
|
+
return (code >= 65 && code <= 90) || (code >= 97 && code <= 122);
|
|
218
|
+
}
|
|
219
|
+
function hasUriScheme(value) {
|
|
220
|
+
const index = value.indexOf("://");
|
|
221
|
+
if (index <= 0)
|
|
222
|
+
return false;
|
|
223
|
+
return /^[A-Za-z][A-Za-z0-9+.-]*$/.test(value.slice(0, index));
|
|
224
|
+
}
|
|
225
|
+
function hasDriveRoot(value) {
|
|
226
|
+
return value.length >= 3 && isAsciiLetter(value[0] ?? "") && value[1] === ":" && value[2] === "/";
|
|
227
|
+
}
|
|
228
|
+
function isDriveRelative(value) {
|
|
229
|
+
return value.length >= 2 && isAsciiLetter(value[0] ?? "") && value[1] === ":" && (value.length === 2 || value[2] !== "/");
|
|
230
|
+
}
|
|
231
|
+
function isUriWindowsDrivePath(value) {
|
|
232
|
+
return value.length >= 4 && value[0] === "/" && isAsciiLetter(value[1] ?? "") && value[2] === ":" && value[3] === "/";
|
|
233
|
+
}
|
|
234
|
+
function isAbsolutePathLike(value) {
|
|
235
|
+
return value.startsWith("/") || value.startsWith("\\\\") || hasDriveRoot(value.replaceAll("\\", "/"));
|
|
236
|
+
}
|
|
237
|
+
function unwrapWindowsExtendedPrefix(value) {
|
|
238
|
+
if (value.startsWith("\\\\?\\UNC\\"))
|
|
239
|
+
return `\\\\${value.slice("\\\\?\\UNC\\".length)}`;
|
|
240
|
+
if (value.startsWith("\\\\?\\"))
|
|
241
|
+
return value.slice("\\\\?\\".length);
|
|
242
|
+
return value;
|
|
243
|
+
}
|
|
244
|
+
function mapWSLDrive(value, options) {
|
|
245
|
+
if (!options?.enabled)
|
|
246
|
+
return undefined;
|
|
247
|
+
const mountRoot = (options.mountRoot ?? "/mnt").replace(/\/+$/, "");
|
|
248
|
+
const prefix = `${mountRoot}/`;
|
|
249
|
+
if (!value.startsWith(prefix))
|
|
250
|
+
return undefined;
|
|
251
|
+
const rest = value.slice(prefix.length);
|
|
252
|
+
if (rest.length < 1 || !isAsciiLetter(rest[0] ?? ""))
|
|
253
|
+
return undefined;
|
|
254
|
+
if (rest.length > 1 && rest[1] !== "/")
|
|
255
|
+
return undefined;
|
|
256
|
+
const drive = rest[0]?.toLowerCase();
|
|
257
|
+
if (rest.length === 1)
|
|
258
|
+
return `${drive}:/`;
|
|
259
|
+
return `${drive}:/${rest.slice(2)}`;
|
|
260
|
+
}
|
|
261
|
+
function splitRoot(value) {
|
|
262
|
+
if (hasDriveRoot(value))
|
|
263
|
+
return { prefix: value.slice(0, 3), rest: value.slice(3) };
|
|
264
|
+
if (value.startsWith("//")) {
|
|
265
|
+
const parts = value.slice(2).split("/");
|
|
266
|
+
if (parts.length < 2 || !parts[0] || !parts[1])
|
|
267
|
+
throw pathError("ERR_INVALID_PATH", "UNC path requires server and share");
|
|
268
|
+
return { prefix: `//${parts[0]}/${parts[1]}`, rest: parts.slice(2).join("/") };
|
|
269
|
+
}
|
|
270
|
+
if (value.startsWith("/"))
|
|
271
|
+
return { prefix: "/", rest: value.slice(1) };
|
|
272
|
+
return { prefix: "", rest: value };
|
|
273
|
+
}
|
|
274
|
+
function cleanCanonical(value) {
|
|
275
|
+
if (value === "")
|
|
276
|
+
throw pathError("ERR_EMPTY_PATH", "path is empty");
|
|
277
|
+
const { prefix, rest } = splitRoot(value);
|
|
278
|
+
const parts = [];
|
|
279
|
+
for (const part of rest.split("/")) {
|
|
280
|
+
if (part === "" || part === ".")
|
|
281
|
+
continue;
|
|
282
|
+
if (part === "..") {
|
|
283
|
+
if (parts.length > 0) {
|
|
284
|
+
parts.pop();
|
|
285
|
+
continue;
|
|
286
|
+
}
|
|
287
|
+
if (prefix !== "")
|
|
288
|
+
continue;
|
|
289
|
+
throw pathError("ERR_INVALID_PATH", "relative path escapes above its root");
|
|
290
|
+
}
|
|
291
|
+
parts.push(part);
|
|
292
|
+
}
|
|
293
|
+
const joined = parts.join("/");
|
|
294
|
+
if (prefix === "")
|
|
295
|
+
return joined === "" ? "." : joined;
|
|
296
|
+
if (prefix === "/")
|
|
297
|
+
return joined === "" ? "/" : `/${joined}`;
|
|
298
|
+
if (prefix.endsWith("/"))
|
|
299
|
+
return joined === "" ? prefix : `${prefix}${joined}`;
|
|
300
|
+
return joined === "" ? prefix : `${prefix}/${joined}`;
|
|
301
|
+
}
|
|
302
|
+
function canonicalParts(value) {
|
|
303
|
+
if (value.includes("\0"))
|
|
304
|
+
throw pathError("ERR_NUL_BYTE", "path contains NUL");
|
|
305
|
+
const { prefix, rest } = splitRoot(value);
|
|
306
|
+
if (prefix === "")
|
|
307
|
+
throw pathError("ERR_INVALID_PATH", "path must be canonical absolute");
|
|
308
|
+
const parts = rest.split("/").filter((part) => part !== "");
|
|
309
|
+
if (parts.some((part) => part === "." || part === ".."))
|
|
310
|
+
throw pathError("ERR_INVALID_PATH", "path is not lexically cleaned");
|
|
311
|
+
return { prefix, parts };
|
|
312
|
+
}
|
|
313
|
+
function hasWindowsADS(value) {
|
|
314
|
+
let start = 0;
|
|
315
|
+
if (hasDriveRoot(value))
|
|
316
|
+
start = 3;
|
|
317
|
+
else if (value.startsWith("//")) {
|
|
318
|
+
const parts = value.slice(2).split("/");
|
|
319
|
+
if (parts.length >= 2)
|
|
320
|
+
start = `//${parts[0]}/${parts[1]}`.length;
|
|
321
|
+
}
|
|
322
|
+
return value.slice(start).includes(":");
|
|
323
|
+
}
|
|
324
|
+
function hasReservedDeviceName(value) {
|
|
325
|
+
let rest;
|
|
326
|
+
try {
|
|
327
|
+
rest = splitRoot(value).rest;
|
|
328
|
+
}
|
|
329
|
+
catch {
|
|
330
|
+
return false;
|
|
331
|
+
}
|
|
332
|
+
return rest.split("/").some((part) => {
|
|
333
|
+
if (part === "" || part === "." || part === "..")
|
|
334
|
+
return false;
|
|
335
|
+
const base = part.split(/[.:]/, 1)[0]?.toUpperCase() ?? "";
|
|
336
|
+
return isReservedDeviceBase(base);
|
|
337
|
+
});
|
|
338
|
+
}
|
|
339
|
+
function isReservedDeviceBase(base) {
|
|
340
|
+
if (["CON", "PRN", "AUX", "NUL"].includes(base))
|
|
341
|
+
return true;
|
|
342
|
+
return /^(COM|LPT)[1-9]$/.test(base);
|
|
343
|
+
}
|
|
344
|
+
function escapeReservedWin32Component(value) {
|
|
345
|
+
const dot = value.indexOf(".");
|
|
346
|
+
const base = dot >= 0 ? value.slice(0, dot) : value;
|
|
347
|
+
const suffix = dot >= 0 ? value.slice(dot) : "";
|
|
348
|
+
if (isReservedDeviceBase(base.toUpperCase()))
|
|
349
|
+
return `${base}-${suffix}`;
|
|
350
|
+
return value;
|
|
351
|
+
}
|
|
352
|
+
function sha256Hex(value) {
|
|
353
|
+
const bytes = Array.from(new TextEncoder().encode(value));
|
|
354
|
+
const bitLength = bytes.length * 8;
|
|
355
|
+
bytes.push(0x80);
|
|
356
|
+
while (bytes.length % 64 !== 56)
|
|
357
|
+
bytes.push(0);
|
|
358
|
+
const high = Math.floor(bitLength / 0x100000000);
|
|
359
|
+
const low = bitLength >>> 0;
|
|
360
|
+
for (let shift = 24; shift >= 0; shift -= 8)
|
|
361
|
+
bytes.push((high >>> shift) & 0xff);
|
|
362
|
+
for (let shift = 24; shift >= 0; shift -= 8)
|
|
363
|
+
bytes.push((low >>> shift) & 0xff);
|
|
364
|
+
const h = [0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19];
|
|
365
|
+
const k = [
|
|
366
|
+
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
|
|
367
|
+
0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
|
|
368
|
+
0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
|
|
369
|
+
0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
|
|
370
|
+
0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
|
|
371
|
+
0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
|
|
372
|
+
0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
|
|
373
|
+
0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,
|
|
374
|
+
];
|
|
375
|
+
const words = new Array(64);
|
|
376
|
+
for (let offset = 0; offset < bytes.length; offset += 64) {
|
|
377
|
+
for (let index = 0; index < 16; index += 1) {
|
|
378
|
+
const start = offset + index * 4;
|
|
379
|
+
words[index] = ((bytes[start] ?? 0) << 24) | ((bytes[start + 1] ?? 0) << 16) | ((bytes[start + 2] ?? 0) << 8) | (bytes[start + 3] ?? 0);
|
|
380
|
+
}
|
|
381
|
+
for (let index = 16; index < 64; index += 1) {
|
|
382
|
+
const s0 = rotr(words[index - 15] ?? 0, 7) ^ rotr(words[index - 15] ?? 0, 18) ^ ((words[index - 15] ?? 0) >>> 3);
|
|
383
|
+
const s1 = rotr(words[index - 2] ?? 0, 17) ^ rotr(words[index - 2] ?? 0, 19) ^ ((words[index - 2] ?? 0) >>> 10);
|
|
384
|
+
words[index] = (((words[index - 16] ?? 0) + s0 + (words[index - 7] ?? 0) + s1) >>> 0);
|
|
385
|
+
}
|
|
386
|
+
let [a, b, c, d, e, f, g, hh] = h;
|
|
387
|
+
for (let index = 0; index < 64; index += 1) {
|
|
388
|
+
const s1 = rotr(e ?? 0, 6) ^ rotr(e ?? 0, 11) ^ rotr(e ?? 0, 25);
|
|
389
|
+
const ch = ((e ?? 0) & (f ?? 0)) ^ (~(e ?? 0) & (g ?? 0));
|
|
390
|
+
const temp1 = (((hh ?? 0) + s1 + ch + (k[index] ?? 0) + (words[index] ?? 0)) >>> 0);
|
|
391
|
+
const s0 = rotr(a ?? 0, 2) ^ rotr(a ?? 0, 13) ^ rotr(a ?? 0, 22);
|
|
392
|
+
const maj = ((a ?? 0) & (b ?? 0)) ^ ((a ?? 0) & (c ?? 0)) ^ ((b ?? 0) & (c ?? 0));
|
|
393
|
+
const temp2 = (s0 + maj) >>> 0;
|
|
394
|
+
hh = g;
|
|
395
|
+
g = f;
|
|
396
|
+
f = e;
|
|
397
|
+
e = ((d ?? 0) + temp1) >>> 0;
|
|
398
|
+
d = c;
|
|
399
|
+
c = b;
|
|
400
|
+
b = a;
|
|
401
|
+
a = (temp1 + temp2) >>> 0;
|
|
402
|
+
}
|
|
403
|
+
h[0] = ((h[0] ?? 0) + (a ?? 0)) >>> 0;
|
|
404
|
+
h[1] = ((h[1] ?? 0) + (b ?? 0)) >>> 0;
|
|
405
|
+
h[2] = ((h[2] ?? 0) + (c ?? 0)) >>> 0;
|
|
406
|
+
h[3] = ((h[3] ?? 0) + (d ?? 0)) >>> 0;
|
|
407
|
+
h[4] = ((h[4] ?? 0) + (e ?? 0)) >>> 0;
|
|
408
|
+
h[5] = ((h[5] ?? 0) + (f ?? 0)) >>> 0;
|
|
409
|
+
h[6] = ((h[6] ?? 0) + (g ?? 0)) >>> 0;
|
|
410
|
+
h[7] = ((h[7] ?? 0) + (hh ?? 0)) >>> 0;
|
|
411
|
+
}
|
|
412
|
+
return h.map((item) => item.toString(16).padStart(8, "0")).join("");
|
|
413
|
+
}
|
|
414
|
+
function rotr(value, bits) {
|
|
415
|
+
return (value >>> bits) | (value << (32 - bits));
|
|
416
|
+
}
|
|
417
|
+
//# sourceMappingURL=canonicalpath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canonicalpath.js","sourceRoot":"","sources":["../src/canonicalpath.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@romanilyin/canonicalpath-standalone",
|
|
3
|
+
"version": "2026.5.18-2",
|
|
4
|
+
"description": "Browser-safe lexical CanonicalPath target.",
|
|
5
|
+
"license": "LicenseRef-Stinger-Royalty-Free-EULA-1.0",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"sideEffects": false,
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/romanilyin/canonicalpath.git",
|
|
11
|
+
"directory": "packages/javascript-standalone"
|
|
12
|
+
},
|
|
13
|
+
"homepage": "https://github.com/romanilyin/canonicalpath#readme",
|
|
14
|
+
"bugs": {
|
|
15
|
+
"url": "https://github.com/romanilyin/canonicalpath/issues"
|
|
16
|
+
},
|
|
17
|
+
"keywords": ["canonicalpath", "path", "browser", "lexical", "path-identity"],
|
|
18
|
+
"publishConfig": {
|
|
19
|
+
"access": "public"
|
|
20
|
+
},
|
|
21
|
+
"main": "./dist/canonicalpath.js",
|
|
22
|
+
"types": "./dist/canonicalpath.d.ts",
|
|
23
|
+
"exports": {
|
|
24
|
+
".": {
|
|
25
|
+
"types": "./dist/canonicalpath.d.ts",
|
|
26
|
+
"import": "./dist/canonicalpath.js",
|
|
27
|
+
"default": "./dist/canonicalpath.js"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"files": ["dist", "README.md", "LICENSE.md", "LICENSE.ru.md", "NOTICE.md"],
|
|
31
|
+
"scripts": {
|
|
32
|
+
"build": "tsc -p tsconfig.build.json",
|
|
33
|
+
"build:smoke": "node test/build-smoke.mjs",
|
|
34
|
+
"prepack": "node ../../scripts/sync-npm-package-notices.mjs copy",
|
|
35
|
+
"postpack": "node ../../scripts/sync-npm-package-notices.mjs clean",
|
|
36
|
+
"pack:dry-run": "npm pack --dry-run",
|
|
37
|
+
"typecheck": "tsc --noEmit",
|
|
38
|
+
"test": "vitest run",
|
|
39
|
+
"alloc": "vitest run test/allocation.test.ts",
|
|
40
|
+
"lint": "tsc --noEmit"
|
|
41
|
+
}
|
|
42
|
+
}
|