@adriangalilea/utils 0.0.10
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/README.md +99 -0
- package/dist/browser.d.ts +14 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +18 -0
- package/dist/browser.js.map +1 -0
- package/dist/currency/crypto-symbols-data.d.ts +10 -0
- package/dist/currency/crypto-symbols-data.d.ts.map +1 -0
- package/dist/currency/crypto-symbols-data.js +13765 -0
- package/dist/currency/crypto-symbols-data.js.map +1 -0
- package/dist/currency/crypto-symbols.d.ts +20 -0
- package/dist/currency/crypto-symbols.d.ts.map +1 -0
- package/dist/currency/crypto-symbols.js +23 -0
- package/dist/currency/crypto-symbols.js.map +1 -0
- package/dist/currency/download-crypto-list.d.ts +10 -0
- package/dist/currency/download-crypto-list.d.ts.map +1 -0
- package/dist/currency/download-crypto-list.js +69 -0
- package/dist/currency/download-crypto-list.js.map +1 -0
- package/dist/currency/index.d.ts +84 -0
- package/dist/currency/index.d.ts.map +1 -0
- package/dist/currency/index.js +230 -0
- package/dist/currency/index.js.map +1 -0
- package/dist/dir.d.ts +40 -0
- package/dist/dir.d.ts.map +1 -0
- package/dist/dir.js +108 -0
- package/dist/dir.js.map +1 -0
- package/dist/file.d.ts +53 -0
- package/dist/file.d.ts.map +1 -0
- package/dist/file.js +211 -0
- package/dist/file.js.map +1 -0
- package/dist/format.d.ts +40 -0
- package/dist/format.d.ts.map +1 -0
- package/dist/format.js +83 -0
- package/dist/format.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/kev.d.ts +149 -0
- package/dist/kev.d.ts.map +1 -0
- package/dist/kev.js +761 -0
- package/dist/kev.js.map +1 -0
- package/dist/log.d.ts +91 -0
- package/dist/log.d.ts.map +1 -0
- package/dist/log.js +300 -0
- package/dist/log.js.map +1 -0
- package/dist/logger.d.ts +91 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +269 -0
- package/dist/logger.js.map +1 -0
- package/dist/offensive.d.ts +73 -0
- package/dist/offensive.d.ts.map +1 -0
- package/dist/offensive.js +103 -0
- package/dist/offensive.js.map +1 -0
- package/dist/path.d.ts +67 -0
- package/dist/path.d.ts.map +1 -0
- package/dist/path.js +107 -0
- package/dist/path.js.map +1 -0
- package/dist/platform/dir.d.ts +40 -0
- package/dist/platform/dir.d.ts.map +1 -0
- package/dist/platform/dir.js +108 -0
- package/dist/platform/dir.js.map +1 -0
- package/dist/platform/file.d.ts +53 -0
- package/dist/platform/file.d.ts.map +1 -0
- package/dist/platform/file.js +211 -0
- package/dist/platform/file.js.map +1 -0
- package/dist/platform/kev.d.ts +149 -0
- package/dist/platform/kev.d.ts.map +1 -0
- package/dist/platform/kev.js +762 -0
- package/dist/platform/kev.js.map +1 -0
- package/dist/platform/path.d.ts +67 -0
- package/dist/platform/path.d.ts.map +1 -0
- package/dist/platform/path.js +108 -0
- package/dist/platform/path.js.map +1 -0
- package/dist/platform/project.d.ts +35 -0
- package/dist/platform/project.d.ts.map +1 -0
- package/dist/platform/project.js +155 -0
- package/dist/platform/project.js.map +1 -0
- package/dist/project.d.ts +35 -0
- package/dist/project.d.ts.map +1 -0
- package/dist/project.js +154 -0
- package/dist/project.js.map +1 -0
- package/dist/runtime.d.ts +65 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +193 -0
- package/dist/runtime.js.map +1 -0
- package/dist/universal/currency/crypto-symbols-data.d.ts +10 -0
- package/dist/universal/currency/crypto-symbols-data.d.ts.map +1 -0
- package/dist/universal/currency/crypto-symbols-data.js +13765 -0
- package/dist/universal/currency/crypto-symbols-data.js.map +1 -0
- package/dist/universal/currency/crypto-symbols.d.ts +20 -0
- package/dist/universal/currency/crypto-symbols.d.ts.map +1 -0
- package/dist/universal/currency/crypto-symbols.js +23 -0
- package/dist/universal/currency/crypto-symbols.js.map +1 -0
- package/dist/universal/currency/download-crypto-list.d.ts +10 -0
- package/dist/universal/currency/download-crypto-list.d.ts.map +1 -0
- package/dist/universal/currency/download-crypto-list.js +69 -0
- package/dist/universal/currency/download-crypto-list.js.map +1 -0
- package/dist/universal/currency/index.d.ts +90 -0
- package/dist/universal/currency/index.d.ts.map +1 -0
- package/dist/universal/currency/index.js +276 -0
- package/dist/universal/currency/index.js.map +1 -0
- package/dist/universal/format.d.ts +40 -0
- package/dist/universal/format.d.ts.map +1 -0
- package/dist/universal/format.js +83 -0
- package/dist/universal/format.js.map +1 -0
- package/dist/universal/log.d.ts +91 -0
- package/dist/universal/log.d.ts.map +1 -0
- package/dist/universal/log.js +309 -0
- package/dist/universal/log.js.map +1 -0
- package/package.json +75 -0
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A Next.js-style logger for TypeScript applications
|
|
3
|
+
* Provides colored output with Unicode symbols for different log levels
|
|
4
|
+
*/
|
|
5
|
+
import { runtime } from '../runtime.js';
|
|
6
|
+
// ANSI escape codes for colors
|
|
7
|
+
const ANSI = {
|
|
8
|
+
reset: '\x1b[0m',
|
|
9
|
+
bold: '\x1b[1m',
|
|
10
|
+
dim: '\x1b[2m',
|
|
11
|
+
// Foreground colors
|
|
12
|
+
black: '\x1b[30m',
|
|
13
|
+
red: '\x1b[31m',
|
|
14
|
+
green: '\x1b[32m',
|
|
15
|
+
yellow: '\x1b[33m',
|
|
16
|
+
blue: '\x1b[34m',
|
|
17
|
+
magenta: '\x1b[35m',
|
|
18
|
+
cyan: '\x1b[36m',
|
|
19
|
+
white: '\x1b[37m',
|
|
20
|
+
gray: '\x1b[90m',
|
|
21
|
+
// Custom purple (Next.js style)
|
|
22
|
+
purple: '\x1b[38;2;173;127;168m',
|
|
23
|
+
// Background colors
|
|
24
|
+
bgRed: '\x1b[41m',
|
|
25
|
+
bgGreen: '\x1b[42m',
|
|
26
|
+
bgYellow: '\x1b[43m',
|
|
27
|
+
bgBlue: '\x1b[44m',
|
|
28
|
+
bgMagenta: '\x1b[45m',
|
|
29
|
+
bgCyan: '\x1b[46m',
|
|
30
|
+
bgWhite: '\x1b[47m',
|
|
31
|
+
};
|
|
32
|
+
// Detect if colors should be enabled
|
|
33
|
+
const isColorEnabled = () => {
|
|
34
|
+
if (runtime.isBrowser)
|
|
35
|
+
return true; // Always enable colors in browser (CSS will handle it)
|
|
36
|
+
if (runtime.env('NO_COLOR'))
|
|
37
|
+
return false;
|
|
38
|
+
if (runtime.env('FORCE_COLOR'))
|
|
39
|
+
return true;
|
|
40
|
+
return runtime.stdout.isTTY && !runtime.env('CI') && runtime.env('TERM') !== 'dumb';
|
|
41
|
+
};
|
|
42
|
+
const colorEnabled = isColorEnabled();
|
|
43
|
+
// Color formatter function
|
|
44
|
+
const formatter = (open, close = ANSI.reset) => {
|
|
45
|
+
if (!colorEnabled)
|
|
46
|
+
return (str) => str;
|
|
47
|
+
return (str) => `${open}${str}${close}`;
|
|
48
|
+
};
|
|
49
|
+
// Text styling functions
|
|
50
|
+
export const bold = formatter(ANSI.bold);
|
|
51
|
+
export const dim = formatter(ANSI.dim);
|
|
52
|
+
export const red = formatter(ANSI.red);
|
|
53
|
+
export const green = formatter(ANSI.green);
|
|
54
|
+
export const yellow = formatter(ANSI.yellow);
|
|
55
|
+
export const blue = formatter(ANSI.blue);
|
|
56
|
+
export const magenta = formatter(ANSI.magenta);
|
|
57
|
+
export const cyan = formatter(ANSI.cyan);
|
|
58
|
+
export const white = formatter(ANSI.white);
|
|
59
|
+
export const gray = formatter(ANSI.gray);
|
|
60
|
+
export const purple = formatter(ANSI.purple);
|
|
61
|
+
// Background colors
|
|
62
|
+
export const bgRed = formatter(ANSI.bgRed);
|
|
63
|
+
export const bgGreen = formatter(ANSI.bgGreen);
|
|
64
|
+
export const bgYellow = formatter(ANSI.bgYellow);
|
|
65
|
+
export const bgBlue = formatter(ANSI.bgBlue);
|
|
66
|
+
export const bgMagenta = formatter(ANSI.bgMagenta);
|
|
67
|
+
export const bgCyan = formatter(ANSI.bgCyan);
|
|
68
|
+
export const bgWhite = formatter(ANSI.bgWhite);
|
|
69
|
+
// Prefix symbols matching Next.js style
|
|
70
|
+
const prefixes = {
|
|
71
|
+
wait: white(bold('○')),
|
|
72
|
+
error: red(bold('⨯')),
|
|
73
|
+
warn: yellow(bold('⚠')),
|
|
74
|
+
ready: '▶',
|
|
75
|
+
info: white(bold(' ')),
|
|
76
|
+
success: green(bold('✓')),
|
|
77
|
+
event: green(bold('✓')),
|
|
78
|
+
trace: magenta(bold('»')),
|
|
79
|
+
};
|
|
80
|
+
// Log level priority (lower number = higher priority)
|
|
81
|
+
const LOG_LEVELS = {
|
|
82
|
+
error: 0,
|
|
83
|
+
warn: 1,
|
|
84
|
+
info: 2,
|
|
85
|
+
ready: 2,
|
|
86
|
+
success: 2,
|
|
87
|
+
event: 2,
|
|
88
|
+
wait: 3,
|
|
89
|
+
trace: 4,
|
|
90
|
+
};
|
|
91
|
+
// Get current log level from environment
|
|
92
|
+
function getCurrentLogLevel() {
|
|
93
|
+
const level = runtime.env('LOG_LEVEL')?.toLowerCase();
|
|
94
|
+
if (!level)
|
|
95
|
+
return LOG_LEVELS.info; // Default to info
|
|
96
|
+
switch (level) {
|
|
97
|
+
case 'error': return LOG_LEVELS.error;
|
|
98
|
+
case 'warn': return LOG_LEVELS.warn;
|
|
99
|
+
case 'info': return LOG_LEVELS.info;
|
|
100
|
+
case 'debug':
|
|
101
|
+
case 'trace': return LOG_LEVELS.trace;
|
|
102
|
+
default: return LOG_LEVELS.info;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
const currentLogLevel = getCurrentLogLevel();
|
|
106
|
+
// LRU Cache for warn-once functionality
|
|
107
|
+
class LRUCache {
|
|
108
|
+
cache = new Map();
|
|
109
|
+
maxSize;
|
|
110
|
+
constructor(maxSize) {
|
|
111
|
+
this.maxSize = maxSize;
|
|
112
|
+
}
|
|
113
|
+
get(key) {
|
|
114
|
+
const item = this.cache.get(key);
|
|
115
|
+
if (item !== undefined) {
|
|
116
|
+
// Move to end (most recently used)
|
|
117
|
+
this.cache.delete(key);
|
|
118
|
+
this.cache.set(key, item);
|
|
119
|
+
}
|
|
120
|
+
return item;
|
|
121
|
+
}
|
|
122
|
+
set(key, value) {
|
|
123
|
+
if (this.cache.has(key)) {
|
|
124
|
+
this.cache.delete(key);
|
|
125
|
+
}
|
|
126
|
+
this.cache.set(key, value);
|
|
127
|
+
if (this.cache.size > this.maxSize) {
|
|
128
|
+
// Remove least recently used (first item)
|
|
129
|
+
const firstKey = this.cache.keys().next().value;
|
|
130
|
+
if (firstKey !== undefined) {
|
|
131
|
+
this.cache.delete(firstKey);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
has(key) {
|
|
136
|
+
return this.cache.has(key);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
const warnOnceCache = new LRUCache(10_000);
|
|
140
|
+
// Core logging function
|
|
141
|
+
function prefixedLog(level, ...messages) {
|
|
142
|
+
// Check if this log level should be displayed
|
|
143
|
+
const levelPriority = LOG_LEVELS[level] ?? LOG_LEVELS.info;
|
|
144
|
+
if (levelPriority > currentLogLevel) {
|
|
145
|
+
return; // Skip this log
|
|
146
|
+
}
|
|
147
|
+
// Remove empty first message
|
|
148
|
+
if ((messages[0] === '' || messages[0] === undefined) && messages.length === 1) {
|
|
149
|
+
messages.shift();
|
|
150
|
+
}
|
|
151
|
+
// Determine console method based on level
|
|
152
|
+
const consoleMethod = level === 'error' ? 'error' : level === 'warn' ? 'warn' : 'log';
|
|
153
|
+
const prefix = prefixes[level];
|
|
154
|
+
// Handle empty messages
|
|
155
|
+
if (messages.length === 0) {
|
|
156
|
+
console[consoleMethod]('');
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
// Format and log the message
|
|
160
|
+
if (messages.length === 1 && typeof messages[0] === 'string') {
|
|
161
|
+
console[consoleMethod](` ${prefix} ${messages[0]}`);
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
console[consoleMethod](` ${prefix}`, ...messages);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
// Bootstrap function for startup messages (no prefix, just indentation)
|
|
168
|
+
export function bootstrap(...messages) {
|
|
169
|
+
console.log(' ' + messages.join(' '));
|
|
170
|
+
}
|
|
171
|
+
// Main logging functions
|
|
172
|
+
export function wait(...messages) {
|
|
173
|
+
prefixedLog('wait', ...messages);
|
|
174
|
+
}
|
|
175
|
+
export function error(...messages) {
|
|
176
|
+
prefixedLog('error', ...messages);
|
|
177
|
+
}
|
|
178
|
+
export function warn(...messages) {
|
|
179
|
+
prefixedLog('warn', ...messages);
|
|
180
|
+
}
|
|
181
|
+
export function ready(...messages) {
|
|
182
|
+
prefixedLog('ready', ...messages);
|
|
183
|
+
}
|
|
184
|
+
export function info(...messages) {
|
|
185
|
+
prefixedLog('info', ...messages);
|
|
186
|
+
}
|
|
187
|
+
export function success(...messages) {
|
|
188
|
+
prefixedLog('success', ...messages);
|
|
189
|
+
}
|
|
190
|
+
export function event(...messages) {
|
|
191
|
+
prefixedLog('event', ...messages);
|
|
192
|
+
}
|
|
193
|
+
export function trace(...messages) {
|
|
194
|
+
prefixedLog('trace', ...messages);
|
|
195
|
+
}
|
|
196
|
+
// Special warn-once function
|
|
197
|
+
export function warnOnce(...messages) {
|
|
198
|
+
const key = messages.join(' ');
|
|
199
|
+
if (!warnOnceCache.has(key)) {
|
|
200
|
+
warnOnceCache.set(key, true);
|
|
201
|
+
warn(...messages);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
// Timer functionality for measuring durations
|
|
205
|
+
const timers = new Map();
|
|
206
|
+
export function time(label) {
|
|
207
|
+
timers.set(label, Date.now());
|
|
208
|
+
}
|
|
209
|
+
export function timeEnd(label) {
|
|
210
|
+
const start = timers.get(label);
|
|
211
|
+
if (start === undefined) {
|
|
212
|
+
warn(`Timer '${label}' does not exist`);
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
const duration = Date.now() - start;
|
|
216
|
+
timers.delete(label);
|
|
217
|
+
const formatted = duration > 10000
|
|
218
|
+
? `${Math.round(duration / 100) / 10}s`
|
|
219
|
+
: `${Math.round(duration)}ms`;
|
|
220
|
+
trace(`${label}: ${formatted}`);
|
|
221
|
+
}
|
|
222
|
+
// Utility function to create a prefixed logger instance
|
|
223
|
+
export function createLogger(prefix) {
|
|
224
|
+
return {
|
|
225
|
+
wait: (...messages) => wait(`[${prefix}]`, ...messages),
|
|
226
|
+
error: (...messages) => error(`[${prefix}]`, ...messages),
|
|
227
|
+
warn: (...messages) => warn(`[${prefix}]`, ...messages),
|
|
228
|
+
ready: (...messages) => ready(`[${prefix}]`, ...messages),
|
|
229
|
+
info: (...messages) => info(`[${prefix}]`, ...messages),
|
|
230
|
+
success: (...messages) => success(`[${prefix}]`, ...messages),
|
|
231
|
+
event: (...messages) => event(`[${prefix}]`, ...messages),
|
|
232
|
+
trace: (...messages) => trace(`[${prefix}]`, ...messages),
|
|
233
|
+
warnOnce: (...messages) => warnOnce(`[${prefix}]`, ...messages),
|
|
234
|
+
time: (label) => time(`${prefix}:${label}`),
|
|
235
|
+
timeEnd: (label) => timeEnd(`${prefix}:${label}`),
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
// Export a default log instance
|
|
239
|
+
const log = {
|
|
240
|
+
wait,
|
|
241
|
+
error,
|
|
242
|
+
warn,
|
|
243
|
+
ready,
|
|
244
|
+
info,
|
|
245
|
+
success,
|
|
246
|
+
event,
|
|
247
|
+
trace,
|
|
248
|
+
warnOnce,
|
|
249
|
+
time,
|
|
250
|
+
timeEnd,
|
|
251
|
+
bootstrap,
|
|
252
|
+
createLogger,
|
|
253
|
+
// Color utilities
|
|
254
|
+
colors: {
|
|
255
|
+
bold,
|
|
256
|
+
dim,
|
|
257
|
+
red,
|
|
258
|
+
green,
|
|
259
|
+
yellow,
|
|
260
|
+
blue,
|
|
261
|
+
magenta,
|
|
262
|
+
cyan,
|
|
263
|
+
white,
|
|
264
|
+
gray,
|
|
265
|
+
purple,
|
|
266
|
+
bgRed,
|
|
267
|
+
bgGreen,
|
|
268
|
+
bgYellow,
|
|
269
|
+
bgBlue,
|
|
270
|
+
bgMagenta,
|
|
271
|
+
bgCyan,
|
|
272
|
+
bgWhite,
|
|
273
|
+
},
|
|
274
|
+
};
|
|
275
|
+
export { log };
|
|
276
|
+
// Example usage helper
|
|
277
|
+
export function logAppStartup(options) {
|
|
278
|
+
const { name, version, port, host = 'localhost', environment } = options;
|
|
279
|
+
bootstrap(bold(purple(`▶ ${name} ${version}`)));
|
|
280
|
+
bootstrap(`- Local: http://${host}:${port}`);
|
|
281
|
+
if (host !== 'localhost') {
|
|
282
|
+
bootstrap(`- Network: http://${getNetworkAddress()}:${port}`);
|
|
283
|
+
}
|
|
284
|
+
if (environment) {
|
|
285
|
+
bootstrap(`- Environment: ${environment}`);
|
|
286
|
+
}
|
|
287
|
+
info('');
|
|
288
|
+
}
|
|
289
|
+
// Helper to get network address
|
|
290
|
+
function getNetworkAddress() {
|
|
291
|
+
if (!runtime.canFileSystem())
|
|
292
|
+
return 'localhost'; // Can't get network address without file system access
|
|
293
|
+
try {
|
|
294
|
+
const os = require('os');
|
|
295
|
+
const interfaces = os.networkInterfaces();
|
|
296
|
+
for (const name of Object.keys(interfaces)) {
|
|
297
|
+
for (const iface of interfaces[name]) {
|
|
298
|
+
if (iface.family === 'IPv4' && !iface.internal) {
|
|
299
|
+
return iface.address;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
catch {
|
|
305
|
+
// If os module is not available, fallback
|
|
306
|
+
}
|
|
307
|
+
return 'localhost';
|
|
308
|
+
}
|
|
309
|
+
//# sourceMappingURL=log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/universal/log.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAEvC,+BAA+B;AAC/B,MAAM,IAAI,GAAG;IACX,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,SAAS;IACf,GAAG,EAAE,SAAS;IAEd,oBAAoB;IACpB,KAAK,EAAE,UAAU;IACjB,GAAG,EAAE,UAAU;IACf,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,UAAU;IAClB,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,UAAU;IACjB,IAAI,EAAE,UAAU;IAEhB,gCAAgC;IAChC,MAAM,EAAE,wBAAwB;IAEhC,oBAAoB;IACpB,KAAK,EAAE,UAAU;IACjB,OAAO,EAAE,UAAU;IACnB,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,UAAU;IAClB,SAAS,EAAE,UAAU;IACrB,MAAM,EAAE,UAAU;IAClB,OAAO,EAAE,UAAU;CACX,CAAA;AAGV,qCAAqC;AACrC,MAAM,cAAc,GAAG,GAAY,EAAE;IACnC,IAAI,OAAO,CAAC,SAAS;QAAE,OAAO,IAAI,CAAA,CAAC,uDAAuD;IAE1F,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAA;IACzC,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;QAAE,OAAO,IAAI,CAAA;IAC3C,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,MAAM,CAAA;AACrF,CAAC,CAAA;AAED,MAAM,YAAY,GAAG,cAAc,EAAE,CAAA;AAErC,2BAA2B;AAC3B,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE;IACrD,IAAI,CAAC,YAAY;QAAE,OAAO,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAA;IAC9C,OAAO,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,EAAE,CAAA;AACjD,CAAC,CAAA;AAED,yBAAyB;AACzB,MAAM,CAAC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACxC,MAAM,CAAC,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACtC,MAAM,CAAC,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACtC,MAAM,CAAC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC1C,MAAM,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAC5C,MAAM,CAAC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACxC,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAC9C,MAAM,CAAC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACxC,MAAM,CAAC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC1C,MAAM,CAAC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACxC,MAAM,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAE5C,oBAAoB;AACpB,MAAM,CAAC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC1C,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAC9C,MAAM,CAAC,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;AAChD,MAAM,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAC5C,MAAM,CAAC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AAClD,MAAM,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAC5C,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAE9C,wCAAwC;AACxC,MAAM,QAAQ,GAAG;IACf,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtB,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvB,KAAK,EAAE,GAAG;IACV,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtB,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CACjB,CAAA;AAIV,sDAAsD;AACtD,MAAM,UAAU,GAAG;IACjB,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;IACR,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;CACA,CAAA;AAEV,yCAAyC;AACzC,SAAS,kBAAkB;IACzB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,CAAA;IACrD,IAAI,CAAC,KAAK;QAAE,OAAO,UAAU,CAAC,IAAI,CAAA,CAAC,kBAAkB;IAErD,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,OAAO,CAAC,CAAC,OAAO,UAAU,CAAC,KAAK,CAAA;QACrC,KAAK,MAAM,CAAC,CAAC,OAAO,UAAU,CAAC,IAAI,CAAA;QACnC,KAAK,MAAM,CAAC,CAAC,OAAO,UAAU,CAAC,IAAI,CAAA;QACnC,KAAK,OAAO,CAAC;QACb,KAAK,OAAO,CAAC,CAAC,OAAO,UAAU,CAAC,KAAK,CAAA;QACrC,OAAO,CAAC,CAAC,OAAO,UAAU,CAAC,IAAI,CAAA;IACjC,CAAC;AACH,CAAC;AAED,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAA;AAE5C,wCAAwC;AACxC,MAAM,QAAQ;IACJ,KAAK,GAAG,IAAI,GAAG,EAAQ,CAAA;IACvB,OAAO,CAAQ;IAEvB,YAAY,OAAe;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,GAAG,CAAC,GAAM;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAChC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,mCAAmC;YACnC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YACtB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAC3B,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,GAAG,CAAC,GAAM,EAAE,KAAQ;QAClB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACxB,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QAE1B,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YACnC,0CAA0C;YAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAA;YAC/C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IAED,GAAG,CAAC,GAAM;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC5B,CAAC;CACF;AAED,MAAM,aAAa,GAAG,IAAI,QAAQ,CAAkB,MAAM,CAAC,CAAA;AAE3D,wBAAwB;AACxB,SAAS,WAAW,CAAC,KAAe,EAAE,GAAG,QAAe;IACtD,8CAA8C;IAC9C,MAAM,aAAa,GAAG,UAAU,CAAC,KAAgC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAA;IACrF,IAAI,aAAa,GAAG,eAAe,EAAE,CAAC;QACpC,OAAM,CAAC,gBAAgB;IACzB,CAAC;IAED,6BAA6B;IAC7B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/E,QAAQ,CAAC,KAAK,EAAE,CAAA;IAClB,CAAC;IAED,0CAA0C;IAC1C,MAAM,aAAa,GAAG,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAA;IACrF,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAE9B,wBAAwB;IACxB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAA;QAC1B,OAAM;IACR,CAAC;IAED,6BAA6B;IAC7B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC7D,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IACrD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,MAAM,EAAE,EAAE,GAAG,QAAQ,CAAC,CAAA;IACnD,CAAC;AACH,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,SAAS,CAAC,GAAG,QAAkB;IAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AACzC,CAAC;AAED,yBAAyB;AACzB,MAAM,UAAU,IAAI,CAAC,GAAG,QAAe;IACrC,WAAW,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,GAAG,QAAe;IACtC,WAAW,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAA;AACnC,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,GAAG,QAAe;IACrC,WAAW,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,GAAG,QAAe;IACtC,WAAW,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAA;AACnC,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,GAAG,QAAe;IACrC,WAAW,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,GAAG,QAAe;IACxC,WAAW,CAAC,SAAS,EAAE,GAAG,QAAQ,CAAC,CAAA;AACrC,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,GAAG,QAAe;IACtC,WAAW,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAA;AACnC,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,GAAG,QAAe;IACtC,WAAW,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAA;AACnC,CAAC;AAED,6BAA6B;AAC7B,MAAM,UAAU,QAAQ,CAAC,GAAG,QAAe;IACzC,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC9B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAC5B,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAA;IACnB,CAAC;AACH,CAAC;AAED,8CAA8C;AAC9C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAA;AAExC,MAAM,UAAU,IAAI,CAAC,KAAa;IAChC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;AAC/B,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAAa;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC/B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,IAAI,CAAC,UAAU,KAAK,kBAAkB,CAAC,CAAA;QACvC,OAAM;IACR,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAA;IACnC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAEpB,MAAM,SAAS,GAAG,QAAQ,GAAG,KAAK;QAChC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG;QACvC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAA;IAE/B,KAAK,CAAC,GAAG,KAAK,KAAK,SAAS,EAAE,CAAC,CAAA;AACjC,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,OAAO;QACL,IAAI,EAAE,CAAC,GAAG,QAAe,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,MAAM,GAAG,EAAE,GAAG,QAAQ,CAAC;QAC9D,KAAK,EAAE,CAAC,GAAG,QAAe,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,MAAM,GAAG,EAAE,GAAG,QAAQ,CAAC;QAChE,IAAI,EAAE,CAAC,GAAG,QAAe,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,MAAM,GAAG,EAAE,GAAG,QAAQ,CAAC;QAC9D,KAAK,EAAE,CAAC,GAAG,QAAe,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,MAAM,GAAG,EAAE,GAAG,QAAQ,CAAC;QAChE,IAAI,EAAE,CAAC,GAAG,QAAe,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,MAAM,GAAG,EAAE,GAAG,QAAQ,CAAC;QAC9D,OAAO,EAAE,CAAC,GAAG,QAAe,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,MAAM,GAAG,EAAE,GAAG,QAAQ,CAAC;QACpE,KAAK,EAAE,CAAC,GAAG,QAAe,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,MAAM,GAAG,EAAE,GAAG,QAAQ,CAAC;QAChE,KAAK,EAAE,CAAC,GAAG,QAAe,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,MAAM,GAAG,EAAE,GAAG,QAAQ,CAAC;QAChE,QAAQ,EAAE,CAAC,GAAG,QAAe,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,MAAM,GAAG,EAAE,GAAG,QAAQ,CAAC;QACtE,IAAI,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,KAAK,EAAE,CAAC;QACnD,OAAO,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,MAAM,IAAI,KAAK,EAAE,CAAC;KAC1D,CAAA;AACH,CAAC;AAED,gCAAgC;AAChC,MAAM,GAAG,GAAG;IACV,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,OAAO;IACP,KAAK;IACL,KAAK;IACL,QAAQ;IACR,IAAI;IACJ,OAAO;IACP,SAAS;IACT,YAAY;IAEZ,kBAAkB;IAClB,MAAM,EAAE;QACN,IAAI;QACJ,GAAG;QACH,GAAG;QACH,KAAK;QACL,MAAM;QACN,IAAI;QACJ,OAAO;QACP,IAAI;QACJ,KAAK;QACL,IAAI;QACJ,MAAM;QACN,KAAK;QACL,OAAO;QACP,QAAQ;QACR,MAAM;QACN,SAAS;QACT,MAAM;QACN,OAAO;KACR;CACF,CAAA;AAED,OAAO,EAAE,GAAG,EAAE,CAAA;AAEd,uBAAuB;AACvB,MAAM,UAAU,aAAa,CAAC,OAM7B;IACC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,WAAW,EAAE,WAAW,EAAE,GAAG,OAAO,CAAA;IAExE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,CAAA;IAC/C,SAAS,CAAC,0BAA0B,IAAI,IAAI,IAAI,EAAE,CAAC,CAAA;IAEnD,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACzB,SAAS,CAAC,0BAA0B,iBAAiB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAA;IACpE,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,SAAS,CAAC,mBAAmB,WAAW,EAAE,CAAC,CAAA;IAC7C,CAAC;IAED,IAAI,CAAC,EAAE,CAAC,CAAA;AACV,CAAC;AAED,gCAAgC;AAChC,SAAS,iBAAiB;IACxB,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;QAAE,OAAO,WAAW,CAAA,CAAC,uDAAuD;IAExG,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;QACxB,MAAM,UAAU,GAAG,EAAE,CAAC,iBAAiB,EAAE,CAAA;QAEzC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3C,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,IAAI,CAAE,EAAE,CAAC;gBACtC,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;oBAC/C,OAAO,KAAK,CAAC,OAAO,CAAA;gBACtB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,0CAA0C;IAC5C,CAAC;IAED,OAAO,WAAW,CAAA;AACpB,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@adriangalilea/utils",
|
|
3
|
+
"version": "0.0.10",
|
|
4
|
+
"description": "TypeScript utilities - logger, currency, formatter, and more",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"browser": "./dist/browser.js",
|
|
12
|
+
"node": "./dist/index.js",
|
|
13
|
+
"default": "./dist/index.js"
|
|
14
|
+
},
|
|
15
|
+
"./browser": {
|
|
16
|
+
"types": "./dist/browser.d.ts",
|
|
17
|
+
"default": "./dist/browser.js"
|
|
18
|
+
},
|
|
19
|
+
"./runtime": {
|
|
20
|
+
"types": "./dist/runtime.d.ts",
|
|
21
|
+
"default": "./dist/runtime.js"
|
|
22
|
+
},
|
|
23
|
+
"./format": {
|
|
24
|
+
"types": "./dist/universal/format.d.ts",
|
|
25
|
+
"default": "./dist/universal/format.js"
|
|
26
|
+
},
|
|
27
|
+
"./currency": {
|
|
28
|
+
"types": "./dist/universal/currency/index.d.ts",
|
|
29
|
+
"default": "./dist/universal/currency/index.js"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"files": [
|
|
33
|
+
"dist"
|
|
34
|
+
],
|
|
35
|
+
"keywords": [
|
|
36
|
+
"typescript",
|
|
37
|
+
"utils",
|
|
38
|
+
"log",
|
|
39
|
+
"currency",
|
|
40
|
+
"format"
|
|
41
|
+
],
|
|
42
|
+
"author": "Adrian Galilea <adriangalilea@gmail.com>",
|
|
43
|
+
"license": "MIT",
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"@types/node": "^24.3.0",
|
|
46
|
+
"tsx": "^4.20.4",
|
|
47
|
+
"typescript": "^5.9.2"
|
|
48
|
+
},
|
|
49
|
+
"dependencies": {
|
|
50
|
+
"chalk": "^5.6.0"
|
|
51
|
+
},
|
|
52
|
+
"publishConfig": {
|
|
53
|
+
"access": "public",
|
|
54
|
+
"registry": "https://registry.npmjs.org/"
|
|
55
|
+
},
|
|
56
|
+
"repository": {
|
|
57
|
+
"type": "git",
|
|
58
|
+
"url": "git+https://github.com/adriangalilea/ts-utils.git"
|
|
59
|
+
},
|
|
60
|
+
"bugs": {
|
|
61
|
+
"url": "https://github.com/adriangalilea/ts-utils/issues"
|
|
62
|
+
},
|
|
63
|
+
"homepage": "https://github.com/adriangalilea/ts-utils#readme",
|
|
64
|
+
"scripts": {
|
|
65
|
+
"build": "tsc",
|
|
66
|
+
"dev": "tsx src/index.ts",
|
|
67
|
+
"test": "echo 'Tests not configured yet'",
|
|
68
|
+
"test:runtime": "tsx tests/runtime-test.ts",
|
|
69
|
+
"test:browser": "open tests/browser-test.html",
|
|
70
|
+
"example": "tsx tests/example.ts",
|
|
71
|
+
"update-crypto": "tsx src/universal/currency/download-crypto-list.ts",
|
|
72
|
+
"type-check": "tsc --noEmit",
|
|
73
|
+
"lint": "echo 'No linter configured yet'"
|
|
74
|
+
}
|
|
75
|
+
}
|