katanakit-js 2.2.1 → 2.12.9
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 +72 -437
- package/dist/adapters/astro/astro.service.d.ts +103 -15
- package/dist/adapters/astro/astro.service.d.ts.map +1 -1
- package/dist/adapters/astro/astro.service.js +145 -75
- package/dist/adapters/astro/astro.service.js.map +1 -1
- package/dist/adapters/astro/index.d.ts +1 -1
- package/dist/adapters/astro/index.d.ts.map +1 -1
- package/dist/adapters/astro/index.js +1 -1
- package/dist/adapters/astro/index.js.map +1 -1
- package/dist/adapters/astro/rss.service.d.ts +85 -105
- package/dist/adapters/astro/rss.service.d.ts.map +1 -1
- package/dist/adapters/astro/rss.service.js +172 -168
- package/dist/adapters/astro/rss.service.js.map +1 -1
- package/dist/adapters/astro/seo.service.d.ts +10 -0
- package/dist/adapters/astro/seo.service.d.ts.map +1 -0
- package/dist/adapters/astro/seo.service.js +3 -0
- package/dist/adapters/astro/seo.service.js.map +1 -0
- package/dist/adapters/express/app.d.ts +30 -1
- package/dist/adapters/express/app.d.ts.map +1 -1
- package/dist/adapters/express/app.js +31 -3
- package/dist/adapters/express/app.js.map +1 -1
- package/dist/adapters/express/index.d.ts +2 -2
- package/dist/adapters/express/index.d.ts.map +1 -1
- package/dist/adapters/express/index.js +2 -2
- package/dist/adapters/express/index.js.map +1 -1
- package/dist/adapters/express/main.js +2 -2
- package/dist/adapters/express/main.js.map +1 -1
- package/dist/adapters/express/products.controller.d.ts +67 -8
- package/dist/adapters/express/products.controller.d.ts.map +1 -1
- package/dist/adapters/express/products.controller.js +105 -49
- package/dist/adapters/express/products.controller.js.map +1 -1
- package/dist/adapters/express/server.d.ts +37 -13
- package/dist/adapters/express/server.d.ts.map +1 -1
- package/dist/adapters/express/server.js +118 -53
- package/dist/adapters/express/server.js.map +1 -1
- package/dist/adapters/nuxt/nuxt.service.d.ts +8 -6
- package/dist/adapters/nuxt/nuxt.service.d.ts.map +1 -1
- package/dist/adapters/nuxt/nuxt.service.js +34 -10
- package/dist/adapters/nuxt/nuxt.service.js.map +1 -1
- package/dist/adapters/vue/vue.service.d.ts +5 -2
- package/dist/adapters/vue/vue.service.d.ts.map +1 -1
- package/dist/adapters/vue/vue.service.js +41 -7
- package/dist/adapters/vue/vue.service.js.map +1 -1
- package/dist/config/index.d.ts +2 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +1 -1
- package/dist/config/index.js.map +1 -1
- package/dist/config/seo-meta.types.d.ts +177 -0
- package/dist/config/seo-meta.types.d.ts.map +1 -0
- package/dist/config/seo-meta.types.js +11 -0
- package/dist/config/seo-meta.types.js.map +1 -0
- package/dist/config/seo.service.d.ts +41 -58
- package/dist/config/seo.service.d.ts.map +1 -1
- package/dist/config/seo.service.js +468 -136
- package/dist/config/seo.service.js.map +1 -1
- package/dist/config/site.config.d.ts +10 -50
- package/dist/config/site.config.d.ts.map +1 -1
- package/dist/config/site.config.js +8 -36
- package/dist/config/site.config.js.map +1 -1
- package/dist/core/index.d.ts +1 -3
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -3
- package/dist/core/index.js.map +1 -1
- package/dist/core/services/dates.service.d.ts +149 -22
- package/dist/core/services/dates.service.d.ts.map +1 -1
- package/dist/core/services/dates.service.js +201 -54
- package/dist/core/services/dates.service.js.map +1 -1
- package/dist/core/services/error.service.d.ts +32 -20
- package/dist/core/services/error.service.d.ts.map +1 -1
- package/dist/core/services/error.service.js +44 -32
- package/dist/core/services/error.service.js.map +1 -1
- package/dist/core/services/formatter.service.d.ts +245 -35
- package/dist/core/services/formatter.service.d.ts.map +1 -1
- package/dist/core/services/formatter.service.js +281 -57
- package/dist/core/services/formatter.service.js.map +1 -1
- package/dist/core/services/generator.service.d.ts +115 -26
- package/dist/core/services/generator.service.d.ts.map +1 -1
- package/dist/core/services/generator.service.js +191 -56
- package/dist/core/services/generator.service.js.map +1 -1
- package/dist/core/services/geometry.service.d.ts +369 -39
- package/dist/core/services/geometry.service.d.ts.map +1 -1
- package/dist/core/services/geometry.service.js +424 -66
- package/dist/core/services/geometry.service.js.map +1 -1
- package/dist/core/services/http.service.d.ts +244 -21
- package/dist/core/services/http.service.d.ts.map +1 -1
- package/dist/core/services/http.service.js +419 -98
- package/dist/core/services/http.service.js.map +1 -1
- package/dist/core/services/logger.service.d.ts +95 -29
- package/dist/core/services/logger.service.d.ts.map +1 -1
- package/dist/core/services/logger.service.js +167 -41
- package/dist/core/services/logger.service.js.map +1 -1
- package/dist/core/services/reactive.service.d.ts +146 -19
- package/dist/core/services/reactive.service.d.ts.map +1 -1
- package/dist/core/services/reactive.service.js +278 -137
- package/dist/core/services/reactive.service.js.map +1 -1
- package/dist/core/services/timing.service.d.ts +142 -20
- package/dist/core/services/timing.service.d.ts.map +1 -1
- package/dist/core/services/timing.service.js +324 -185
- package/dist/core/services/timing.service.js.map +1 -1
- package/dist/core/services/utils.service.d.ts +228 -43
- package/dist/core/services/utils.service.d.ts.map +1 -1
- package/dist/core/services/utils.service.js +305 -125
- package/dist/core/services/utils.service.js.map +1 -1
- package/dist/infrastructure/dom/dom.service.d.ts +307 -44
- package/dist/infrastructure/dom/dom.service.d.ts.map +1 -1
- package/dist/infrastructure/dom/dom.service.js +408 -129
- package/dist/infrastructure/dom/dom.service.js.map +1 -1
- package/dist/infrastructure/index.d.ts +0 -3
- package/dist/infrastructure/index.d.ts.map +1 -1
- package/dist/infrastructure/index.js +0 -3
- package/dist/infrastructure/index.js.map +1 -1
- package/dist/infrastructure/observer/observer.service.d.ts +124 -31
- package/dist/infrastructure/observer/observer.service.d.ts.map +1 -1
- package/dist/infrastructure/observer/observer.service.js +227 -131
- package/dist/infrastructure/observer/observer.service.js.map +1 -1
- package/dist/infrastructure/sensors/sensors.service.d.ts +154 -22
- package/dist/infrastructure/sensors/sensors.service.d.ts.map +1 -1
- package/dist/infrastructure/sensors/sensors.service.js +264 -112
- package/dist/infrastructure/sensors/sensors.service.js.map +1 -1
- package/dist/infrastructure/storage/storage.service.d.ts +123 -45
- package/dist/infrastructure/storage/storage.service.d.ts.map +1 -1
- package/dist/infrastructure/storage/storage.service.js +236 -66
- package/dist/infrastructure/storage/storage.service.js.map +1 -1
- package/dist/infrastructure/theme/theme.service.d.ts +93 -29
- package/dist/infrastructure/theme/theme.service.d.ts.map +1 -1
- package/dist/infrastructure/theme/theme.service.js +198 -96
- package/dist/infrastructure/theme/theme.service.js.map +1 -1
- package/dist/infrastructure/viewport/viewport.service.d.ts +233 -35
- package/dist/infrastructure/viewport/viewport.service.d.ts.map +1 -1
- package/dist/infrastructure/viewport/viewport.service.js +358 -139
- package/dist/infrastructure/viewport/viewport.service.js.map +1 -1
- package/dist/infrastructure/worker/worker.service.d.ts +84 -38
- package/dist/infrastructure/worker/worker.service.d.ts.map +1 -1
- package/dist/infrastructure/worker/worker.service.js +234 -133
- package/dist/infrastructure/worker/worker.service.js.map +1 -1
- package/dist/prisma/index.d.ts +2 -0
- package/dist/prisma/index.d.ts.map +1 -0
- package/dist/prisma/index.js +2 -0
- package/dist/prisma/index.js.map +1 -0
- package/dist/prisma/schema.json +11 -33
- package/dist/prisma/use-prisma.d.ts +68 -0
- package/dist/prisma/use-prisma.d.ts.map +1 -0
- package/dist/prisma/use-prisma.js +82 -0
- package/dist/prisma/use-prisma.js.map +1 -0
- package/dist/types/index.d.ts +20 -12
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +124 -125
- package/CHANGELOG.md +0 -101
|
@@ -1,36 +1,102 @@
|
|
|
1
1
|
import type { LogLevel, LogStrategy } from "../../types/index.js";
|
|
2
2
|
/**
|
|
3
3
|
* Concrete strategy: native console output.
|
|
4
|
+
* Pass an instance to {@link useSetStrategy} to redirect logs.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```ts
|
|
8
|
+
* import { ConsoleStrategy, useSetStrategy } from "katanakit-js";
|
|
9
|
+
*
|
|
10
|
+
* useSetStrategy(ConsoleStrategy);
|
|
11
|
+
* ```
|
|
4
12
|
*/
|
|
5
|
-
export declare
|
|
6
|
-
useOutput(level: LogLevel, message: string, data?: unknown): void;
|
|
7
|
-
}
|
|
13
|
+
export declare const ConsoleStrategy: LogStrategy;
|
|
8
14
|
/**
|
|
9
|
-
*
|
|
10
|
-
*
|
|
15
|
+
* Sets the active log level. Messages below this level are suppressed.
|
|
16
|
+
*
|
|
17
|
+
* @param level - The minimum log level to output.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* import { useSetLogLevel } from "katanakit-js";
|
|
22
|
+
*
|
|
23
|
+
* useSetLogLevel("warn"); // only warn and error will be output
|
|
24
|
+
* ```
|
|
11
25
|
*/
|
|
12
|
-
export declare
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
26
|
+
export declare function useSetLogLevel(level: LogLevel): void;
|
|
27
|
+
/**
|
|
28
|
+
* Swaps the active log strategy (e.g. for tests or telemetry).
|
|
29
|
+
*
|
|
30
|
+
* @param newStrategy - A {@link LogStrategy} implementation.
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```ts
|
|
34
|
+
* import { useSetStrategy } from "katanakit-js";
|
|
35
|
+
*
|
|
36
|
+
* useSetStrategy({
|
|
37
|
+
* useOutput(level, message, data) {
|
|
38
|
+
* // send to external telemetry
|
|
39
|
+
* },
|
|
40
|
+
* });
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export declare function useSetStrategy(newStrategy: LogStrategy): void;
|
|
44
|
+
/**
|
|
45
|
+
* Logs a message and/or data. Level is always the **last** argument.
|
|
46
|
+
*
|
|
47
|
+
* @param messageOrData - A string message or arbitrary data.
|
|
48
|
+
* @param dataOrLevel - Data to attach, or the log level.
|
|
49
|
+
* @param level - The log level when data is also provided.
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```ts
|
|
53
|
+
* import { useLog } from "katanakit-js";
|
|
54
|
+
*
|
|
55
|
+
* useLog("Application started");
|
|
56
|
+
* useLog("Cache miss", "warn");
|
|
57
|
+
* useLog("Database timeout", { query: "SELECT 1" }, "error");
|
|
58
|
+
* useLog({ id: 1 }, "debug");
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export declare function useLog(messageOrData: unknown, dataOrLevel?: unknown, level?: LogLevel): void;
|
|
62
|
+
/**
|
|
63
|
+
* Log a message with optional data and level.
|
|
64
|
+
*
|
|
65
|
+
* @param level - The log level ("log", "info", "warn", "error", "debug")
|
|
66
|
+
* @param message - The message to log
|
|
67
|
+
* @param data - Optional data to attach
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```ts
|
|
71
|
+
* import { useLogger } from "katanakit-js";
|
|
72
|
+
*
|
|
73
|
+
* useLogger("info", "Application started");
|
|
74
|
+
* useLogger("error", "Database timeout", { query: "SELECT 1" });
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
export declare function useLogger(level?: LogLevel, message?: unknown, data?: unknown): void;
|
|
78
|
+
/**
|
|
79
|
+
* Clears the console.
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```ts
|
|
83
|
+
* import { useLoggerClear } from "katanakit-js";
|
|
84
|
+
*
|
|
85
|
+
* useLoggerClear();
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
export declare function useLoggerClear(): void;
|
|
89
|
+
/**
|
|
90
|
+
* Displays tabular data in the console.
|
|
91
|
+
*
|
|
92
|
+
* @param data - The data to display as a table.
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```ts
|
|
96
|
+
* import { useLoggerTable } from "katanakit-js";
|
|
97
|
+
*
|
|
98
|
+
* useLoggerTable([{ id: 1, name: "Alice" }, { id: 2, name: "Bob" }]);
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
export declare function useLoggerTable(data: unknown): void;
|
|
36
102
|
//# sourceMappingURL=logger.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.service.d.ts","sourceRoot":"","sources":["../../../src/core/services/logger.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"logger.service.d.ts","sourceRoot":"","sources":["../../../src/core/services/logger.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAOlE;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,EAAE,WAe7B,CAAC;AAsBF;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAEpD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAE7D;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,QAAQ,GAAG,IAAI,CA+B5F;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,SAAS,CAAC,KAAK,GAAE,QAAgB,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAE1F;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAErC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAElD"}
|
|
@@ -1,60 +1,186 @@
|
|
|
1
|
+
const LOG_LEVELS = ["log", "info", "warn", "error", "debug"];
|
|
2
|
+
const isLogLevel = (value) => typeof value === "string" && LOG_LEVELS.includes(value);
|
|
1
3
|
/**
|
|
2
4
|
* Concrete strategy: native console output.
|
|
5
|
+
* Pass an instance to {@link useSetStrategy} to redirect logs.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { ConsoleStrategy, useSetStrategy } from "katanakit-js";
|
|
10
|
+
*
|
|
11
|
+
* useSetStrategy(ConsoleStrategy);
|
|
12
|
+
* ```
|
|
3
13
|
*/
|
|
4
|
-
export
|
|
14
|
+
export const ConsoleStrategy = {
|
|
15
|
+
/**
|
|
16
|
+
* Outputs a log message to the native console.
|
|
17
|
+
*
|
|
18
|
+
* @param level - The log level (`log`, `info`, `warn`, `error`, `debug`).
|
|
19
|
+
* @param message - The message string.
|
|
20
|
+
* @param data - Optional data to attach to the log.
|
|
21
|
+
*/
|
|
5
22
|
useOutput(level, message, data) {
|
|
6
23
|
if (data !== undefined) {
|
|
7
24
|
console[level](`[${level.toUpperCase()}] ${message}`, data);
|
|
8
25
|
return;
|
|
9
26
|
}
|
|
10
27
|
console[level](`[${level.toUpperCase()}] ${message}`);
|
|
11
|
-
}
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
/** Log level priority (lower = more verbose). */
|
|
31
|
+
const LEVEL_PRIORITY = {
|
|
32
|
+
debug: 0,
|
|
33
|
+
log: 1,
|
|
34
|
+
info: 1,
|
|
35
|
+
warn: 2,
|
|
36
|
+
error: 3,
|
|
37
|
+
};
|
|
38
|
+
/** Module-level log level. Defaults to `"info"`. */
|
|
39
|
+
let logLevel = "info";
|
|
40
|
+
/** Module-level log strategy. Defaults to {@link ConsoleStrategy}. */
|
|
41
|
+
let strategy = ConsoleStrategy;
|
|
42
|
+
/** Check if a message at the given level should be output. */
|
|
43
|
+
function shouldLog(level) {
|
|
44
|
+
return LEVEL_PRIORITY[level] >= LEVEL_PRIORITY[logLevel];
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Sets the active log level. Messages below this level are suppressed.
|
|
48
|
+
*
|
|
49
|
+
* @param level - The minimum log level to output.
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```ts
|
|
53
|
+
* import { useSetLogLevel } from "katanakit-js";
|
|
54
|
+
*
|
|
55
|
+
* useSetLogLevel("warn"); // only warn and error will be output
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
export function useSetLogLevel(level) {
|
|
59
|
+
logLevel = level;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Swaps the active log strategy (e.g. for tests or telemetry).
|
|
63
|
+
*
|
|
64
|
+
* @param newStrategy - A {@link LogStrategy} implementation.
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* ```ts
|
|
68
|
+
* import { useSetStrategy } from "katanakit-js";
|
|
69
|
+
*
|
|
70
|
+
* useSetStrategy({
|
|
71
|
+
* useOutput(level, message, data) {
|
|
72
|
+
* // send to external telemetry
|
|
73
|
+
* },
|
|
74
|
+
* });
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
export function useSetStrategy(newStrategy) {
|
|
78
|
+
strategy = newStrategy;
|
|
12
79
|
}
|
|
13
80
|
/**
|
|
14
|
-
*
|
|
15
|
-
*
|
|
81
|
+
* Logs a message and/or data. Level is always the **last** argument.
|
|
82
|
+
*
|
|
83
|
+
* @param messageOrData - A string message or arbitrary data.
|
|
84
|
+
* @param dataOrLevel - Data to attach, or the log level.
|
|
85
|
+
* @param level - The log level when data is also provided.
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* ```ts
|
|
89
|
+
* import { useLog } from "katanakit-js";
|
|
90
|
+
*
|
|
91
|
+
* useLog("Application started");
|
|
92
|
+
* useLog("Cache miss", "warn");
|
|
93
|
+
* useLog("Database timeout", { query: "SELECT 1" }, "error");
|
|
94
|
+
* useLog({ id: 1 }, "debug");
|
|
95
|
+
* ```
|
|
16
96
|
*/
|
|
17
|
-
export
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
97
|
+
export function useLog(messageOrData, dataOrLevel, level) {
|
|
98
|
+
// If level is explicitly provided, use it
|
|
99
|
+
if (level !== undefined) {
|
|
100
|
+
if (!shouldLog(level))
|
|
101
|
+
return;
|
|
102
|
+
const message = typeof messageOrData === "string" ? messageOrData : String(messageOrData);
|
|
103
|
+
strategy.useOutput(level, message, dataOrLevel);
|
|
104
|
+
return;
|
|
22
105
|
}
|
|
23
|
-
|
|
24
|
-
if (!
|
|
25
|
-
|
|
106
|
+
if (dataOrLevel === undefined) {
|
|
107
|
+
if (!shouldLog("info"))
|
|
108
|
+
return;
|
|
109
|
+
if (typeof messageOrData === "string") {
|
|
110
|
+
strategy.useOutput("info", messageOrData);
|
|
26
111
|
}
|
|
27
|
-
|
|
112
|
+
else {
|
|
113
|
+
strategy.useOutput("info", "", messageOrData);
|
|
114
|
+
}
|
|
115
|
+
return;
|
|
28
116
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
};
|
|
32
|
-
/**
|
|
33
|
-
* Overloads allow:
|
|
34
|
-
* - message only: `useLog("message")`
|
|
35
|
-
* - message + data: `useLog("message", { id: 1 })`
|
|
36
|
-
* - level + message + data: `useLog("error", "something failed", { code: 500 })`
|
|
37
|
-
*/
|
|
38
|
-
useLog = (param1, param2, param3) => {
|
|
39
|
-
const levels = ["log", "info", "warn", "error", "debug"];
|
|
40
|
-
if (levels.includes(param1)) {
|
|
41
|
-
const level = param1;
|
|
42
|
-
const message = typeof param2 === "string" ? param2 : String(param2 ?? "");
|
|
43
|
-
this.strategy.useOutput(level, message, param3);
|
|
117
|
+
if (isLogLevel(dataOrLevel)) {
|
|
118
|
+
if (!shouldLog(dataOrLevel))
|
|
44
119
|
return;
|
|
120
|
+
if (typeof messageOrData === "string") {
|
|
121
|
+
strategy.useOutput(dataOrLevel, messageOrData);
|
|
45
122
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
123
|
+
else {
|
|
124
|
+
strategy.useOutput(dataOrLevel, "", messageOrData);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
if (!shouldLog("info"))
|
|
129
|
+
return;
|
|
130
|
+
const message = typeof messageOrData === "string" ? messageOrData : String(messageOrData);
|
|
131
|
+
strategy.useOutput("info", message, dataOrLevel);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Log a message with optional data and level.
|
|
136
|
+
*
|
|
137
|
+
* @param level - The log level ("log", "info", "warn", "error", "debug")
|
|
138
|
+
* @param message - The message to log
|
|
139
|
+
* @param data - Optional data to attach
|
|
140
|
+
*
|
|
141
|
+
* @example
|
|
142
|
+
* ```ts
|
|
143
|
+
* import { useLogger } from "katanakit-js";
|
|
144
|
+
*
|
|
145
|
+
* useLogger("info", "Application started");
|
|
146
|
+
* useLogger("error", "Database timeout", { query: "SELECT 1" });
|
|
147
|
+
* ```
|
|
148
|
+
*/
|
|
149
|
+
export function useLogger(level = "log", message, data) {
|
|
150
|
+
useLog(message, data, level);
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Clears the console.
|
|
154
|
+
*
|
|
155
|
+
* @example
|
|
156
|
+
* ```ts
|
|
157
|
+
* import { useLoggerClear } from "katanakit-js";
|
|
158
|
+
*
|
|
159
|
+
* useLoggerClear();
|
|
160
|
+
* ```
|
|
161
|
+
*/
|
|
162
|
+
export function useLoggerClear() {
|
|
163
|
+
console.clear();
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Displays tabular data in the console.
|
|
167
|
+
*
|
|
168
|
+
* @param data - The data to display as a table.
|
|
169
|
+
*
|
|
170
|
+
* @example
|
|
171
|
+
* ```ts
|
|
172
|
+
* import { useLoggerTable } from "katanakit-js";
|
|
173
|
+
*
|
|
174
|
+
* useLoggerTable([{ id: 1, name: "Alice" }, { id: 2, name: "Bob" }]);
|
|
175
|
+
* ```
|
|
176
|
+
*/
|
|
177
|
+
export function useLoggerTable(data) {
|
|
178
|
+
console.table(data);
|
|
57
179
|
}
|
|
58
|
-
|
|
59
|
-
|
|
180
|
+
useLoggerTable([
|
|
181
|
+
{
|
|
182
|
+
id: 1,
|
|
183
|
+
name: "Alice",
|
|
184
|
+
},
|
|
185
|
+
]);
|
|
60
186
|
//# sourceMappingURL=logger.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.service.js","sourceRoot":"","sources":["../../../src/core/services/logger.service.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"logger.service.js","sourceRoot":"","sources":["../../../src/core/services/logger.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +1,149 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { SignalGetter, SignalSetter, StorageTarget, Subscribable, ToggleSignalSetter } from "../../types/index.js";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
3
|
+
* Creates a reactive signal with a getter and setter.
|
|
4
|
+
*
|
|
5
|
+
* The getter is callable and also exposes a `useSubscribe` method for
|
|
6
|
+
* listening to value changes. The setter accepts either a direct value or
|
|
7
|
+
* an updater function.
|
|
8
|
+
*
|
|
9
|
+
* @typeParam T - The signal value type.
|
|
10
|
+
* @param initialValue - The initial value of the signal.
|
|
11
|
+
* @returns A tuple of `[getter, setter]`.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* const [count, setCount] = useCreateSignal(0);
|
|
16
|
+
* count(); // 0
|
|
17
|
+
* setCount(1);
|
|
18
|
+
* count(); // 1
|
|
19
|
+
* setCount(prev => prev + 1);
|
|
20
|
+
* count(); // 2
|
|
21
|
+
*
|
|
22
|
+
* const unsub = count.useSubscribe((newVal, oldVal) => {
|
|
23
|
+
* console.log(`${oldVal} -> ${newVal}`);
|
|
24
|
+
* });
|
|
25
|
+
* ```
|
|
5
26
|
*/
|
|
6
|
-
export
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
27
|
+
export declare function useCreateSignal<T>(initialValue: T): [SignalGetter<T>, SignalSetter<T>];
|
|
28
|
+
/**
|
|
29
|
+
* Creates a side effect that re-runs whenever any of the provided signals
|
|
30
|
+
* emit a new value. An optional cleanup function returned from the callback
|
|
31
|
+
* is invoked before each re-run and on disposal.
|
|
32
|
+
*
|
|
33
|
+
* @param callback - Effect body. May return a cleanup function.
|
|
34
|
+
* @param signals - Array of subscribable signals to react to.
|
|
35
|
+
* @returns A dispose function that tears down all subscriptions and runs
|
|
36
|
+
* the final cleanup.
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```ts
|
|
40
|
+
* const [name, setName] = useCreateSignal("world");
|
|
41
|
+
* const dispose = useCreateEffect(() => {
|
|
42
|
+
* console.log(`Hello, ${name()}!`);
|
|
43
|
+
* return () => console.log("cleaning up");
|
|
44
|
+
* }, [name]);
|
|
45
|
+
*
|
|
46
|
+
* setName("Katana"); // logs "Hello, Katana!"
|
|
47
|
+
* dispose(); // logs "cleaning up"
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
export declare function useCreateEffect(callback: () => void | (() => void), signals: Subscribable<unknown>[]): () => void;
|
|
51
|
+
/**
|
|
52
|
+
* Creates a memoised signal whose value is derived from a computation.
|
|
53
|
+
* The computation re-runs whenever any of the provided signals change.
|
|
54
|
+
*
|
|
55
|
+
* @typeParam T - The computed value type.
|
|
56
|
+
* @param computation - Pure function that derives the value.
|
|
57
|
+
* @param signals - Signals the computation depends on.
|
|
58
|
+
* @returns A read-only getter for the memoised value.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```ts
|
|
62
|
+
* const [a, setA] = useCreateSignal(2);
|
|
63
|
+
* const [b, setB] = useCreateSignal(3);
|
|
64
|
+
* const sum = useCreateMemo(() => a() + b(), [a, b]);
|
|
65
|
+
* sum(); // 5
|
|
66
|
+
* setA(10);
|
|
67
|
+
* sum(); // 13
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
export declare function useCreateMemo<T>(computation: () => T, signals: Subscribable<unknown>[]): SignalGetter<T>;
|
|
71
|
+
/**
|
|
72
|
+
* Creates a boolean toggle signal.
|
|
73
|
+
*
|
|
74
|
+
* @param initialValue - Starting value (defaults to `false`).
|
|
75
|
+
* @returns A tuple of `[getter, { useSet, useToggle }]`.
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* ```ts
|
|
79
|
+
* const [isOpen, { useSet, useToggle }] = useCreateToggle();
|
|
80
|
+
* isOpen(); // false
|
|
81
|
+
* useToggle();
|
|
82
|
+
* isOpen(); // true
|
|
83
|
+
* useSet(false);
|
|
84
|
+
* isOpen(); // false
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
87
|
+
export declare function useCreateToggle(initialValue?: boolean): [SignalGetter<boolean>, ToggleSignalSetter];
|
|
88
|
+
/**
|
|
89
|
+
* Creates a signal that persists its value to a storage backend
|
|
90
|
+
* (localStorage, sessionStorage, etc.). Reads the initial value from
|
|
91
|
+
* storage on creation.
|
|
92
|
+
*
|
|
93
|
+
* @typeParam T - The signal value type.
|
|
94
|
+
* @param key - Storage key.
|
|
95
|
+
* @param fallbackValue - Value used when the key is not in storage.
|
|
96
|
+
* @param target - Storage backend (defaults to `"localStorage"`).
|
|
97
|
+
* @returns A tuple of `[getter, setter]`. The setter writes through to
|
|
98
|
+
* storage.
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```ts
|
|
102
|
+
* const [theme, setTheme] = useCreateStorageSignal("theme", "dark");
|
|
103
|
+
* theme(); // "dark" (or whatever was stored)
|
|
104
|
+
* setTheme("light"); // persists to localStorage
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
export declare function useCreateStorageSignal<T>(key: string, fallbackValue: T, target?: StorageTarget): [SignalGetter<T>, SignalSetter<T>];
|
|
108
|
+
/**
|
|
109
|
+
* Creates a signal whose setter debounces writes by `delayMs` milliseconds.
|
|
110
|
+
* Useful for search inputs or any value that triggers expensive work.
|
|
111
|
+
*
|
|
112
|
+
* @typeParam T - The signal value type.
|
|
113
|
+
* @param initialValue - The initial value.
|
|
114
|
+
* @param delayMs - Debounce delay in milliseconds (defaults to `300`).
|
|
115
|
+
* @returns A tuple of `[getter, debouncedSetter]`. The setter exposes a
|
|
116
|
+
* `useCancel()` method to abort a pending write.
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* ```ts
|
|
120
|
+
* const [query, setQuery] = useCreateDebouncedSignal("", 250);
|
|
121
|
+
* setQuery("hello"); // won't update until 250ms of quiet
|
|
122
|
+
* setQuery.useCancel(); // abort pending write
|
|
123
|
+
* ```
|
|
124
|
+
*/
|
|
125
|
+
export declare function useCreateDebouncedSignal<T>(initialValue: T, delayMs?: number): [SignalGetter<T>, SignalSetter<T> & {
|
|
126
|
+
useCancel: () => void;
|
|
127
|
+
}];
|
|
128
|
+
/**
|
|
129
|
+
* Returns a batch function that defers signal notifications until the
|
|
130
|
+
* callback completes. Nested calls are supported -- only the outermost
|
|
131
|
+
* batch flushes the queue.
|
|
132
|
+
*
|
|
133
|
+
* @returns A `batch(callback)` function.
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
* ```ts
|
|
137
|
+
* const batch = useCreateBatch();
|
|
138
|
+
* const [a, setA] = useCreateSignal(0);
|
|
139
|
+
* const [b, setB] = useCreateSignal(0);
|
|
140
|
+
*
|
|
141
|
+
* batch(() => {
|
|
142
|
+
* setA(1);
|
|
143
|
+
* setB(2);
|
|
144
|
+
* // listeners fire only once here, not twice
|
|
145
|
+
* });
|
|
146
|
+
* ```
|
|
147
|
+
*/
|
|
148
|
+
export declare function useCreateBatch(): (callback: () => void) => void;
|
|
22
149
|
//# sourceMappingURL=reactive.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reactive.service.d.ts","sourceRoot":"","sources":["../../../src/core/services/reactive.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reactive.service.d.ts","sourceRoot":"","sources":["../../../src/core/services/reactive.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,YAAY,EAEZ,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,MAAM,sBAAsB,CAAC;AAsB9B;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CA+BtF;AAOD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,eAAe,CAC9B,QAAQ,EAAE,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EACnC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,GAC9B,MAAM,IAAI,CAwCZ;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAC9B,WAAW,EAAE,MAAM,CAAC,EACpB,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,GAC9B,YAAY,CAAC,CAAC,CAAC,CAQjB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAAC,YAAY,UAAQ,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAKjG;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EACvC,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,CAAC,EAChB,MAAM,GAAE,aAA8B,GACpC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CA6BpC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EACzC,YAAY,EAAE,CAAC,EACf,OAAO,SAAM,GACX,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG;IAAE,SAAS,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC,CAuBhE;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,cAAc,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,CAmB/D"}
|