milkio 0.1.2 → 0.2.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/kernel/logger.ts CHANGED
@@ -1,113 +1,111 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
-
3
- import { runtime, type ExecuteId } from ".."
4
- import { loggerOptions } from "../../../src/logger"
1
+ import { runtime, type ExecuteId } from "..";
2
+ import { loggerOptions } from "../../../src/logger";
5
3
 
6
4
  export type LoggerItem = {
7
- executeId: ExecuteId;
8
- loggerLevel: LoggerLevel;
9
- description: string;
10
- params: Array<unknown>;
5
+ executeId: ExecuteId;
6
+ loggerLevel: LoggerLevel;
7
+ description: string;
8
+ params: Array<unknown>;
11
9
  };
12
10
 
13
11
  export type LoggerTags = Record<string, any>;
14
12
 
15
13
  export type LoggerOptions = {
16
- onInsert: (options: LoggerItem) => boolean;
17
- onSubmit: (tags: LoggerTags, logs: Array<LoggerItem>) => Promise<void> | void;
14
+ onInsert: (options: LoggerItem) => boolean;
15
+ onSubmit: (tags: LoggerTags, logs: Array<LoggerItem>) => Promise<void> | void;
18
16
  };
19
17
 
20
18
  export type Logger = {
21
- debug: (description: string, ...params: Array<unknown>) => void;
22
- log: (description: string, ...params: Array<unknown>) => void;
23
- warn: (description: string, ...params: Array<unknown>) => void;
24
- error: (description: string, ...params: Array<unknown>) => void;
19
+ debug: (description: string, ...params: Array<unknown>) => void;
20
+ log: (description: string, ...params: Array<unknown>) => void;
21
+ warn: (description: string, ...params: Array<unknown>) => void;
22
+ error: (description: string, ...params: Array<unknown>) => void;
25
23
  };
26
24
 
