typetify 0.1.1
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/LICENSE +21 -0
- package/README.md +327 -0
- package/dist/async/index.d.mts +152 -0
- package/dist/async/index.d.ts +152 -0
- package/dist/async/index.js +49 -0
- package/dist/async/index.js.map +1 -0
- package/dist/async/index.mjs +4 -0
- package/dist/async/index.mjs.map +1 -0
- package/dist/chunk-2LJ6NZ6K.js +108 -0
- package/dist/chunk-2LJ6NZ6K.js.map +1 -0
- package/dist/chunk-44Y5JSGU.js +145 -0
- package/dist/chunk-44Y5JSGU.js.map +1 -0
- package/dist/chunk-4NXETABV.mjs +116 -0
- package/dist/chunk-4NXETABV.mjs.map +1 -0
- package/dist/chunk-6ZBTL74K.js +129 -0
- package/dist/chunk-6ZBTL74K.js.map +1 -0
- package/dist/chunk-CN3GYRJN.mjs +137 -0
- package/dist/chunk-CN3GYRJN.mjs.map +1 -0
- package/dist/chunk-CNTE6ZVH.js +359 -0
- package/dist/chunk-CNTE6ZVH.js.map +1 -0
- package/dist/chunk-DBENOSTA.js +156 -0
- package/dist/chunk-DBENOSTA.js.map +1 -0
- package/dist/chunk-DWIG5GF2.js +135 -0
- package/dist/chunk-DWIG5GF2.js.map +1 -0
- package/dist/chunk-EAUTTWTQ.mjs +231 -0
- package/dist/chunk-EAUTTWTQ.mjs.map +1 -0
- package/dist/chunk-FXWYPHA3.mjs +13 -0
- package/dist/chunk-FXWYPHA3.mjs.map +1 -0
- package/dist/chunk-GS3PP67B.js +200 -0
- package/dist/chunk-GS3PP67B.js.map +1 -0
- package/dist/chunk-J5LGTIGS.mjs +9 -0
- package/dist/chunk-J5LGTIGS.mjs.map +1 -0
- package/dist/chunk-JAOGY4JO.mjs +1007 -0
- package/dist/chunk-JAOGY4JO.mjs.map +1 -0
- package/dist/chunk-JB6UXRKD.mjs +97 -0
- package/dist/chunk-JB6UXRKD.mjs.map +1 -0
- package/dist/chunk-JQHUBZ4M.js +88 -0
- package/dist/chunk-JQHUBZ4M.js.map +1 -0
- package/dist/chunk-L3M7LGKL.mjs +128 -0
- package/dist/chunk-L3M7LGKL.mjs.map +1 -0
- package/dist/chunk-LT7JK7RJ.js +87 -0
- package/dist/chunk-LT7JK7RJ.js.map +1 -0
- package/dist/chunk-OEJK37LO.mjs +328 -0
- package/dist/chunk-OEJK37LO.mjs.map +1 -0
- package/dist/chunk-OPVES6W2.js +16 -0
- package/dist/chunk-OPVES6W2.js.map +1 -0
- package/dist/chunk-OWNUKWXV.js +291 -0
- package/dist/chunk-OWNUKWXV.js.map +1 -0
- package/dist/chunk-PQTXSQ4P.js +369 -0
- package/dist/chunk-PQTXSQ4P.js.map +1 -0
- package/dist/chunk-PZ5AY32C.js +11 -0
- package/dist/chunk-PZ5AY32C.js.map +1 -0
- package/dist/chunk-QFR7DVAJ.mjs +63 -0
- package/dist/chunk-QFR7DVAJ.mjs.map +1 -0
- package/dist/chunk-SGQNLTRK.js +73 -0
- package/dist/chunk-SGQNLTRK.js.map +1 -0
- package/dist/chunk-SIA5BSVY.js +1054 -0
- package/dist/chunk-SIA5BSVY.js.map +1 -0
- package/dist/chunk-SRDWUHDY.mjs +188 -0
- package/dist/chunk-SRDWUHDY.mjs.map +1 -0
- package/dist/chunk-TXU7NTT4.js +249 -0
- package/dist/chunk-TXU7NTT4.js.map +1 -0
- package/dist/chunk-TZEWREAC.mjs +277 -0
- package/dist/chunk-TZEWREAC.mjs.map +1 -0
- package/dist/chunk-V6CWFDIJ.mjs +123 -0
- package/dist/chunk-V6CWFDIJ.mjs.map +1 -0
- package/dist/chunk-YBJC5WMX.mjs +341 -0
- package/dist/chunk-YBJC5WMX.mjs.map +1 -0
- package/dist/chunk-YOPAXITF.mjs +75 -0
- package/dist/chunk-YOPAXITF.mjs.map +1 -0
- package/dist/chunk-ZE4FDBRI.mjs +79 -0
- package/dist/chunk-ZE4FDBRI.mjs.map +1 -0
- package/dist/collection/index.d.mts +291 -0
- package/dist/collection/index.d.ts +291 -0
- package/dist/collection/index.js +125 -0
- package/dist/collection/index.js.map +1 -0
- package/dist/collection/index.mjs +4 -0
- package/dist/collection/index.mjs.map +1 -0
- package/dist/core/index.d.mts +85 -0
- package/dist/core/index.d.ts +85 -0
- package/dist/core/index.js +41 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/index.mjs +4 -0
- package/dist/core/index.mjs.map +1 -0
- package/dist/decorator/index.d.mts +165 -0
- package/dist/decorator/index.d.ts +165 -0
- package/dist/decorator/index.js +57 -0
- package/dist/decorator/index.js.map +1 -0
- package/dist/decorator/index.mjs +4 -0
- package/dist/decorator/index.mjs.map +1 -0
- package/dist/dx/index.d.mts +125 -0
- package/dist/dx/index.d.ts +125 -0
- package/dist/dx/index.js +53 -0
- package/dist/dx/index.js.map +1 -0
- package/dist/dx/index.mjs +4 -0
- package/dist/dx/index.mjs.map +1 -0
- package/dist/flow/index.d.mts +165 -0
- package/dist/flow/index.d.ts +165 -0
- package/dist/flow/index.js +50 -0
- package/dist/flow/index.js.map +1 -0
- package/dist/flow/index.mjs +5 -0
- package/dist/flow/index.mjs.map +1 -0
- package/dist/fn/index.d.mts +77 -0
- package/dist/fn/index.d.ts +77 -0
- package/dist/fn/index.js +37 -0
- package/dist/fn/index.js.map +1 -0
- package/dist/fn/index.mjs +4 -0
- package/dist/fn/index.mjs.map +1 -0
- package/dist/guards/index.d.mts +165 -0
- package/dist/guards/index.d.ts +165 -0
- package/dist/guards/index.js +69 -0
- package/dist/guards/index.js.map +1 -0
- package/dist/guards/index.mjs +4 -0
- package/dist/guards/index.mjs.map +1 -0
- package/dist/index.d.mts +228 -0
- package/dist/index.d.ts +228 -0
- package/dist/index.js +775 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +51 -0
- package/dist/index.mjs.map +1 -0
- package/dist/input/index.d.mts +185 -0
- package/dist/input/index.d.ts +185 -0
- package/dist/input/index.js +74 -0
- package/dist/input/index.js.map +1 -0
- package/dist/input/index.mjs +5 -0
- package/dist/input/index.mjs.map +1 -0
- package/dist/iterator/index.d.mts +209 -0
- package/dist/iterator/index.d.ts +209 -0
- package/dist/iterator/index.js +522 -0
- package/dist/iterator/index.js.map +1 -0
- package/dist/iterator/index.mjs +502 -0
- package/dist/iterator/index.mjs.map +1 -0
- package/dist/logic/index.d.mts +531 -0
- package/dist/logic/index.d.ts +531 -0
- package/dist/logic/index.js +416 -0
- package/dist/logic/index.js.map +1 -0
- package/dist/logic/index.mjs +367 -0
- package/dist/logic/index.mjs.map +1 -0
- package/dist/math/index.d.mts +86 -0
- package/dist/math/index.d.ts +86 -0
- package/dist/math/index.js +45 -0
- package/dist/math/index.js.map +1 -0
- package/dist/math/index.mjs +4 -0
- package/dist/math/index.mjs.map +1 -0
- package/dist/narrowing/index.d.mts +429 -0
- package/dist/narrowing/index.d.ts +429 -0
- package/dist/narrowing/index.js +220 -0
- package/dist/narrowing/index.js.map +1 -0
- package/dist/narrowing/index.mjs +186 -0
- package/dist/narrowing/index.mjs.map +1 -0
- package/dist/object/index.d.mts +327 -0
- package/dist/object/index.d.ts +327 -0
- package/dist/object/index.js +113 -0
- package/dist/object/index.js.map +1 -0
- package/dist/object/index.mjs +4 -0
- package/dist/object/index.mjs.map +1 -0
- package/dist/result/index.d.mts +201 -0
- package/dist/result/index.d.ts +201 -0
- package/dist/result/index.js +86 -0
- package/dist/result/index.js.map +1 -0
- package/dist/result/index.mjs +5 -0
- package/dist/result/index.mjs.map +1 -0
- package/dist/schema/index.d.mts +216 -0
- package/dist/schema/index.d.ts +216 -0
- package/dist/schema/index.js +410 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/index.mjs +384 -0
- package/dist/schema/index.mjs.map +1 -0
- package/dist/string/index.d.mts +102 -0
- package/dist/string/index.d.ts +102 -0
- package/dist/string/index.js +49 -0
- package/dist/string/index.js.map +1 -0
- package/dist/string/index.mjs +4 -0
- package/dist/string/index.mjs.map +1 -0
- package/dist/typed/index.d.mts +1962 -0
- package/dist/typed/index.d.ts +1962 -0
- package/dist/typed/index.js +193 -0
- package/dist/typed/index.js.map +1 -0
- package/dist/typed/index.mjs +4 -0
- package/dist/typed/index.mjs.map +1 -0
- package/dist/types-Db0vauC3.d.mts +258 -0
- package/dist/types-Db0vauC3.d.ts +258 -0
- package/dist/types-VsDp2t8s.d.mts +30 -0
- package/dist/types-VsDp2t8s.d.ts +30 -0
- package/package.json +157 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.mjs"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkPZ5AY32C_js = require('./chunk-PZ5AY32C.js');
|
|
4
|
+
|
|
5
|
+
// src/math/index.ts
|
|
6
|
+
var math_exports = {};
|
|
7
|
+
chunkPZ5AY32C_js.__export(math_exports, {
|
|
8
|
+
average: () => average,
|
|
9
|
+
max: () => max,
|
|
10
|
+
median: () => median,
|
|
11
|
+
min: () => min,
|
|
12
|
+
percentage: () => percentage,
|
|
13
|
+
randomFloat: () => randomFloat,
|
|
14
|
+
randomInt: () => randomInt,
|
|
15
|
+
round: () => round,
|
|
16
|
+
sum: () => sum
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
// src/math/sum.ts
|
|
20
|
+
function sum(numbers) {
|
|
21
|
+
let total = 0;
|
|
22
|
+
for (const n of numbers) {
|
|
23
|
+
total += n;
|
|
24
|
+
}
|
|
25
|
+
return total;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// src/math/average.ts
|
|
29
|
+
function average(numbers) {
|
|
30
|
+
if (numbers.length === 0) return NaN;
|
|
31
|
+
let total = 0;
|
|
32
|
+
for (const n of numbers) {
|
|
33
|
+
total += n;
|
|
34
|
+
}
|
|
35
|
+
return total / numbers.length;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// src/math/median.ts
|
|
39
|
+
function median(numbers) {
|
|
40
|
+
if (numbers.length === 0) return NaN;
|
|
41
|
+
const sorted = [...numbers].sort((a, b) => a - b);
|
|
42
|
+
const mid = Math.floor(sorted.length / 2);
|
|
43
|
+
if (sorted.length % 2 === 0) {
|
|
44
|
+
return (sorted[mid - 1] + sorted[mid]) / 2;
|
|
45
|
+
}
|
|
46
|
+
return sorted[mid];
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// src/math/round.ts
|
|
50
|
+
function round(num, precision = 0) {
|
|
51
|
+
const factor = Math.pow(10, precision);
|
|
52
|
+
return Math.round(num * factor) / factor;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// src/math/randomInt.ts
|
|
56
|
+
function randomInt(min2, max2) {
|
|
57
|
+
min2 = Math.ceil(min2);
|
|
58
|
+
max2 = Math.floor(max2);
|
|
59
|
+
return Math.floor(Math.random() * (max2 - min2 + 1)) + min2;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// src/math/randomFloat.ts
|
|
63
|
+
function randomFloat(min2, max2) {
|
|
64
|
+
return Math.random() * (max2 - min2) + min2;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// src/math/percentage.ts
|
|
68
|
+
function percentage(value, total) {
|
|
69
|
+
if (total === 0) return 0;
|
|
70
|
+
return value / total * 100;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// src/math/min.ts
|
|
74
|
+
function min(numbers) {
|
|
75
|
+
if (numbers.length === 0) return void 0;
|
|
76
|
+
let result = numbers[0];
|
|
77
|
+
for (let i = 1; i < numbers.length; i++) {
|
|
78
|
+
if (numbers[i] < result) {
|
|
79
|
+
result = numbers[i];
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return result;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// src/math/max.ts
|
|
86
|
+
function max(numbers) {
|
|
87
|
+
if (numbers.length === 0) return void 0;
|
|
88
|
+
let result = numbers[0];
|
|
89
|
+
for (let i = 1; i < numbers.length; i++) {
|
|
90
|
+
if (numbers[i] > result) {
|
|
91
|
+
result = numbers[i];
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return result;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
exports.average = average;
|
|
98
|
+
exports.math_exports = math_exports;
|
|
99
|
+
exports.max = max;
|
|
100
|
+
exports.median = median;
|
|
101
|
+
exports.min = min;
|
|
102
|
+
exports.percentage = percentage;
|
|
103
|
+
exports.randomFloat = randomFloat;
|
|
104
|
+
exports.randomInt = randomInt;
|
|
105
|
+
exports.round = round;
|
|
106
|
+
exports.sum = sum;
|
|
107
|
+
//# sourceMappingURL=chunk-2LJ6NZ6K.js.map
|
|
108
|
+
//# sourceMappingURL=chunk-2LJ6NZ6K.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/math/index.ts","../src/math/sum.ts","../src/math/average.ts","../src/math/median.ts","../src/math/round.ts","../src/math/randomInt.ts","../src/math/randomFloat.ts","../src/math/percentage.ts","../src/math/min.ts","../src/math/max.ts"],"names":["__export","min","max"],"mappings":"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","file":"chunk-2LJ6NZ6K.js","sourcesContent":["export { sum } from './sum'\nexport { average } from './average'\nexport { median } from './median'\nexport { round } from './round'\nexport { randomInt } from './randomInt'\nexport { randomFloat } from './randomFloat'\nexport { percentage } from './percentage'\nexport { min } from './min'\nexport { max } from './max'\n","/**\n * Returns the sum of all numbers in an array.\n *\n * @example\n * sum([1, 2, 3, 4, 5]) // 15\n * sum([]) // 0\n */\nexport function sum(numbers: readonly number[]): number {\n let total = 0\n for (const n of numbers) {\n total += n\n }\n return total\n}\n","/**\n * Returns the average (mean) of all numbers in an array.\n *\n * @example\n * average([1, 2, 3, 4, 5]) // 3\n * average([10, 20]) // 15\n * average([]) // NaN\n */\nexport function average(numbers: readonly number[]): number {\n if (numbers.length === 0) return NaN\n let total = 0\n for (const n of numbers) {\n total += n\n }\n return total / numbers.length\n}\n","/**\n * Returns the median of all numbers in an array.\n *\n * @example\n * median([1, 2, 3, 4, 5]) // 3\n * median([1, 2, 3, 4]) // 2.5\n * median([]) // NaN\n */\nexport function median(numbers: readonly number[]): number {\n if (numbers.length === 0) return NaN\n\n const sorted = [...numbers].sort((a, b) => a - b)\n const mid = Math.floor(sorted.length / 2)\n\n if (sorted.length % 2 === 0) {\n return (sorted[mid - 1]! + sorted[mid]!) / 2\n }\n\n return sorted[mid]!\n}\n","/**\n * Rounds a number to a specified precision.\n *\n * @example\n * round(3.14159, 2) // 3.14\n * round(3.5) // 4\n * round(1234.5, -2) // 1200\n */\nexport function round(num: number, precision: number = 0): number {\n const factor = Math.pow(10, precision)\n return Math.round(num * factor) / factor\n}\n","/**\n * Returns a random integer between min and max (inclusive).\n *\n * @example\n * randomInt(1, 10) // Random integer from 1 to 10\n * randomInt(0, 100) // Random integer from 0 to 100\n */\nexport function randomInt(min: number, max: number): number {\n min = Math.ceil(min)\n max = Math.floor(max)\n return Math.floor(Math.random() * (max - min + 1)) + min\n}\n","/**\n * Returns a random float between min and max.\n *\n * @example\n * randomFloat(0, 1) // Random float from 0 to 1\n * randomFloat(1.5, 3.5) // Random float from 1.5 to 3.5\n */\nexport function randomFloat(min: number, max: number): number {\n return Math.random() * (max - min) + min\n}\n","/**\n * Calculates the percentage of a value relative to a total.\n *\n * @example\n * percentage(25, 100) // 25\n * percentage(1, 4) // 25\n * percentage(0, 100) // 0\n */\nexport function percentage(value: number, total: number): number {\n if (total === 0) return 0\n return (value / total) * 100\n}\n","/**\n * Returns the minimum value in an array.\n *\n * @example\n * min([3, 1, 4, 1, 5]) // 1\n * min([]) // undefined\n */\nexport function min(numbers: readonly number[]): number | undefined {\n if (numbers.length === 0) return undefined\n let result = numbers[0]!\n for (let i = 1; i < numbers.length; i++) {\n if (numbers[i]! < result) {\n result = numbers[i]!\n }\n }\n return result\n}\n","/**\n * Returns the maximum value in an array.\n *\n * @example\n * max([3, 1, 4, 1, 5]) // 5\n * max([]) // undefined\n */\nexport function max(numbers: readonly number[]): number | undefined {\n if (numbers.length === 0) return undefined\n let result = numbers[0]!\n for (let i = 1; i < numbers.length; i++) {\n if (numbers[i]! > result) {\n result = numbers[i]!\n }\n }\n return result\n}\n"]}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkPZ5AY32C_js = require('./chunk-PZ5AY32C.js');
|
|
4
|
+
|
|
5
|
+
// src/guards/index.ts
|
|
6
|
+
var guards_exports = {};
|
|
7
|
+
chunkPZ5AY32C_js.__export(guards_exports, {
|
|
8
|
+
hasKey: () => hasKey,
|
|
9
|
+
hasKeys: () => hasKeys,
|
|
10
|
+
isArray: () => isArray,
|
|
11
|
+
isBoolean: () => isBoolean,
|
|
12
|
+
isDate: () => isDate,
|
|
13
|
+
isEmpty: () => isEmpty,
|
|
14
|
+
isError: () => isError,
|
|
15
|
+
isFunction: () => isFunction,
|
|
16
|
+
isNonEmpty: () => isNonEmpty,
|
|
17
|
+
isNumber: () => isNumber,
|
|
18
|
+
isObject: () => isObject,
|
|
19
|
+
isPlainObject: () => isPlainObject,
|
|
20
|
+
isPromise: () => isPromise,
|
|
21
|
+
isString: () => isString,
|
|
22
|
+
isSymbol: () => isSymbol
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
// src/guards/isObject.ts
|
|
26
|
+
function isObject(value) {
|
|
27
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// src/guards/isPlainObject.ts
|
|
31
|
+
function isPlainObject(value) {
|
|
32
|
+
if (typeof value !== "object" || value === null) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
const prototype = Object.getPrototypeOf(value);
|
|
36
|
+
return prototype === null || prototype === Object.prototype;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// src/guards/isString.ts
|
|
40
|
+
function isString(value) {
|
|
41
|
+
return typeof value === "string";
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// src/guards/isNumber.ts
|
|
45
|
+
function isNumber(value) {
|
|
46
|
+
return typeof value === "number" && !Number.isNaN(value);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// src/guards/isBoolean.ts
|
|
50
|
+
function isBoolean(value) {
|
|
51
|
+
return typeof value === "boolean";
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// src/guards/isFunction.ts
|
|
55
|
+
function isFunction(value) {
|
|
56
|
+
return typeof value === "function";
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// src/guards/isArray.ts
|
|
60
|
+
function isArray(value, guard) {
|
|
61
|
+
if (!Array.isArray(value)) {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
if (guard) {
|
|
65
|
+
return value.every(guard);
|
|
66
|
+
}
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// src/guards/isDate.ts
|
|
71
|
+
function isDate(value) {
|
|
72
|
+
return value instanceof Date && !Number.isNaN(value.getTime());
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// src/guards/isPromise.ts
|
|
76
|
+
function isPromise(value) {
|
|
77
|
+
return value instanceof Promise || value !== null && typeof value === "object" && "then" in value && typeof value.then === "function";
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// src/guards/isError.ts
|
|
81
|
+
function isError(value) {
|
|
82
|
+
return value instanceof Error;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// src/guards/isSymbol.ts
|
|
86
|
+
function isSymbol(value) {
|
|
87
|
+
return typeof value === "symbol";
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// src/guards/hasKey.ts
|
|
91
|
+
function hasKey(obj, key) {
|
|
92
|
+
return obj !== null && typeof obj === "object" && key in obj;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// src/guards/hasKeys.ts
|
|
96
|
+
function hasKeys(obj, keys) {
|
|
97
|
+
if (obj === null || typeof obj !== "object") {
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
return keys.every((key) => key in obj);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// src/guards/isEmpty.ts
|
|
104
|
+
function isEmpty(value) {
|
|
105
|
+
if (value === null || value === void 0) {
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
if (typeof value === "string") {
|
|
109
|
+
return value.trim().length === 0;
|
|
110
|
+
}
|
|
111
|
+
if (Array.isArray(value)) {
|
|
112
|
+
return value.length === 0;
|
|
113
|
+
}
|
|
114
|
+
if (value instanceof Map || value instanceof Set) {
|
|
115
|
+
return value.size === 0;
|
|
116
|
+
}
|
|
117
|
+
if (typeof value === "object") {
|
|
118
|
+
return Object.keys(value).length === 0;
|
|
119
|
+
}
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// src/guards/isNonEmpty.ts
|
|
124
|
+
function isNonEmpty(value) {
|
|
125
|
+
return !isEmpty(value);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
exports.guards_exports = guards_exports;
|
|
129
|
+
exports.hasKey = hasKey;
|
|
130
|
+
exports.hasKeys = hasKeys;
|
|
131
|
+
exports.isArray = isArray;
|
|
132
|
+
exports.isBoolean = isBoolean;
|
|
133
|
+
exports.isDate = isDate;
|
|
134
|
+
exports.isEmpty = isEmpty;
|
|
135
|
+
exports.isError = isError;
|
|
136
|
+
exports.isFunction = isFunction;
|
|
137
|
+
exports.isNonEmpty = isNonEmpty;
|
|
138
|
+
exports.isNumber = isNumber;
|
|
139
|
+
exports.isObject = isObject;
|
|
140
|
+
exports.isPlainObject = isPlainObject;
|
|
141
|
+
exports.isPromise = isPromise;
|
|
142
|
+
exports.isString = isString;
|
|
143
|
+
exports.isSymbol = isSymbol;
|
|
144
|
+
//# sourceMappingURL=chunk-44Y5JSGU.js.map
|
|
145
|
+
//# sourceMappingURL=chunk-44Y5JSGU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/guards/index.ts","../src/guards/isObject.ts","../src/guards/isPlainObject.ts","../src/guards/isString.ts","../src/guards/isNumber.ts","../src/guards/isBoolean.ts","../src/guards/isFunction.ts","../src/guards/isArray.ts","../src/guards/isDate.ts","../src/guards/isPromise.ts","../src/guards/isError.ts","../src/guards/isSymbol.ts","../src/guards/hasKey.ts","../src/guards/hasKeys.ts","../src/guards/isEmpty.ts","../src/guards/isNonEmpty.ts"],"names":["__export"],"mappings":"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","file":"chunk-44Y5JSGU.js","sourcesContent":["export { isObject } from './isObject'\nexport { isPlainObject } from './isPlainObject'\nexport { isString } from './isString'\nexport { isNumber } from './isNumber'\nexport { isBoolean } from './isBoolean'\nexport { isFunction } from './isFunction'\nexport { isArray } from './isArray'\nexport { isDate } from './isDate'\nexport { isPromise } from './isPromise'\nexport { isError } from './isError'\nexport { isSymbol } from './isSymbol'\nexport { hasKey } from './hasKey'\nexport { hasKeys } from './hasKeys'\nexport { isEmpty } from './isEmpty'\nexport { isNonEmpty } from './isNonEmpty'\n","/**\n * Checks if a value is an object (not null, not an array).\n *\n * @example\n * if (isObject(value)) {\n * // value is Record<string, unknown>\n * }\n */\nexport function isObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n","/**\n * Checks if a value is a plain object (created by {} or Object.create(null)).\n * Excludes class instances, arrays, and other object types.\n *\n * @example\n * isPlainObject({}) // true\n * isPlainObject(new Date()) // false\n * isPlainObject([]) // false\n */\nexport function isPlainObject(value: unknown): value is Record<string, unknown> {\n if (typeof value !== 'object' || value === null) {\n return false\n }\n\n const prototype = Object.getPrototypeOf(value)\n return prototype === null || prototype === Object.prototype\n}\n","/**\n * Checks if a value is a string.\n *\n * @example\n * if (isString(value)) {\n * console.log(value.toUpperCase())\n * }\n */\nexport function isString(value: unknown): value is string {\n return typeof value === 'string'\n}\n","/**\n * Checks if a value is a number (excludes NaN).\n *\n * @example\n * isNumber(42) // true\n * isNumber(NaN) // false\n * isNumber('42') // false\n */\nexport function isNumber(value: unknown): value is number {\n return typeof value === 'number' && !Number.isNaN(value)\n}\n","/**\n * Checks if a value is a boolean.\n *\n * @example\n * isBoolean(true) // true\n * isBoolean(1) // false\n */\nexport function isBoolean(value: unknown): value is boolean {\n return typeof value === 'boolean'\n}\n","/**\n * Checks if a value is a function.\n *\n * @example\n * isFunction(() => {}) // true\n * isFunction(console.log) // true\n */\nexport function isFunction(value: unknown): value is (...args: unknown[]) => unknown {\n return typeof value === 'function'\n}\n","/**\n * Checks if a value is an array.\n * Optionally checks if all elements match a guard function.\n *\n * @example\n * isArray([1, 2, 3]) // true\n * isArray([1, 2, 3], isNumber) // true\n * isArray([1, '2', 3], isNumber) // false\n */\nexport function isArray(value: unknown): value is unknown[]\nexport function isArray<T>(\n value: unknown,\n guard: (item: unknown) => item is T\n): value is T[]\nexport function isArray<T>(\n value: unknown,\n guard?: (item: unknown) => item is T\n): value is T[] {\n if (!Array.isArray(value)) {\n return false\n }\n\n if (guard) {\n return value.every(guard)\n }\n\n return true\n}\n","/**\n * Checks if a value is a valid Date object.\n * Returns false for invalid dates (e.g., new Date('invalid')).\n *\n * @example\n * isDate(new Date()) // true\n * isDate(new Date('invalid')) // false\n * isDate('2024-01-01') // false\n */\nexport function isDate(value: unknown): value is Date {\n return value instanceof Date && !Number.isNaN(value.getTime())\n}\n","/**\n * Checks if a value is a Promise or Promise-like object.\n *\n * @example\n * isPromise(Promise.resolve()) // true\n * isPromise({ then: () => {} }) // true\n * isPromise({}) // false\n */\nexport function isPromise<T = unknown>(value: unknown): value is Promise<T> {\n return (\n value instanceof Promise ||\n (value !== null &&\n typeof value === 'object' &&\n 'then' in value &&\n typeof (value as Record<string, unknown>).then === 'function')\n )\n}\n","/**\n * Checks if a value is an Error instance.\n *\n * @example\n * isError(new Error('oops')) // true\n * isError(new TypeError('bad')) // true\n * isError({ message: 'fake' }) // false\n */\nexport function isError(value: unknown): value is Error {\n return value instanceof Error\n}\n","/**\n * Checks if a value is a symbol.\n *\n * @example\n * isSymbol(Symbol('test')) // true\n * isSymbol('symbol') // false\n */\nexport function isSymbol(value: unknown): value is symbol {\n return typeof value === 'symbol'\n}\n","/**\n * Checks if an object has a specific key.\n * Narrows the type to include that key.\n *\n * @example\n * const obj: unknown = { name: 'John' }\n * if (hasKey(obj, 'name')) {\n * console.log(obj.name) // safe access\n * }\n */\nexport function hasKey<K extends PropertyKey>(\n obj: unknown,\n key: K\n): obj is Record<K, unknown> {\n return obj !== null && typeof obj === 'object' && key in obj\n}\n","/**\n * Checks if an object has all specified keys.\n * Narrows the type to include those keys.\n *\n * @example\n * const obj: unknown = { name: 'John', age: 30 }\n * if (hasKeys(obj, ['name', 'age'])) {\n * console.log(obj.name, obj.age) // safe access\n * }\n */\nexport function hasKeys<K extends PropertyKey>(\n obj: unknown,\n keys: readonly K[]\n): obj is Record<K, unknown> {\n if (obj === null || typeof obj !== 'object') {\n return false\n }\n\n return keys.every((key) => key in obj)\n}\n","/**\n * Checks if a value is empty.\n * - String: empty or whitespace only\n * - Array: length is 0\n * - Object: no own enumerable keys\n * - null/undefined: true\n * - Map/Set: size is 0\n *\n * @example\n * isEmpty('') // true\n * isEmpty(' ') // true\n * isEmpty([]) // true\n * isEmpty({}) // true\n * isEmpty(null) // true\n * isEmpty([1]) // false\n */\nexport function isEmpty(value: unknown): boolean {\n if (value === null || value === undefined) {\n return true\n }\n\n if (typeof value === 'string') {\n return value.trim().length === 0\n }\n\n if (Array.isArray(value)) {\n return value.length === 0\n }\n\n if (value instanceof Map || value instanceof Set) {\n return value.size === 0\n }\n\n if (typeof value === 'object') {\n return Object.keys(value).length === 0\n }\n\n return false\n}\n","import { isEmpty } from './isEmpty'\n\n/**\n * Checks if a value is not empty.\n * Opposite of isEmpty.\n *\n * @example\n * isNonEmpty('hello') // true\n * isNonEmpty([1, 2]) // true\n * isNonEmpty({}) // false\n */\nexport function isNonEmpty(value: unknown): boolean {\n return !isEmpty(value)\n}\n"]}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { __export } from './chunk-J5LGTIGS.mjs';
|
|
2
|
+
|
|
3
|
+
// src/dx/index.ts
|
|
4
|
+
var dx_exports = {};
|
|
5
|
+
__export(dx_exports, {
|
|
6
|
+
assertNever: () => assertNever,
|
|
7
|
+
debug: () => debug,
|
|
8
|
+
deprecated: () => deprecated,
|
|
9
|
+
exhaustive: () => exhaustive,
|
|
10
|
+
getLogLevel: () => getLogLevel,
|
|
11
|
+
invariant: () => invariant,
|
|
12
|
+
log: () => log,
|
|
13
|
+
measure: () => measure,
|
|
14
|
+
measureAsync: () => measureAsync,
|
|
15
|
+
setLogLevel: () => setLogLevel,
|
|
16
|
+
todo: () => todo
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
// src/dx/debug.ts
|
|
20
|
+
function debug(label) {
|
|
21
|
+
return (value) => {
|
|
22
|
+
console.log(`[${label}]`, value);
|
|
23
|
+
return value;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// src/dx/invariant.ts
|
|
28
|
+
function invariant(condition, message) {
|
|
29
|
+
if (!condition) {
|
|
30
|
+
throw new Error(`Invariant violation: ${message}`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// src/dx/assertNever.ts
|
|
35
|
+
function assertNever(value, message) {
|
|
36
|
+
throw new Error(
|
|
37
|
+
message ?? `Unexpected value: ${JSON.stringify(value)}`
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// src/dx/exhaustive.ts
|
|
42
|
+
function exhaustive(value) {
|
|
43
|
+
throw new Error(`Exhaustive check failed: ${JSON.stringify(value)}`);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// src/dx/todo.ts
|
|
47
|
+
function todo(message = "Not implemented") {
|
|
48
|
+
throw new Error(`TODO: ${message}`);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// src/dx/deprecated.ts
|
|
52
|
+
var warned = /* @__PURE__ */ new Set();
|
|
53
|
+
function deprecated(message) {
|
|
54
|
+
if (!warned.has(message)) {
|
|
55
|
+
warned.add(message);
|
|
56
|
+
console.warn(`[DEPRECATED] ${message}`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// src/dx/measure.ts
|
|
61
|
+
function measure(fn) {
|
|
62
|
+
const start = performance.now();
|
|
63
|
+
const result = fn();
|
|
64
|
+
const duration = performance.now() - start;
|
|
65
|
+
return { result, duration };
|
|
66
|
+
}
|
|
67
|
+
async function measureAsync(fn) {
|
|
68
|
+
const start = performance.now();
|
|
69
|
+
const result = await fn();
|
|
70
|
+
const duration = performance.now() - start;
|
|
71
|
+
return { result, duration };
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// src/dx/log.ts
|
|
75
|
+
var levelPriority = {
|
|
76
|
+
debug: 0,
|
|
77
|
+
info: 1,
|
|
78
|
+
warn: 2,
|
|
79
|
+
error: 3
|
|
80
|
+
};
|
|
81
|
+
var currentLevel = "info";
|
|
82
|
+
function setLogLevel(level) {
|
|
83
|
+
currentLevel = level;
|
|
84
|
+
}
|
|
85
|
+
function getLogLevel() {
|
|
86
|
+
return currentLevel;
|
|
87
|
+
}
|
|
88
|
+
function shouldLog(level) {
|
|
89
|
+
return levelPriority[level] >= levelPriority[currentLevel];
|
|
90
|
+
}
|
|
91
|
+
var log = {
|
|
92
|
+
debug(message, ...args) {
|
|
93
|
+
if (shouldLog("debug")) {
|
|
94
|
+
console.debug(`[DEBUG] ${message}`, ...args);
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
info(message, ...args) {
|
|
98
|
+
if (shouldLog("info")) {
|
|
99
|
+
console.info(`[INFO] ${message}`, ...args);
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
warn(message, ...args) {
|
|
103
|
+
if (shouldLog("warn")) {
|
|
104
|
+
console.warn(`[WARN] ${message}`, ...args);
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
error(message, ...args) {
|
|
108
|
+
if (shouldLog("error")) {
|
|
109
|
+
console.error(`[ERROR] ${message}`, ...args);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
export { assertNever, debug, deprecated, dx_exports, exhaustive, getLogLevel, invariant, log, measure, measureAsync, setLogLevel, todo };
|
|
115
|
+
//# sourceMappingURL=chunk-4NXETABV.mjs.map
|
|
116
|
+
//# sourceMappingURL=chunk-4NXETABV.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/dx/index.ts","../src/dx/debug.ts","../src/dx/invariant.ts","../src/dx/assertNever.ts","../src/dx/exhaustive.ts","../src/dx/todo.ts","../src/dx/deprecated.ts","../src/dx/measure.ts","../src/dx/log.ts"],"names":[],"mappings":"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","file":"chunk-4NXETABV.mjs","sourcesContent":["export { debug } from './debug'\nexport { invariant } from './invariant'\nexport { assertNever } from './assertNever'\nexport { exhaustive } from './exhaustive'\nexport { todo } from './todo'\nexport { deprecated } from './deprecated'\nexport { measure, measureAsync } from './measure'\nexport type { MeasureResult } from './measure'\nexport { log, setLogLevel, getLogLevel } from './log'\nexport type { LogLevel } from './log'\n","/**\n * Logs a value with a label and returns it.\n * Useful for debugging in a pipe chain without breaking the flow.\n *\n * @example\n * const result = pipe(\n * data,\n * debug('initial'),\n * transform,\n * debug('after transform'),\n * )\n */\nexport function debug<T>(label: string): (value: T) => T {\n return (value: T): T => {\n console.log(`[${label}]`, value)\n return value\n }\n}\n","/**\n * Asserts that a condition is true. Throws an error with a descriptive message if not.\n * Similar to assert but with a more descriptive name for invariant checks.\n *\n * @example\n * invariant(user.id > 0, 'User ID must be positive')\n * // Throws: Invariant violation: User ID must be positive\n */\nexport function invariant(\n condition: unknown,\n message: string\n): asserts condition {\n if (!condition) {\n throw new Error(`Invariant violation: ${message}`)\n }\n}\n","/**\n * Asserts that a value is never reached.\n * Useful for exhaustive switch statements.\n * TypeScript will error if this function can be called.\n *\n * @example\n * type Status = 'pending' | 'done'\n * function handleStatus(status: Status) {\n * switch (status) {\n * case 'pending': return 'Waiting...'\n * case 'done': return 'Complete!'\n * default: assertNever(status)\n * }\n * }\n */\nexport function assertNever(value: never, message?: string): never {\n throw new Error(\n message ?? `Unexpected value: ${JSON.stringify(value)}`\n )\n}\n","/**\n * Ensures exhaustive handling of a discriminated union.\n * Returns the value for use in expressions.\n *\n * @example\n * type Action = { type: 'add'; value: number } | { type: 'remove'; id: string }\n *\n * function reduce(action: Action) {\n * switch (action.type) {\n * case 'add': return handleAdd(action.value)\n * case 'remove': return handleRemove(action.id)\n * default: return exhaustive(action)\n * }\n * }\n */\nexport function exhaustive(value: never): never {\n throw new Error(`Exhaustive check failed: ${JSON.stringify(value)}`)\n}\n","/**\n * Marks a code path as not yet implemented.\n * Throws an error at runtime if reached.\n *\n * @example\n * function processPayment(method: PaymentMethod) {\n * if (method === 'card') {\n * return processCard()\n * }\n * todo('Implement other payment methods')\n * }\n */\nexport function todo(message: string = 'Not implemented'): never {\n throw new Error(`TODO: ${message}`)\n}\n","/**\n * Logs a deprecation warning. Only logs once per message.\n *\n * @example\n * function oldFunction() {\n * deprecated('oldFunction is deprecated, use newFunction instead')\n * // ... old implementation\n * }\n */\nconst warned = new Set<string>()\n\nexport function deprecated(message: string): void {\n if (!warned.has(message)) {\n warned.add(message)\n console.warn(`[DEPRECATED] ${message}`)\n }\n}\n","export interface MeasureResult<T> {\n result: T\n duration: number\n}\n\n/**\n * Measures the execution time of a function.\n *\n * @example\n * const { result, duration } = measure(() => heavyComputation())\n * console.log(`Took ${duration}ms`)\n */\nexport function measure<T>(fn: () => T): MeasureResult<T> {\n const start = performance.now()\n const result = fn()\n const duration = performance.now() - start\n\n return { result, duration }\n}\n\n/**\n * Measures the execution time of an async function.\n *\n * @example\n * const { result, duration } = await measureAsync(() => fetchData())\n * console.log(`Took ${duration}ms`)\n */\nexport async function measureAsync<T>(\n fn: () => Promise<T>\n): Promise<MeasureResult<T>> {\n const start = performance.now()\n const result = await fn()\n const duration = performance.now() - start\n\n return { result, duration }\n}\n","export type LogLevel = 'debug' | 'info' | 'warn' | 'error'\n\nconst levelPriority: Record<LogLevel, number> = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n}\n\nlet currentLevel: LogLevel = 'info'\n\n/**\n * Sets the minimum log level.\n *\n * @example\n * setLogLevel('debug') // Show all logs\n * setLogLevel('error') // Only show errors\n */\nexport function setLogLevel(level: LogLevel): void {\n currentLevel = level\n}\n\n/**\n * Gets the current log level.\n */\nexport function getLogLevel(): LogLevel {\n return currentLevel\n}\n\nfunction shouldLog(level: LogLevel): boolean {\n return levelPriority[level] >= levelPriority[currentLevel]\n}\n\n/**\n * Simple logger with levels.\n *\n * @example\n * log.debug('Detailed info')\n * log.info('General info')\n * log.warn('Warning')\n * log.error('Error occurred')\n */\nexport const log = {\n debug(message: string, ...args: unknown[]): void {\n if (shouldLog('debug')) {\n console.debug(`[DEBUG] ${message}`, ...args)\n }\n },\n\n info(message: string, ...args: unknown[]): void {\n if (shouldLog('info')) {\n console.info(`[INFO] ${message}`, ...args)\n }\n },\n\n warn(message: string, ...args: unknown[]): void {\n if (shouldLog('warn')) {\n console.warn(`[WARN] ${message}`, ...args)\n }\n },\n\n error(message: string, ...args: unknown[]): void {\n if (shouldLog('error')) {\n console.error(`[ERROR] ${message}`, ...args)\n }\n },\n}\n"]}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkPZ5AY32C_js = require('./chunk-PZ5AY32C.js');
|
|
4
|
+
|
|
5
|
+
// src/dx/index.ts
|
|
6
|
+
var dx_exports = {};
|
|
7
|
+
chunkPZ5AY32C_js.__export(dx_exports, {
|
|
8
|
+
assertNever: () => assertNever,
|
|
9
|
+
debug: () => debug,
|
|
10
|
+
deprecated: () => deprecated,
|
|
11
|
+
exhaustive: () => exhaustive,
|
|
12
|
+
getLogLevel: () => getLogLevel,
|
|
13
|
+
invariant: () => invariant,
|
|
14
|
+
log: () => log,
|
|
15
|
+
measure: () => measure,
|
|
16
|
+
measureAsync: () => measureAsync,
|
|
17
|
+
setLogLevel: () => setLogLevel,
|
|
18
|
+
todo: () => todo
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
// src/dx/debug.ts
|
|
22
|
+
function debug(label) {
|
|
23
|
+
return (value) => {
|
|
24
|
+
console.log(`[${label}]`, value);
|
|
25
|
+
return value;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// src/dx/invariant.ts
|
|
30
|
+
function invariant(condition, message) {
|
|
31
|
+
if (!condition) {
|
|
32
|
+
throw new Error(`Invariant violation: ${message}`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// src/dx/assertNever.ts
|
|
37
|
+
function assertNever(value, message) {
|
|
38
|
+
throw new Error(
|
|
39
|
+
message ?? `Unexpected value: ${JSON.stringify(value)}`
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// src/dx/exhaustive.ts
|
|
44
|
+
function exhaustive(value) {
|
|
45
|
+
throw new Error(`Exhaustive check failed: ${JSON.stringify(value)}`);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// src/dx/todo.ts
|
|
49
|
+
function todo(message = "Not implemented") {
|
|
50
|
+
throw new Error(`TODO: ${message}`);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// src/dx/deprecated.ts
|
|
54
|
+
var warned = /* @__PURE__ */ new Set();
|
|
55
|
+
function deprecated(message) {
|
|
56
|
+
if (!warned.has(message)) {
|
|
57
|
+
warned.add(message);
|
|
58
|
+
console.warn(`[DEPRECATED] ${message}`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// src/dx/measure.ts
|
|
63
|
+
function measure(fn) {
|
|
64
|
+
const start = performance.now();
|
|
65
|
+
const result = fn();
|
|
66
|
+
const duration = performance.now() - start;
|
|
67
|
+
return { result, duration };
|
|
68
|
+
}
|
|
69
|
+
async function measureAsync(fn) {
|
|
70
|
+
const start = performance.now();
|
|
71
|
+
const result = await fn();
|
|
72
|
+
const duration = performance.now() - start;
|
|
73
|
+
return { result, duration };
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// src/dx/log.ts
|
|
77
|
+
var levelPriority = {
|
|
78
|
+
debug: 0,
|
|
79
|
+
info: 1,
|
|
80
|
+
warn: 2,
|
|
81
|
+
error: 3
|
|
82
|
+
};
|
|
83
|
+
var currentLevel = "info";
|
|
84
|
+
function setLogLevel(level) {
|
|
85
|
+
currentLevel = level;
|
|
86
|
+
}
|
|
87
|
+
function getLogLevel() {
|
|
88
|
+
return currentLevel;
|
|
89
|
+
}
|
|
90
|
+
function shouldLog(level) {
|
|
91
|
+
return levelPriority[level] >= levelPriority[currentLevel];
|
|
92
|
+
}
|
|
93
|
+
var log = {
|
|
94
|
+
debug(message, ...args) {
|
|
95
|
+
if (shouldLog("debug")) {
|
|
96
|
+
console.debug(`[DEBUG] ${message}`, ...args);
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
info(message, ...args) {
|
|
100
|
+
if (shouldLog("info")) {
|
|
101
|
+
console.info(`[INFO] ${message}`, ...args);
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
warn(message, ...args) {
|
|
105
|
+
if (shouldLog("warn")) {
|
|
106
|
+
console.warn(`[WARN] ${message}`, ...args);
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
error(message, ...args) {
|
|
110
|
+
if (shouldLog("error")) {
|
|
111
|
+
console.error(`[ERROR] ${message}`, ...args);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
exports.assertNever = assertNever;
|
|
117
|
+
exports.debug = debug;
|
|
118
|
+
exports.deprecated = deprecated;
|
|
119
|
+
exports.dx_exports = dx_exports;
|
|
120
|
+
exports.exhaustive = exhaustive;
|
|
121
|
+
exports.getLogLevel = getLogLevel;
|
|
122
|
+
exports.invariant = invariant;
|
|
123
|
+
exports.log = log;
|
|
124
|
+
exports.measure = measure;
|
|
125
|
+
exports.measureAsync = measureAsync;
|
|
126
|
+
exports.setLogLevel = setLogLevel;
|
|
127
|
+
exports.todo = todo;
|
|
128
|
+
//# sourceMappingURL=chunk-6ZBTL74K.js.map
|
|
129
|
+
//# sourceMappingURL=chunk-6ZBTL74K.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/dx/index.ts","../src/dx/debug.ts","../src/dx/invariant.ts","../src/dx/assertNever.ts","../src/dx/exhaustive.ts","../src/dx/todo.ts","../src/dx/deprecated.ts","../src/dx/measure.ts","../src/dx/log.ts"],"names":["__export"],"mappings":"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","file":"chunk-6ZBTL74K.js","sourcesContent":["export { debug } from './debug'\nexport { invariant } from './invariant'\nexport { assertNever } from './assertNever'\nexport { exhaustive } from './exhaustive'\nexport { todo } from './todo'\nexport { deprecated } from './deprecated'\nexport { measure, measureAsync } from './measure'\nexport type { MeasureResult } from './measure'\nexport { log, setLogLevel, getLogLevel } from './log'\nexport type { LogLevel } from './log'\n","/**\n * Logs a value with a label and returns it.\n * Useful for debugging in a pipe chain without breaking the flow.\n *\n * @example\n * const result = pipe(\n * data,\n * debug('initial'),\n * transform,\n * debug('after transform'),\n * )\n */\nexport function debug<T>(label: string): (value: T) => T {\n return (value: T): T => {\n console.log(`[${label}]`, value)\n return value\n }\n}\n","/**\n * Asserts that a condition is true. Throws an error with a descriptive message if not.\n * Similar to assert but with a more descriptive name for invariant checks.\n *\n * @example\n * invariant(user.id > 0, 'User ID must be positive')\n * // Throws: Invariant violation: User ID must be positive\n */\nexport function invariant(\n condition: unknown,\n message: string\n): asserts condition {\n if (!condition) {\n throw new Error(`Invariant violation: ${message}`)\n }\n}\n","/**\n * Asserts that a value is never reached.\n * Useful for exhaustive switch statements.\n * TypeScript will error if this function can be called.\n *\n * @example\n * type Status = 'pending' | 'done'\n * function handleStatus(status: Status) {\n * switch (status) {\n * case 'pending': return 'Waiting...'\n * case 'done': return 'Complete!'\n * default: assertNever(status)\n * }\n * }\n */\nexport function assertNever(value: never, message?: string): never {\n throw new Error(\n message ?? `Unexpected value: ${JSON.stringify(value)}`\n )\n}\n","/**\n * Ensures exhaustive handling of a discriminated union.\n * Returns the value for use in expressions.\n *\n * @example\n * type Action = { type: 'add'; value: number } | { type: 'remove'; id: string }\n *\n * function reduce(action: Action) {\n * switch (action.type) {\n * case 'add': return handleAdd(action.value)\n * case 'remove': return handleRemove(action.id)\n * default: return exhaustive(action)\n * }\n * }\n */\nexport function exhaustive(value: never): never {\n throw new Error(`Exhaustive check failed: ${JSON.stringify(value)}`)\n}\n","/**\n * Marks a code path as not yet implemented.\n * Throws an error at runtime if reached.\n *\n * @example\n * function processPayment(method: PaymentMethod) {\n * if (method === 'card') {\n * return processCard()\n * }\n * todo('Implement other payment methods')\n * }\n */\nexport function todo(message: string = 'Not implemented'): never {\n throw new Error(`TODO: ${message}`)\n}\n","/**\n * Logs a deprecation warning. Only logs once per message.\n *\n * @example\n * function oldFunction() {\n * deprecated('oldFunction is deprecated, use newFunction instead')\n * // ... old implementation\n * }\n */\nconst warned = new Set<string>()\n\nexport function deprecated(message: string): void {\n if (!warned.has(message)) {\n warned.add(message)\n console.warn(`[DEPRECATED] ${message}`)\n }\n}\n","export interface MeasureResult<T> {\n result: T\n duration: number\n}\n\n/**\n * Measures the execution time of a function.\n *\n * @example\n * const { result, duration } = measure(() => heavyComputation())\n * console.log(`Took ${duration}ms`)\n */\nexport function measure<T>(fn: () => T): MeasureResult<T> {\n const start = performance.now()\n const result = fn()\n const duration = performance.now() - start\n\n return { result, duration }\n}\n\n/**\n * Measures the execution time of an async function.\n *\n * @example\n * const { result, duration } = await measureAsync(() => fetchData())\n * console.log(`Took ${duration}ms`)\n */\nexport async function measureAsync<T>(\n fn: () => Promise<T>\n): Promise<MeasureResult<T>> {\n const start = performance.now()\n const result = await fn()\n const duration = performance.now() - start\n\n return { result, duration }\n}\n","export type LogLevel = 'debug' | 'info' | 'warn' | 'error'\n\nconst levelPriority: Record<LogLevel, number> = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n}\n\nlet currentLevel: LogLevel = 'info'\n\n/**\n * Sets the minimum log level.\n *\n * @example\n * setLogLevel('debug') // Show all logs\n * setLogLevel('error') // Only show errors\n */\nexport function setLogLevel(level: LogLevel): void {\n currentLevel = level\n}\n\n/**\n * Gets the current log level.\n */\nexport function getLogLevel(): LogLevel {\n return currentLevel\n}\n\nfunction shouldLog(level: LogLevel): boolean {\n return levelPriority[level] >= levelPriority[currentLevel]\n}\n\n/**\n * Simple logger with levels.\n *\n * @example\n * log.debug('Detailed info')\n * log.info('General info')\n * log.warn('Warning')\n * log.error('Error occurred')\n */\nexport const log = {\n debug(message: string, ...args: unknown[]): void {\n if (shouldLog('debug')) {\n console.debug(`[DEBUG] ${message}`, ...args)\n }\n },\n\n info(message: string, ...args: unknown[]): void {\n if (shouldLog('info')) {\n console.info(`[INFO] ${message}`, ...args)\n }\n },\n\n warn(message: string, ...args: unknown[]): void {\n if (shouldLog('warn')) {\n console.warn(`[WARN] ${message}`, ...args)\n }\n },\n\n error(message: string, ...args: unknown[]): void {\n if (shouldLog('error')) {\n console.error(`[ERROR] ${message}`, ...args)\n }\n },\n}\n"]}
|