@design-edito/tools 0.1.36 → 0.1.38
Sign up to get free protection for your applications and to get access to all the features.
- package/agnostic/css/index.js +11 -11
- package/agnostic/errors/index.js +2 -2
- package/agnostic/html/hyper-json/cast/index.js +2 -2
- package/agnostic/html/hyper-json/index.js +3 -3
- package/agnostic/html/hyper-json/transformers/append/index.js +2 -2
- package/agnostic/html/hyper-json/transformers/classList/index.js +2 -2
- package/agnostic/html/hyper-json/transformers/index.js +2 -2
- package/agnostic/html/hyper-json/transformers/join/index.js +2 -2
- package/agnostic/html/hyper-json/transformers/length/index.js +2 -2
- package/agnostic/html/hyper-json/transformers/print/index.js +2 -2
- package/agnostic/html/hyper-json/transformers/push/index.js +2 -2
- package/agnostic/html/hyper-json/transformers/querySelector/index.js +2 -2
- package/agnostic/html/hyper-json/transformers/ref/index.js +2 -2
- package/agnostic/html/hyper-json/transformers/replace/index.js +2 -2
- package/agnostic/html/hyper-json/transformers/split/index.js +2 -2
- package/agnostic/html/hyper-json/transformers/toArray/index.js +2 -2
- package/agnostic/html/hyper-json/transformers/toBoolean/index.js +2 -2
- package/agnostic/html/hyper-json/transformers/toElement/index.js +2 -2
- package/agnostic/html/hyper-json/transformers/toNodeList/index.js +2 -2
- package/agnostic/html/hyper-json/transformers/toNull/index.js +2 -2
- package/agnostic/html/hyper-json/transformers/toNumber/index.js +2 -2
- package/agnostic/html/hyper-json/transformers/toRecord/index.js +2 -2
- package/agnostic/html/hyper-json/transformers/toRef/index.js +2 -2
- package/agnostic/html/hyper-json/transformers/toString/index.js +2 -2
- package/agnostic/html/hyper-json/transformers/toText/index.js +2 -2
- package/agnostic/html/hyper-json/transformers/toTransformer/index.js +2 -2
- package/agnostic/html/hyper-json/transformers/transformSelected/index.js +2 -2
- package/agnostic/html/hyper-json/transformers/trim/index.js +2 -2
- package/agnostic/html/hyper-json/tree/index.js +2 -2
- package/agnostic/html/hyper-json/utils/index.js +2 -2
- package/agnostic/html/index.js +17 -17
- package/agnostic/html/replace-in-element/index.d.ts +1 -1
- package/agnostic/html/replace-in-element/index.js +1 -1
- package/agnostic/html/sanitize/index.js +6 -6
- package/agnostic/html/selector-to-element/index.js +6 -6
- package/agnostic/html/string-to-nodes/index.js +7 -7
- package/agnostic/misc/crossenv/index.js +2 -2
- package/agnostic/misc/elo/index.d.ts +31 -0
- package/agnostic/misc/elo/index.js +32 -0
- package/agnostic/misc/index.js +8 -8
- package/agnostic/misc/logs/index.js +2 -2
- package/agnostic/misc/logs/logger/index.d.ts +3 -0
- package/agnostic/misc/logs/logger/index.js +1 -1
- package/agnostic/misc/lorem-ipsum/index.js +4 -4
- package/agnostic/numbers/index.js +3 -3
- package/agnostic/objects/index.js +7 -7
- package/agnostic/optim/index.js +3 -3
- package/agnostic/random/index.js +2 -2
- package/agnostic/regexps/index.d.ts +1 -0
- package/agnostic/regexps/index.js +1 -0
- package/agnostic/strings/index.js +6 -6
- package/agnostic/time/index.js +3 -3
- package/chunks/chunk-6JRUZYTL.js +211 -0
- package/chunks/chunk-7YW5HL6N.js +168 -0
- package/chunks/chunk-BPOJYE4X.js +1108 -0
- package/chunks/chunk-DCKTGQOX.js +29 -0
- package/chunks/chunk-MJQF3YZO.js +21 -0
- package/chunks/chunk-R57V5HA7.js +211 -0
- package/chunks/chunk-RASMASS4.js +111 -0
- package/chunks/chunk-TLTLM47Y.js +27 -0
- package/chunks/chunk-XWLQR4UY.js +25 -0
- package/node/files/index.js +3 -3
- package/package.json +1 -1
@@ -0,0 +1,29 @@
|
|
1
|
+
import {
|
2
|
+
randomHash,
|
3
|
+
randomHashPattern,
|
4
|
+
randomUUID
|
5
|
+
} from "./chunk-75BICI4L.js";
|
6
|
+
import {
|
7
|
+
random,
|
8
|
+
randomInt
|
9
|
+
} from "./chunk-D3ERTRDW.js";
|
10
|
+
import {
|
11
|
+
hexChars,
|
12
|
+
randomHexChar
|
13
|
+
} from "./chunk-OGBUSUE6.js";
|
14
|
+
|
15
|
+
// src/agnostic/random/index.ts
|
16
|
+
var Random;
|
17
|
+
((Random2) => {
|
18
|
+
Random2.random = random;
|
19
|
+
Random2.randomInt = randomInt;
|
20
|
+
Random2.hexChars = hexChars;
|
21
|
+
Random2.randomHexChar = randomHexChar;
|
22
|
+
Random2.randomHash = randomHash;
|
23
|
+
Random2.randomHashPattern = randomHashPattern;
|
24
|
+
Random2.randomUUID = randomUUID;
|
25
|
+
})(Random || (Random = {}));
|
26
|
+
|
27
|
+
export {
|
28
|
+
Random
|
29
|
+
};
|
@@ -0,0 +1,21 @@
|
|
1
|
+
import {
|
2
|
+
Logger
|
3
|
+
} from "./chunk-RASMASS4.js";
|
4
|
+
import {
|
5
|
+
styles
|
6
|
+
} from "./chunk-L3OCRR3V.js";
|
7
|
+
import {
|
8
|
+
makeTextBlock
|
9
|
+
} from "./chunk-H4PP6AHP.js";
|
10
|
+
|
11
|
+
// src/agnostic/misc/logs/index.ts
|
12
|
+
var Logs;
|
13
|
+
((Logs2) => {
|
14
|
+
Logs2.makeTextBlock = makeTextBlock;
|
15
|
+
Logs2.styles = styles;
|
16
|
+
Logs2.Logger = Logger;
|
17
|
+
})(Logs || (Logs = {}));
|
18
|
+
|
19
|
+
export {
|
20
|
+
Logs
|
21
|
+
};
|
@@ -0,0 +1,211 @@
|
|
1
|
+
import {
|
2
|
+
make
|
3
|
+
} from "./chunk-RLAZR3NL.js";
|
4
|
+
import {
|
5
|
+
isArrayOf
|
6
|
+
} from "./chunk-6RGDWX4A.js";
|
7
|
+
import {
|
8
|
+
RANDOM_PICK_ERR_SYMBOL,
|
9
|
+
randomPick
|
10
|
+
} from "./chunk-FCU6IHKD.js";
|
11
|
+
import {
|
12
|
+
Random
|
13
|
+
} from "./chunk-S32K7POB.js";
|
14
|
+
import {
|
15
|
+
findDuplicates
|
16
|
+
} from "./chunk-YS6WMSWC.js";
|
17
|
+
|
18
|
+
// src/agnostic/arrays/index.tsx
|
19
|
+
var Arrays;
|
20
|
+
((Arrays2) => {
|
21
|
+
Arrays2.findDuplicates = findDuplicates;
|
22
|
+
Arrays2.isArrayOf = isArrayOf;
|
23
|
+
Arrays2.make = make;
|
24
|
+
Arrays2.RANDOM_PICK_ERR_SYMBOL = RANDOM_PICK_ERR_SYMBOL;
|
25
|
+
Arrays2.randomPick = randomPick;
|
26
|
+
})(Arrays || (Arrays = {}));
|
27
|
+
|
28
|
+
// src/agnostic/misc/lorem-ipsum/index.ts
|
29
|
+
var LoremIpsum;
|
30
|
+
((LoremIpsum2) => {
|
31
|
+
LoremIpsum2.words = [
|
32
|
+
"a",
|
33
|
+
"ac",
|
34
|
+
"accumsan",
|
35
|
+
"adipiscing",
|
36
|
+
"aenean",
|
37
|
+
"aliquam",
|
38
|
+
"aliquet",
|
39
|
+
"amet",
|
40
|
+
"ante",
|
41
|
+
"arcu",
|
42
|
+
"at",
|
43
|
+
"auctor",
|
44
|
+
"augue",
|
45
|
+
"bibendum",
|
46
|
+
"blandit",
|
47
|
+
"condimentum",
|
48
|
+
"consectetur",
|
49
|
+
"consequat",
|
50
|
+
"convallis",
|
51
|
+
"cras",
|
52
|
+
"curabitur",
|
53
|
+
"cursus",
|
54
|
+
"dapibus",
|
55
|
+
"diam",
|
56
|
+
"dictum",
|
57
|
+
"dictumst",
|
58
|
+
"dignissim",
|
59
|
+
"dolor",
|
60
|
+
"donec",
|
61
|
+
"dui",
|
62
|
+
"duis",
|
63
|
+
"efficitur",
|
64
|
+
"egestas",
|
65
|
+
"eget",
|
66
|
+
"eleifend",
|
67
|
+
"elementum",
|
68
|
+
"elit",
|
69
|
+
"enim",
|
70
|
+
"erat",
|
71
|
+
"eros",
|
72
|
+
"est",
|
73
|
+
"et",
|
74
|
+
"eu",
|
75
|
+
"euismod",
|
76
|
+
"ex",
|
77
|
+
"facilisis",
|
78
|
+
"faucibus",
|
79
|
+
"felis",
|
80
|
+
"feugiat",
|
81
|
+
"finibus",
|
82
|
+
"fringilla",
|
83
|
+
"fusce",
|
84
|
+
"gravida",
|
85
|
+
"habitasse",
|
86
|
+
"hac",
|
87
|
+
"hendrerit",
|
88
|
+
"iaculis",
|
89
|
+
"id",
|
90
|
+
"imperdiet",
|
91
|
+
"in",
|
92
|
+
"integer",
|
93
|
+
"interdum",
|
94
|
+
"ipsum",
|
95
|
+
"justo",
|
96
|
+
"lacinia",
|
97
|
+
"lacus",
|
98
|
+
"laoreet",
|
99
|
+
"lectus",
|
100
|
+
"leo",
|
101
|
+
"libero",
|
102
|
+
"ligula",
|
103
|
+
"lobortis",
|
104
|
+
"lorem",
|
105
|
+
"luctus",
|
106
|
+
"maecenas",
|
107
|
+
"magna",
|
108
|
+
"malesuada",
|
109
|
+
"massa",
|
110
|
+
"mattis",
|
111
|
+
"mauris",
|
112
|
+
"maximus",
|
113
|
+
"metus",
|
114
|
+
"mi",
|
115
|
+
"molestie",
|
116
|
+
"mollis",
|
117
|
+
"morbi",
|
118
|
+
"nam",
|
119
|
+
"nec",
|
120
|
+
"neque",
|
121
|
+
"nibh",
|
122
|
+
"nisi",
|
123
|
+
"nisl",
|
124
|
+
"non",
|
125
|
+
"nulla",
|
126
|
+
"nullam",
|
127
|
+
"nunc",
|
128
|
+
"odio",
|
129
|
+
"orci",
|
130
|
+
"ornare",
|
131
|
+
"pellentesque",
|
132
|
+
"pharetra",
|
133
|
+
"phasellus",
|
134
|
+
"placerat",
|
135
|
+
"platea",
|
136
|
+
"porta",
|
137
|
+
"porttitor",
|
138
|
+
"posuere",
|
139
|
+
"praesent",
|
140
|
+
"pulvinar",
|
141
|
+
"purus",
|
142
|
+
"quam",
|
143
|
+
"quis",
|
144
|
+
"quisque",
|
145
|
+
"risus",
|
146
|
+
"rutrum",
|
147
|
+
"sagittis",
|
148
|
+
"sapien",
|
149
|
+
"sed",
|
150
|
+
"sem",
|
151
|
+
"semper",
|
152
|
+
"sit",
|
153
|
+
"sodales",
|
154
|
+
"sollicitudin",
|
155
|
+
"suscipit",
|
156
|
+
"suspendisse",
|
157
|
+
"tellus",
|
158
|
+
"tempor",
|
159
|
+
"tempus",
|
160
|
+
"tincidunt",
|
161
|
+
"tortor",
|
162
|
+
"tristique",
|
163
|
+
"turpis",
|
164
|
+
"ultrices",
|
165
|
+
"ultricies",
|
166
|
+
"urna",
|
167
|
+
"ut",
|
168
|
+
"vehicula",
|
169
|
+
"vel",
|
170
|
+
"velit",
|
171
|
+
"venenatis",
|
172
|
+
"vestibulum",
|
173
|
+
"vitae",
|
174
|
+
"vivamus",
|
175
|
+
"viverra",
|
176
|
+
"volutpat",
|
177
|
+
"vulputate"
|
178
|
+
];
|
179
|
+
LoremIpsum2.generateSentence = (wordCount) => {
|
180
|
+
const resultArr = [];
|
181
|
+
let currentWordCound = wordCount;
|
182
|
+
for (let i = 0; i < currentWordCound; i++) {
|
183
|
+
const picked = Arrays.randomPick(LoremIpsum2.words);
|
184
|
+
if (typeof picked === "string") resultArr.push(picked);
|
185
|
+
else {
|
186
|
+
currentWordCound += 1;
|
187
|
+
}
|
188
|
+
}
|
189
|
+
const [firstWord, ...otherWords] = resultArr;
|
190
|
+
if (firstWord === void 0) return "";
|
191
|
+
const capFirstLetter = firstWord?.charAt(0).toUpperCase();
|
192
|
+
const restOfFirstWord = firstWord?.slice(1);
|
193
|
+
const sentence = [
|
194
|
+
`${capFirstLetter}${restOfFirstWord}`,
|
195
|
+
...otherWords
|
196
|
+
].join(" ");
|
197
|
+
return `${sentence}.`;
|
198
|
+
};
|
199
|
+
LoremIpsum2.generateSentences = (sentencesCount, maxSentenceLength = 12, minSentenceLength = 4) => {
|
200
|
+
const sentences = [];
|
201
|
+
for (let i = 0; i < sentencesCount; i++) {
|
202
|
+
const length = Random.randomInt(maxSentenceLength, minSentenceLength) ?? 8;
|
203
|
+
sentences.push((0, LoremIpsum2.generateSentence)(length));
|
204
|
+
}
|
205
|
+
return sentences;
|
206
|
+
};
|
207
|
+
})(LoremIpsum || (LoremIpsum = {}));
|
208
|
+
|
209
|
+
export {
|
210
|
+
LoremIpsum
|
211
|
+
};
|
@@ -0,0 +1,111 @@
|
|
1
|
+
// src/agnostic/misc/logs/logger/index.ts
|
2
|
+
var logsTimeOrigin = /* @__PURE__ */ new Date();
|
3
|
+
var Log = class {
|
4
|
+
type;
|
5
|
+
data;
|
6
|
+
time;
|
7
|
+
stack;
|
8
|
+
constructor(type, data) {
|
9
|
+
this.type = type;
|
10
|
+
this.data = data;
|
11
|
+
this.time = /* @__PURE__ */ new Date();
|
12
|
+
this.stack = new Error().stack ?? "";
|
13
|
+
}
|
14
|
+
get displayTime() {
|
15
|
+
return this.time.toLocaleDateString("en-US", {
|
16
|
+
year: "numeric",
|
17
|
+
month: "short",
|
18
|
+
day: "numeric",
|
19
|
+
weekday: "short",
|
20
|
+
hour: "numeric",
|
21
|
+
minute: "numeric",
|
22
|
+
second: "numeric"
|
23
|
+
}) + `:${this.time.getMilliseconds()}`;
|
24
|
+
}
|
25
|
+
get elapsedTimeMs() {
|
26
|
+
return (this.time.getTime() - logsTimeOrigin.getTime()) / 1e3;
|
27
|
+
}
|
28
|
+
get displayStack() {
|
29
|
+
return this.stack.split("\n").map((line) => line.trim()).slice(4).join("\n");
|
30
|
+
}
|
31
|
+
};
|
32
|
+
var Logger = class {
|
33
|
+
_private_threads = /* @__PURE__ */ new Map();
|
34
|
+
constructor() {
|
35
|
+
this.dir = this.dir.bind(this);
|
36
|
+
this.error = this.error.bind(this);
|
37
|
+
this.group = this.group.bind(this);
|
38
|
+
this.groupEnd = this.groupEnd.bind(this);
|
39
|
+
this.log = this.log.bind(this);
|
40
|
+
this.table = this.table.bind(this);
|
41
|
+
this.warn = this.warn.bind(this);
|
42
|
+
this.setLog = this.setLog.bind(this);
|
43
|
+
this.print = this.print.bind(this);
|
44
|
+
this.printThreads = this.printThreads.bind(this);
|
45
|
+
}
|
46
|
+
// assert (thread: string = '', ...args: ConsoleMethodsParams['assert']) { this.setLog(thread, 'assert', args) }
|
47
|
+
// count (thread: string = '', ...args: ConsoleMethodsParams['count']) { this.setLog(thread, 'count', args) }
|
48
|
+
// countReset (thread: string = '', ...args: ConsoleMethodsParams['countReset']) { this.setLog(thread, 'countReset', args) }
|
49
|
+
// debug (thread: string = '', ...args: ConsoleMethodsParams['debug']) { this.setLog(thread, 'debug', args) }
|
50
|
+
dir(thread = "", ...args) {
|
51
|
+
this.setLog(thread, "dir", args);
|
52
|
+
}
|
53
|
+
// dirxml (thread: string = '', ...args: ConsoleMethodsParams['dirxml']) { this.setLog(thread, 'dirxml', args) }
|
54
|
+
error(thread = "", ...args) {
|
55
|
+
this.setLog(thread, "error", args);
|
56
|
+
}
|
57
|
+
group(thread = "", ...args) {
|
58
|
+
this.setLog(thread, "group", args);
|
59
|
+
}
|
60
|
+
// groupCollapsed (thread: string = '', ...args: ConsoleMethodsParams['groupCollapsed']) { this.setLog(thread, 'groupCollapsed', args) }
|
61
|
+
groupEnd(thread = "", ...args) {
|
62
|
+
this.setLog(thread, "groupEnd", args);
|
63
|
+
}
|
64
|
+
// info (thread: string = '', ...args: ConsoleMethodsParams['info']) { this.setLog(thread, 'info', args) }
|
65
|
+
log(thread = "", ...args) {
|
66
|
+
this.setLog(thread, "log", args);
|
67
|
+
}
|
68
|
+
table(thread = "", ...args) {
|
69
|
+
this.setLog(thread, "table", args);
|
70
|
+
}
|
71
|
+
// time (thread: string = '', ...args: ConsoleMethodsParams['time']) { this.setLog(thread, 'time', args) }
|
72
|
+
// timeEnd (thread: string = '', ...args: ConsoleMethodsParams['timeEnd']) { this.setLog(thread, 'timeEnd', args) }
|
73
|
+
// trace (thread: string = '', ...args: ConsoleMethodsParams['trace']) { this.setLog(thread, 'trace', args) }
|
74
|
+
warn(thread = "", ...args) {
|
75
|
+
this.setLog(thread, "warn", args);
|
76
|
+
}
|
77
|
+
setLog(threadName, type, data) {
|
78
|
+
const log = new Log(type, data);
|
79
|
+
const thread = this._private_threads.get(threadName) ?? [];
|
80
|
+
this._private_threads.set(threadName, [...thread, log]);
|
81
|
+
return this;
|
82
|
+
}
|
83
|
+
print(threadFilter, withStack) {
|
84
|
+
const allLogs = Array.from(this._private_threads.entries()).map(([threadName, logs]) => logs.map((log) => ({ threadName, log }))).flat().sort((eltA, eltB) => eltA.log.time.getTime() - eltB.log.time.getTime()).filter(({ threadName }) => {
|
85
|
+
if (threadFilter === void 0) return true;
|
86
|
+
return threadName === threadFilter;
|
87
|
+
});
|
88
|
+
allLogs.forEach(({ threadName, log }) => {
|
89
|
+
console.log(`%c${threadName}`, "font-weight: 800; color: white; background: black; padding: 4px;", `+${log.elapsedTimeMs}s \u2013`, log.displayTime);
|
90
|
+
if (withStack === true) console.log(`%c${log.displayStack}`, "color: grey; font-size: inherit;");
|
91
|
+
console[log.type](...log.data);
|
92
|
+
console.log("");
|
93
|
+
});
|
94
|
+
}
|
95
|
+
printThreads(withStack) {
|
96
|
+
Array.from(this._private_threads.entries()).forEach(([threadName, logs]) => {
|
97
|
+
console.group(`%c${threadName}`, "font-weight: 800; color: white; background: black; padding: 4px;");
|
98
|
+
logs.forEach((log) => {
|
99
|
+
console.log(`+${log.elapsedTimeMs}s \u2013`, log.displayTime);
|
100
|
+
if (withStack === true) console.log(`%c${log.displayStack}`, "color: grey; font-size: inherit;");
|
101
|
+
console[log.type](...log.data);
|
102
|
+
console.log("");
|
103
|
+
});
|
104
|
+
console.groupEnd();
|
105
|
+
});
|
106
|
+
}
|
107
|
+
};
|
108
|
+
|
109
|
+
export {
|
110
|
+
Logger
|
111
|
+
};
|
@@ -0,0 +1,27 @@
|
|
1
|
+
import {
|
2
|
+
Cast,
|
3
|
+
Transformers,
|
4
|
+
Tree,
|
5
|
+
Utils
|
6
|
+
} from "./chunk-BPOJYE4X.js";
|
7
|
+
import {
|
8
|
+
Serialize
|
9
|
+
} from "./chunk-ZCPGE7H7.js";
|
10
|
+
import {
|
11
|
+
Types
|
12
|
+
} from "./chunk-5GI5G45R.js";
|
13
|
+
|
14
|
+
// src/agnostic/html/hyper-json/index.ts
|
15
|
+
var HyperJson;
|
16
|
+
((HyperJson2) => {
|
17
|
+
HyperJson2.Cast = Cast;
|
18
|
+
HyperJson2.Serialize = Serialize;
|
19
|
+
HyperJson2.Transformers = Transformers;
|
20
|
+
HyperJson2.Tree = Tree;
|
21
|
+
HyperJson2.Types = Types;
|
22
|
+
HyperJson2.Utils = Utils;
|
23
|
+
})(HyperJson || (HyperJson = {}));
|
24
|
+
|
25
|
+
export {
|
26
|
+
HyperJson
|
27
|
+
};
|
@@ -0,0 +1,25 @@
|
|
1
|
+
import {
|
2
|
+
getNodeAncestors
|
3
|
+
} from "./chunk-LUPVHC73.js";
|
4
|
+
|
5
|
+
// src/agnostic/html/replace-in-element/index.ts
|
6
|
+
function replaceInElement(inputElement, replaceMap) {
|
7
|
+
const actualReplaceMap = new Map(Array.from(replaceMap).filter(([toReplace]) => {
|
8
|
+
const toReplaceAncestors = getNodeAncestors(toReplace);
|
9
|
+
return toReplaceAncestors.includes(inputElement);
|
10
|
+
}));
|
11
|
+
actualReplaceMap.forEach((replacer, toReplace) => {
|
12
|
+
if ("nodeType" in replacer) {
|
13
|
+
toReplace.parentNode?.insertBefore(replacer, toReplace);
|
14
|
+
} else {
|
15
|
+
const replacerNodes = Array.from(replacer);
|
16
|
+
replacerNodes.forEach((rpl) => toReplace.parentNode?.insertBefore(rpl, toReplace));
|
17
|
+
}
|
18
|
+
toReplace.parentNode?.removeChild(toReplace);
|
19
|
+
});
|
20
|
+
return inputElement;
|
21
|
+
}
|
22
|
+
|
23
|
+
export {
|
24
|
+
replaceInElement
|
25
|
+
};
|
package/node/files/index.js
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
import {
|
2
2
|
Subpaths
|
3
3
|
} from "../../chunks/chunk-HGCG2J77.js";
|
4
|
-
import {
|
5
|
-
isInDirectory
|
6
|
-
} from "../../chunks/chunk-NRITRUZW.js";
|
7
4
|
import {
|
8
5
|
readWrite
|
9
6
|
} from "../../chunks/chunk-7DBNMU6N.js";
|
7
|
+
import {
|
8
|
+
isInDirectory
|
9
|
+
} from "../../chunks/chunk-NRITRUZW.js";
|
10
10
|
import "../../chunks/chunk-LQFKUNVQ.js";
|
11
11
|
|
12
12
|
// src/node/files/index.ts
|