27
25
  export const loggerController = (() => {
28
- const logs = new Map<ExecuteId, { __LOG_DEATIL__: Array<LoggerItem>; [key: string]: any }>()
29
-
30
- const loggerPushTags = (executeId: ExecuteId, tags: Record<string, any>) => {
31
- if (!logs.has(executeId)) logs.set(executeId, { __LOG_DEATIL__: [] })
32
- const logItem = logs.get(executeId)
33
- for (const key in tags) {
34
- logItem![key] = tags[key]
35
- }
36
- }
37
-
38
- const loggerSubmit = async (executeId: ExecuteId) => {
39
- if (!logs.has(executeId)) return
40
- if (executeId === "global") return
41
- const loggerSubmitOptions: Record<string, string> = {
42
- executeId
43
- }
44
- const log = logs.get(executeId)!
45
- for (const key in log) {
46
- if (key === "__LOG_DEATIL__") continue
47
- loggerSubmitOptions[key] = log[key]
48
- }
49
- logs.delete(executeId)
50
- loggerOptions.onSubmit(loggerSubmitOptions, log.__LOG_DEATIL__)
51
- }
52
-
53
- const loggerSubmitAll = async () => {
54
- for (const executeId of logs.keys()) {
55
- await loggerSubmit(executeId)
56
- }
57
- }
58
-
59
- const insertItem = (executeId: ExecuteId, level: LoggerLevel, description: string, params: Array<unknown>): void => {
60
- let executeIds: Array<string> = []
61
- if (executeId === "global") {
62
- executeIds = Array.from(new Set([...Array.from(runtime.execute.executeIds), ...Array.from(runtime.execute.executeIds)]))
63
- } else {
64
- executeIds = [executeId]
65
- }
66
-
67
- for (const executeId of executeIds) {
68
- if (!logs.has(executeId as ExecuteId)) logs.set(executeId as ExecuteId, { __LOG_DEATIL__: [] })
69
- const loggerItem = {
70
- executeId: executeId as ExecuteId,
71
- loggerLevel: level,
72
- description,
73
- params
74
- } satisfies LoggerItem
75
- if (!loggerOptions.onInsert(loggerItem)) return
76
- logs.get(executeId as ExecuteId)!.__LOG_DEATIL__.push(loggerItem)
77
- }
78
- }
79
-
80
- const useLogger = (executeId: ExecuteId) => {
81
- return {
82
- debug(description: string, ...params: Array<unknown>) {
83
- insertItem(executeId, "debug", description, params)
84
- },
85
- log(description: string, ...params: Array<unknown>) {
86
- insertItem(executeId, "log", description, params)
87
- },
88
- warn(description: string, ...params: Array<unknown>) {
89
- insertItem(executeId, "warn", description, params)
90
- },
91
- error(description: string, ...params: Array<unknown>) {
92
- insertItem(executeId, "error", description, params)
93
- }
94
- } satisfies Logger
95
- }
96
-
97
- return {
98
- loggerPushTags,
99
- loggerSubmit,
100
- loggerSubmitAll,
101
- useLogger
102
- }
103
- })()
104
-
105
- export const useLogger = loggerController.useLogger
106
-
107
- export const loggerPushTags = loggerController.loggerPushTags
108
-
109
- export const loggerSubmit = loggerController.loggerSubmit
110
-
111
- export const loggerSubmitAll = loggerController.loggerSubmitAll
26
+ const logs = new Map<ExecuteId, { __LOG_DEATIL__: Array<LoggerItem>; [key: string]: any }>();
27
+
28
+ const loggerPushTags = (executeId: ExecuteId, tags: Record<string, any>) => {
29
+ if (!logs.has(executeId)) logs.set(executeId, { __LOG_DEATIL__: [] });
30
+ const logItem = logs.get(executeId);
31
+ for (const key in tags) {
32
+ logItem![key] = tags[key];
33
+ }
34
+ };
35
+
36
+ const loggerSubmit = async (executeId: ExecuteId) => {
37
+ if (!logs.has(executeId)) return;
38
+ if (executeId === "global") return;
39
+ const loggerSubmitOptions: Record<string, string> = {
40
+ executeId,
41
+ };
42
+ const log = logs.get(executeId)!;
43
+ for (const key in log) {
44
+ if (key === "__LOG_DEATIL__") continue;
45
+ loggerSubmitOptions[key] = log[key];
46
+ }
47
+ logs.delete(executeId);
48
+ loggerOptions.onSubmit(loggerSubmitOptions, log.__LOG_DEATIL__);
49
+ };
50
+
51
+ const loggerSubmitAll = async () => {
52
+ for (const executeId of logs.keys()) {
53
+ await loggerSubmit(executeId);
54
+ }
55
+ };
56
+
57
+ const insertItem = (executeId: ExecuteId, level: LoggerLevel, description: string, params: Array<unknown>): void => {
58
+ let executeIds: Array<string> = [];
59
+ if (executeId === "global") {
60
+ executeIds = Array.from(new Set([...Array.from(runtime.execute.executeIds), ...Array.from(runtime.execute.executeIds)]));
61
+ } else {
62
+ executeIds = [executeId];
63
+ }
64
+
65
+ for (const executeId of executeIds) {
66
+ if (!logs.has(executeId as ExecuteId)) logs.set(executeId as ExecuteId, { __LOG_DEATIL__: [] });
67
+ const loggerItem = {
68
+ executeId: executeId as ExecuteId,
69
+ loggerLevel: level,
70
+ description,
71
+ params,
72
+ } satisfies LoggerItem;
73
+ if (!loggerOptions.onInsert(loggerItem)) return;
74
+ logs.get(executeId as ExecuteId)!.__LOG_DEATIL__.push(loggerItem);
75
+ }
76
+ };
77
+
78
+ const useLogger = (executeId: ExecuteId) => {
79
+ return {
80
+ debug(description: string, ...params: Array<unknown>) {
81
+ insertItem(executeId, "debug", description, params);
82
+ },
83
+ log(description: string, ...params: Array<unknown>) {
84
+ insertItem(executeId, "log", description, params);
85
+ },
86
+ warn(description: string, ...params: Array<unknown>) {
87
+ insertItem(executeId, "warn", description, params);
88
+ },
89
+ error(description: string, ...params: Array<unknown>) {
90
+ insertItem(executeId, "error", description, params);
91
+ },
92
+ } satisfies Logger;
93
+ };
94
+
95
+ return {
96
+ loggerPushTags,
97
+ loggerSubmit,
98
+ loggerSubmitAll,
99
+ useLogger,
100
+ };
101
+ })();
102
+
103
+ export const useLogger = loggerController.useLogger;
104
+
105
+ export const loggerPushTags = loggerController.loggerPushTags;
106
+
107
+ export const loggerSubmit = loggerController.loggerSubmit;
108
+
109
+ export const loggerSubmitAll = loggerController.loggerSubmitAll;
112
110
 
113
111
  export type LoggerLevel = "debug" | "log" | "warn" | "error";
package/kernel/meta.ts CHANGED
@@ -1,9 +1,9 @@
1
- import type { Meta } from "../../../src/meta"
2
- import schema from "../../../generated/api-schema"
1
+ import type { Meta } from "../../../src/meta";
2
+ import schema from "../../../generated/api-schema";
3
3
 
4
4
  export async function useMeta(path: string): Promise<Meta> {
5
- // @ts-ignore
6
- const api = schema.apiMethodsSchema[path as keyof (typeof schema)["apiMethodsTypeSchema"]]()
7
- const module = await api.module
8
- return module.api.meta
5
+ // @ts-ignore
6
+ const api = schema.apiMethodsSchema[path as keyof (typeof schema)["apiMethodsTypeSchema"]]();
7
+ const module = await api.module;
8
+ return module.api.meta;
9
9
  }
