@ix-xs/node-comfort 1.2.0 → 2.0.0
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/CHANGELOG.md +190 -0
- package/README.md +136 -549
- package/index.js +80 -35
- package/package.json +160 -33
- package/src/Arr.js +887 -419
- package/src/Async.js +585 -0
- package/src/Cache.js +329 -0
- package/src/Checker.js +971 -539
- package/src/Cli.js +1034 -0
- package/src/Color.js +415 -0
- package/src/Crypto.js +707 -0
- package/src/Emitter.js +289 -0
- package/src/Env.js +555 -0
- package/src/FS.js +1483 -894
- package/src/Func.js +670 -353
- package/src/Http.js +538 -0
- package/src/Id.js +384 -201
- package/src/Logger.js +739 -378
- package/src/Num.js +844 -361
- package/src/Obj.js +855 -372
- package/src/SQLite.js +1308 -1005
- package/src/Schema.js +1586 -0
- package/src/Str.js +983 -436
- package/src/Sys.js +511 -0
- package/src/Time.js +1260 -422
- package/src/Utils.js +321 -325
- package/src/errors.js +292 -0
- package/types/index.d.ts +693 -526
- package/types/src/Arr.d.ts +455 -145
- package/types/src/Arr.d.ts.map +1 -1
- package/types/src/Async.d.ts +321 -0
- package/types/src/Async.d.ts.map +1 -0
- package/types/src/Cache.d.ts +195 -0
- package/types/src/Cache.d.ts.map +1 -0
- package/types/src/Checker.d.ts +501 -235
- package/types/src/Checker.d.ts.map +1 -1
- package/types/src/Cli.d.ts +582 -0
- package/types/src/Cli.d.ts.map +1 -0
- package/types/src/Color.d.ts +294 -0
- package/types/src/Color.d.ts.map +1 -0
- package/types/src/Crypto.d.ts +534 -0
- package/types/src/Crypto.d.ts.map +1 -0
- package/types/src/Emitter.d.ts +170 -0
- package/types/src/Emitter.d.ts.map +1 -0
- package/types/src/Env.d.ts +382 -0
- package/types/src/Env.d.ts.map +1 -0
- package/types/src/FS.d.ts +686 -238
- package/types/src/FS.d.ts.map +1 -1
- package/types/src/Func.d.ts +380 -135
- package/types/src/Func.d.ts.map +1 -1
- package/types/src/Http.d.ts +374 -0
- package/types/src/Http.d.ts.map +1 -0
- package/types/src/Id.d.ts +149 -68
- package/types/src/Id.d.ts.map +1 -1
- package/types/src/Logger.d.ts +363 -46
- package/types/src/Logger.d.ts.map +1 -1
- package/types/src/Num.d.ts +473 -137
- package/types/src/Num.d.ts.map +1 -1
- package/types/src/Obj.d.ts +390 -104
- package/types/src/Obj.d.ts.map +1 -1
- package/types/src/SQLite.d.ts +646 -309
- package/types/src/SQLite.d.ts.map +1 -1
- package/types/src/Schema.d.ts +940 -0
- package/types/src/Schema.d.ts.map +1 -0
- package/types/src/Str.d.ts +569 -166
- package/types/src/Str.d.ts.map +1 -1
- package/types/src/Sys.d.ts +269 -0
- package/types/src/Sys.d.ts.map +1 -0
- package/types/src/Time.d.ts +663 -204
- package/types/src/Time.d.ts.map +1 -1
- package/types/src/Utils.d.ts +154 -102
- package/types/src/Utils.d.ts.map +1 -1
- package/types/src/errors.d.ts +292 -0
- package/types/src/errors.d.ts.map +1 -0
- package/types/index.d.ts.map +0 -1
package/index.js
CHANGED
|
@@ -1,39 +1,84 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// Every namespace is loaded the first time you touch it, so requiring the
|
|
4
|
+
// package costs almost nothing.
|
|
5
|
+
|
|
6
|
+
const fs = require("node:fs");
|
|
7
|
+
const path = require("node:path");
|
|
8
|
+
|
|
9
|
+
// The .env file must be applied before any user code reads process.env.
|
|
10
|
+
if (String(process.env.NODE_COMFORT_DOTENV).toLowerCase() !== "false" && fs.existsSync(path.join(process.cwd(), ".env"))) {
|
|
11
|
+
require("./src/Env.js");
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/** @type {Record<string, () => any>} */
|
|
15
|
+
const modules = {
|
|
16
|
+
logger: () => require("./src/Logger.js"),
|
|
17
|
+
fs: () => require("./src/FS.js"),
|
|
18
|
+
checker: () => require("./src/Checker.js"),
|
|
19
|
+
utils: () => require("./src/Utils.js"),
|
|
20
|
+
str: () => require("./src/Str.js"),
|
|
21
|
+
num: () => require("./src/Num.js"),
|
|
22
|
+
arr: () => require("./src/Arr.js"),
|
|
23
|
+
obj: () => require("./src/Obj.js"),
|
|
24
|
+
func: () => require("./src/Func.js"),
|
|
25
|
+
time: () => require("./src/Time.js"),
|
|
26
|
+
id: () => require("./src/Id.js"),
|
|
27
|
+
crypto: () => require("./src/Crypto.js"),
|
|
28
|
+
color: () => require("./src/Color.js"),
|
|
29
|
+
cli: () => require("./src/Cli.js"),
|
|
30
|
+
sys: () => require("./src/Sys.js"),
|
|
31
|
+
async: () => require("./src/Async.js"),
|
|
32
|
+
schema: () => require("./src/Schema.js"),
|
|
33
|
+
http: () => require("./src/Http.js"),
|
|
34
|
+
env: () => require("./src/Env.js"),
|
|
35
|
+
errors: () => require("./src/errors.js"),
|
|
36
|
+
SQLite: () => require("./src/SQLite.js"),
|
|
37
|
+
Cache: () => require("./src/Cache.js"),
|
|
38
|
+
Emitter: () => require("./src/Emitter.js"),
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
// Helpers that are also available at the top level (nc.info, nc.readJSON...).
|
|
42
|
+
const flat = {
|
|
43
|
+
logger: ["log", "trace", "debug", "info", "success", "warn", "error", "fatal", "group", "groupEnd", "timeStart", "timeEnd", "table", "box", "divider", "setLevel", "getLevel", "isLevelEnabled", "configure", "setTimestamp", "setDelimiter", "createLogger"],
|
|
44
|
+
fs: ["getEnv", "createPath", "getFolder", "getFile", "getFoldersIn", "getFilesIn", "glob", "find", "readFile", "readLines", "readJSON", "writeFile", "writeJSON", "appendFile", "createFile", "createFolder", "ensureFolder", "ensureFile", "touch", "deleteFolder", "deleteFile", "remove", "deleteFoldersIn", "deleteFilesIn", "emptyFolder", "copy", "move", "copyFoldersIn", "copyFolder", "copyFilesIn", "copyFile", "moveFoldersIn", "moveFolder", "moveFilesIn", "moveFile", "exists", "isFile", "isFolder", "stat", "fileSize", "folderSize", "hashFile", "tempFolder", "sanitizeFilename", "watch"],
|
|
45
|
+
checker: ["isArray", "isNumber", "isFinite", "isInteger", "isSafeInteger", "isFloat", "isPositive", "isNegative", "isBoolean", "isString", "isSymbol", "isBigInt", "isUndefined", "isNull", "isNil", "isDefined", "isPrimitive", "isFunction", "isAsyncFunction", "isGeneratorFunction", "isGenerator", "isClass", "isObject", "isPlainObject", "isPromise", "isRegExp", "isDate", "isValidDate", "isMap", "isSet", "isWeakMap", "isWeakSet", "isIterable", "isAsyncIterable", "isBuffer", "isTypedArray", "isError", "isEmpty", "isBlank", "isArrayOf", "isOneOf", "isEmail", "isURL", "isUUID", "isJSON", "isNumeric", "isIP", "isIPv4", "isIPv6", "isPort", "isHex", "isHexColor", "isBase64", "isSemver", "isISODate", "isSlug", "isAlpha", "isAlphanumeric", "isCreditCard", "isJWT", "assert", "assertType"],
|
|
46
|
+
utils: ["wait", "when", "dontCrash", "JSONString", "JSONParse"],
|
|
47
|
+
};
|
|
13
48
|
|
|
14
49
|
/**
|
|
15
|
-
* @
|
|
16
|
-
*
|
|
17
|
-
* A zero-dependency comfort belt for Node.js: a colorful logger, a safe
|
|
18
|
-
* filesystem helper, a tiny SQLite wrapper, runtime type checks, async/process
|
|
19
|
-
* helpers, plus rich string, number, array, object, function, date and
|
|
20
|
-
* id/crypto utilities.
|
|
50
|
+
* @param {string} name
|
|
51
|
+
* @param {() => unknown} load
|
|
21
52
|
*/
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
53
|
+
const lazy = (name, load) => {
|
|
54
|
+
let loaded = false;
|
|
55
|
+
/** @type {unknown} */
|
|
56
|
+
let value;
|
|
57
|
+
Object.defineProperty(exports, name, {
|
|
58
|
+
get: () => {
|
|
59
|
+
if (!loaded) {
|
|
60
|
+
value = load();
|
|
61
|
+
loaded = true;
|
|
62
|
+
}
|
|
63
|
+
return value;
|
|
64
|
+
},
|
|
65
|
+
set: (replacement) => {
|
|
66
|
+
value = replacement;
|
|
67
|
+
loaded = true;
|
|
68
|
+
},
|
|
69
|
+
enumerable: true,
|
|
70
|
+
configurable: true,
|
|
71
|
+
});
|
|
39
72
|
};
|
|
73
|
+
|
|
74
|
+
for (const [namespace, names] of Object.entries(flat)) {
|
|
75
|
+
for (const name of names) lazy(name, () => modules[namespace]()[name]);
|
|
76
|
+
}
|
|
77
|
+
for (const [name, load] of Object.entries(modules)) lazy(name, load);
|
|
78
|
+
|
|
79
|
+
exports.nc = exports;
|
|
80
|
+
exports.nodeComfort = exports;
|
|
81
|
+
|
|
82
|
+
// Never runs. Node reads this line to know the named exports of the package
|
|
83
|
+
// when it is imported from an ES module.
|
|
84
|
+
0 && (module.exports = { log, trace, debug, info, success, warn, error, fatal, group, groupEnd, timeStart, timeEnd, table, box, divider, setLevel, getLevel, isLevelEnabled, configure, setTimestamp, setDelimiter, createLogger, getEnv, createPath, getFolder, getFile, getFoldersIn, getFilesIn, glob, find, readFile, readLines, readJSON, writeFile, writeJSON, appendFile, createFile, createFolder, ensureFolder, ensureFile, touch, deleteFolder, deleteFile, remove, deleteFoldersIn, deleteFilesIn, emptyFolder, copy, move, copyFoldersIn, copyFolder, copyFilesIn, copyFile, moveFoldersIn, moveFolder, moveFilesIn, moveFile, exists, isFile, isFolder, stat, fileSize, folderSize, hashFile, tempFolder, sanitizeFilename, watch, isArray, isNumber, isFinite, isInteger, isSafeInteger, isFloat, isPositive, isNegative, isBoolean, isString, isSymbol, isBigInt, isUndefined, isNull, isNil, isDefined, isPrimitive, isFunction, isAsyncFunction, isGeneratorFunction, isGenerator, isClass, isObject, isPlainObject, isPromise, isRegExp, isDate, isValidDate, isMap, isSet, isWeakMap, isWeakSet, isIterable, isAsyncIterable, isBuffer, isTypedArray, isError, isEmpty, isBlank, isArrayOf, isOneOf, isEmail, isURL, isUUID, isJSON, isNumeric, isIP, isIPv4, isIPv6, isPort, isHex, isHexColor, isBase64, isSemver, isISODate, isSlug, isAlpha, isAlphanumeric, isCreditCard, isJWT, assert, assertType, wait, when, dontCrash, JSONString, JSONParse, logger, fs, checker, utils, str, num, arr, obj, func, time, id, crypto, color, cli, sys, async, schema, http, env, errors, SQLite, Cache, Emitter, nc, nodeComfort });
|
package/package.json
CHANGED
|
@@ -1,74 +1,201 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ix-xs/node-comfort",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "
|
|
5
|
-
"main": "index.js",
|
|
6
|
-
"types": "types/index.d.ts",
|
|
7
|
-
"type": "commonjs",
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "The zero-dependency standard library for Node.js: logger, filesystem, SQLite, schema validation, HTTP client, CLI toolkit, cache, env, async pools, colors, events, i18n dates, ids, crypto and hundreds of fully typed helpers.",
|
|
8
5
|
"keywords": [
|
|
9
6
|
"utils",
|
|
10
7
|
"utilities",
|
|
11
8
|
"helpers",
|
|
12
9
|
"toolkit",
|
|
10
|
+
"stdlib",
|
|
11
|
+
"standard-library",
|
|
12
|
+
"zero-dependency",
|
|
13
|
+
"no-dependencies",
|
|
14
|
+
"typescript",
|
|
13
15
|
"logger",
|
|
14
|
-
"console",
|
|
15
16
|
"colors",
|
|
16
17
|
"ansi",
|
|
18
|
+
"cli",
|
|
19
|
+
"spinner",
|
|
20
|
+
"progress-bar",
|
|
21
|
+
"prompt",
|
|
17
22
|
"filesystem",
|
|
18
23
|
"fs",
|
|
24
|
+
"glob",
|
|
19
25
|
"sqlite",
|
|
20
26
|
"database",
|
|
21
|
-
"
|
|
22
|
-
"guards",
|
|
27
|
+
"schema",
|
|
23
28
|
"validation",
|
|
29
|
+
"http",
|
|
30
|
+
"fetch",
|
|
31
|
+
"retry",
|
|
32
|
+
"cache",
|
|
33
|
+
"lru",
|
|
34
|
+
"env",
|
|
35
|
+
"dotenv",
|
|
36
|
+
"async",
|
|
37
|
+
"concurrency",
|
|
38
|
+
"queue",
|
|
39
|
+
"events",
|
|
40
|
+
"emitter",
|
|
41
|
+
"date",
|
|
42
|
+
"i18n",
|
|
43
|
+
"timezone",
|
|
44
|
+
"duration",
|
|
24
45
|
"string",
|
|
25
46
|
"slugify",
|
|
26
|
-
"camelcase",
|
|
27
|
-
"number",
|
|
28
|
-
"format-bytes",
|
|
29
47
|
"array",
|
|
30
48
|
"object",
|
|
31
|
-
"deep-clone",
|
|
32
49
|
"deep-merge",
|
|
33
50
|
"debounce",
|
|
34
51
|
"throttle",
|
|
35
52
|
"memoize",
|
|
36
|
-
"retry",
|
|
37
|
-
"date",
|
|
38
|
-
"duration",
|
|
39
53
|
"uuid",
|
|
40
54
|
"ulid",
|
|
41
55
|
"nanoid",
|
|
42
|
-
"hash",
|
|
43
56
|
"crypto",
|
|
44
|
-
"
|
|
45
|
-
"
|
|
57
|
+
"encryption",
|
|
58
|
+
"password-hashing"
|
|
46
59
|
],
|
|
47
|
-
"
|
|
60
|
+
"homepage": "https://ix-xs.github.io/node-comfort/",
|
|
61
|
+
"bugs": {
|
|
62
|
+
"url": "https://github.com/ix-xs/node-comfort/issues"
|
|
63
|
+
},
|
|
64
|
+
"repository": {
|
|
65
|
+
"type": "git",
|
|
66
|
+
"url": "git+https://github.com/ix-xs/node-comfort.git"
|
|
67
|
+
},
|
|
48
68
|
"license": "MIT",
|
|
49
|
-
"
|
|
50
|
-
|
|
69
|
+
"author": "ix-xs",
|
|
70
|
+
"type": "commonjs",
|
|
71
|
+
"main": "./index.js",
|
|
72
|
+
"types": "./types/index.d.ts",
|
|
73
|
+
"exports": {
|
|
74
|
+
".": {
|
|
75
|
+
"types": "./types/index.d.ts",
|
|
76
|
+
"default": "./index.js"
|
|
77
|
+
},
|
|
78
|
+
"./logger": {
|
|
79
|
+
"types": "./types/src/Logger.d.ts",
|
|
80
|
+
"default": "./src/Logger.js"
|
|
81
|
+
},
|
|
82
|
+
"./fs": {
|
|
83
|
+
"types": "./types/src/FS.d.ts",
|
|
84
|
+
"default": "./src/FS.js"
|
|
85
|
+
},
|
|
86
|
+
"./checker": {
|
|
87
|
+
"types": "./types/src/Checker.d.ts",
|
|
88
|
+
"default": "./src/Checker.js"
|
|
89
|
+
},
|
|
90
|
+
"./utils": {
|
|
91
|
+
"types": "./types/src/Utils.d.ts",
|
|
92
|
+
"default": "./src/Utils.js"
|
|
93
|
+
},
|
|
94
|
+
"./str": {
|
|
95
|
+
"types": "./types/src/Str.d.ts",
|
|
96
|
+
"default": "./src/Str.js"
|
|
97
|
+
},
|
|
98
|
+
"./num": {
|
|
99
|
+
"types": "./types/src/Num.d.ts",
|
|
100
|
+
"default": "./src/Num.js"
|
|
101
|
+
},
|
|
102
|
+
"./arr": {
|
|
103
|
+
"types": "./types/src/Arr.d.ts",
|
|
104
|
+
"default": "./src/Arr.js"
|
|
105
|
+
},
|
|
106
|
+
"./obj": {
|
|
107
|
+
"types": "./types/src/Obj.d.ts",
|
|
108
|
+
"default": "./src/Obj.js"
|
|
109
|
+
},
|
|
110
|
+
"./func": {
|
|
111
|
+
"types": "./types/src/Func.d.ts",
|
|
112
|
+
"default": "./src/Func.js"
|
|
113
|
+
},
|
|
114
|
+
"./time": {
|
|
115
|
+
"types": "./types/src/Time.d.ts",
|
|
116
|
+
"default": "./src/Time.js"
|
|
117
|
+
},
|
|
118
|
+
"./id": {
|
|
119
|
+
"types": "./types/src/Id.d.ts",
|
|
120
|
+
"default": "./src/Id.js"
|
|
121
|
+
},
|
|
122
|
+
"./crypto": {
|
|
123
|
+
"types": "./types/src/Crypto.d.ts",
|
|
124
|
+
"default": "./src/Crypto.js"
|
|
125
|
+
},
|
|
126
|
+
"./color": {
|
|
127
|
+
"types": "./types/src/Color.d.ts",
|
|
128
|
+
"default": "./src/Color.js"
|
|
129
|
+
},
|
|
130
|
+
"./cli": {
|
|
131
|
+
"types": "./types/src/Cli.d.ts",
|
|
132
|
+
"default": "./src/Cli.js"
|
|
133
|
+
},
|
|
134
|
+
"./sys": {
|
|
135
|
+
"types": "./types/src/Sys.d.ts",
|
|
136
|
+
"default": "./src/Sys.js"
|
|
137
|
+
},
|
|
138
|
+
"./async": {
|
|
139
|
+
"types": "./types/src/Async.d.ts",
|
|
140
|
+
"default": "./src/Async.js"
|
|
141
|
+
},
|
|
142
|
+
"./schema": {
|
|
143
|
+
"types": "./types/src/Schema.d.ts",
|
|
144
|
+
"default": "./src/Schema.js"
|
|
145
|
+
},
|
|
146
|
+
"./http": {
|
|
147
|
+
"types": "./types/src/Http.d.ts",
|
|
148
|
+
"default": "./src/Http.js"
|
|
149
|
+
},
|
|
150
|
+
"./env": {
|
|
151
|
+
"types": "./types/src/Env.d.ts",
|
|
152
|
+
"default": "./src/Env.js"
|
|
153
|
+
},
|
|
154
|
+
"./errors": {
|
|
155
|
+
"types": "./types/src/errors.d.ts",
|
|
156
|
+
"default": "./src/errors.js"
|
|
157
|
+
},
|
|
158
|
+
"./sqlite": {
|
|
159
|
+
"types": "./types/src/SQLite.d.ts",
|
|
160
|
+
"default": "./src/SQLite.js"
|
|
161
|
+
},
|
|
162
|
+
"./cache": {
|
|
163
|
+
"types": "./types/src/Cache.d.ts",
|
|
164
|
+
"default": "./src/Cache.js"
|
|
165
|
+
},
|
|
166
|
+
"./emitter": {
|
|
167
|
+
"types": "./types/src/Emitter.d.ts",
|
|
168
|
+
"default": "./src/Emitter.js"
|
|
169
|
+
},
|
|
170
|
+
"./package.json": "./package.json"
|
|
51
171
|
},
|
|
52
172
|
"files": [
|
|
53
173
|
"index.js",
|
|
54
174
|
"src/",
|
|
55
175
|
"types/",
|
|
56
176
|
"README.md",
|
|
177
|
+
"CHANGELOG.md",
|
|
57
178
|
"LICENSE"
|
|
58
179
|
],
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"prepublishOnly": "npm run build"
|
|
62
|
-
},
|
|
63
|
-
"devDependencies": {
|
|
64
|
-
"typescript": "^5.6.0"
|
|
180
|
+
"engines": {
|
|
181
|
+
"node": ">=22.13.0"
|
|
65
182
|
},
|
|
66
|
-
"
|
|
67
|
-
"
|
|
68
|
-
"url": "https://github.com/ix-xs/node-comfort.git"
|
|
183
|
+
"publishConfig": {
|
|
184
|
+
"access": "public"
|
|
69
185
|
},
|
|
70
|
-
"
|
|
71
|
-
"
|
|
186
|
+
"scripts": {
|
|
187
|
+
"build": "node scripts/build-types.js && node scripts/build-docs.js",
|
|
188
|
+
"build:types": "node scripts/build-types.js",
|
|
189
|
+
"build:docs": "node scripts/build-docs.js",
|
|
190
|
+
"build:site": "node scripts/build-site.js",
|
|
191
|
+
"site:serve": "node scripts/serve-site.js",
|
|
192
|
+
"test": "node --test \"test/**/*.test.js\"",
|
|
193
|
+
"test:types": "node scripts/check-types.js",
|
|
194
|
+
"check": "npm run build && npm run build:site && npm test && npm run test:types",
|
|
195
|
+
"prepublishOnly": "npm run check"
|
|
72
196
|
},
|
|
73
|
-
"
|
|
197
|
+
"devDependencies": {
|
|
198
|
+
"@types/node": "^22.13.0",
|
|
199
|
+
"typescript": "~6.0.3"
|
|
200
|
+
}
|
|
74
201
|
}
|