@anjianshi/utils 2.4.4 → 2.4.6

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.
@@ -0,0 +1,21 @@
1
+ import type { getPrismaClient } from '@prisma/client/runtime/library.js';
2
+ import { type Logger } from '../../logging/index.js';
3
+ type PrismalClient = ReturnType<typeof getPrismaClient> extends new () => infer T ? T : never;
4
+ export declare function getPrismaLoggingOptions(debug: boolean): {
5
+ errorFormat: "pretty";
6
+ log: ({
7
+ readonly emit: "event";
8
+ readonly level: "query";
9
+ } | {
10
+ emit: "event";
11
+ level: "info";
12
+ } | {
13
+ emit: "event";
14
+ level: "warn";
15
+ } | {
16
+ emit: "event";
17
+ level: "error";
18
+ })[];
19
+ };
20
+ export declare function adaptPrismaLogging<T extends PrismalClient>(prisma: T, baseLogger: Logger): void;
21
+ export {};
@@ -0,0 +1,26 @@
1
+ /**
2
+ * 对接 Prisma 的日志记录
3
+ */
4
+ import nodeUtil from 'node:util';
5
+ import chalk from 'chalk';
6
+ export function getPrismaLoggingOptions(debug) {
7
+ return {
8
+ errorFormat: 'pretty',
9
+ log: [
10
+ ...(debug ? [{ emit: 'event', level: 'query' }] : []),
11
+ { emit: 'event', level: 'info' },
12
+ { emit: 'event', level: 'warn' },
13
+ { emit: 'event', level: 'error' },
14
+ ],
15
+ };
16
+ }
17
+ export function adaptPrismaLogging(prisma, baseLogger) {
18
+ // 记录 Prisma 相关日志
19
+ const queryLogger = baseLogger.getChild('query');
20
+ prisma.$on('query', e => {
21
+ queryLogger.debug(e.query, chalk.green(nodeUtil.format(e.params) + ` +${e.duration}ms`));
22
+ });
23
+ prisma.$on('info', e => baseLogger.info(e.message));
24
+ prisma.$on('warn', e => baseLogger.warn(e.message));
25
+ prisma.$on('error', e => baseLogger.error(e.message));
26
+ }
@@ -3,3 +3,4 @@ export * from './extensions/find-and-count.js';
3
3
  export * from './extensions/soft-delete.js';
4
4
  export * from './extensions/with-transaction.js';
5
5
  export * from './transaction-contexted.js';
6
+ export * from './adapt-logging.js';
@@ -3,3 +3,4 @@ export * from './extensions/find-and-count.js';
3
3
  export * from './extensions/soft-delete.js';
4
4
  export * from './extensions/with-transaction.js';
5
5
  export * from './transaction-contexted.js';
6
+ export * from './adapt-logging.js';
@@ -1,6 +1,6 @@
1
1
  import { type Logger } from '../logging/index.js';
2
2
  /** 返回 false 可结束任务 */
3
- export type TaskExecutor<Context> = (context: Context, logger: Logger) => Promise<void> | Promise<undefined | false>;
3
+ export type TaskExecutor<Context> = (context: Context, logger: Logger) => Promise<void> | Promise<undefined | boolean>;
4
4
  /**
5
5
  * 执行定期任务
6
6
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anjianshi/utils",
3
- "version": "2.4.4",
3
+ "version": "2.4.6",
4
4
  "description": "Common JavaScript Utils",
5
5
  "homepage": "https://github.com/anjianshi/js-packages/utils",
6
6
  "bugs": {
@@ -30,8 +30,8 @@
30
30
  "@anjianshi/presets-eslint-node": "4.0.8",
31
31
  "@anjianshi/presets-eslint-react": "4.0.7",
32
32
  "@anjianshi/presets-eslint-typescript": "5.0.5",
33
- "@anjianshi/presets-typescript": "3.2.2",
34
- "@anjianshi/presets-prettier": "3.0.1"
33
+ "@anjianshi/presets-prettier": "3.0.1",
34
+ "@anjianshi/presets-typescript": "3.2.2"
35
35
  },
36
36
  "peerDependencies": {
37
37
  "@emotion/react": "^11.13.3",