@beehexa/hexasync-template-model 2608.7.4 → 2608.8.3
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/uriPath.d.ts +10 -1
- package/dist/uriPath.d.ts.map +1 -1
- package/dist/uriPath.js +30 -3
- package/dist/uriPath.js.map +1 -1
- package/package.json +1 -1
package/dist/uriPath.d.ts
CHANGED
|
@@ -14,12 +14,21 @@ export declare function joinUri(base: string, ...segments: readonly string[]): s
|
|
|
14
14
|
export declare function dirnameUri(uri: string): string;
|
|
15
15
|
export declare function basenameUri(uri: string): string;
|
|
16
16
|
/**
|
|
17
|
-
* True when `target` is absolute in its own right — rooted or schemed.
|
|
17
|
+
* True when `target` is absolute in its own right — rooted, drive-rooted, or schemed.
|
|
18
18
|
*
|
|
19
19
|
* Exported because `node:path`'s `isAbsolute` cannot answer this question for the web host: it
|
|
20
20
|
* knows nothing of `vscode-vfs://`, and on Windows it would reject a rooted POSIX path that is
|
|
21
21
|
* perfectly absolute in URI terms. This was the last of Story 1.5's 37 `path.*` call sites, and
|
|
22
22
|
* it had to move before `resolveMdIncludes` could follow the rest of the compose logic into core.
|
|
23
|
+
*
|
|
24
|
+
* ### The drive letter (reported 2026-08-08)
|
|
25
|
+
*
|
|
26
|
+
* It answered FALSE for `C:\docs\notes.md`, which is as absolute as a path gets. `merge.ts` asks
|
|
27
|
+
* this question at both `!md[…]` resolution sites — `isAbsoluteUri(ref) ? ref : resolveUri(base,
|
|
28
|
+
* ref)` — so an author on Windows writing an absolute include had it joined onto the project's base
|
|
29
|
+
* directory instead, producing `D:/project/C:/docs/notes.md` and an `ENOENT` naming a path nobody
|
|
30
|
+
* wrote. On Linux the same include starts with `/` and was always answered correctly, which is why
|
|
31
|
+
* only a Windows test run found it.
|
|
23
32
|
*/
|
|
24
33
|
export declare function isAbsoluteUri(target: string): boolean;
|
|
25
34
|
export declare function resolveUri(base: string, target: string): string;
|
package/dist/uriPath.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uriPath.d.ts","sourceRoot":"","sources":["../src/uriPath.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"uriPath.d.ts","sourceRoot":"","sources":["../src/uriPath.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAkDH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAWhD;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAM5E;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM9C;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK/C;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAOrD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAa5D;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAUlE"}
|
package/dist/uriPath.js
CHANGED
|
@@ -9,11 +9,27 @@
|
|
|
9
9
|
*
|
|
10
10
|
* Pure string work. No IO, no Node builtins, no platform behaviour.
|
|
11
11
|
*/
|
|
12
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* `c:/…` — a Windows absolute path, which is ROOTED WITHOUT a leading slash.
|
|
14
|
+
*
|
|
15
|
+
* The one shape this file's "POSIX `/` only" model does not otherwise describe. Every caller has
|
|
16
|
+
* already folded backslashes to `/` before this is tested, so only the forward form appears here.
|
|
17
|
+
*
|
|
18
|
+
* A single letter followed by `:/` cannot be a URI scheme in this codebase's terms — `splitPrefix`
|
|
19
|
+
* and `isAbsoluteUri` both test the `scheme://` form FIRST, so `c://host/x` is still read as a
|
|
20
|
+
* scheme with an authority rather than as a drive.
|
|
21
|
+
*/
|
|
22
|
+
const DRIVE_ROOT = /^[a-zA-Z]:\//;
|
|
23
|
+
/** Splits `scheme://authority`, or a Windows drive root (if any), from the path remainder. */
|
|
13
24
|
function splitPrefix(uri) {
|
|
14
25
|
const m = /^([a-zA-Z][a-zA-Z0-9+.-]*:\/\/[^/]*\/?)/.exec(uri);
|
|
15
26
|
if (m)
|
|
16
27
|
return { prefix: m[1], rest: uri.slice(m[1].length) };
|
|
28
|
+
// A DRIVE is a root. Left as an ordinary segment it was one — so `..` could climb PAST `c:` and
|
|
29
|
+
// out of the volume, and `relativeUri` saw two different drives as sharing a root and produced a
|
|
30
|
+
// traversal between them. `c:/` is three characters, always.
|
|
31
|
+
if (DRIVE_ROOT.test(uri))
|
|
32
|
+
return { prefix: uri.slice(0, 3), rest: uri.slice(3) };
|
|
17
33
|
if (uri.startsWith('/'))
|
|
18
34
|
return { prefix: '/', rest: uri.slice(1) };
|
|
19
35
|
return { prefix: '', rest: uri };
|
|
@@ -73,16 +89,27 @@ export function basenameUri(uri) {
|
|
|
73
89
|
return idx === -1 ? rest : rest.slice(idx + 1);
|
|
74
90
|
}
|
|
75
91
|
/**
|
|
76
|
-
* True when `target` is absolute in its own right — rooted or schemed.
|
|
92
|
+
* True when `target` is absolute in its own right — rooted, drive-rooted, or schemed.
|
|
77
93
|
*
|
|
78
94
|
* Exported because `node:path`'s `isAbsolute` cannot answer this question for the web host: it
|
|
79
95
|
* knows nothing of `vscode-vfs://`, and on Windows it would reject a rooted POSIX path that is
|
|
80
96
|
* perfectly absolute in URI terms. This was the last of Story 1.5's 37 `path.*` call sites, and
|
|
81
97
|
* it had to move before `resolveMdIncludes` could follow the rest of the compose logic into core.
|
|
98
|
+
*
|
|
99
|
+
* ### The drive letter (reported 2026-08-08)
|
|
100
|
+
*
|
|
101
|
+
* It answered FALSE for `C:\docs\notes.md`, which is as absolute as a path gets. `merge.ts` asks
|
|
102
|
+
* this question at both `!md[…]` resolution sites — `isAbsoluteUri(ref) ? ref : resolveUri(base,
|
|
103
|
+
* ref)` — so an author on Windows writing an absolute include had it joined onto the project's base
|
|
104
|
+
* directory instead, producing `D:/project/C:/docs/notes.md` and an `ENOENT` naming a path nobody
|
|
105
|
+
* wrote. On Linux the same include starts with `/` and was always answered correctly, which is why
|
|
106
|
+
* only a Windows test run found it.
|
|
82
107
|
*/
|
|
83
108
|
export function isAbsoluteUri(target) {
|
|
84
109
|
const t = String(target).replace(/\\/g, '/');
|
|
85
|
-
return t.startsWith('/') ||
|
|
110
|
+
return (t.startsWith('/') ||
|
|
111
|
+
/^[a-zA-Z][a-zA-Z0-9+.-]*:\/\//.test(t) ||
|
|
112
|
+
DRIVE_ROOT.test(t));
|
|
86
113
|
}
|
|
87
114
|
export function resolveUri(base, target) {
|
|
88
115
|
return isAbsoluteUri(target) ? normalizeUri(target) : joinUri(base, target);
|
package/dist/uriPath.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uriPath.js","sourceRoot":"","sources":["../src/uriPath.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,
|
|
1
|
+
{"version":3,"file":"uriPath.js","sourceRoot":"","sources":["../src/uriPath.ts"],"names":[],"mappings":"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"}
|