@breadstone-infrastructure/utilities 0.0.31 → 0.0.33
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/IO/CustomElementManifest.d.ts +2 -2
- package/IO/Directory.d.ts +2 -2
- package/IO/Directory.js +2 -2
- package/IO/File.d.ts +14 -3
- package/IO/File.d.ts.map +1 -1
- package/IO/File.js +35 -3
- package/IO/File.js.map +1 -1
- package/IO/Path.Test.d.ts +2 -0
- package/IO/Path.Test.d.ts.map +1 -0
- package/IO/Path.Test.js +77 -0
- package/IO/Path.Test.js.map +1 -0
- package/IO/Path.d.ts +2 -2
- package/IO/Path.js +2 -2
- package/IO/SymbolicLink.d.ts +6 -0
- package/IO/SymbolicLink.d.ts.map +1 -0
- package/IO/SymbolicLink.js +10 -0
- package/IO/SymbolicLink.js.map +1 -0
- package/Logging/LoggerUtils.Test.d.ts +2 -0
- package/Logging/LoggerUtils.Test.d.ts.map +1 -0
- package/Logging/LoggerUtils.Test.js +74 -0
- package/Logging/LoggerUtils.Test.js.map +1 -0
- package/package.json +2 -2
|
@@ -22,8 +22,8 @@ export declare namespace CustomElementManifest {
|
|
|
22
22
|
/**
|
|
23
23
|
* A reference to an export of a module.
|
|
24
24
|
*
|
|
25
|
-
* All references are required to be
|
|
26
|
-
* representation of a
|
|
25
|
+
* All references are required to be publicly accessible, so the canonical
|
|
26
|
+
* representation of a reference it the export it's available from.
|
|
27
27
|
*/
|
|
28
28
|
interface Reference {
|
|
29
29
|
name: string;
|
package/IO/Directory.d.ts
CHANGED
|
@@ -34,11 +34,11 @@ export declare class Directory {
|
|
|
34
34
|
*/
|
|
35
35
|
static count(path: string): number;
|
|
36
36
|
/**
|
|
37
|
-
* Gets the size of a
|
|
37
|
+
* Gets the size of a directory.
|
|
38
38
|
* @public
|
|
39
39
|
* @static
|
|
40
40
|
* @param {string} path The path.
|
|
41
|
-
* @returns {number} The
|
|
41
|
+
* @returns {number} The directory size.
|
|
42
42
|
*/
|
|
43
43
|
static size(path: string): number;
|
|
44
44
|
/**
|
package/IO/Directory.js
CHANGED
|
@@ -83,11 +83,11 @@ class Directory {
|
|
|
83
83
|
return fse.readdirSync(path).length;
|
|
84
84
|
}
|
|
85
85
|
/**
|
|
86
|
-
* Gets the size of a
|
|
86
|
+
* Gets the size of a directory.
|
|
87
87
|
* @public
|
|
88
88
|
* @static
|
|
89
89
|
* @param {string} path The path.
|
|
90
|
-
* @returns {number} The
|
|
90
|
+
* @returns {number} The directory size.
|
|
91
91
|
*/
|
|
92
92
|
static size(path) {
|
|
93
93
|
const { separator } = Path_1.Path;
|
package/IO/File.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Encoding } from './Encoding';
|
|
2
2
|
import type { IResxEntry } from './Resx';
|
|
3
|
-
import type { SymbolicLink } from './
|
|
3
|
+
import type { SymbolicLink } from './SymbolicLink';
|
|
4
4
|
import { type JSONObject } from './Json';
|
|
5
5
|
export declare class File {
|
|
6
6
|
/**
|
|
@@ -27,9 +27,10 @@ export declare class File {
|
|
|
27
27
|
* @static
|
|
28
28
|
* @param {string} path The file to open for reading.
|
|
29
29
|
* @param {Encoding} encoding The encoding applied to the contents of the file.
|
|
30
|
+
* @param {boolean} validateCase Optional. If true, checks casing of the path.
|
|
30
31
|
* @returns {string} A string containing all text in the file.
|
|
31
32
|
*/
|
|
32
|
-
static readAllText(path: string, encoding?: Encoding): string;
|
|
33
|
+
static readAllText(path: string, encoding?: Encoding, validateCase?: boolean): string;
|
|
33
34
|
/**
|
|
34
35
|
* Opens a binary file, reads the contents of the file into a byte array, and then closes the file.
|
|
35
36
|
* @public
|
|
@@ -45,9 +46,10 @@ export declare class File {
|
|
|
45
46
|
* @param {string} path The file to write to.
|
|
46
47
|
* @param {string} contents The string to write to the file.
|
|
47
48
|
* @param {Encoding} encoding The encoding to apply to the string.
|
|
49
|
+
* @param {boolean} validateCase Optional. If true, checks casing of the path.
|
|
48
50
|
* @returns {void}
|
|
49
51
|
*/
|
|
50
|
-
static writeAllText(path: string, contents: string, encoding?: Encoding): void;
|
|
52
|
+
static writeAllText(path: string, contents: string, encoding?: Encoding, validateCase?: boolean): void;
|
|
51
53
|
/**
|
|
52
54
|
* Creates a new file, write the contents to the file, and then closes the file. If the target file already exists, it is overwritten.
|
|
53
55
|
* @public
|
|
@@ -144,5 +146,14 @@ export declare class File {
|
|
|
144
146
|
* @param {SymbolicLink} symbolicLink The type of symbolic should create.
|
|
145
147
|
*/
|
|
146
148
|
static createSymbolicLink(src: string, dest: string, symbolicLink: SymbolicLink): void;
|
|
149
|
+
/**
|
|
150
|
+
* Ensures that a given path exists with exact casing.
|
|
151
|
+
* Throws an error if the casing does not match the file system.
|
|
152
|
+
* @private
|
|
153
|
+
* @static
|
|
154
|
+
* @param {string} inputPath The path to check.
|
|
155
|
+
* @returns {void}
|
|
156
|
+
*/
|
|
157
|
+
private static ensureCaseSensitive;
|
|
147
158
|
}
|
|
148
159
|
//# sourceMappingURL=File.d.ts.map
|
package/IO/File.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"File.d.ts","sourceRoot":"","sources":["../../src/IO/File.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,QAAQ,CAAC;AAI/C,qBAAa,IAAI;IAIb;;;;;;OAMG;WACW,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAO3C;;;;;;;;OAQG;WACW,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,GAAE,OAAe,GAAG,IAAI;IAIlG
|
|
1
|
+
{"version":3,"file":"File.d.ts","sourceRoot":"","sources":["../../src/IO/File.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,QAAQ,CAAC;AAI/C,qBAAa,IAAI;IAIb;;;;;;OAMG;WACW,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAO3C;;;;;;;;OAQG;WACW,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,GAAE,OAAe,GAAG,IAAI;IAIlG;;;;;;;;OAQG;WACW,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,QAAiB,EAAE,YAAY,GAAE,OAAe,GAAG,MAAM;IAe3G;;;;;;OAMG;WACW,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIhD;;;;;;;;;OASG;WACW,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAE,QAAiB,EAAE,YAAY,GAAE,OAAe,GAAG,IAAI;IAsB5H;;;;;;;;OAQG;WACW,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,GAAE,QAAiB,GAAG,IAAI;IAQ1F;;;;;;OAMG;WACW,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOxC;;;;;;;OAOG;WACW,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAMtE;;;;;OAKG;WACW,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IASnD;;;;;OAKG;WACW,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC;IAuB1D;;;;;OAKG;WACW,UAAU,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC;IAmBtD;;;;;;;;OAQG;WACW,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,GAAE,MAAM,GAAG,KAAa,EAAE,QAAQ,GAAE,KAAK,GAAG,QAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;IAcjI;;;;;;;OAOG;WACW,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IAIlE;;;;;;;;OAQG;WACW,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,GAAE,MAAa,GAAG,MAAM;IAiB3E;;;;;;;OAOG;WACW,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAKxC;;;;;;;;OAQG;WACW,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,IAAI;IAU7F;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;CAoBrC"}
|
package/IO/File.js
CHANGED
|
@@ -79,9 +79,13 @@ class File {
|
|
|
79
79
|
* @static
|
|
80
80
|
* @param {string} path The file to open for reading.
|
|
81
81
|
* @param {Encoding} encoding The encoding applied to the contents of the file.
|
|
82
|
+
* @param {boolean} validateCase Optional. If true, checks casing of the path.
|
|
82
83
|
* @returns {string} A string containing all text in the file.
|
|
83
84
|
*/
|
|
84
|
-
static readAllText(path, encoding = 'utf8') {
|
|
85
|
+
static readAllText(path, encoding = 'utf8', validateCase = false) {
|
|
86
|
+
if (validateCase) {
|
|
87
|
+
File.ensureCaseSensitive(path);
|
|
88
|
+
}
|
|
85
89
|
if (fs.existsSync(path)) {
|
|
86
90
|
let content = fs.readFileSync(path, encoding);
|
|
87
91
|
if (content.charCodeAt(0) === 0xFEFF) {
|
|
@@ -108,13 +112,17 @@ class File {
|
|
|
108
112
|
* @param {string} path The file to write to.
|
|
109
113
|
* @param {string} contents The string to write to the file.
|
|
110
114
|
* @param {Encoding} encoding The encoding to apply to the string.
|
|
115
|
+
* @param {boolean} validateCase Optional. If true, checks casing of the path.
|
|
111
116
|
* @returns {void}
|
|
112
117
|
*/
|
|
113
|
-
static writeAllText(path, contents, encoding = 'utf8') {
|
|
118
|
+
static writeAllText(path, contents, encoding = 'utf8', validateCase = false) {
|
|
119
|
+
if (validateCase) {
|
|
120
|
+
File.ensureCaseSensitive(path);
|
|
121
|
+
}
|
|
114
122
|
const dirname = Path_1.Path.getDirectoryName(path);
|
|
115
123
|
if (!fs.existsSync(dirname)) {
|
|
116
124
|
fse.mkdirsSync(dirname);
|
|
117
|
-
File.writeAllText(path, contents);
|
|
125
|
+
File.writeAllText(path, contents, encoding, validateCase);
|
|
118
126
|
}
|
|
119
127
|
else {
|
|
120
128
|
if (fs.existsSync(path)) {
|
|
@@ -319,6 +327,30 @@ class File {
|
|
|
319
327
|
}
|
|
320
328
|
fse.symlinkSync(src, dest, symbolicLink);
|
|
321
329
|
}
|
|
330
|
+
/**
|
|
331
|
+
* Ensures that a given path exists with exact casing.
|
|
332
|
+
* Throws an error if the casing does not match the file system.
|
|
333
|
+
* @private
|
|
334
|
+
* @static
|
|
335
|
+
* @param {string} inputPath The path to check.
|
|
336
|
+
* @returns {void}
|
|
337
|
+
*/
|
|
338
|
+
static ensureCaseSensitive(inputPath) {
|
|
339
|
+
const resolvedPath = Path_1.Path.resolve(inputPath);
|
|
340
|
+
const parts = resolvedPath.split(Path_1.Path.separator).filter(Boolean);
|
|
341
|
+
let current = Path_1.Path.isAbsolute(resolvedPath) ? Path_1.Path.separator : '';
|
|
342
|
+
for (const part of parts) {
|
|
343
|
+
const entries = fs.readdirSync(current || '.', { withFileTypes: true });
|
|
344
|
+
const match = entries.find((entry) => entry.name === part);
|
|
345
|
+
if (!match) {
|
|
346
|
+
const suggestion = entries.map((e) => e.name).find((name) => name.toLowerCase() === part.toLowerCase());
|
|
347
|
+
throw new Error(`Path casing mismatch: expected '${part}' in '${current}', but not found. ${suggestion
|
|
348
|
+
? `Did you mean: '${suggestion}'?`
|
|
349
|
+
: ''}`);
|
|
350
|
+
}
|
|
351
|
+
current = Path_1.Path.combine(current, part);
|
|
352
|
+
}
|
|
353
|
+
}
|
|
322
354
|
}
|
|
323
355
|
exports.File = File;
|
|
324
356
|
//# sourceMappingURL=File.js.map
|
package/IO/File.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"File.js","sourceRoot":"","sources":["../../src/IO/File.ts"],"names":[],"mappings":";AAAA,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAElB,+CAAiC;AACjC,uCAAyB;AACzB,8CAAgC;AAChC,+CAAiC;AACjC,2CAA+C;AAC/C,6CAAoD;AACpD,iDAA8C;AAC9C,2CAAwC;AAExC,iCAA8B;AAG9B,iCAA+C;AAE/C,aAAa;AAEb,MAAa,IAAI;IAEb,kBAAkB;IAElB;;;;;;OAMG;IACI,MAAM,CAAC,MAAM,CAAC,IAAY;QAC7B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAChE,CAAC;QACD,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED;;;;;;;;OAQG;IACI,MAAM,CAAC,IAAI,CAAC,cAAsB,EAAE,YAAoB,EAAE,YAAqB,KAAK;QACvF,GAAG,CAAC,QAAQ,CAAC,cAAc,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;IACzE,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"File.js","sourceRoot":"","sources":["../../src/IO/File.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Path.Test.d.ts","sourceRoot":"","sources":["../../src/IO/Path.Test.ts"],"names":[],"mappings":""}
|
package/IO/Path.Test.js
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// #region Imports
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const vitest_1 = require("vitest");
|
|
5
|
+
const Path_1 = require("./Path");
|
|
6
|
+
// #endregion
|
|
7
|
+
(0, vitest_1.describe)('Path', () => {
|
|
8
|
+
(0, vitest_1.it)('should return the correct path separator', () => {
|
|
9
|
+
(0, vitest_1.expect)(Path_1.Path.separator).toBe(require('path').sep);
|
|
10
|
+
});
|
|
11
|
+
(0, vitest_1.it)('should change the file extension', () => {
|
|
12
|
+
(0, vitest_1.expect)(Path_1.Path.changeExtension('file.txt', '.json')).toBe('file.json');
|
|
13
|
+
(0, vitest_1.expect)(Path_1.Path.changeExtension('file', '.json')).toBe('file.json');
|
|
14
|
+
(0, vitest_1.expect)(Path_1.Path.changeExtension('file.txt', '')).toBe('file');
|
|
15
|
+
(0, vitest_1.expect)(Path_1.Path.changeExtension('', '.json')).toBe('');
|
|
16
|
+
});
|
|
17
|
+
(0, vitest_1.it)('should return the directory name', () => {
|
|
18
|
+
(0, vitest_1.expect)(Path_1.Path.getDirectoryName('/path/to/file.txt')).toBe('/path/to');
|
|
19
|
+
});
|
|
20
|
+
(0, vitest_1.it)('should return an array of directory segments', () => {
|
|
21
|
+
(0, vitest_1.expect)(Path_1.Path.getDirectorySegments('/path/to/file.txt')).toEqual(['', 'path', 'to']);
|
|
22
|
+
});
|
|
23
|
+
(0, vitest_1.it)('should return the file name with extension', () => {
|
|
24
|
+
(0, vitest_1.expect)(Path_1.Path.getFileName('/path/to/file.txt')).toBe('file.txt');
|
|
25
|
+
});
|
|
26
|
+
(0, vitest_1.it)('should return the file name without extension', () => {
|
|
27
|
+
(0, vitest_1.expect)(Path_1.Path.getFileNameWithoutExtension('/path/to/file.txt')).toBe('file');
|
|
28
|
+
});
|
|
29
|
+
(0, vitest_1.it)('should return the file extension', () => {
|
|
30
|
+
(0, vitest_1.expect)(Path_1.Path.getExtension('file.txt')).toBe('txt');
|
|
31
|
+
(0, vitest_1.expect)(Path_1.Path.getExtension('file.txt', true)).toBe('.txt');
|
|
32
|
+
});
|
|
33
|
+
(0, vitest_1.it)('should return a random alphanumeric file name', () => {
|
|
34
|
+
const fileName = Path_1.Path.getRandomFileName(true);
|
|
35
|
+
(0, vitest_1.expect)(fileName).toMatch(/^[a-zA-Z0-9]+$/);
|
|
36
|
+
(0, vitest_1.expect)(fileName.length).toBe(8);
|
|
37
|
+
});
|
|
38
|
+
(0, vitest_1.it)('should return a random file name with special characters', () => {
|
|
39
|
+
const fileName = Path_1.Path.getRandomFileName();
|
|
40
|
+
(0, vitest_1.expect)(fileName).not.toMatch(/[\s]/);
|
|
41
|
+
(0, vitest_1.expect)(fileName.length).toBe(8);
|
|
42
|
+
});
|
|
43
|
+
(0, vitest_1.it)('should combine paths', () => {
|
|
44
|
+
(0, vitest_1.expect)(Path_1.Path.combine('/path', 'to', 'file.txt')).toBe(require('path').join('/path', 'to', 'file.txt'));
|
|
45
|
+
});
|
|
46
|
+
(0, vitest_1.it)('should normalize a path with backslashes', () => {
|
|
47
|
+
(0, vitest_1.expect)(Path_1.Path.normalize('\\path\\to\\file')).toBe('/path/to/file');
|
|
48
|
+
(0, vitest_1.expect)(Path_1.Path.normalize('/path/to/file/')).toBe('/path/to/file');
|
|
49
|
+
(0, vitest_1.expect)(Path_1.Path.normalize('/path/to/file/', false)).toBe('/path/to/file/');
|
|
50
|
+
});
|
|
51
|
+
(0, vitest_1.it)('should resolve paths', () => {
|
|
52
|
+
(0, vitest_1.expect)(Path_1.Path.resolve('/path', './to')).toBe(require('path').resolve('/path', './to'));
|
|
53
|
+
});
|
|
54
|
+
(0, vitest_1.it)('should determine if a path is absolute', () => {
|
|
55
|
+
(0, vitest_1.expect)(Path_1.Path.isAbsolute('/absolute/path')).toBe(true);
|
|
56
|
+
(0, vitest_1.expect)(Path_1.Path.isAbsolute('relative/path')).toBe(false);
|
|
57
|
+
});
|
|
58
|
+
(0, vitest_1.it)('should return matching paths for a glob pattern', () => {
|
|
59
|
+
const mockGlob = {
|
|
60
|
+
matchSync: vitest_1.vi.fn(() => [{ path: '/path/to/file.txt' }])
|
|
61
|
+
};
|
|
62
|
+
vitest_1.vi.spyOn(require('./Glob'), 'Glob').mockReturnValue(mockGlob);
|
|
63
|
+
const result = Path_1.Path.glob('/path/**/*.txt');
|
|
64
|
+
(0, vitest_1.expect)(result).toEqual(['/path/to/file.txt']);
|
|
65
|
+
});
|
|
66
|
+
(0, vitest_1.it)('should calculate the relative path between two paths', () => {
|
|
67
|
+
const from = '/data/orandea/test/aaa';
|
|
68
|
+
const to = '/data/orandea/impl/bbb';
|
|
69
|
+
(0, vitest_1.expect)(Path_1.Path.relative(from, to)).toBe('../../impl/bbb');
|
|
70
|
+
});
|
|
71
|
+
(0, vitest_1.it)('should calculate the relative path between two paths', () => {
|
|
72
|
+
const from = '/data/orandea/test';
|
|
73
|
+
const to = '/data/orandea/test/file.ts';
|
|
74
|
+
(0, vitest_1.expect)(Path_1.Path.relative(from, to)).toBe('file.ts');
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
//# sourceMappingURL=Path.Test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Path.Test.js","sourceRoot":"","sources":["../../src/IO/Path.Test.ts"],"names":[],"mappings":"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"}
|
package/IO/Path.d.ts
CHANGED
|
@@ -12,8 +12,8 @@ export declare class Path {
|
|
|
12
12
|
* @public
|
|
13
13
|
* @static
|
|
14
14
|
* @param {string} path The path
|
|
15
|
-
* @param {string} extension The
|
|
16
|
-
* @returns {string} The function returns a file path with the same root, directory, and base name parts as path, but with the file extension changed to the specified extension. If path is null, the function returns null. If path does not contain a file extension, the new file extension is appended to the path. If extension is null, any
|
|
15
|
+
* @param {string} extension The extension
|
|
16
|
+
* @returns {string} The function returns a file path with the same root, directory, and base name parts as path, but with the file extension changed to the specified extension. If path is null, the function returns null. If path does not contain a file extension, the new file extension is appended to the path. If extension is null, any existing extension is removed from path.
|
|
17
17
|
*/
|
|
18
18
|
static changeExtension(path: string, extension: string): string;
|
|
19
19
|
/**
|
package/IO/Path.js
CHANGED
|
@@ -58,8 +58,8 @@ class Path {
|
|
|
58
58
|
* @public
|
|
59
59
|
* @static
|
|
60
60
|
* @param {string} path The path
|
|
61
|
-
* @param {string} extension The
|
|
62
|
-
* @returns {string} The function returns a file path with the same root, directory, and base name parts as path, but with the file extension changed to the specified extension. If path is null, the function returns null. If path does not contain a file extension, the new file extension is appended to the path. If extension is null, any
|
|
61
|
+
* @param {string} extension The extension
|
|
62
|
+
* @returns {string} The function returns a file path with the same root, directory, and base name parts as path, but with the file extension changed to the specified extension. If path is null, the function returns null. If path does not contain a file extension, the new file extension is appended to the path. If extension is null, any existing extension is removed from path.
|
|
63
63
|
*/
|
|
64
64
|
static changeExtension(path, extension) {
|
|
65
65
|
if (path) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SymbolicLink.d.ts","sourceRoot":"","sources":["../../src/IO/SymbolicLink.ts"],"names":[],"mappings":"AAAA,oBAAY,YAAY;IACpB,IAAI,SAAS;IACb,SAAS,QAAQ;IACjB,QAAQ,aAAa;CACxB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SymbolicLink = void 0;
|
|
4
|
+
var SymbolicLink;
|
|
5
|
+
(function (SymbolicLink) {
|
|
6
|
+
SymbolicLink["File"] = "file";
|
|
7
|
+
SymbolicLink["Directory"] = "dir";
|
|
8
|
+
SymbolicLink["Junction"] = "junction";
|
|
9
|
+
})(SymbolicLink || (exports.SymbolicLink = SymbolicLink = {}));
|
|
10
|
+
//# sourceMappingURL=SymbolicLink.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SymbolicLink.js","sourceRoot":"","sources":["../../src/IO/SymbolicLink.ts"],"names":[],"mappings":";;;AAAA,IAAY,YAIX;AAJD,WAAY,YAAY;IACpB,6BAAa,CAAA;IACb,iCAAiB,CAAA;IACjB,qCAAqB,CAAA;AACzB,CAAC,EAJW,YAAY,4BAAZ,YAAY,QAIvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoggerUtils.Test.d.ts","sourceRoot":"","sources":["../../src/Logging/LoggerUtils.Test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const LoggerUtils_1 = require("./LoggerUtils");
|
|
5
|
+
const Logger_1 = require("./Logger");
|
|
6
|
+
const String_1 = require("../System/String");
|
|
7
|
+
(0, vitest_1.describe)('LoggerUtils', () => {
|
|
8
|
+
const mockLogger = {
|
|
9
|
+
logInfo: vitest_1.vi.fn(),
|
|
10
|
+
logError: vitest_1.vi.fn(),
|
|
11
|
+
logWarning: vitest_1.vi.fn(),
|
|
12
|
+
logNeutral: vitest_1.vi.fn()
|
|
13
|
+
};
|
|
14
|
+
(0, vitest_1.beforeAll)(() => {
|
|
15
|
+
vitest_1.vi.spyOn(Logger_1.Logger, 'instance').mockReturnValue(mockLogger);
|
|
16
|
+
});
|
|
17
|
+
(0, vitest_1.beforeEach)(() => {
|
|
18
|
+
vitest_1.vi.clearAllMocks();
|
|
19
|
+
});
|
|
20
|
+
(0, vitest_1.it)('should log a formatted header', () => {
|
|
21
|
+
const title = 'Test Header';
|
|
22
|
+
LoggerUtils_1.LoggerUtils.logHeader(title);
|
|
23
|
+
(0, vitest_1.expect)(mockLogger.logInfo).toHaveBeenCalledWith(vitest_1.expect.stringContaining(title), { color: 'magenta' });
|
|
24
|
+
});
|
|
25
|
+
(0, vitest_1.it)('should log a footer', () => {
|
|
26
|
+
LoggerUtils_1.LoggerUtils.logFooter();
|
|
27
|
+
(0, vitest_1.expect)(mockLogger.logInfo).toHaveBeenCalledWith(vitest_1.expect.stringContaining('-'.repeat(80)), { color: 'magenta' });
|
|
28
|
+
});
|
|
29
|
+
(0, vitest_1.it)('should log a summary with errors, warnings, and success messages', () => {
|
|
30
|
+
LoggerUtils_1.LoggerUtils.logSummary({
|
|
31
|
+
error: ['2 errors found', true],
|
|
32
|
+
success: ['All tests passed', true],
|
|
33
|
+
waring: ['1 warning found', true]
|
|
34
|
+
});
|
|
35
|
+
(0, vitest_1.expect)(mockLogger.logInfo).toHaveBeenCalledWith('Summary', { color: 'magenta' });
|
|
36
|
+
(0, vitest_1.expect)(mockLogger.logError).toHaveBeenCalledWith(' - Errors: 2 errors found', { color: 'red' });
|
|
37
|
+
(0, vitest_1.expect)(mockLogger.logWarning).toHaveBeenCalledWith(' - Warnings: 1 warning found', { color: 'yellow' });
|
|
38
|
+
(0, vitest_1.expect)(mockLogger.logInfo).toHaveBeenCalledWith(' - Success: All tests passed', { color: 'green' });
|
|
39
|
+
});
|
|
40
|
+
(0, vitest_1.it)('should log only success if no errors or warnings are present', () => {
|
|
41
|
+
LoggerUtils_1.LoggerUtils.logSummary({
|
|
42
|
+
success: ['Everything is great', true]
|
|
43
|
+
});
|
|
44
|
+
(0, vitest_1.expect)(mockLogger.logInfo).toHaveBeenCalledWith('Summary', { color: 'magenta' });
|
|
45
|
+
(0, vitest_1.expect)(mockLogger.logInfo).toHaveBeenCalledWith(' - Success: Everything is great', { color: 'green' });
|
|
46
|
+
(0, vitest_1.expect)(mockLogger.logError).not.toHaveBeenCalled();
|
|
47
|
+
(0, vitest_1.expect)(mockLogger.logWarning).not.toHaveBeenCalled();
|
|
48
|
+
});
|
|
49
|
+
(0, vitest_1.it)('should log a tree structure', () => {
|
|
50
|
+
const tree = [
|
|
51
|
+
{
|
|
52
|
+
label: 'Node 1',
|
|
53
|
+
nodes: [{ label: 'Child 1' }, { label: 'Child 2' }]
|
|
54
|
+
},
|
|
55
|
+
{ label: 'Node 2' }
|
|
56
|
+
];
|
|
57
|
+
LoggerUtils_1.LoggerUtils.logTree('Root', tree);
|
|
58
|
+
(0, vitest_1.expect)(mockLogger.logNeutral).toHaveBeenCalledWith('Root', undefined);
|
|
59
|
+
(0, vitest_1.expect)(mockLogger.logNeutral).toHaveBeenCalledWith(' └─ Node 1', vitest_1.expect.anything());
|
|
60
|
+
(0, vitest_1.expect)(mockLogger.logNeutral).toHaveBeenCalledWith(' └─ Child 1', vitest_1.expect.anything());
|
|
61
|
+
(0, vitest_1.expect)(mockLogger.logNeutral).toHaveBeenCalledWith(' └─ Child 2', vitest_1.expect.anything());
|
|
62
|
+
(0, vitest_1.expect)(mockLogger.logNeutral).toHaveBeenCalledWith(' └─ Node 2', vitest_1.expect.anything());
|
|
63
|
+
});
|
|
64
|
+
(0, vitest_1.it)('should log an empty line', () => {
|
|
65
|
+
LoggerUtils_1.LoggerUtils.logEmpty();
|
|
66
|
+
(0, vitest_1.expect)(mockLogger.logNeutral).toHaveBeenCalledWith(String_1.StringExtensions.newLine, { noNewLine: false });
|
|
67
|
+
});
|
|
68
|
+
(0, vitest_1.it)('should log a key-value pair', () => {
|
|
69
|
+
LoggerUtils_1.LoggerUtils.logPair('Key', 'Value');
|
|
70
|
+
(0, vitest_1.expect)(mockLogger.logNeutral).toHaveBeenCalledWith(' ┌─ Key', undefined);
|
|
71
|
+
(0, vitest_1.expect)(mockLogger.logNeutral).toHaveBeenCalledWith(' └─ Value', undefined);
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
//# sourceMappingURL=LoggerUtils.Test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoggerUtils.Test.js","sourceRoot":"","sources":["../../src/Logging/LoggerUtils.Test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@breadstone-infrastructure/utilities",
|
|
3
3
|
"description": "Common utility classes and functions",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.33",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "andre.wehlert <awehlert@breadstone.de> (https://www.breadstone.de)",
|
|
7
7
|
"repository": {
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"dependencies": {
|
|
16
16
|
"argparse": "^2.0.1",
|
|
17
17
|
"dir-glob": "^3.0.1",
|
|
18
|
-
"es-toolkit": "^1.
|
|
18
|
+
"es-toolkit": "^1.39.3",
|
|
19
19
|
"fast-glob": "^3.3.3",
|
|
20
20
|
"fs-extra": "^11.3.0",
|
|
21
21
|
"jsonc-parser": "^3.3.1",
|