@gesslar/toolkit 3.21.0 → 3.22.1
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/package.json +1 -1
- package/src/node/lib/DirectoryObject.js +117 -12
- package/src/node/lib/Glog.js +7 -1
- package/src/node/lib/VFileObject.js +59 -9
- package/types/node/lib/DirectoryObject.d.ts +10 -4
- package/types/node/lib/DirectoryObject.d.ts.map +1 -1
- package/types/node/lib/Glog.d.ts.map +1 -1
- package/types/node/lib/VFileObject.d.ts +3 -3
- package/types/node/lib/VFileObject.d.ts.map +1 -1
package/package.json
CHANGED
|
@@ -9,8 +9,8 @@ import path from "node:path"
|
|
|
9
9
|
import {URL} from "node:url"
|
|
10
10
|
|
|
11
11
|
import Data from "../../browser/lib/Data.js"
|
|
12
|
-
import FS from "./FileSystem.js"
|
|
13
12
|
import FileObject from "./FileObject.js"
|
|
13
|
+
import FS from "./FileSystem.js"
|
|
14
14
|
import Sass from "./Sass.js"
|
|
15
15
|
import Valid from "./Valid.js"
|
|
16
16
|
import VFileObject from "./VFileObject.js"
|
|
@@ -531,6 +531,60 @@ export default class DirectoryObject extends FS {
|
|
|
531
531
|
return candidateDir === this.path
|
|
532
532
|
}
|
|
533
533
|
|
|
534
|
+
/**
|
|
535
|
+
* Resolves an absolute virtual path from cap root and validates it stays within cap boundary.
|
|
536
|
+
*
|
|
537
|
+
* @private
|
|
538
|
+
* @param {string} absolutePath - Absolute virtual path starting with separator
|
|
539
|
+
* @returns {string} Normalized resolved virtual path
|
|
540
|
+
* @throws {Sass} If path would be out of bounds
|
|
541
|
+
*/
|
|
542
|
+
#resolveAndValidateFromCap(absolutePath) {
|
|
543
|
+
const relativeFromCap = Data.chopLeft(absolutePath, this.sep)
|
|
544
|
+
const resolvedVirtualPath = FS.resolvePath(this.cap.path, relativeFromCap)
|
|
545
|
+
const normalized = FS.fixSlashes(resolvedVirtualPath)
|
|
546
|
+
|
|
547
|
+
// Validate cap boundary using real paths
|
|
548
|
+
const relativeFromCapForReal = normalized.startsWith(this.sep)
|
|
549
|
+
? Data.chopLeft(normalized, this.sep)
|
|
550
|
+
: normalized
|
|
551
|
+
const resolvedRealPath = FS.resolvePath(
|
|
552
|
+
this.cap.real.path,
|
|
553
|
+
relativeFromCapForReal
|
|
554
|
+
)
|
|
555
|
+
|
|
556
|
+
if(!FS.pathContains(this.cap.real.path, resolvedRealPath)) {
|
|
557
|
+
throw Sass.new(`${normalized} would be out of bounds (cap: ${this.cap.path}).`)
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
return normalized
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
/**
|
|
564
|
+
* Validates that a resolved virtual path stays within the cap boundary.
|
|
565
|
+
*
|
|
566
|
+
* @private
|
|
567
|
+
* @param {string} virtualPath - Resolved virtual path
|
|
568
|
+
* @returns {string} Normalized virtual path
|
|
569
|
+
* @throws {Sass} If path would be out of bounds
|
|
570
|
+
*/
|
|
571
|
+
#validateCapBoundary(virtualPath) {
|
|
572
|
+
const normalized = FS.fixSlashes(virtualPath)
|
|
573
|
+
const relativeFromCap = normalized.startsWith(this.sep)
|
|
574
|
+
? Data.chopLeft(normalized, this.sep)
|
|
575
|
+
: normalized
|
|
576
|
+
const resolvedRealPath = FS.resolvePath(
|
|
577
|
+
this.cap.real.path,
|
|
578
|
+
relativeFromCap
|
|
579
|
+
)
|
|
580
|
+
|
|
581
|
+
if(!FS.pathContains(this.cap.real.path, resolvedRealPath)) {
|
|
582
|
+
throw Sass.new(`${normalized} would be out of bounds (cap: ${this.cap.path}).`)
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
return normalized
|
|
586
|
+
}
|
|
587
|
+
|
|
534
588
|
/**
|
|
535
589
|
* Creates a new DirectoryObject by extending this directory's path.
|
|
536
590
|
*
|
|
@@ -555,11 +609,35 @@ export default class DirectoryObject extends FS {
|
|
|
555
609
|
getDirectory(dir) {
|
|
556
610
|
Valid.type(dir, "String", {allowEmpty: false})
|
|
557
611
|
|
|
612
|
+
// Handle VDirectoryObject with absolute virtual paths (starting with "/")
|
|
613
|
+
if(this.isVirtual && dir.startsWith(this.sep)) {
|
|
614
|
+
const normalized = this.#resolveAndValidateFromCap(dir)
|
|
615
|
+
|
|
616
|
+
// Pass cap as parent so it resolves from cap root, not current directory
|
|
617
|
+
return new this.constructor(normalized, this.cap)
|
|
618
|
+
}
|
|
619
|
+
|
|
620
|
+
// Regular resolution
|
|
558
621
|
const newPath = FS.resolvePath(this.path, dir)
|
|
559
622
|
|
|
560
|
-
|
|
623
|
+
// Validate bounds
|
|
624
|
+
if(!this.isVirtual) {
|
|
625
|
+
// Regular DO: enforce local-only constraint
|
|
626
|
+
Valid.assert(this.#isLocal(newPath), `${newPath} would be out of bounds.`)
|
|
627
|
+
|
|
628
|
+
return new this.constructor(newPath, this)
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
// VDO relative paths: only allow nested if explicitly prefixed with ./
|
|
632
|
+
// This maintains security while allowing explicit relative navigation
|
|
633
|
+
if(dir.includes(this.sep) && !dir.startsWith(`.${this.sep}`)) {
|
|
634
|
+
throw Sass.new(`${dir} would be out of bounds. Use "./${dir}" for nested paths or chain getDirectory() calls.`)
|
|
635
|
+
}
|
|
636
|
+
|
|
637
|
+
// VDO relative paths: validate cap boundary and pass resolved path
|
|
638
|
+
const normalized = this.#validateCapBoundary(newPath)
|
|
561
639
|
|
|
562
|
-
return new this.constructor(
|
|
640
|
+
return new this.constructor(normalized, this)
|
|
563
641
|
}
|
|
564
642
|
|
|
565
643
|
/**
|
|
@@ -569,31 +647,58 @@ export default class DirectoryObject extends FS {
|
|
|
569
647
|
* duplication. The resulting FileObject can be used for reading, writing,
|
|
570
648
|
* and other file operations.
|
|
571
649
|
*
|
|
650
|
+
* For regular DirectoryObject: only allows direct children (local only).
|
|
651
|
+
* For VDirectoryObject: supports absolute virtual paths (starting with "/")
|
|
652
|
+
* which resolve from cap root, and relative paths from current directory.
|
|
653
|
+
*
|
|
572
654
|
* When called on a VDirectoryObject, returns a VFileObject to maintain
|
|
573
655
|
* virtual path semantics.
|
|
574
656
|
*
|
|
575
|
-
* @param {string} file - The filename to append
|
|
657
|
+
* @param {string} file - The filename to append
|
|
576
658
|
* @returns {FileObject|VFileObject} A new FileObject (or VFileObject if virtual)
|
|
577
659
|
* @throws {Sass} If filename is not a string
|
|
660
|
+
* @throws {Sass} If path would be out of bounds
|
|
578
661
|
* @example
|
|
579
662
|
* const dir = new DirectoryObject("/projects/git/toolkit")
|
|
580
663
|
* const file = dir.getFile("package.json")
|
|
581
664
|
* console.log(file.path) // "/projects/git/toolkit/package.json"
|
|
582
665
|
*
|
|
583
666
|
* @example
|
|
584
|
-
* //
|
|
585
|
-
* const
|
|
586
|
-
* const
|
|
667
|
+
* // VDirectoryObject with absolute virtual path
|
|
668
|
+
* const vdo = new TempDirectoryObject("myapp")
|
|
669
|
+
* const file = vdo.getFile("/config/settings.json")
|
|
670
|
+
* // Virtual path: /config/settings.json, Real path: {vdo.real.path}/config/settings.json
|
|
587
671
|
*/
|
|
588
672
|
getFile(file) {
|
|
589
673
|
Valid.type(file, "String", {allowEmpty: false})
|
|
590
674
|
|
|
591
|
-
|
|
675
|
+
// Handle VDirectoryObject with absolute virtual paths (starting with "/")
|
|
676
|
+
if(this.isVirtual && file.startsWith(this.sep)) {
|
|
677
|
+
const normalized = this.#resolveAndValidateFromCap(file)
|
|
592
678
|
|
|
593
|
-
|
|
679
|
+
return new VFileObject(normalized, this)
|
|
680
|
+
}
|
|
594
681
|
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
682
|
+
// Regular resolution
|
|
683
|
+
const resolvedPath = FS.resolvePath(this.path, file)
|
|
684
|
+
|
|
685
|
+
// Validate bounds
|
|
686
|
+
if(!this.isVirtual) {
|
|
687
|
+
// Regular DO: enforce local-only constraint
|
|
688
|
+
Valid.assert(this.#isLocal(resolvedPath), `${resolvedPath} would be out of bounds.`)
|
|
689
|
+
|
|
690
|
+
return new FileObject(file, this)
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
// VDO relative paths: only allow nested if explicitly prefixed with ./
|
|
694
|
+
// This maintains security while allowing explicit relative navigation
|
|
695
|
+
if(file.includes(this.sep) && !file.startsWith(`.${this.sep}`)) {
|
|
696
|
+
throw Sass.new(`${file} would be out of bounds. Use "./${file}" for nested paths or chain getFile() calls.`)
|
|
697
|
+
}
|
|
698
|
+
|
|
699
|
+
// VDO relative paths: validate cap boundary and pass resolved path
|
|
700
|
+
const normalized = this.#validateCapBoundary(resolvedPath)
|
|
701
|
+
|
|
702
|
+
return new VFileObject(normalized, this)
|
|
598
703
|
}
|
|
599
704
|
}
|
package/src/node/lib/Glog.js
CHANGED
|
@@ -149,7 +149,13 @@ class Glog {
|
|
|
149
149
|
this.#logLevel = options.debugLevel ?? options.logLevel ?? this.#logLevel
|
|
150
150
|
this.#logPrefix = options.prefix ?? this.#logPrefix
|
|
151
151
|
this.#colours = options.colours ?? this.#colours
|
|
152
|
-
|
|
152
|
+
|
|
153
|
+
if(options.symbols) {
|
|
154
|
+
const base = this.#symbols ?? logSymbols
|
|
155
|
+
|
|
156
|
+
this.#symbols = Object.assign({}, base, options.symbols)
|
|
157
|
+
}
|
|
158
|
+
|
|
153
159
|
this.#stackTrace = options.stackTrace ?? this.#stackTrace
|
|
154
160
|
this.#tagsAsStrings = options.tagsAsStrings ?? this.#tagsAsStrings
|
|
155
161
|
this.#displayName = options.displayName ?? this.#displayName
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Extends FileObject with virtual path support and real filesystem mapping.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
+
import DirectoryObject from "./DirectoryObject.js"
|
|
7
8
|
import FileObject from "./FileObject.js"
|
|
8
9
|
import FS from "./FileSystem.js"
|
|
9
10
|
import Valid from "./Valid.js"
|
|
@@ -34,20 +35,69 @@ export default class VFileObject extends FileObject {
|
|
|
34
35
|
/**
|
|
35
36
|
* Constructs a VFileObject instance.
|
|
36
37
|
*
|
|
37
|
-
* @param {string}
|
|
38
|
-
* @param {VDirectoryObject} parent - The parent virtual directory (required)
|
|
38
|
+
* @param {string} virtualPath - The virtual file path (can be absolute like "/path/to/file.ext" or relative like "file.txt")
|
|
39
|
+
* @param {VDirectoryObject} parent - The parent virtual directory (required, used for cap reference)
|
|
39
40
|
*/
|
|
40
|
-
constructor(
|
|
41
|
-
Valid.type(
|
|
41
|
+
constructor(virtualPath, parent) {
|
|
42
|
+
Valid.type(virtualPath, "String", {allowEmpty: false})
|
|
42
43
|
Valid.type(parent, "VDirectoryObject")
|
|
43
44
|
|
|
44
|
-
|
|
45
|
+
// Normalize the virtual path
|
|
46
|
+
const normalizedVirtual = FS.fixSlashes(virtualPath)
|
|
47
|
+
const isAbsolute = normalizedVirtual.startsWith("/")
|
|
45
48
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
+
// If absolute path, it's already resolved from cap root (from getFile())
|
|
50
|
+
// If relative path, resolve from parent directory (from hasFile(), read(), etc.)
|
|
51
|
+
let resolvedVirtualPath
|
|
52
|
+
if(isAbsolute) {
|
|
53
|
+
// Absolute path is already resolved - use as-is
|
|
54
|
+
resolvedVirtualPath = normalizedVirtual
|
|
55
|
+
} else {
|
|
56
|
+
// Relative path: resolve from parent directory (not cap root!)
|
|
57
|
+
resolvedVirtualPath = FS.resolvePath(parent.path, normalizedVirtual)
|
|
58
|
+
}
|
|
49
59
|
|
|
50
|
-
|
|
60
|
+
const normalized = FS.fixSlashes(resolvedVirtualPath)
|
|
61
|
+
|
|
62
|
+
// Extract the directory and filename from the resolved virtual path
|
|
63
|
+
const {dir: virtualDir, base} = FS.pathParts(normalized)
|
|
64
|
+
|
|
65
|
+
// Determine the virtual parent directory
|
|
66
|
+
// If virtualDir is "/" or empty or equals cap path, use the cap root
|
|
67
|
+
// Otherwise, construct the parent directory path relative to cap
|
|
68
|
+
let virtualParent
|
|
69
|
+
if(!virtualDir || virtualDir === "/" || virtualDir === parent.cap.path) {
|
|
70
|
+
virtualParent = parent.cap
|
|
71
|
+
} else {
|
|
72
|
+
// virtualDir is something like "/path/to" - we need to create a VDirectoryObject for it
|
|
73
|
+
// Strip leading "/" if present to make it relative to cap
|
|
74
|
+
const dirRelativeToCap = virtualDir.startsWith("/") ? virtualDir.slice(1) : virtualDir
|
|
75
|
+
// Use the VDirectoryObject constructor to create the parent directory
|
|
76
|
+
virtualParent = new parent.constructor(dirRelativeToCap, parent.cap)
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Call super with just the filename and the virtual parent
|
|
80
|
+
// This ensures FileObject sets up the virtual path correctly
|
|
81
|
+
super(base, virtualParent)
|
|
82
|
+
|
|
83
|
+
// Convert virtual path to real path
|
|
84
|
+
// The resolved virtual path is relative to the cap root, so we resolve it relative to cap's real path
|
|
85
|
+
const capRealPath = parent.cap.real.path
|
|
86
|
+
|
|
87
|
+
// Strip leading "/" from resolved virtual path if present to make it relative
|
|
88
|
+
const relativeFromCap = normalized.startsWith("/")
|
|
89
|
+
? normalized.slice(1)
|
|
90
|
+
: normalized
|
|
91
|
+
|
|
92
|
+
// Resolve the real filesystem path
|
|
93
|
+
const realPath = FS.resolvePath(capRealPath, relativeFromCap)
|
|
94
|
+
|
|
95
|
+
// Create FileObject with the full real path
|
|
96
|
+
// Extract directory and filename parts
|
|
97
|
+
const {dir: realDir, base: realBase} = FS.pathParts(realPath)
|
|
98
|
+
const realParentDir = new DirectoryObject(realDir)
|
|
99
|
+
|
|
100
|
+
this.#real = new FileObject(realBase, realParentDir)
|
|
51
101
|
}
|
|
52
102
|
|
|
53
103
|
get isVirtual() {
|
|
@@ -276,21 +276,27 @@ export default class DirectoryObject extends FS {
|
|
|
276
276
|
* duplication. The resulting FileObject can be used for reading, writing,
|
|
277
277
|
* and other file operations.
|
|
278
278
|
*
|
|
279
|
+
* For regular DirectoryObject: only allows direct children (local only).
|
|
280
|
+
* For VDirectoryObject: supports absolute virtual paths (starting with "/")
|
|
281
|
+
* which resolve from cap root, and relative paths from current directory.
|
|
282
|
+
*
|
|
279
283
|
* When called on a VDirectoryObject, returns a VFileObject to maintain
|
|
280
284
|
* virtual path semantics.
|
|
281
285
|
*
|
|
282
|
-
* @param {string} file - The filename to append
|
|
286
|
+
* @param {string} file - The filename to append
|
|
283
287
|
* @returns {FileObject|VFileObject} A new FileObject (or VFileObject if virtual)
|
|
284
288
|
* @throws {Sass} If filename is not a string
|
|
289
|
+
* @throws {Sass} If path would be out of bounds
|
|
285
290
|
* @example
|
|
286
291
|
* const dir = new DirectoryObject("/projects/git/toolkit")
|
|
287
292
|
* const file = dir.getFile("package.json")
|
|
288
293
|
* console.log(file.path) // "/projects/git/toolkit/package.json"
|
|
289
294
|
*
|
|
290
295
|
* @example
|
|
291
|
-
* //
|
|
292
|
-
* const
|
|
293
|
-
* const
|
|
296
|
+
* // VDirectoryObject with absolute virtual path
|
|
297
|
+
* const vdo = new TempDirectoryObject("myapp")
|
|
298
|
+
* const file = vdo.getFile("/config/settings.json")
|
|
299
|
+
* // Virtual path: /config/settings.json, Real path: {vdo.real.path}/config/settings.json
|
|
294
300
|
*/
|
|
295
301
|
getFile(file: string): FileObject | VFileObject;
|
|
296
302
|
#private;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DirectoryObject.d.ts","sourceRoot":"","sources":["../../../src/node/lib/DirectoryObject.js"],"names":[],"mappings":"AAiBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH;IA2DE;;;;;;;;;OASG;IACH,kBALa,eAAe,CAO3B;IA3CD;;;;OAIG;IACH,uBAFW,MAAM,OAAC,EA0BjB;IA2BD;;;;OAIG;IACH,cAFa,OAAO,CAAC,OAAO,CAAC,CAI5B;IAED;;;;OAIG;IACH,gBAFa,MAAM,CAIlB;IAED;;;;OAIG;IACH,YAFa,MAAM,CAIlB;IAED;;;;OAIG;IACH,WAFa,GAAG,CAIf;IAED;;;;OAIG;IACH,YAFa,MAAM,CAIlB;IAED;;;;OAIG;IACH,cAFa,MAAM,CAIlB;IAED;;;;OAIG;IACH,iBAFa,MAAM,CAIlB;IAED;;;;OAIG;IACH,WAFa,MAAM,CAIlB;IAED;;;;;;;OAOG;IACH,aALa,KAAK,CAAC,MAAM,CAAC,CAOzB;IAED;;;;;;;;;;;;OAYG;IACH,cARa,eAAe,GAAC,IAAI,CAsBhC;IAED;;;;OAIG;IACH,mBAFa,OAAO,CAInB;IAmBD;;;;;;;;;;;;;;;;;;OAkBG;IACH,WAZW,MAAM,GACJ,OAAO,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC,UAAU,GAAC,WAAW,CAAC,CAAC;QAAC,WAAW,EAAE,KAAK,CAAC,eAAe,GAAC,gBAAgB,CAAC,CAAA;KAAC,CAAC,CA0CjH;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,WAZW,MAAM,GACJ,OAAO,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC,UAAU,GAAC,WAAW,CAAC,CAAC;QAAC,WAAW,EAAE,KAAK,CAAC,eAAe,GAAC,gBAAgB,CAAC,CAAA;KAAC,CAAC,CAgDjH;IAED;;;;;;;;;;;;OAYG;IACH,uBARW,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAuBzB;IAyBD;;;;;;;;;;;;;;;OAeG;IACH,cAZa,eAAe,CAc3B;IAED;;;;;;;;;;;;;;OAcG;IACH,UARa,OAAO,CAAC,IAAI,CAAC,CAkBzB;IAED;;;;;OAKG;IACH,kBAHW,MAAM,GACJ,OAAO,CAAC,OAAO,CAAC,CAQ5B;IAED;;;;;OAKG;IACH,sBAHW,MAAM,GACJ,OAAO,CAAC,OAAO,CAAC,CAO5B;
|
|
1
|
+
{"version":3,"file":"DirectoryObject.d.ts","sourceRoot":"","sources":["../../../src/node/lib/DirectoryObject.js"],"names":[],"mappings":"AAiBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH;IA2DE;;;;;;;;;OASG;IACH,kBALa,eAAe,CAO3B;IA3CD;;;;OAIG;IACH,uBAFW,MAAM,OAAC,EA0BjB;IA2BD;;;;OAIG;IACH,cAFa,OAAO,CAAC,OAAO,CAAC,CAI5B;IAED;;;;OAIG;IACH,gBAFa,MAAM,CAIlB;IAED;;;;OAIG;IACH,YAFa,MAAM,CAIlB;IAED;;;;OAIG;IACH,WAFa,GAAG,CAIf;IAED;;;;OAIG;IACH,YAFa,MAAM,CAIlB;IAED;;;;OAIG;IACH,cAFa,MAAM,CAIlB;IAED;;;;OAIG;IACH,iBAFa,MAAM,CAIlB;IAED;;;;OAIG;IACH,WAFa,MAAM,CAIlB;IAED;;;;;;;OAOG;IACH,aALa,KAAK,CAAC,MAAM,CAAC,CAOzB;IAED;;;;;;;;;;;;OAYG;IACH,cARa,eAAe,GAAC,IAAI,CAsBhC;IAED;;;;OAIG;IACH,mBAFa,OAAO,CAInB;IAmBD;;;;;;;;;;;;;;;;;;OAkBG;IACH,WAZW,MAAM,GACJ,OAAO,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC,UAAU,GAAC,WAAW,CAAC,CAAC;QAAC,WAAW,EAAE,KAAK,CAAC,eAAe,GAAC,gBAAgB,CAAC,CAAA;KAAC,CAAC,CA0CjH;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,WAZW,MAAM,GACJ,OAAO,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC,UAAU,GAAC,WAAW,CAAC,CAAC;QAAC,WAAW,EAAE,KAAK,CAAC,eAAe,GAAC,gBAAgB,CAAC,CAAA;KAAC,CAAC,CAgDjH;IAED;;;;;;;;;;;;OAYG;IACH,uBARW,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAuBzB;IAyBD;;;;;;;;;;;;;;;OAeG;IACH,cAZa,eAAe,CAc3B;IAED;;;;;;;;;;;;;;OAcG;IACH,UARa,OAAO,CAAC,IAAI,CAAC,CAkBzB;IAED;;;;;OAKG;IACH,kBAHW,MAAM,GACJ,OAAO,CAAC,OAAO,CAAC,CAQ5B;IAED;;;;;OAKG;IACH,sBAHW,MAAM,GACJ,OAAO,CAAC,OAAO,CAAC,CAO5B;IAgED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,kBAdW,MAAM,GACJ,eAAe,CA6C3B;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,cAfW,MAAM,GACJ,UAAU,GAAC,WAAW,CA6ClC;;CACF;eAnrBc,iBAAiB;uBADT,iBAAiB;wBAIhB,kBAAkB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Glog.d.ts","sourceRoot":"","sources":["../../../src/node/lib/Glog.js"],"names":[],"mappings":"AAmBA;;;;;;;;;;GAUG;AACH,4BARU,MAAM,CAqBf;AAED;;;;;;;;;GASG;AACH,yBAPU,MAAM,CAaf;;;AAYD;IAEE,wBAAmB;IACnB,yBAAqB;IACrB,oBAAqB;IACrB,2BAAyB;IACzB,oBAAgB;IAChB,8BAA4B;IAC5B,oBAAqB;
|
|
1
|
+
{"version":3,"file":"Glog.d.ts","sourceRoot":"","sources":["../../../src/node/lib/Glog.js"],"names":[],"mappings":"AAmBA;;;;;;;;;;GAUG;AACH,4BARU,MAAM,CAqBf;AAED;;;;;;;;;GASG;AACH,yBAPU,MAAM,CAaf;;;AAYD;IAEE,wBAAmB;IACnB,yBAAqB;IACrB,oBAAqB;IACrB,2BAAyB;IACzB,oBAAgB;IAChB,8BAA4B;IAC5B,oBAAqB;IAsFrB;;;;;OAKG;IACH,4BAHW,MAAM,GACJ,OAAO,IAAI,CAMvB;IAED;;;;;OAKG;IACH,0BAHW,MAAM,GACJ,OAAO,IAAI,CAMvB;IAED;;;;;OAKG;IACH,sBAHW,MAAM,GACJ,OAAO,IAAI,CAMvB;IAED;;;;;;;;;;OAUG;IACH,6BAHW,MAAM,GACJ,OAAO,IAAI,CAMvB;IAED;;;;;OAKG;IACH,gCAHW,OAAO,GACL,OAAO,IAAI,CAMvB;IAED;;;;;OAKG;IACH,mCAHW,OAAO,GACL,OAAO,IAAI,CAMvB;IAED;;;;;;;;;;OAUG;IACH,6BALW,MAAM,GACJ,OAAO,IAAI,CAQvB;IAED;;;;;;;;;OASG;IACH,mBANW,MAAM,GACJ,MAAM,CAyClB;IAID;;;;;OAKG;IACH,wBAHW,MAAM,GACJ,IAAI,CAIhB;IA+UD;;;;;OAKG;IACH,wBAFc,OAAO,EAAA,QAsBpB;IA4BD;;;;;OAKG;IACH,0BAHW,KAAK,CAAC,MAAM,CAAC,aACV,OAAO,EAAA,QAOpB;IAYD;;;;;OAKG;IACH,wBAHW,MAAM,WACH,OAAO,EAAA,QAcpB;IAED;;;;OAIG;IACH,sBAFc,OAAO,EAAA,QAOpB;IAED;;OAEG;IACH,wBAEC;IAED;;;;;OAKG;IACH,2BAHW,MAAM,UACN,MAAM,QAchB;IAED;;;;OAIG;IACH,0BAFW,MAAM,QAahB;IAED;;;;OAIG;IACH,6BAFW,MAAM,QAYhB;IA0FD;;;;;;;;;OASG;IACH,mBAPW,MAAM,QAAQ,mBACd,MAAM,GAAG,MAAM,YAEvB;QAAgC,UAAU,GAAlC,KAAK,CAAC,MAAM,CAAC;QACK,UAAU,GAA5B,OAAO;QACW,aAAa,GAA/B,OAAO;KACjB,QAkBA;IAED;;;;;;OAMG;IACH,uBAJW,MAAM,cACN,MAAM,GACJ,IAAI,CAMhB;IAuCD;;;;;;;;;;;;;OAaG;IACH,kBAXa,MAAM,CAuBlB;IA15BD;;;;;;;;;;;;;;OAcG;IACH,sBAXG;QAAyB,IAAI,GAArB,MAAM;QACW,UAAU,GAA3B,MAAM;QACW,QAAQ,GAAzB,MAAM;QACW,MAAM,GAAvB,MAAM;QACW,OAAO,GAAxB,MAAM;QACW,OAAO,GAAxB,MAAM;QACY,UAAU,GAA5B,OAAO;QACW,aAAa,GAA/B,OAAO;QACW,WAAW,GAA7B,OAAO;QACU,GAAG,GAApB,MAAM;KAChB,EAiBA;IAID;;;;;;;;;;;;;;OAcG;IACH,oBAXG;QAAyB,IAAI,GAArB,MAAM;QACW,UAAU,GAA3B,MAAM;QACW,QAAQ,GAAzB,MAAM;QACW,MAAM,GAAvB,MAAM;QACW,OAAO,GAAxB,MAAM;QACW,OAAO,GAAxB,MAAM;QACY,UAAU,GAA5B,OAAO;QACW,aAAa,GAA/B,OAAO;QACW,WAAW,GAA7B,OAAO;KACf,GAAU,IAAI,CAmBhB;IA8JD;;;;;OAKG;IACH,eAHW,MAAM,GACJ,IAAI,CAMhB;IAED;;;;;OAKG;IACH,oBAHW,MAAM,GACJ,IAAI,CAMhB;IAED;;;;;OAKG;IACH,mBAHW,MAAM,GACJ,IAAI,CAMhB;IAED;;;;;;;;;;OAUG;IACH,sBAHW,MAAM,GACJ,IAAI,CAMhB;IAED;;;;;OAKG;IACH,yBAHW,OAAO,GACL,IAAI,CAMhB;IAED;;;;;OAKG;IACH,4BAHW,OAAO,GACL,IAAI,CAMhB;IAED;;;;;;;;;;OAUG;IACH,sBALW,MAAM,GACJ,IAAI,CAQhB;IAED;;;;OAIG;IACH,iBAFa,IAAI,CAMhB;IAED;;;;;;;;;OASG;IACH,YANW,MAAM,GACJ,MAAM,CA2ClB;IAID;;;;OAIG;IACH,YAFa,MAAM,CAIlB;IAED;;;;OAIG;IACH,kBAFa,MAAM,CAIlB;IAED;;;;;;;;;OASG;IACH,eAPa,MAAM,CAelB;IA8BD;;;;;OAKG;IACH,4BAGC;IAED;;;;;OAKG;IACH,cAHW,MAAM,YAWhB;IA8BD;;;;;;;;;OASG;IACH,eALW,MAAM,UACN,MAAM,UACH,OAAO,EAAA,QAapB;IAED;;;;;OAKG;IACH,cAHW,MAAM,UACH,OAAO,EAAA,QAKpB;IAED;;;;;OAKG;IACH,cAHW,MAAM,UACH,OAAO,EAAA,QAKpB;IAED;;;;;OAKG;IACH,eAHW,MAAM,UACH,OAAO,EAAA,QAKpB;IA8BD;;;;;OAKG;IACH,iBAFc,OAAO,EAAA,QAIpB;IAID;;;;;;OAMG;IACH,mBAJW,KAAK,CAAC,MAAM,CAAC,aACV,OAAO,EAAA,QAQpB;IAeD;;;;;OAKG;IACH,iBAHW,MAAM,WACH,OAAO,EAAA,QAIpB;IAgGD;;;;OAIG;IACH,eAFc,OAAO,EAAA,QASpB;IAED;;OAEG;IACH,iBAEC;IAED;;;;;OAKG;IACH,oBAHW,MAAM,UACN,MAAM,QAIhB;IAED;;;;OAIG;IACH,mBAFW,MAAM,QAIhB;IAED;;;;OAIG;IACH,sBAFW,MAAM,QAchB;IAED;;;;;;;;;OASG;IACH,YAPW,MAAM,QAAQ,mBACd,MAAM,GAAG,MAAM,YAEvB;QAAgC,UAAU,GAAlC,KAAK,CAAC,MAAM,CAAC;QACK,UAAU,GAA5B,OAAO;QACW,aAAa,GAA/B,OAAO;KACjB,QAkBA;IA4CD;;;;OAIG;IACH,mBAEC;IAED;;;;;;;;;;;;;OAaG;IACH,WAXa,MAAM,CAuBlB;;CA6BF"}
|
|
@@ -21,10 +21,10 @@ export default class VFileObject extends FileObject {
|
|
|
21
21
|
/**
|
|
22
22
|
* Constructs a VFileObject instance.
|
|
23
23
|
*
|
|
24
|
-
* @param {string}
|
|
25
|
-
* @param {VDirectoryObject} parent - The parent virtual directory (required)
|
|
24
|
+
* @param {string} virtualPath - The virtual file path (can be absolute like "/path/to/file.ext" or relative like "file.txt")
|
|
25
|
+
* @param {VDirectoryObject} parent - The parent virtual directory (required, used for cap reference)
|
|
26
26
|
*/
|
|
27
|
-
constructor(
|
|
27
|
+
constructor(virtualPath: string, parent: VDirectoryObject);
|
|
28
28
|
get isVirtual(): boolean;
|
|
29
29
|
get real(): FileObject;
|
|
30
30
|
#private;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VFileObject.d.ts","sourceRoot":"","sources":["../../../src/node/lib/VFileObject.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"VFileObject.d.ts","sourceRoot":"","sources":["../../../src/node/lib/VFileObject.js"],"names":[],"mappings":"AAWA;;;;;;;;;;;;;;;;;;GAkBG;AAEH;IAGE;;;;;OAKG;IACH,yBAHW,MAAM,UACN,gBAAgB,EA8D1B;IAED,yBAEC;IAED,uBAEC;;CACF;uBAtGsB,iBAAiB"}
|