@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
package/dist/format.d.ts
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Format utilities for numbers and currencies
|
|
3
|
+
*/
|
|
4
|
+
declare class FormatOps {
|
|
5
|
+
/**
|
|
6
|
+
* Format a number with specified decimal places
|
|
7
|
+
*/
|
|
8
|
+
number(value: number, decimals: number): string;
|
|
9
|
+
/**
|
|
10
|
+
* Format a value as USD with optimal decimals
|
|
11
|
+
*/
|
|
12
|
+
usd(value: number): string;
|
|
13
|
+
/**
|
|
14
|
+
* Format a value as Bitcoin with optimal decimals
|
|
15
|
+
*/
|
|
16
|
+
btc(value: number): string;
|
|
17
|
+
/**
|
|
18
|
+
* Format a value as Ethereum with optimal decimals
|
|
19
|
+
*/
|
|
20
|
+
eth(value: number): string;
|
|
21
|
+
/**
|
|
22
|
+
* Auto format a value with the appropriate currency symbol and decimals
|
|
23
|
+
*/
|
|
24
|
+
auto(value: number, currencyCode: string): string;
|
|
25
|
+
/**
|
|
26
|
+
* Format a percentage with smart decimal places
|
|
27
|
+
*/
|
|
28
|
+
percentage(value: number): string;
|
|
29
|
+
/**
|
|
30
|
+
* Format a value with thousands separators
|
|
31
|
+
*/
|
|
32
|
+
withCommas(value: number, decimals?: number): string;
|
|
33
|
+
/**
|
|
34
|
+
* Format a value in compact notation (1.2K, 3.4M, etc)
|
|
35
|
+
*/
|
|
36
|
+
compact(value: number): string;
|
|
37
|
+
}
|
|
38
|
+
export declare const format: FormatOps;
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,cAAM,SAAS;IACb;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI/C;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAM1B;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAK1B;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAK1B;;OAEG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM;IAajD;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAUjC;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM;IAOpD;;OAEG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;CAO/B;AAED,eAAO,MAAM,MAAM,WAAkB,CAAA"}
|
package/dist/format.js
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { getOptimalDecimals, getSymbol, isFiat, isStablecoin } from './currency/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Format utilities for numbers and currencies
|
|
4
|
+
*/
|
|
5
|
+
class FormatOps {
|
|
6
|
+
/**
|
|
7
|
+
* Format a number with specified decimal places
|
|
8
|
+
*/
|
|
9
|
+
number(value, decimals) {
|
|
10
|
+
return value.toFixed(decimals);
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Format a value as USD with optimal decimals
|
|
14
|
+
*/
|
|
15
|
+
usd(value) {
|
|
16
|
+
const decimals = getOptimalDecimals(value, 'USD');
|
|
17
|
+
const formatted = Math.abs(value).toFixed(decimals);
|
|
18
|
+
return value < 0 ? `-$${formatted}` : `$${formatted}`;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Format a value as Bitcoin with optimal decimals
|
|
22
|
+
*/
|
|
23
|
+
btc(value) {
|
|
24
|
+
const decimals = getOptimalDecimals(value, 'BTC');
|
|
25
|
+
return `${value.toFixed(decimals)} ₿`;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Format a value as Ethereum with optimal decimals
|
|
29
|
+
*/
|
|
30
|
+
eth(value) {
|
|
31
|
+
const decimals = getOptimalDecimals(value, 'ETH');
|
|
32
|
+
return `${value.toFixed(decimals)} Ξ`;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Auto format a value with the appropriate currency symbol and decimals
|
|
36
|
+
*/
|
|
37
|
+
auto(value, currencyCode) {
|
|
38
|
+
const decimals = getOptimalDecimals(value, currencyCode);
|
|
39
|
+
const symbol = getSymbol(currencyCode);
|
|
40
|
+
const formatted = Math.abs(value).toFixed(decimals);
|
|
41
|
+
// Put symbol before for fiat/stablecoins, after for crypto
|
|
42
|
+
if (isFiat(currencyCode) || isStablecoin(currencyCode)) {
|
|
43
|
+
return value < 0 ? `-${symbol}${formatted}` : `${symbol}${formatted}`;
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
return value < 0 ? `-${formatted} ${symbol}` : `${formatted} ${symbol}`;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Format a percentage with smart decimal places
|
|
51
|
+
*/
|
|
52
|
+
percentage(value) {
|
|
53
|
+
let decimals = 1;
|
|
54
|
+
if (Math.abs(value) < 0.1) {
|
|
55
|
+
decimals = 2;
|
|
56
|
+
}
|
|
57
|
+
else if (Math.abs(value) >= 100) {
|
|
58
|
+
decimals = 0;
|
|
59
|
+
}
|
|
60
|
+
return `${value.toFixed(decimals)}%`;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Format a value with thousands separators
|
|
64
|
+
*/
|
|
65
|
+
withCommas(value, decimals) {
|
|
66
|
+
const fixed = decimals !== undefined ? value.toFixed(decimals) : value.toString();
|
|
67
|
+
const parts = fixed.split('.');
|
|
68
|
+
parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ',');
|
|
69
|
+
return parts.join('.');
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Format a value in compact notation (1.2K, 3.4M, etc)
|
|
73
|
+
*/
|
|
74
|
+
compact(value) {
|
|
75
|
+
const formatter = new Intl.NumberFormat('en', {
|
|
76
|
+
notation: 'compact',
|
|
77
|
+
maximumFractionDigits: 1
|
|
78
|
+
});
|
|
79
|
+
return formatter.format(value);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
export const format = new FormatOps();
|
|
83
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Main entry point for @adriangalilea/utils
|
|
3
|
+
* Exports all utilities
|
|
4
|
+
*/
|
|
5
|
+
export { runtime } from './runtime.js';
|
|
6
|
+
export type { RuntimeCapabilities } from './runtime.js';
|
|
7
|
+
export * from './universal/log.js';
|
|
8
|
+
export * from './universal/format.js';
|
|
9
|
+
export * from './universal/currency/index.js';
|
|
10
|
+
export * from './offensive.js';
|
|
11
|
+
export * from './platform/file.js';
|
|
12
|
+
export * from './platform/dir.js';
|
|
13
|
+
export * from './platform/path.js';
|
|
14
|
+
export * from './platform/project.js';
|
|
15
|
+
export * from './platform/kev.js';
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,YAAY,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAGvD,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,+BAA+B,CAAA;AAG7C,cAAc,gBAAgB,CAAA;AAI9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,mBAAmB,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Main entry point for @adriangalilea/utils
|
|
3
|
+
* Exports all utilities
|
|
4
|
+
*/
|
|
5
|
+
// Always export runtime - it's the foundation
|
|
6
|
+
export { runtime } from './runtime.js';
|
|
7
|
+
// Universal utilities - work everywhere
|
|
8
|
+
export * from './universal/log.js';
|
|
9
|
+
export * from './universal/format.js';
|
|
10
|
+
export * from './universal/currency/index.js';
|
|
11
|
+
// Offensive programming - uses runtime.exit() so it adapts to environment
|
|
12
|
+
export * from './offensive.js';
|
|
13
|
+
// Platform-specific utilities
|
|
14
|
+
// These will throw helpful errors in browser environment when used
|
|
15
|
+
export * from './platform/file.js';
|
|
16
|
+
export * from './platform/dir.js';
|
|
17
|
+
export * from './platform/path.js';
|
|
18
|
+
export * from './platform/project.js';
|
|
19
|
+
export * from './platform/kev.js';
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,8CAA8C;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAGtC,wCAAwC;AACxC,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,+BAA+B,CAAA;AAE7C,0EAA0E;AAC1E,cAAc,gBAAgB,CAAA;AAE9B,8BAA8B;AAC9B,mEAAmE;AACnE,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,mBAAmB,CAAA"}
|
package/dist/kev.d.ts
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KEV - A Redis-style KV store for environment variables
|
|
3
|
+
*
|
|
4
|
+
* DEFAULT USAGE (no namespaces needed!):
|
|
5
|
+
* apiKey = KEV.mustGet("API_KEY") // Panics if not found (required config)
|
|
6
|
+
* apiKey = KEV.get("API_KEY") // Returns "" if not found
|
|
7
|
+
* apiKey = KEV.get("API_KEY", "dev") // Returns "dev" if not found
|
|
8
|
+
* port = KEV.int("PORT", 8080) // With type conversion
|
|
9
|
+
* KEV.set("DEBUG", "true") // Sets in memory (fast)
|
|
10
|
+
*
|
|
11
|
+
* KEV.get("DATABASE_URL") // memory → process.env → .env → cache result
|
|
12
|
+
* KEV.get("DATABASE_URL") // memory (cached!) ✓
|
|
13
|
+
*
|
|
14
|
+
* CUSTOMIZE THE SEARCH ORDER:
|
|
15
|
+
* KEV.source.remove("os") // Ignore OS env (perfect for tests!)
|
|
16
|
+
* KEV.source.add(".env.local") // Add more fallbacks
|
|
17
|
+
* KEV.source.set(".env.test") // Or replace entirely
|
|
18
|
+
*
|
|
19
|
+
* REDIS-STYLE NAMESPACING (when you need control):
|
|
20
|
+
* KEV.get("os:PATH") // ONLY from OS, no fallback
|
|
21
|
+
* KEV.get(".env:API_KEY") // ONLY from .env file
|
|
22
|
+
* KEV.set("os:DEBUG", "true") // Write directly to OS
|
|
23
|
+
* KEV.set(".env:API_KEY", "secret") // Update .env file
|
|
24
|
+
*
|
|
25
|
+
* // Pattern matching
|
|
26
|
+
* KEV.keys("API_*") // Find all API_ keys
|
|
27
|
+
* KEV.all("os:*") // Get all OS vars
|
|
28
|
+
* KEV.clear("TEMP_*") // Clean up temp vars
|
|
29
|
+
*
|
|
30
|
+
* SOURCE TRACKING & OBSERVABILITY:
|
|
31
|
+
* const [value, source] = KEV.getWithSource("API_KEY") // Returns value + where it came from
|
|
32
|
+
* source = KEV.sourceOf("API_KEY") // "/path/to/project/.env"
|
|
33
|
+
* KEV.debug = true // Shows lookup chain
|
|
34
|
+
* KEV.export("backup.env") // Includes # from: comments
|
|
35
|
+
*/
|
|
36
|
+
interface MemEntry {
|
|
37
|
+
value: string;
|
|
38
|
+
source: string;
|
|
39
|
+
}
|
|
40
|
+
declare class SourceOps {
|
|
41
|
+
private kev;
|
|
42
|
+
constructor(kev: KevOps);
|
|
43
|
+
/**
|
|
44
|
+
* Replace all sources
|
|
45
|
+
*/
|
|
46
|
+
set(...sources: string[]): void;
|
|
47
|
+
/**
|
|
48
|
+
* Add sources to the search list
|
|
49
|
+
*/
|
|
50
|
+
add(...sources: string[]): void;
|
|
51
|
+
/**
|
|
52
|
+
* Remove specific sources
|
|
53
|
+
*/
|
|
54
|
+
remove(...sources: string[]): void;
|
|
55
|
+
/**
|
|
56
|
+
* List current sources
|
|
57
|
+
*/
|
|
58
|
+
list(): string[];
|
|
59
|
+
/**
|
|
60
|
+
* Clear all sources
|
|
61
|
+
*/
|
|
62
|
+
clear(): void;
|
|
63
|
+
}
|
|
64
|
+
export declare class KevOps {
|
|
65
|
+
memory: Map<string, MemEntry>;
|
|
66
|
+
sources: string[];
|
|
67
|
+
source: SourceOps;
|
|
68
|
+
debug: boolean;
|
|
69
|
+
constructor();
|
|
70
|
+
initializeSmartDefaults(): void;
|
|
71
|
+
parseKey(key: string): [string, string];
|
|
72
|
+
/**
|
|
73
|
+
* Get environment variable with optional default.
|
|
74
|
+
*/
|
|
75
|
+
get(key: string, defaultValue?: string): string;
|
|
76
|
+
/**
|
|
77
|
+
* Get environment variable or panic if not found
|
|
78
|
+
*/
|
|
79
|
+
mustGet(key: string): string;
|
|
80
|
+
/**
|
|
81
|
+
* Get where a cached key came from
|
|
82
|
+
*/
|
|
83
|
+
sourceOf(key: string): string;
|
|
84
|
+
/**
|
|
85
|
+
* Get both value and its source
|
|
86
|
+
*/
|
|
87
|
+
getWithSource(key: string, defaultValue?: string): [string, string];
|
|
88
|
+
getFromNamespace(namespace: string, key: string): string;
|
|
89
|
+
getFromFile(filePath: string, key: string): string;
|
|
90
|
+
/**
|
|
91
|
+
* Set environment variable
|
|
92
|
+
*/
|
|
93
|
+
set(key: string, value: string): void;
|
|
94
|
+
setToNamespace(namespace: string, key: string, value: string): void;
|
|
95
|
+
setToFile(path: string, key: string, value: string): void;
|
|
96
|
+
/**
|
|
97
|
+
* Check if key exists
|
|
98
|
+
*/
|
|
99
|
+
has(key: string): boolean;
|
|
100
|
+
hasInNamespace(namespace: string, key: string): boolean;
|
|
101
|
+
/**
|
|
102
|
+
* Get all keys matching pattern
|
|
103
|
+
*/
|
|
104
|
+
keys(pattern?: string): string[];
|
|
105
|
+
keysFromNamespace(namespace: string, pattern: string): string[];
|
|
106
|
+
getNamespaceData(namespace: string, pattern: string, keysOnly: boolean): Record<string, string>;
|
|
107
|
+
parseEnvFile(path: string, pattern: string, result: Record<string, string>, keysOnly: boolean): void;
|
|
108
|
+
matchPattern(key: string, pattern: string): boolean;
|
|
109
|
+
/**
|
|
110
|
+
* Get all variables matching patterns
|
|
111
|
+
*/
|
|
112
|
+
all(pattern?: string | string[]): Record<string, Record<string, string>>;
|
|
113
|
+
getAllFromNamespace(namespace: string, pattern: string): Record<string, string>;
|
|
114
|
+
/**
|
|
115
|
+
* Clear variables from memory
|
|
116
|
+
*/
|
|
117
|
+
clear(...patterns: string[]): void;
|
|
118
|
+
/**
|
|
119
|
+
* Clear from namespaces (dangerous!)
|
|
120
|
+
*/
|
|
121
|
+
clearUnsafe(...patterns: string[]): void;
|
|
122
|
+
/**
|
|
123
|
+
* Remove specific keys
|
|
124
|
+
*/
|
|
125
|
+
unset(...keys: string[]): void;
|
|
126
|
+
/**
|
|
127
|
+
* Get as integer with default
|
|
128
|
+
*/
|
|
129
|
+
int(key: string, defaultValue: number): number;
|
|
130
|
+
/**
|
|
131
|
+
* Get as boolean with default
|
|
132
|
+
*/
|
|
133
|
+
bool(key: string, defaultValue: boolean): boolean;
|
|
134
|
+
/**
|
|
135
|
+
* Get as float with default
|
|
136
|
+
*/
|
|
137
|
+
float(key: string, defaultValue: number): number;
|
|
138
|
+
/**
|
|
139
|
+
* Export all memory variables to a file
|
|
140
|
+
*/
|
|
141
|
+
export(path: string): void;
|
|
142
|
+
/**
|
|
143
|
+
* Print all environment variables (masks sensitive keys)
|
|
144
|
+
*/
|
|
145
|
+
dump(): void;
|
|
146
|
+
}
|
|
147
|
+
export declare const kev: KevOps;
|
|
148
|
+
export {};
|
|
149
|
+
//# sourceMappingURL=kev.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kev.d.ts","sourceRoot":"","sources":["../src/kev.ts"],"names":[],"mappings":"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"}
|