@@ -1,50 +1,51 @@
1
- /* eslint-disable @typescript-eslint/no-unnecessary-type-constraint, @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-argument */
2
-
3
- import type { Context } from "../../../src/context"
4
- import type { FrameworkHTTPDetail } from "./context"
5
- import { type MilkioApp } from "milkio"
1
+ import type { Context } from "../../../src/context";
2
+ import type { FrameworkHttpDetail } from "./context";
3
+ import type { MilkioApp } from "milkio";
6
4
 
7
5
  export type BootstrapMiddleware = (milkio: MilkioApp) => Promise<void> | void;
8
6
  export type BeforeExecuteMiddleware = (context: Context) => Promise<void> | void;
9
7
  export type AfterExecuteMiddleware = (context: Context, response: { value: unknown }) => Promise<void> | void;
10
- export type AfterHTTPRequestMiddleware = (headers: Headers, detail: FrameworkHTTPDetail) => Promise<void> | void;
11
- export type BeforeHTTPResponseMiddleware = (response: { value: string }, detail: FrameworkHTTPDetail) => Promise<void> | void;
8
+ export type AfterHttpRequestMiddleware = (headers: Headers, detail: FrameworkHttpDetail) => Promise<void> | void;
9
+ export type BeforeHttpResponseMiddleware = (response: { value: string }, detail: FrameworkHttpDetail) => Promise<void> | void;
10
+ export type HttpNotFoundMiddleware = (detail: FrameworkHttpDetail) => Promise<void> | void;
11
+
12
12
  export type MiddlewareOptions = {
13
- bootstrap?: BootstrapMiddleware;
14
- beforeExecute?: BeforeExecuteMiddleware;
15
- afterExecute?: AfterExecuteMiddleware;
16
- afterHTTPRequest?: AfterHTTPRequestMiddleware;
17
- beforeHTTPResponse?: BeforeHTTPResponseMiddleware;
13
+ bootstrap?: BootstrapMiddleware;
14
+ beforeExecute?: BeforeExecuteMiddleware;
15
+ afterExecute?: AfterExecuteMiddleware;
16
+ afterHttpRequest?: AfterHttpRequestMiddleware;
17
+ beforeHttpResponse?: BeforeHttpResponseMiddleware;
18
+ httpNotFound?: HttpNotFoundMiddleware;
18
19
  } & Record<string, (...args: Array<any>) => Promise<void> | void>;
19
20
  export type MiddlewareFn = (...args: Array<any>) => Promise<void> | void;
20
21
  export type MiddlewareT<T extends MiddlewareFn = MiddlewareFn> = { id: string; index: number; middleware: T };
21
22
 
22
- export const _middlewareEvents = new Map<string, (a: MiddlewareT, b: MiddlewareT) => number>()
23
- export const _middlewares = new Map<string, Array<MiddlewareT>>()
23
+ export const _middlewareEvents = new Map<string, (a: MiddlewareT, b: MiddlewareT) => number>();
24
+ export const _middlewares = new Map<string, Array<MiddlewareT>>();
24
25
 
25
26
  export const MiddlewareEvent = (() => {
26
- const defineMiddlewareEvent = (name: string, sortFn: (a: MiddlewareT, b: MiddlewareT) => number) => {
27
- _middlewareEvents.set(name, sortFn)
28
- }
27
+ const defineMiddlewareEvent = (name: string, sortFn: (a: MiddlewareT, b: MiddlewareT) => number) => {
28
+ _middlewareEvents.set(name, sortFn);
29
+ };
29
30
 
30
- const sortMiddlewareEvent = () => {
31
- for (const [key, middleware] of _middlewares) {
32
- const sort = _middlewareEvents.get(key)
33
- if (sort) middleware.sort(sort)
34
- }
35
- }
31
+ const sortMiddlewareEvent = () => {
32
+ for (const [key, middleware] of _middlewares) {
33
+ const sort = _middlewareEvents.get(key);
34
+ if (sort) middleware.sort(sort);
35
+ }
36
+ };
36
37
 
37
- const handleMiddleware = async (name: string, args: Array<any> /* Parameters<MiddlewareOptions[Name]> */) => {
38
- const mds = _middlewares.get(name)
39
- if (!mds) return
40
- for (const md of mds) {
41
- await md.middleware(...args)
42
- }
43
- }
38
+ const handleMiddleware = async (name: string, args: Array<any> /* Parameters<MiddlewareOptions[Name]> */) => {
39
+ const mds = _middlewares.get(name);
40
+ if (!mds) return;
41
+ for (const md of mds) {
42
+ await md.middleware(...args);
43
+ }
44
+ };
44
45
 
45
- return {
46
- define: defineMiddlewareEvent,
47
- handle: handleMiddleware,
48
- _sort: sortMiddlewareEvent
49
- }
50
- })()
46
+ return {
47
+ define: defineMiddlewareEvent,
48
+ handle: handleMiddleware,
49
+ _sort: sortMiddlewareEvent,
50
+ };
51
+ })();