@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.
Files changed (110) hide show
  1. package/README.md +99 -0
  2. package/dist/browser.d.ts +14 -0
  3. package/dist/browser.d.ts.map +1 -0
  4. package/dist/browser.js +18 -0
  5. package/dist/browser.js.map +1 -0
  6. package/dist/currency/crypto-symbols-data.d.ts +10 -0
  7. package/dist/currency/crypto-symbols-data.d.ts.map +1 -0
  8. package/dist/currency/crypto-symbols-data.js +13765 -0
  9. package/dist/currency/crypto-symbols-data.js.map +1 -0
  10. package/dist/currency/crypto-symbols.d.ts +20 -0
  11. package/dist/currency/crypto-symbols.d.ts.map +1 -0
  12. package/dist/currency/crypto-symbols.js +23 -0
  13. package/dist/currency/crypto-symbols.js.map +1 -0
  14. package/dist/currency/download-crypto-list.d.ts +10 -0
  15. package/dist/currency/download-crypto-list.d.ts.map +1 -0
  16. package/dist/currency/download-crypto-list.js +69 -0
  17. package/dist/currency/download-crypto-list.js.map +1 -0
  18. package/dist/currency/index.d.ts +84 -0
  19. package/dist/currency/index.d.ts.map +1 -0
  20. package/dist/currency/index.js +230 -0
  21. package/dist/currency/index.js.map +1 -0
  22. package/dist/dir.d.ts +40 -0
  23. package/dist/dir.d.ts.map +1 -0
  24. package/dist/dir.js +108 -0
  25. package/dist/dir.js.map +1 -0
  26. package/dist/file.d.ts +53 -0
  27. package/dist/file.d.ts.map +1 -0
  28. package/dist/file.js +211 -0
  29. package/dist/file.js.map +1 -0
  30. package/dist/format.d.ts +40 -0
  31. package/dist/format.d.ts.map +1 -0
  32. package/dist/format.js +83 -0
  33. package/dist/format.js.map +1 -0
  34. package/dist/index.d.ts +16 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +20 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/kev.d.ts +149 -0
  39. package/dist/kev.d.ts.map +1 -0
  40. package/dist/kev.js +761 -0
  41. package/dist/kev.js.map +1 -0
  42. package/dist/log.d.ts +91 -0
  43. package/dist/log.d.ts.map +1 -0
  44. package/dist/log.js +300 -0
  45. package/dist/log.js.map +1 -0
  46. package/dist/logger.d.ts +91 -0
  47. package/dist/logger.d.ts.map +1 -0
  48. package/dist/logger.js +269 -0
  49. package/dist/logger.js.map +1 -0
  50. package/dist/offensive.d.ts +73 -0
  51. package/dist/offensive.d.ts.map +1 -0
  52. package/dist/offensive.js +103 -0
  53. package/dist/offensive.js.map +1 -0
  54. package/dist/path.d.ts +67 -0
  55. package/dist/path.d.ts.map +1 -0
  56. package/dist/path.js +107 -0
  57. package/dist/path.js.map +1 -0
  58. package/dist/platform/dir.d.ts +40 -0
  59. package/dist/platform/dir.d.ts.map +1 -0
  60. package/dist/platform/dir.js +108 -0
  61. package/dist/platform/dir.js.map +1 -0
  62. package/dist/platform/file.d.ts +53 -0
  63. package/dist/platform/file.d.ts.map +1 -0
  64. package/dist/platform/file.js +211 -0
  65. package/dist/platform/file.js.map +1 -0
  66. package/dist/platform/kev.d.ts +149 -0
  67. package/dist/platform/kev.d.ts.map +1 -0
  68. package/dist/platform/kev.js +762 -0
  69. package/dist/platform/kev.js.map +1 -0
  70. package/dist/platform/path.d.ts +67 -0
  71. package/dist/platform/path.d.ts.map +1 -0
  72. package/dist/platform/path.js +108 -0
  73. package/dist/platform/path.js.map +1 -0
  74. package/dist/platform/project.d.ts +35 -0
  75. package/dist/platform/project.d.ts.map +1 -0
  76. package/dist/platform/project.js +155 -0
  77. package/dist/platform/project.js.map +1 -0
  78. package/dist/project.d.ts +35 -0
  79. package/dist/project.d.ts.map +1 -0
  80. package/dist/project.js +154 -0
  81. package/dist/project.js.map +1 -0
  82. package/dist/runtime.d.ts +65 -0
  83. package/dist/runtime.d.ts.map +1 -0
  84. package/dist/runtime.js +193 -0
  85. package/dist/runtime.js.map +1 -0
  86. package/dist/universal/currency/crypto-symbols-data.d.ts +10 -0
  87. package/dist/universal/currency/crypto-symbols-data.d.ts.map +1 -0
  88. package/dist/universal/currency/crypto-symbols-data.js +13765 -0
  89. package/dist/universal/currency/crypto-symbols-data.js.map +1 -0
  90. package/dist/universal/currency/crypto-symbols.d.ts +20 -0
  91. package/dist/universal/currency/crypto-symbols.d.ts.map +1 -0
  92. package/dist/universal/currency/crypto-symbols.js +23 -0
  93. package/dist/universal/currency/crypto-symbols.js.map +1 -0
  94. package/dist/universal/currency/download-crypto-list.d.ts +10 -0
  95. package/dist/universal/currency/download-crypto-list.d.ts.map +1 -0
  96. package/dist/universal/currency/download-crypto-list.js +69 -0
  97. package/dist/universal/currency/download-crypto-list.js.map +1 -0
  98. package/dist/universal/currency/index.d.ts +90 -0
  99. package/dist/universal/currency/index.d.ts.map +1 -0
  100. package/dist/universal/currency/index.js +276 -0
  101. package/dist/universal/currency/index.js.map +1 -0
  102. package/dist/universal/format.d.ts +40 -0
  103. package/dist/universal/format.d.ts.map +1 -0
  104. package/dist/universal/format.js +83 -0
  105. package/dist/universal/format.js.map +1 -0
  106. package/dist/universal/log.d.ts +91 -0
  107. package/dist/universal/log.d.ts.map +1 -0
  108. package/dist/universal/log.js +309 -0
  109. package/dist/universal/log.js.map +1 -0
  110. 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":"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"}
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
+ }