@sdkwork/sdk-common 1.0.1 → 1.0.2
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 +3 -4
- package/dist/auth/token-manager.cjs +8 -16
- package/dist/auth/token-manager.cjs.map +1 -1
- package/dist/auth/token-manager.js +8 -16
- package/dist/auth/token-manager.js.map +1 -1
- package/dist/errors.cjs +15 -18
- package/dist/errors.cjs.map +1 -1
- package/dist/errors.js +15 -18
- package/dist/errors.js.map +1 -1
- package/dist/http/base-client.cjs +23 -33
- package/dist/http/base-client.cjs.map +1 -1
- package/dist/http/base-client.js +23 -33
- package/dist/http/base-client.js.map +1 -1
- package/dist/index.cjs +1 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/utils/cache.cjs +3 -6
- package/dist/utils/cache.cjs.map +1 -1
- package/dist/utils/cache.js +3 -6
- package/dist/utils/cache.js.map +1 -1
- package/dist/utils/logger.cjs +5 -8
- package/dist/utils/logger.cjs.map +1 -1
- package/dist/utils/logger.js +5 -8
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/string.cjs +57 -60
- package/dist/utils/string.cjs.map +1 -1
- package/dist/utils/string.js +57 -60
- package/dist/utils/string.js.map +1 -1
- package/package.json +5 -6
package/dist/utils/cache.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.cjs","sources":["../../src/utils/cache.ts"],"sourcesContent":["import type { CacheConfig, RequestConfig } from '../core/types';\nimport { DEFAULT_CACHE_CONFIG } from '../core/types';\n\nexport interface CacheStore {\n get<T>(key: string): T | null;\n set<T>(key: string, value: T, ttl?: number): void;\n has(key: string): boolean;\n delete(key: string): boolean;\n clear(): void;\n size(): number;\n}\n\ninterface CacheEntry<T> {\n value: T;\n expiresAt: number;\n}\n\nexport class MemoryCacheStore implements CacheStore {\n private cache: Map<string, CacheEntry<unknown>> = new Map();\n private maxSize: number;\n private defaultTtl: number;\n\n constructor(config: Partial<CacheConfig> = {}) {\n this.maxSize = config.maxSize ?? DEFAULT_CACHE_CONFIG.maxSize;\n this.defaultTtl = config.ttl ?? DEFAULT_CACHE_CONFIG.ttl;\n }\n\n get<T>(key: string): T | null {\n const entry = this.cache.get(key);\n \n if (!entry) {\n return null;\n }\n \n if (Date.now() > entry.expiresAt) {\n this.cache.delete(key);\n return null;\n }\n \n return entry.value as T;\n }\n\n set<T>(key: string, value: T, ttl?: number): void {\n if (this.cache.size >= this.maxSize) {\n this.evictOldest();\n }\n \n const expiresAt = Date.now() + (ttl ?? this.defaultTtl);\n this.cache.set(key, { value, expiresAt });\n }\n\n has(key: string): boolean {\n const entry = this.cache.get(key);\n if (!entry) return false;\n \n if (Date.now() > entry.expiresAt) {\n this.cache.delete(key);\n return false;\n }\n \n return true;\n }\n\n delete(key: string): boolean {\n return this.cache.delete(key);\n }\n\n clear(): void {\n this.cache.clear();\n }\n\n size(): number {\n return this.cache.size;\n }\n\n private evictOldest(): void {\n let oldestKey: string | null = null;\n let oldestTime = Infinity;\n \n for (const [key, entry] of this.cache) {\n if (entry.expiresAt < oldestTime) {\n oldestTime = entry.expiresAt;\n oldestKey = key;\n }\n }\n \n if (oldestKey) {\n this.cache.delete(oldestKey);\n }\n }\n}\n\nexport function createCacheStore(config?: Partial<CacheConfig>): CacheStore {\n return new MemoryCacheStore(config);\n}\n\nexport function generateCacheKey(config: RequestConfig): string {\n const parts = [\n config.method,\n config.url,\n JSON.stringify(config.params ?? {}),\n JSON.stringify(config.body ?? {}),\n ];\n \n return parts.join(':');\n}\n"],"names":["DEFAULT_CACHE_CONFIG"],"mappings":"
|
|
1
|
+
{"version":3,"file":"cache.cjs","sources":["../../src/utils/cache.ts"],"sourcesContent":["import type { CacheConfig, RequestConfig } from '../core/types';\nimport { DEFAULT_CACHE_CONFIG } from '../core/types';\n\nexport interface CacheStore {\n get<T>(key: string): T | null;\n set<T>(key: string, value: T, ttl?: number): void;\n has(key: string): boolean;\n delete(key: string): boolean;\n clear(): void;\n size(): number;\n}\n\ninterface CacheEntry<T> {\n value: T;\n expiresAt: number;\n}\n\nexport class MemoryCacheStore implements CacheStore {\n private cache: Map<string, CacheEntry<unknown>> = new Map();\n private maxSize: number;\n private defaultTtl: number;\n\n constructor(config: Partial<CacheConfig> = {}) {\n this.maxSize = config.maxSize ?? DEFAULT_CACHE_CONFIG.maxSize;\n this.defaultTtl = config.ttl ?? DEFAULT_CACHE_CONFIG.ttl;\n }\n\n get<T>(key: string): T | null {\n const entry = this.cache.get(key);\n \n if (!entry) {\n return null;\n }\n \n if (Date.now() > entry.expiresAt) {\n this.cache.delete(key);\n return null;\n }\n \n return entry.value as T;\n }\n\n set<T>(key: string, value: T, ttl?: number): void {\n if (this.cache.size >= this.maxSize) {\n this.evictOldest();\n }\n \n const expiresAt = Date.now() + (ttl ?? this.defaultTtl);\n this.cache.set(key, { value, expiresAt });\n }\n\n has(key: string): boolean {\n const entry = this.cache.get(key);\n if (!entry) return false;\n \n if (Date.now() > entry.expiresAt) {\n this.cache.delete(key);\n return false;\n }\n \n return true;\n }\n\n delete(key: string): boolean {\n return this.cache.delete(key);\n }\n\n clear(): void {\n this.cache.clear();\n }\n\n size(): number {\n return this.cache.size;\n }\n\n private evictOldest(): void {\n let oldestKey: string | null = null;\n let oldestTime = Infinity;\n \n for (const [key, entry] of this.cache) {\n if (entry.expiresAt < oldestTime) {\n oldestTime = entry.expiresAt;\n oldestKey = key;\n }\n }\n \n if (oldestKey) {\n this.cache.delete(oldestKey);\n }\n }\n}\n\nexport function createCacheStore(config?: Partial<CacheConfig>): CacheStore {\n return new MemoryCacheStore(config);\n}\n\nexport function generateCacheKey(config: RequestConfig): string {\n const parts = [\n config.method,\n config.url,\n JSON.stringify(config.params ?? {}),\n JSON.stringify(config.body ?? {}),\n ];\n \n return parts.join(':');\n}\n"],"names":["DEFAULT_CACHE_CONFIG"],"mappings":";;;AAiBO,MAAM,iBAAuC;AAAA,EAC1C,4BAA8C,IAAA;AAAA,EAC9C;AAAA,EACA;AAAA,EAER,YAAY,SAA+B,IAAI;AAC7C,SAAK,UAAU,OAAO,WAAWA,MAAAA,qBAAqB;AACtD,SAAK,aAAa,OAAO,OAAOA,MAAAA,qBAAqB;AAAA,EACvD;AAAA,EAEA,IAAO,KAAuB;AAC5B,UAAM,QAAQ,KAAK,MAAM,IAAI,GAAG;AAEhC,QAAI,CAAC,OAAO;AACV,aAAO;AAAA,IACT;AAEA,QAAI,KAAK,QAAQ,MAAM,WAAW;AAChC,WAAK,MAAM,OAAO,GAAG;AACrB,aAAO;AAAA,IACT;AAEA,WAAO,MAAM;AAAA,EACf;AAAA,EAEA,IAAO,KAAa,OAAU,KAAoB;AAChD,QAAI,KAAK,MAAM,QAAQ,KAAK,SAAS;AACnC,WAAK,YAAA;AAAA,IACP;AAEA,UAAM,YAAY,KAAK,IAAA,KAAS,OAAO,KAAK;AAC5C,SAAK,MAAM,IAAI,KAAK,EAAE,OAAO,WAAW;AAAA,EAC1C;AAAA,EAEA,IAAI,KAAsB;AACxB,UAAM,QAAQ,KAAK,MAAM,IAAI,GAAG;AAChC,QAAI,CAAC,MAAO,QAAO;AAEnB,QAAI,KAAK,QAAQ,MAAM,WAAW;AAChC,WAAK,MAAM,OAAO,GAAG;AACrB,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,KAAsB;AAC3B,WAAO,KAAK,MAAM,OAAO,GAAG;AAAA,EAC9B;AAAA,EAEA,QAAc;AACZ,SAAK,MAAM,MAAA;AAAA,EACb;AAAA,EAEA,OAAe;AACb,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA,EAEQ,cAAoB;AAC1B,QAAI,YAA2B;AAC/B,QAAI,aAAa;AAEjB,eAAW,CAAC,KAAK,KAAK,KAAK,KAAK,OAAO;AACrC,UAAI,MAAM,YAAY,YAAY;AAChC,qBAAa,MAAM;AACnB,oBAAY;AAAA,MACd;AAAA,IACF;AAEA,QAAI,WAAW;AACb,WAAK,MAAM,OAAO,SAAS;AAAA,IAC7B;AAAA,EACF;AACF;AAEO,SAAS,iBAAiB,QAA2C;AAC1E,SAAO,IAAI,iBAAiB,MAAM;AACpC;AAEO,SAAS,iBAAiB,QAA+B;AAC9D,QAAM,QAAQ;AAAA,IACZ,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK,UAAU,OAAO,UAAU,CAAA,CAAE;AAAA,IAClC,KAAK,UAAU,OAAO,QAAQ,CAAA,CAAE;AAAA,EAAA;AAGlC,SAAO,MAAM,KAAK,GAAG;AACvB;;;;"}
|
package/dist/utils/cache.js
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
|
-
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
1
|
import { DEFAULT_CACHE_CONFIG } from "../core/types.js";
|
|
5
2
|
class MemoryCacheStore {
|
|
3
|
+
cache = /* @__PURE__ */ new Map();
|
|
4
|
+
maxSize;
|
|
5
|
+
defaultTtl;
|
|
6
6
|
constructor(config = {}) {
|
|
7
|
-
__publicField(this, "cache", /* @__PURE__ */ new Map());
|
|
8
|
-
__publicField(this, "maxSize");
|
|
9
|
-
__publicField(this, "defaultTtl");
|
|
10
7
|
this.maxSize = config.maxSize ?? DEFAULT_CACHE_CONFIG.maxSize;
|
|
11
8
|
this.defaultTtl = config.ttl ?? DEFAULT_CACHE_CONFIG.ttl;
|
|
12
9
|
}
|
package/dist/utils/cache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sources":["../../src/utils/cache.ts"],"sourcesContent":["import type { CacheConfig, RequestConfig } from '../core/types';\nimport { DEFAULT_CACHE_CONFIG } from '../core/types';\n\nexport interface CacheStore {\n get<T>(key: string): T | null;\n set<T>(key: string, value: T, ttl?: number): void;\n has(key: string): boolean;\n delete(key: string): boolean;\n clear(): void;\n size(): number;\n}\n\ninterface CacheEntry<T> {\n value: T;\n expiresAt: number;\n}\n\nexport class MemoryCacheStore implements CacheStore {\n private cache: Map<string, CacheEntry<unknown>> = new Map();\n private maxSize: number;\n private defaultTtl: number;\n\n constructor(config: Partial<CacheConfig> = {}) {\n this.maxSize = config.maxSize ?? DEFAULT_CACHE_CONFIG.maxSize;\n this.defaultTtl = config.ttl ?? DEFAULT_CACHE_CONFIG.ttl;\n }\n\n get<T>(key: string): T | null {\n const entry = this.cache.get(key);\n \n if (!entry) {\n return null;\n }\n \n if (Date.now() > entry.expiresAt) {\n this.cache.delete(key);\n return null;\n }\n \n return entry.value as T;\n }\n\n set<T>(key: string, value: T, ttl?: number): void {\n if (this.cache.size >= this.maxSize) {\n this.evictOldest();\n }\n \n const expiresAt = Date.now() + (ttl ?? this.defaultTtl);\n this.cache.set(key, { value, expiresAt });\n }\n\n has(key: string): boolean {\n const entry = this.cache.get(key);\n if (!entry) return false;\n \n if (Date.now() > entry.expiresAt) {\n this.cache.delete(key);\n return false;\n }\n \n return true;\n }\n\n delete(key: string): boolean {\n return this.cache.delete(key);\n }\n\n clear(): void {\n this.cache.clear();\n }\n\n size(): number {\n return this.cache.size;\n }\n\n private evictOldest(): void {\n let oldestKey: string | null = null;\n let oldestTime = Infinity;\n \n for (const [key, entry] of this.cache) {\n if (entry.expiresAt < oldestTime) {\n oldestTime = entry.expiresAt;\n oldestKey = key;\n }\n }\n \n if (oldestKey) {\n this.cache.delete(oldestKey);\n }\n }\n}\n\nexport function createCacheStore(config?: Partial<CacheConfig>): CacheStore {\n return new MemoryCacheStore(config);\n}\n\nexport function generateCacheKey(config: RequestConfig): string {\n const parts = [\n config.method,\n config.url,\n JSON.stringify(config.params ?? {}),\n JSON.stringify(config.body ?? {}),\n ];\n \n return parts.join(':');\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cache.js","sources":["../../src/utils/cache.ts"],"sourcesContent":["import type { CacheConfig, RequestConfig } from '../core/types';\nimport { DEFAULT_CACHE_CONFIG } from '../core/types';\n\nexport interface CacheStore {\n get<T>(key: string): T | null;\n set<T>(key: string, value: T, ttl?: number): void;\n has(key: string): boolean;\n delete(key: string): boolean;\n clear(): void;\n size(): number;\n}\n\ninterface CacheEntry<T> {\n value: T;\n expiresAt: number;\n}\n\nexport class MemoryCacheStore implements CacheStore {\n private cache: Map<string, CacheEntry<unknown>> = new Map();\n private maxSize: number;\n private defaultTtl: number;\n\n constructor(config: Partial<CacheConfig> = {}) {\n this.maxSize = config.maxSize ?? DEFAULT_CACHE_CONFIG.maxSize;\n this.defaultTtl = config.ttl ?? DEFAULT_CACHE_CONFIG.ttl;\n }\n\n get<T>(key: string): T | null {\n const entry = this.cache.get(key);\n \n if (!entry) {\n return null;\n }\n \n if (Date.now() > entry.expiresAt) {\n this.cache.delete(key);\n return null;\n }\n \n return entry.value as T;\n }\n\n set<T>(key: string, value: T, ttl?: number): void {\n if (this.cache.size >= this.maxSize) {\n this.evictOldest();\n }\n \n const expiresAt = Date.now() + (ttl ?? this.defaultTtl);\n this.cache.set(key, { value, expiresAt });\n }\n\n has(key: string): boolean {\n const entry = this.cache.get(key);\n if (!entry) return false;\n \n if (Date.now() > entry.expiresAt) {\n this.cache.delete(key);\n return false;\n }\n \n return true;\n }\n\n delete(key: string): boolean {\n return this.cache.delete(key);\n }\n\n clear(): void {\n this.cache.clear();\n }\n\n size(): number {\n return this.cache.size;\n }\n\n private evictOldest(): void {\n let oldestKey: string | null = null;\n let oldestTime = Infinity;\n \n for (const [key, entry] of this.cache) {\n if (entry.expiresAt < oldestTime) {\n oldestTime = entry.expiresAt;\n oldestKey = key;\n }\n }\n \n if (oldestKey) {\n this.cache.delete(oldestKey);\n }\n }\n}\n\nexport function createCacheStore(config?: Partial<CacheConfig>): CacheStore {\n return new MemoryCacheStore(config);\n}\n\nexport function generateCacheKey(config: RequestConfig): string {\n const parts = [\n config.method,\n config.url,\n JSON.stringify(config.params ?? {}),\n JSON.stringify(config.body ?? {}),\n ];\n \n return parts.join(':');\n}\n"],"names":[],"mappings":";AAiBO,MAAM,iBAAuC;AAAA,EAC1C,4BAA8C,IAAA;AAAA,EAC9C;AAAA,EACA;AAAA,EAER,YAAY,SAA+B,IAAI;AAC7C,SAAK,UAAU,OAAO,WAAW,qBAAqB;AACtD,SAAK,aAAa,OAAO,OAAO,qBAAqB;AAAA,EACvD;AAAA,EAEA,IAAO,KAAuB;AAC5B,UAAM,QAAQ,KAAK,MAAM,IAAI,GAAG;AAEhC,QAAI,CAAC,OAAO;AACV,aAAO;AAAA,IACT;AAEA,QAAI,KAAK,QAAQ,MAAM,WAAW;AAChC,WAAK,MAAM,OAAO,GAAG;AACrB,aAAO;AAAA,IACT;AAEA,WAAO,MAAM;AAAA,EACf;AAAA,EAEA,IAAO,KAAa,OAAU,KAAoB;AAChD,QAAI,KAAK,MAAM,QAAQ,KAAK,SAAS;AACnC,WAAK,YAAA;AAAA,IACP;AAEA,UAAM,YAAY,KAAK,IAAA,KAAS,OAAO,KAAK;AAC5C,SAAK,MAAM,IAAI,KAAK,EAAE,OAAO,WAAW;AAAA,EAC1C;AAAA,EAEA,IAAI,KAAsB;AACxB,UAAM,QAAQ,KAAK,MAAM,IAAI,GAAG;AAChC,QAAI,CAAC,MAAO,QAAO;AAEnB,QAAI,KAAK,QAAQ,MAAM,WAAW;AAChC,WAAK,MAAM,OAAO,GAAG;AACrB,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,KAAsB;AAC3B,WAAO,KAAK,MAAM,OAAO,GAAG;AAAA,EAC9B;AAAA,EAEA,QAAc;AACZ,SAAK,MAAM,MAAA;AAAA,EACb;AAAA,EAEA,OAAe;AACb,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA,EAEQ,cAAoB;AAC1B,QAAI,YAA2B;AAC/B,QAAI,aAAa;AAEjB,eAAW,CAAC,KAAK,KAAK,KAAK,KAAK,OAAO;AACrC,UAAI,MAAM,YAAY,YAAY;AAChC,qBAAa,MAAM;AACnB,oBAAY;AAAA,MACd;AAAA,IACF;AAEA,QAAI,WAAW;AACb,WAAK,MAAM,OAAO,SAAS;AAAA,IAC7B;AAAA,EACF;AACF;AAEO,SAAS,iBAAiB,QAA2C;AAC1E,SAAO,IAAI,iBAAiB,MAAM;AACpC;AAEO,SAAS,iBAAiB,QAA+B;AAC9D,QAAM,QAAQ;AAAA,IACZ,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK,UAAU,OAAO,UAAU,CAAA,CAAE;AAAA,IAClC,KAAK,UAAU,OAAO,QAAQ,CAAA,CAAE;AAAA,EAAA;AAGlC,SAAO,MAAM,KAAK,GAAG;AACvB;"}
|
package/dist/utils/logger.cjs
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
4
|
-
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
5
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
6
3
|
const LOG_LEVELS = {
|
|
7
4
|
debug: 0,
|
|
@@ -11,11 +8,11 @@ const LOG_LEVELS = {
|
|
|
11
8
|
silent: 4
|
|
12
9
|
};
|
|
13
10
|
class ConsoleLogger {
|
|
11
|
+
level;
|
|
12
|
+
prefix;
|
|
13
|
+
timestamp;
|
|
14
|
+
colors;
|
|
14
15
|
constructor(config = {}) {
|
|
15
|
-
__publicField(this, "level");
|
|
16
|
-
__publicField(this, "prefix");
|
|
17
|
-
__publicField(this, "timestamp");
|
|
18
|
-
__publicField(this, "colors");
|
|
19
16
|
this.level = config.level ?? "info";
|
|
20
17
|
this.prefix = config.prefix ?? "[SDK]";
|
|
21
18
|
this.timestamp = config.timestamp ?? true;
|
|
@@ -99,7 +96,7 @@ const noopLogger = {
|
|
|
99
96
|
}
|
|
100
97
|
};
|
|
101
98
|
function createLogger(config) {
|
|
102
|
-
if (
|
|
99
|
+
if (config?.level === "silent") {
|
|
103
100
|
return noopLogger;
|
|
104
101
|
}
|
|
105
102
|
return new ConsoleLogger(config);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.cjs","sources":["../../src/utils/logger.ts"],"sourcesContent":["import type { LogLevel, LoggerConfig } from '../core/types';\n\nexport interface Logger {\n debug(message: string, ...args: unknown[]): void;\n info(message: string, ...args: unknown[]): void;\n warn(message: string, ...args: unknown[]): void;\n error(message: string, ...args: unknown[]): void;\n log(level: LogLevel, message: string, ...args: unknown[]): void;\n setLevel(level: LogLevel): void;\n}\n\nconst LOG_LEVELS: Record<LogLevel, number> = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n silent: 4,\n};\n\nexport class ConsoleLogger implements Logger {\n private level: LogLevel;\n private prefix: string;\n private timestamp: boolean;\n private colors: boolean;\n\n constructor(config: Partial<LoggerConfig> = {}) {\n this.level = config.level ?? 'info';\n this.prefix = config.prefix ?? '[SDK]';\n this.timestamp = config.timestamp ?? true;\n this.colors = config.colors ?? true;\n }\n\n private formatMessage(level: LogLevel, message: string): string {\n const parts: string[] = [];\n \n if (this.timestamp) {\n parts.push(new Date().toISOString());\n }\n \n parts.push(this.prefix);\n parts.push(`[${level.toUpperCase()}]`);\n parts.push(message);\n \n return parts.join(' ');\n }\n\n private getColorCode(level: LogLevel): string {\n if (!this.colors) return '';\n \n const colors: Record<LogLevel, string> = {\n debug: '\\x1b[36m',\n info: '\\x1b[32m',\n warn: '\\x1b[33m',\n error: '\\x1b[31m',\n silent: '',\n };\n \n return colors[level];\n }\n\n private getResetCode(): string {\n return this.colors ? '\\x1b[0m' : '';\n }\n\n log(level: LogLevel, message: string, ...args: unknown[]): void {\n if (LOG_LEVELS[level] < LOG_LEVELS[this.level]) {\n return;\n }\n\n const formattedMessage = this.formatMessage(level, message);\n const colorCode = this.getColorCode(level);\n const resetCode = this.getResetCode();\n\n const output = `${colorCode}${formattedMessage}${resetCode}`;\n\n switch (level) {\n case 'debug':\n console.debug(output, ...args);\n break;\n case 'info':\n console.info(output, ...args);\n break;\n case 'warn':\n console.warn(output, ...args);\n break;\n case 'error':\n console.error(output, ...args);\n break;\n }\n }\n\n debug(message: string, ...args: unknown[]): void {\n this.log('debug', message, ...args);\n }\n\n info(message: string, ...args: unknown[]): void {\n this.log('info', message, ...args);\n }\n\n warn(message: string, ...args: unknown[]): void {\n this.log('warn', message, ...args);\n }\n\n error(message: string, ...args: unknown[]): void {\n this.log('error', message, ...args);\n }\n\n setLevel(level: LogLevel): void {\n this.level = level;\n }\n}\n\nexport const noopLogger: Logger = {\n debug: () => {},\n info: () => {},\n warn: () => {},\n error: () => {},\n log: () => {},\n setLevel: () => {},\n};\n\nexport function createLogger(config?: Partial<LoggerConfig>): Logger {\n if (config?.level === 'silent') {\n return noopLogger;\n }\n return new ConsoleLogger(config);\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logger.cjs","sources":["../../src/utils/logger.ts"],"sourcesContent":["import type { LogLevel, LoggerConfig } from '../core/types';\n\nexport interface Logger {\n debug(message: string, ...args: unknown[]): void;\n info(message: string, ...args: unknown[]): void;\n warn(message: string, ...args: unknown[]): void;\n error(message: string, ...args: unknown[]): void;\n log(level: LogLevel, message: string, ...args: unknown[]): void;\n setLevel(level: LogLevel): void;\n}\n\nconst LOG_LEVELS: Record<LogLevel, number> = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n silent: 4,\n};\n\nexport class ConsoleLogger implements Logger {\n private level: LogLevel;\n private prefix: string;\n private timestamp: boolean;\n private colors: boolean;\n\n constructor(config: Partial<LoggerConfig> = {}) {\n this.level = config.level ?? 'info';\n this.prefix = config.prefix ?? '[SDK]';\n this.timestamp = config.timestamp ?? true;\n this.colors = config.colors ?? true;\n }\n\n private formatMessage(level: LogLevel, message: string): string {\n const parts: string[] = [];\n \n if (this.timestamp) {\n parts.push(new Date().toISOString());\n }\n \n parts.push(this.prefix);\n parts.push(`[${level.toUpperCase()}]`);\n parts.push(message);\n \n return parts.join(' ');\n }\n\n private getColorCode(level: LogLevel): string {\n if (!this.colors) return '';\n \n const colors: Record<LogLevel, string> = {\n debug: '\\x1b[36m',\n info: '\\x1b[32m',\n warn: '\\x1b[33m',\n error: '\\x1b[31m',\n silent: '',\n };\n \n return colors[level];\n }\n\n private getResetCode(): string {\n return this.colors ? '\\x1b[0m' : '';\n }\n\n log(level: LogLevel, message: string, ...args: unknown[]): void {\n if (LOG_LEVELS[level] < LOG_LEVELS[this.level]) {\n return;\n }\n\n const formattedMessage = this.formatMessage(level, message);\n const colorCode = this.getColorCode(level);\n const resetCode = this.getResetCode();\n\n const output = `${colorCode}${formattedMessage}${resetCode}`;\n\n switch (level) {\n case 'debug':\n console.debug(output, ...args);\n break;\n case 'info':\n console.info(output, ...args);\n break;\n case 'warn':\n console.warn(output, ...args);\n break;\n case 'error':\n console.error(output, ...args);\n break;\n }\n }\n\n debug(message: string, ...args: unknown[]): void {\n this.log('debug', message, ...args);\n }\n\n info(message: string, ...args: unknown[]): void {\n this.log('info', message, ...args);\n }\n\n warn(message: string, ...args: unknown[]): void {\n this.log('warn', message, ...args);\n }\n\n error(message: string, ...args: unknown[]): void {\n this.log('error', message, ...args);\n }\n\n setLevel(level: LogLevel): void {\n this.level = level;\n }\n}\n\nexport const noopLogger: Logger = {\n debug: () => {},\n info: () => {},\n warn: () => {},\n error: () => {},\n log: () => {},\n setLevel: () => {},\n};\n\nexport function createLogger(config?: Partial<LoggerConfig>): Logger {\n if (config?.level === 'silent') {\n return noopLogger;\n }\n return new ConsoleLogger(config);\n}\n"],"names":[],"mappings":";;AAWA,MAAM,aAAuC;AAAA,EAC3C,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AAAA,EACP,QAAQ;AACV;AAEO,MAAM,cAAgC;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAER,YAAY,SAAgC,IAAI;AAC9C,SAAK,QAAQ,OAAO,SAAS;AAC7B,SAAK,SAAS,OAAO,UAAU;AAC/B,SAAK,YAAY,OAAO,aAAa;AACrC,SAAK,SAAS,OAAO,UAAU;AAAA,EACjC;AAAA,EAEQ,cAAc,OAAiB,SAAyB;AAC9D,UAAM,QAAkB,CAAA;AAExB,QAAI,KAAK,WAAW;AAClB,YAAM,MAAK,oBAAI,KAAA,GAAO,aAAa;AAAA,IACrC;AAEA,UAAM,KAAK,KAAK,MAAM;AACtB,UAAM,KAAK,IAAI,MAAM,YAAA,CAAa,GAAG;AACrC,UAAM,KAAK,OAAO;AAElB,WAAO,MAAM,KAAK,GAAG;AAAA,EACvB;AAAA,EAEQ,aAAa,OAAyB;AAC5C,QAAI,CAAC,KAAK,OAAQ,QAAO;AAEzB,UAAM,SAAmC;AAAA,MACvC,OAAO;AAAA,MACP,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,QAAQ;AAAA,IAAA;AAGV,WAAO,OAAO,KAAK;AAAA,EACrB;AAAA,EAEQ,eAAuB;AAC7B,WAAO,KAAK,SAAS,YAAY;AAAA,EACnC;AAAA,EAEA,IAAI,OAAiB,YAAoB,MAAuB;AAC9D,QAAI,WAAW,KAAK,IAAI,WAAW,KAAK,KAAK,GAAG;AAC9C;AAAA,IACF;AAEA,UAAM,mBAAmB,KAAK,cAAc,OAAO,OAAO;AAC1D,UAAM,YAAY,KAAK,aAAa,KAAK;AACzC,UAAM,YAAY,KAAK,aAAA;AAEvB,UAAM,SAAS,GAAG,SAAS,GAAG,gBAAgB,GAAG,SAAS;AAE1D,YAAQ,OAAA;AAAA,MACN,KAAK;AACH,gBAAQ,MAAM,QAAQ,GAAG,IAAI;AAC7B;AAAA,MACF,KAAK;AACH,gBAAQ,KAAK,QAAQ,GAAG,IAAI;AAC5B;AAAA,MACF,KAAK;AACH,gBAAQ,KAAK,QAAQ,GAAG,IAAI;AAC5B;AAAA,MACF,KAAK;AACH,gBAAQ,MAAM,QAAQ,GAAG,IAAI;AAC7B;AAAA,IAAA;AAAA,EAEN;AAAA,EAEA,MAAM,YAAoB,MAAuB;AAC/C,SAAK,IAAI,SAAS,SAAS,GAAG,IAAI;AAAA,EACpC;AAAA,EAEA,KAAK,YAAoB,MAAuB;AAC9C,SAAK,IAAI,QAAQ,SAAS,GAAG,IAAI;AAAA,EACnC;AAAA,EAEA,KAAK,YAAoB,MAAuB;AAC9C,SAAK,IAAI,QAAQ,SAAS,GAAG,IAAI;AAAA,EACnC;AAAA,EAEA,MAAM,YAAoB,MAAuB;AAC/C,SAAK,IAAI,SAAS,SAAS,GAAG,IAAI;AAAA,EACpC;AAAA,EAEA,SAAS,OAAuB;AAC9B,SAAK,QAAQ;AAAA,EACf;AACF;AAEO,MAAM,aAAqB;AAAA,EAChC,OAAO,MAAM;AAAA,EAAC;AAAA,EACd,MAAM,MAAM;AAAA,EAAC;AAAA,EACb,MAAM,MAAM;AAAA,EAAC;AAAA,EACb,OAAO,MAAM;AAAA,EAAC;AAAA,EACd,KAAK,MAAM;AAAA,EAAC;AAAA,EACZ,UAAU,MAAM;AAAA,EAAC;AACnB;AAEO,SAAS,aAAa,QAAwC;AACnE,MAAI,QAAQ,UAAU,UAAU;AAC9B,WAAO;AAAA,EACT;AACA,SAAO,IAAI,cAAc,MAAM;AACjC;;;;"}
|
package/dist/utils/logger.js
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
|
-
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
1
|
const LOG_LEVELS = {
|
|
5
2
|
debug: 0,
|
|
6
3
|
info: 1,
|
|
@@ -9,11 +6,11 @@ const LOG_LEVELS = {
|
|
|
9
6
|
silent: 4
|
|
10
7
|
};
|
|
11
8
|
class ConsoleLogger {
|
|
9
|
+
level;
|
|
10
|
+
prefix;
|
|
11
|
+
timestamp;
|
|
12
|
+
colors;
|
|
12
13
|
constructor(config = {}) {
|
|
13
|
-
__publicField(this, "level");
|
|
14
|
-
__publicField(this, "prefix");
|
|
15
|
-
__publicField(this, "timestamp");
|
|
16
|
-
__publicField(this, "colors");
|
|
17
14
|
this.level = config.level ?? "info";
|
|
18
15
|
this.prefix = config.prefix ?? "[SDK]";
|
|
19
16
|
this.timestamp = config.timestamp ?? true;
|
|
@@ -97,7 +94,7 @@ const noopLogger = {
|
|
|
97
94
|
}
|
|
98
95
|
};
|
|
99
96
|
function createLogger(config) {
|
|
100
|
-
if (
|
|
97
|
+
if (config?.level === "silent") {
|
|
101
98
|
return noopLogger;
|
|
102
99
|
}
|
|
103
100
|
return new ConsoleLogger(config);
|
package/dist/utils/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sources":["../../src/utils/logger.ts"],"sourcesContent":["import type { LogLevel, LoggerConfig } from '../core/types';\n\nexport interface Logger {\n debug(message: string, ...args: unknown[]): void;\n info(message: string, ...args: unknown[]): void;\n warn(message: string, ...args: unknown[]): void;\n error(message: string, ...args: unknown[]): void;\n log(level: LogLevel, message: string, ...args: unknown[]): void;\n setLevel(level: LogLevel): void;\n}\n\nconst LOG_LEVELS: Record<LogLevel, number> = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n silent: 4,\n};\n\nexport class ConsoleLogger implements Logger {\n private level: LogLevel;\n private prefix: string;\n private timestamp: boolean;\n private colors: boolean;\n\n constructor(config: Partial<LoggerConfig> = {}) {\n this.level = config.level ?? 'info';\n this.prefix = config.prefix ?? '[SDK]';\n this.timestamp = config.timestamp ?? true;\n this.colors = config.colors ?? true;\n }\n\n private formatMessage(level: LogLevel, message: string): string {\n const parts: string[] = [];\n \n if (this.timestamp) {\n parts.push(new Date().toISOString());\n }\n \n parts.push(this.prefix);\n parts.push(`[${level.toUpperCase()}]`);\n parts.push(message);\n \n return parts.join(' ');\n }\n\n private getColorCode(level: LogLevel): string {\n if (!this.colors) return '';\n \n const colors: Record<LogLevel, string> = {\n debug: '\\x1b[36m',\n info: '\\x1b[32m',\n warn: '\\x1b[33m',\n error: '\\x1b[31m',\n silent: '',\n };\n \n return colors[level];\n }\n\n private getResetCode(): string {\n return this.colors ? '\\x1b[0m' : '';\n }\n\n log(level: LogLevel, message: string, ...args: unknown[]): void {\n if (LOG_LEVELS[level] < LOG_LEVELS[this.level]) {\n return;\n }\n\n const formattedMessage = this.formatMessage(level, message);\n const colorCode = this.getColorCode(level);\n const resetCode = this.getResetCode();\n\n const output = `${colorCode}${formattedMessage}${resetCode}`;\n\n switch (level) {\n case 'debug':\n console.debug(output, ...args);\n break;\n case 'info':\n console.info(output, ...args);\n break;\n case 'warn':\n console.warn(output, ...args);\n break;\n case 'error':\n console.error(output, ...args);\n break;\n }\n }\n\n debug(message: string, ...args: unknown[]): void {\n this.log('debug', message, ...args);\n }\n\n info(message: string, ...args: unknown[]): void {\n this.log('info', message, ...args);\n }\n\n warn(message: string, ...args: unknown[]): void {\n this.log('warn', message, ...args);\n }\n\n error(message: string, ...args: unknown[]): void {\n this.log('error', message, ...args);\n }\n\n setLevel(level: LogLevel): void {\n this.level = level;\n }\n}\n\nexport const noopLogger: Logger = {\n debug: () => {},\n info: () => {},\n warn: () => {},\n error: () => {},\n log: () => {},\n setLevel: () => {},\n};\n\nexport function createLogger(config?: Partial<LoggerConfig>): Logger {\n if (config?.level === 'silent') {\n return noopLogger;\n }\n return new ConsoleLogger(config);\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logger.js","sources":["../../src/utils/logger.ts"],"sourcesContent":["import type { LogLevel, LoggerConfig } from '../core/types';\n\nexport interface Logger {\n debug(message: string, ...args: unknown[]): void;\n info(message: string, ...args: unknown[]): void;\n warn(message: string, ...args: unknown[]): void;\n error(message: string, ...args: unknown[]): void;\n log(level: LogLevel, message: string, ...args: unknown[]): void;\n setLevel(level: LogLevel): void;\n}\n\nconst LOG_LEVELS: Record<LogLevel, number> = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n silent: 4,\n};\n\nexport class ConsoleLogger implements Logger {\n private level: LogLevel;\n private prefix: string;\n private timestamp: boolean;\n private colors: boolean;\n\n constructor(config: Partial<LoggerConfig> = {}) {\n this.level = config.level ?? 'info';\n this.prefix = config.prefix ?? '[SDK]';\n this.timestamp = config.timestamp ?? true;\n this.colors = config.colors ?? true;\n }\n\n private formatMessage(level: LogLevel, message: string): string {\n const parts: string[] = [];\n \n if (this.timestamp) {\n parts.push(new Date().toISOString());\n }\n \n parts.push(this.prefix);\n parts.push(`[${level.toUpperCase()}]`);\n parts.push(message);\n \n return parts.join(' ');\n }\n\n private getColorCode(level: LogLevel): string {\n if (!this.colors) return '';\n \n const colors: Record<LogLevel, string> = {\n debug: '\\x1b[36m',\n info: '\\x1b[32m',\n warn: '\\x1b[33m',\n error: '\\x1b[31m',\n silent: '',\n };\n \n return colors[level];\n }\n\n private getResetCode(): string {\n return this.colors ? '\\x1b[0m' : '';\n }\n\n log(level: LogLevel, message: string, ...args: unknown[]): void {\n if (LOG_LEVELS[level] < LOG_LEVELS[this.level]) {\n return;\n }\n\n const formattedMessage = this.formatMessage(level, message);\n const colorCode = this.getColorCode(level);\n const resetCode = this.getResetCode();\n\n const output = `${colorCode}${formattedMessage}${resetCode}`;\n\n switch (level) {\n case 'debug':\n console.debug(output, ...args);\n break;\n case 'info':\n console.info(output, ...args);\n break;\n case 'warn':\n console.warn(output, ...args);\n break;\n case 'error':\n console.error(output, ...args);\n break;\n }\n }\n\n debug(message: string, ...args: unknown[]): void {\n this.log('debug', message, ...args);\n }\n\n info(message: string, ...args: unknown[]): void {\n this.log('info', message, ...args);\n }\n\n warn(message: string, ...args: unknown[]): void {\n this.log('warn', message, ...args);\n }\n\n error(message: string, ...args: unknown[]): void {\n this.log('error', message, ...args);\n }\n\n setLevel(level: LogLevel): void {\n this.level = level;\n }\n}\n\nexport const noopLogger: Logger = {\n debug: () => {},\n info: () => {},\n warn: () => {},\n error: () => {},\n log: () => {},\n setLevel: () => {},\n};\n\nexport function createLogger(config?: Partial<LoggerConfig>): Logger {\n if (config?.level === 'silent') {\n return noopLogger;\n }\n return new ConsoleLogger(config);\n}\n"],"names":[],"mappings":"AAWA,MAAM,aAAuC;AAAA,EAC3C,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AAAA,EACP,QAAQ;AACV;AAEO,MAAM,cAAgC;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAER,YAAY,SAAgC,IAAI;AAC9C,SAAK,QAAQ,OAAO,SAAS;AAC7B,SAAK,SAAS,OAAO,UAAU;AAC/B,SAAK,YAAY,OAAO,aAAa;AACrC,SAAK,SAAS,OAAO,UAAU;AAAA,EACjC;AAAA,EAEQ,cAAc,OAAiB,SAAyB;AAC9D,UAAM,QAAkB,CAAA;AAExB,QAAI,KAAK,WAAW;AAClB,YAAM,MAAK,oBAAI,KAAA,GAAO,aAAa;AAAA,IACrC;AAEA,UAAM,KAAK,KAAK,MAAM;AACtB,UAAM,KAAK,IAAI,MAAM,YAAA,CAAa,GAAG;AACrC,UAAM,KAAK,OAAO;AAElB,WAAO,MAAM,KAAK,GAAG;AAAA,EACvB;AAAA,EAEQ,aAAa,OAAyB;AAC5C,QAAI,CAAC,KAAK,OAAQ,QAAO;AAEzB,UAAM,SAAmC;AAAA,MACvC,OAAO;AAAA,MACP,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,QAAQ;AAAA,IAAA;AAGV,WAAO,OAAO,KAAK;AAAA,EACrB;AAAA,EAEQ,eAAuB;AAC7B,WAAO,KAAK,SAAS,YAAY;AAAA,EACnC;AAAA,EAEA,IAAI,OAAiB,YAAoB,MAAuB;AAC9D,QAAI,WAAW,KAAK,IAAI,WAAW,KAAK,KAAK,GAAG;AAC9C;AAAA,IACF;AAEA,UAAM,mBAAmB,KAAK,cAAc,OAAO,OAAO;AAC1D,UAAM,YAAY,KAAK,aAAa,KAAK;AACzC,UAAM,YAAY,KAAK,aAAA;AAEvB,UAAM,SAAS,GAAG,SAAS,GAAG,gBAAgB,GAAG,SAAS;AAE1D,YAAQ,OAAA;AAAA,MACN,KAAK;AACH,gBAAQ,MAAM,QAAQ,GAAG,IAAI;AAC7B;AAAA,MACF,KAAK;AACH,gBAAQ,KAAK,QAAQ,GAAG,IAAI;AAC5B;AAAA,MACF,KAAK;AACH,gBAAQ,KAAK,QAAQ,GAAG,IAAI;AAC5B;AAAA,MACF,KAAK;AACH,gBAAQ,MAAM,QAAQ,GAAG,IAAI;AAC7B;AAAA,IAAA;AAAA,EAEN;AAAA,EAEA,MAAM,YAAoB,MAAuB;AAC/C,SAAK,IAAI,SAAS,SAAS,GAAG,IAAI;AAAA,EACpC;AAAA,EAEA,KAAK,YAAoB,MAAuB;AAC9C,SAAK,IAAI,QAAQ,SAAS,GAAG,IAAI;AAAA,EACnC;AAAA,EAEA,KAAK,YAAoB,MAAuB;AAC9C,SAAK,IAAI,QAAQ,SAAS,GAAG,IAAI;AAAA,EACnC;AAAA,EAEA,MAAM,YAAoB,MAAuB;AAC/C,SAAK,IAAI,SAAS,SAAS,GAAG,IAAI;AAAA,EACpC;AAAA,EAEA,SAAS,OAAuB;AAC9B,SAAK,QAAQ;AAAA,EACf;AACF;AAEO,MAAM,aAAqB;AAAA,EAChC,OAAO,MAAM;AAAA,EAAC;AAAA,EACd,MAAM,MAAM;AAAA,EAAC;AAAA,EACb,MAAM,MAAM;AAAA,EAAC;AAAA,EACb,OAAO,MAAM;AAAA,EAAC;AAAA,EACd,KAAK,MAAM;AAAA,EAAC;AAAA,EACZ,UAAU,MAAM;AAAA,EAAC;AACnB;AAEO,SAAS,aAAa,QAAwC;AACnE,MAAI,QAAQ,UAAU,UAAU;AAC9B,WAAO;AAAA,EACT;AACA,SAAO,IAAI,cAAc,MAAM;AACjC;"}
|
package/dist/utils/string.cjs
CHANGED
|
@@ -31,23 +31,23 @@ exports.StringUtils = void 0;
|
|
|
31
31
|
}
|
|
32
32
|
StringUtils2.isNotBlank = isNotBlank;
|
|
33
33
|
function trim(value) {
|
|
34
|
-
return
|
|
34
|
+
return value?.trim() ?? "";
|
|
35
35
|
}
|
|
36
36
|
StringUtils2.trim = trim;
|
|
37
37
|
function trimStart(value) {
|
|
38
|
-
return
|
|
38
|
+
return value?.trimStart() ?? "";
|
|
39
39
|
}
|
|
40
40
|
StringUtils2.trimStart = trimStart;
|
|
41
41
|
function trimEnd(value) {
|
|
42
|
-
return
|
|
42
|
+
return value?.trimEnd() ?? "";
|
|
43
43
|
}
|
|
44
44
|
StringUtils2.trimEnd = trimEnd;
|
|
45
45
|
function toLowerCase(value) {
|
|
46
|
-
return
|
|
46
|
+
return value?.toLowerCase() ?? "";
|
|
47
47
|
}
|
|
48
48
|
StringUtils2.toLowerCase = toLowerCase;
|
|
49
49
|
function toUpperCase(value) {
|
|
50
|
-
return
|
|
50
|
+
return value?.toUpperCase() ?? "";
|
|
51
51
|
}
|
|
52
52
|
StringUtils2.toUpperCase = toUpperCase;
|
|
53
53
|
function capitalize(value) {
|
|
@@ -98,11 +98,11 @@ exports.StringUtils = void 0;
|
|
|
98
98
|
}
|
|
99
99
|
StringUtils2.truncateWords = truncateWords;
|
|
100
100
|
function padStart(value, length, padChar = " ") {
|
|
101
|
-
return
|
|
101
|
+
return value?.padStart(length, padChar) ?? "";
|
|
102
102
|
}
|
|
103
103
|
StringUtils2.padStart = padStart;
|
|
104
104
|
function padEnd(value, length, padChar = " ") {
|
|
105
|
-
return
|
|
105
|
+
return value?.padEnd(length, padChar) ?? "";
|
|
106
106
|
}
|
|
107
107
|
StringUtils2.padEnd = padEnd;
|
|
108
108
|
function repeat(value, count) {
|
|
@@ -116,27 +116,27 @@ exports.StringUtils = void 0;
|
|
|
116
116
|
}
|
|
117
117
|
StringUtils2.reverse = reverse;
|
|
118
118
|
function startsWith(value, prefix) {
|
|
119
|
-
return
|
|
119
|
+
return value?.startsWith(prefix) ?? false;
|
|
120
120
|
}
|
|
121
121
|
StringUtils2.startsWith = startsWith;
|
|
122
122
|
function endsWith(value, suffix) {
|
|
123
|
-
return
|
|
123
|
+
return value?.endsWith(suffix) ?? false;
|
|
124
124
|
}
|
|
125
125
|
StringUtils2.endsWith = endsWith;
|
|
126
126
|
function contains(value, search) {
|
|
127
|
-
return
|
|
127
|
+
return value?.includes(search) ?? false;
|
|
128
128
|
}
|
|
129
129
|
StringUtils2.contains = contains;
|
|
130
130
|
function containsIgnoreCase(value, search) {
|
|
131
|
-
return
|
|
131
|
+
return value?.toLowerCase().includes(search.toLowerCase()) ?? false;
|
|
132
132
|
}
|
|
133
133
|
StringUtils2.containsIgnoreCase = containsIgnoreCase;
|
|
134
134
|
function indexOf(value, search) {
|
|
135
|
-
return
|
|
135
|
+
return value?.indexOf(search) ?? -1;
|
|
136
136
|
}
|
|
137
137
|
StringUtils2.indexOf = indexOf;
|
|
138
138
|
function lastIndexOf(value, search) {
|
|
139
|
-
return
|
|
139
|
+
return value?.lastIndexOf(search) ?? -1;
|
|
140
140
|
}
|
|
141
141
|
StringUtils2.lastIndexOf = lastIndexOf;
|
|
142
142
|
function substring(value, start, end) {
|
|
@@ -154,24 +154,24 @@ exports.StringUtils = void 0;
|
|
|
154
154
|
}
|
|
155
155
|
StringUtils2.split = split;
|
|
156
156
|
function join(values, separator = "") {
|
|
157
|
-
return
|
|
157
|
+
return values?.join(separator) ?? "";
|
|
158
158
|
}
|
|
159
159
|
StringUtils2.join = join;
|
|
160
160
|
function replace(value, search, replacement) {
|
|
161
|
-
return
|
|
161
|
+
return value?.replace(search, replacement) ?? "";
|
|
162
162
|
}
|
|
163
163
|
StringUtils2.replace = replace;
|
|
164
164
|
function replaceAll(value, search, replacement) {
|
|
165
|
-
return
|
|
165
|
+
return value?.replaceAll(search, replacement) ?? "";
|
|
166
166
|
}
|
|
167
167
|
StringUtils2.replaceAll = replaceAll;
|
|
168
168
|
function remove(value, search) {
|
|
169
|
-
return
|
|
169
|
+
return value?.replace(search, "") ?? "";
|
|
170
170
|
}
|
|
171
171
|
StringUtils2.remove = remove;
|
|
172
172
|
function removeAll(value, search) {
|
|
173
173
|
const regex = typeof search === "string" ? new RegExp(search, "g") : new RegExp(search.source, `${search.flags}g`);
|
|
174
|
-
return
|
|
174
|
+
return value?.replace(regex, "") ?? "";
|
|
175
175
|
}
|
|
176
176
|
StringUtils2.removeAll = removeAll;
|
|
177
177
|
function countOccurrences(value, search) {
|
|
@@ -187,7 +187,7 @@ exports.StringUtils = void 0;
|
|
|
187
187
|
'"': """,
|
|
188
188
|
"'": "'"
|
|
189
189
|
};
|
|
190
|
-
return
|
|
190
|
+
return value?.replace(/[&<>"']/g, (char) => htmlEntities[char] || char) ?? "";
|
|
191
191
|
}
|
|
192
192
|
StringUtils2.escapeHtml = escapeHtml;
|
|
193
193
|
function unescapeHtml(value) {
|
|
@@ -200,11 +200,11 @@ exports.StringUtils = void 0;
|
|
|
200
200
|
"'": "'",
|
|
201
201
|
"'": "'"
|
|
202
202
|
};
|
|
203
|
-
return
|
|
203
|
+
return value?.replace(/&(?:amp|lt|gt|quot|#39|#x27|apos);/g, (entity) => htmlEntities[entity] || entity) ?? "";
|
|
204
204
|
}
|
|
205
205
|
StringUtils2.unescapeHtml = unescapeHtml;
|
|
206
206
|
function escapeRegex(value) {
|
|
207
|
-
return
|
|
207
|
+
return value?.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") ?? "";
|
|
208
208
|
}
|
|
209
209
|
StringUtils2.escapeRegex = escapeRegex;
|
|
210
210
|
function isNumeric(value) {
|
|
@@ -328,11 +328,11 @@ exports.StringUtils = void 0;
|
|
|
328
328
|
}
|
|
329
329
|
StringUtils2.uuid = uuid;
|
|
330
330
|
function slugify(value) {
|
|
331
|
-
return
|
|
331
|
+
return value?.toLowerCase().trim().replace(/[^\w\s-]/g, "").replace(/[\s_-]+/g, "-").replace(/^-+|-+$/g, "") ?? "";
|
|
332
332
|
}
|
|
333
333
|
StringUtils2.slugify = slugify;
|
|
334
334
|
function unslugify(value) {
|
|
335
|
-
return
|
|
335
|
+
return value?.replace(/-/g, " ").replace(/\b\w/g, (char) => char.toUpperCase()) ?? "";
|
|
336
336
|
}
|
|
337
337
|
StringUtils2.unslugify = unslugify;
|
|
338
338
|
function levenshteinDistance(a, b) {
|
|
@@ -373,7 +373,7 @@ exports.StringUtils = void 0;
|
|
|
373
373
|
StringUtils2.fuzzyMatch = fuzzyMatch;
|
|
374
374
|
function equals(a, b, ignoreCase = false) {
|
|
375
375
|
if (ignoreCase) {
|
|
376
|
-
return
|
|
376
|
+
return a?.toLowerCase() === b?.toLowerCase();
|
|
377
377
|
}
|
|
378
378
|
return a === b;
|
|
379
379
|
}
|
|
@@ -408,11 +408,11 @@ exports.StringUtils = void 0;
|
|
|
408
408
|
}
|
|
409
409
|
StringUtils2.words = words;
|
|
410
410
|
function charAt(value, index) {
|
|
411
|
-
return
|
|
411
|
+
return value?.charAt(index) ?? "";
|
|
412
412
|
}
|
|
413
413
|
StringUtils2.charAt = charAt;
|
|
414
414
|
function charCodeAt(value, index) {
|
|
415
|
-
return
|
|
415
|
+
return value?.charCodeAt(index) ?? NaN;
|
|
416
416
|
}
|
|
417
417
|
StringUtils2.charCodeAt = charCodeAt;
|
|
418
418
|
function fromCharCode(...codes) {
|
|
@@ -425,9 +425,9 @@ exports.StringUtils = void 0;
|
|
|
425
425
|
}
|
|
426
426
|
StringUtils2.insert = insert;
|
|
427
427
|
function swapCase(value) {
|
|
428
|
-
return
|
|
428
|
+
return value?.replace(/[a-zA-Z]/g, (char) => {
|
|
429
429
|
return char === char.toUpperCase() ? char.toLowerCase() : char.toUpperCase();
|
|
430
|
-
})
|
|
430
|
+
}) ?? "";
|
|
431
431
|
}
|
|
432
432
|
StringUtils2.swapCase = swapCase;
|
|
433
433
|
function surround(value, wrapper) {
|
|
@@ -459,7 +459,7 @@ exports.StringUtils = void 0;
|
|
|
459
459
|
}
|
|
460
460
|
StringUtils2.unwrap = unwrap;
|
|
461
461
|
function template(templateStr, values) {
|
|
462
|
-
return
|
|
462
|
+
return templateStr?.replace(/\{\{(\w+)\}\}/g, (_, key) => String(values[key] ?? "")) ?? "";
|
|
463
463
|
}
|
|
464
464
|
StringUtils2.template = template;
|
|
465
465
|
function interpolate(templateStr, values) {
|
|
@@ -469,10 +469,7 @@ exports.StringUtils = void 0;
|
|
|
469
469
|
function dedent(value) {
|
|
470
470
|
const lines = value.split("\n");
|
|
471
471
|
const minIndent = Math.min(
|
|
472
|
-
...lines.filter((line) => line.trim().length > 0).map((line) =>
|
|
473
|
-
var _a;
|
|
474
|
-
return ((_a = line.match(/^\s*/)) == null ? void 0 : _a[0].length) ?? 0;
|
|
475
|
-
})
|
|
472
|
+
...lines.filter((line) => line.trim().length > 0).map((line) => line.match(/^\s*/)?.[0].length ?? 0)
|
|
476
473
|
);
|
|
477
474
|
return lines.map((line) => line.slice(minIndent)).join("\n");
|
|
478
475
|
}
|
|
@@ -504,7 +501,7 @@ exports.StringUtils = void 0;
|
|
|
504
501
|
StringUtils2.alignCenter = alignCenter;
|
|
505
502
|
function toBoolean(value) {
|
|
506
503
|
const truthy = ["true", "1", "yes", "on", "y"];
|
|
507
|
-
return truthy.includes(value
|
|
504
|
+
return truthy.includes(value?.toLowerCase().trim());
|
|
508
505
|
}
|
|
509
506
|
StringUtils2.toBoolean = toBoolean;
|
|
510
507
|
function toNumber(value, defaultValue = 0) {
|
|
@@ -537,11 +534,11 @@ exports.StringUtils = void 0;
|
|
|
537
534
|
}
|
|
538
535
|
StringUtils2.isAnagram = isAnagram;
|
|
539
536
|
function reverseWords(value) {
|
|
540
|
-
return
|
|
537
|
+
return value?.split(/\s+/).reverse().join(" ") ?? "";
|
|
541
538
|
}
|
|
542
539
|
StringUtils2.reverseWords = reverseWords;
|
|
543
540
|
function sortCharacters(value) {
|
|
544
|
-
return
|
|
541
|
+
return value?.split("").sort().join("") ?? "";
|
|
545
542
|
}
|
|
546
543
|
StringUtils2.sortCharacters = sortCharacters;
|
|
547
544
|
function uniqueCharacters(value) {
|
|
@@ -549,7 +546,7 @@ exports.StringUtils = void 0;
|
|
|
549
546
|
}
|
|
550
547
|
StringUtils2.uniqueCharacters = uniqueCharacters;
|
|
551
548
|
function removeDuplicates(value) {
|
|
552
|
-
return
|
|
549
|
+
return value?.split("").filter((char, index, arr) => arr.indexOf(char) === index).join("") ?? "";
|
|
553
550
|
}
|
|
554
551
|
StringUtils2.removeDuplicates = removeDuplicates;
|
|
555
552
|
function longestCommonSubstring(a, b) {
|
|
@@ -585,7 +582,7 @@ exports.StringUtils = void 0;
|
|
|
585
582
|
}
|
|
586
583
|
StringUtils2.longestCommonPrefix = longestCommonPrefix;
|
|
587
584
|
function longestCommonSuffix(strings) {
|
|
588
|
-
const reversed = strings.map((s) =>
|
|
585
|
+
const reversed = strings.map((s) => s?.split("").reverse().join("") ?? "");
|
|
589
586
|
return longestCommonPrefix(reversed).split("").reverse().join("");
|
|
590
587
|
}
|
|
591
588
|
StringUtils2.longestCommonSuffix = longestCommonSuffix;
|
|
@@ -661,11 +658,11 @@ exports.StringUtils = void 0;
|
|
|
661
658
|
}
|
|
662
659
|
StringUtils2.removeSuffix = removeSuffix;
|
|
663
660
|
function take(value, n) {
|
|
664
|
-
return
|
|
661
|
+
return value?.slice(0, n) ?? "";
|
|
665
662
|
}
|
|
666
663
|
StringUtils2.take = take;
|
|
667
664
|
function takeRight(value, n) {
|
|
668
|
-
return
|
|
665
|
+
return value?.slice(-n) ?? "";
|
|
669
666
|
}
|
|
670
667
|
StringUtils2.takeRight = takeRight;
|
|
671
668
|
function takeWhile(value, predicate) {
|
|
@@ -679,8 +676,8 @@ exports.StringUtils = void 0;
|
|
|
679
676
|
StringUtils2.takeWhile = takeWhile;
|
|
680
677
|
function takeRightWhile(value, predicate) {
|
|
681
678
|
let result = "";
|
|
682
|
-
for (let i = (
|
|
683
|
-
const char =
|
|
679
|
+
for (let i = (value?.length ?? 0) - 1; i >= 0; i--) {
|
|
680
|
+
const char = value?.charAt(i) ?? "";
|
|
684
681
|
if (!predicate(char)) break;
|
|
685
682
|
result = char + result;
|
|
686
683
|
}
|
|
@@ -688,11 +685,11 @@ exports.StringUtils = void 0;
|
|
|
688
685
|
}
|
|
689
686
|
StringUtils2.takeRightWhile = takeRightWhile;
|
|
690
687
|
function drop(value, n) {
|
|
691
|
-
return
|
|
688
|
+
return value?.slice(n) ?? "";
|
|
692
689
|
}
|
|
693
690
|
StringUtils2.drop = drop;
|
|
694
691
|
function dropRight(value, n) {
|
|
695
|
-
return
|
|
692
|
+
return value?.slice(0, -n) ?? "";
|
|
696
693
|
}
|
|
697
694
|
StringUtils2.dropRight = dropRight;
|
|
698
695
|
function dropWhile(value, predicate) {
|
|
@@ -701,15 +698,15 @@ exports.StringUtils = void 0;
|
|
|
701
698
|
if (!predicate(char)) break;
|
|
702
699
|
i++;
|
|
703
700
|
}
|
|
704
|
-
return
|
|
701
|
+
return value?.slice(i) ?? "";
|
|
705
702
|
}
|
|
706
703
|
StringUtils2.dropWhile = dropWhile;
|
|
707
704
|
function dropRightWhile(value, predicate) {
|
|
708
|
-
let i = (
|
|
709
|
-
while (i >= 0 && predicate(
|
|
705
|
+
let i = (value?.length ?? 0) - 1;
|
|
706
|
+
while (i >= 0 && predicate(value?.charAt(i) ?? "")) {
|
|
710
707
|
i--;
|
|
711
708
|
}
|
|
712
|
-
return
|
|
709
|
+
return value?.slice(0, i + 1) ?? "";
|
|
713
710
|
}
|
|
714
711
|
StringUtils2.dropRightWhile = dropRightWhile;
|
|
715
712
|
function countLines(value) {
|
|
@@ -726,15 +723,15 @@ exports.StringUtils = void 0;
|
|
|
726
723
|
}
|
|
727
724
|
StringUtils2.getLines = getLines;
|
|
728
725
|
function isSingleLine(value) {
|
|
729
|
-
return !
|
|
726
|
+
return !value?.includes("\n");
|
|
730
727
|
}
|
|
731
728
|
StringUtils2.isSingleLine = isSingleLine;
|
|
732
729
|
function isMultiLine(value) {
|
|
733
|
-
return
|
|
730
|
+
return value?.includes("\n") ?? false;
|
|
734
731
|
}
|
|
735
732
|
StringUtils2.isMultiLine = isMultiLine;
|
|
736
733
|
function normalizeLineEndings(value, lineEnding = "\n") {
|
|
737
|
-
return
|
|
734
|
+
return value?.replace(/\r\n|\r|\n/g, lineEnding) ?? "";
|
|
738
735
|
}
|
|
739
736
|
StringUtils2.normalizeLineEndings = normalizeLineEndings;
|
|
740
737
|
function toCamelCase(value) {
|
|
@@ -771,39 +768,39 @@ exports.StringUtils = void 0;
|
|
|
771
768
|
}
|
|
772
769
|
StringUtils2.toCapitalCase = toCapitalCase;
|
|
773
770
|
function toDotCase(value) {
|
|
774
|
-
return
|
|
771
|
+
return value?.replace(/([a-z])([A-Z])/g, "$1.$2").replace(/[-_\s]+/g, ".").toLowerCase() ?? "";
|
|
775
772
|
}
|
|
776
773
|
StringUtils2.toDotCase = toDotCase;
|
|
777
774
|
function toPathCase(value) {
|
|
778
|
-
return
|
|
775
|
+
return value?.replace(/([a-z])([A-Z])/g, "$1/$2").replace(/[-_\s]+/g, "/").toLowerCase() ?? "";
|
|
779
776
|
}
|
|
780
777
|
StringUtils2.toPathCase = toPathCase;
|
|
781
778
|
function stripTags(value) {
|
|
782
|
-
return
|
|
779
|
+
return value?.replace(/<[^>]*>/g, "") ?? "";
|
|
783
780
|
}
|
|
784
781
|
StringUtils2.stripTags = stripTags;
|
|
785
782
|
function stripNumbers(value) {
|
|
786
|
-
return
|
|
783
|
+
return value?.replace(/\d+/g, "") ?? "";
|
|
787
784
|
}
|
|
788
785
|
StringUtils2.stripNumbers = stripNumbers;
|
|
789
786
|
function stripWhitespace(value) {
|
|
790
|
-
return
|
|
787
|
+
return value?.replace(/\s+/g, "") ?? "";
|
|
791
788
|
}
|
|
792
789
|
StringUtils2.stripWhitespace = stripWhitespace;
|
|
793
790
|
function stripPunctuation(value) {
|
|
794
|
-
return
|
|
791
|
+
return value?.replace(/[^\w\s]/g, "") ?? "";
|
|
795
792
|
}
|
|
796
793
|
StringUtils2.stripPunctuation = stripPunctuation;
|
|
797
794
|
function normalizeWhitespace(value) {
|
|
798
|
-
return
|
|
795
|
+
return value?.replace(/\s+/g, " ").trim() ?? "";
|
|
799
796
|
}
|
|
800
797
|
StringUtils2.normalizeWhitespace = normalizeWhitespace;
|
|
801
798
|
function includesAll(value, searches) {
|
|
802
|
-
return searches.every((search) =>
|
|
799
|
+
return searches.every((search) => value?.includes(search) ?? false);
|
|
803
800
|
}
|
|
804
801
|
StringUtils2.includesAll = includesAll;
|
|
805
802
|
function includesAny(value, searches) {
|
|
806
|
-
return searches.some((search) =>
|
|
803
|
+
return searches.some((search) => value?.includes(search) ?? false);
|
|
807
804
|
}
|
|
808
805
|
StringUtils2.includesAny = includesAny;
|
|
809
806
|
})(exports.StringUtils || (exports.StringUtils = {}));
|