@quantform/core 0.7.11 → 0.7.12

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/lib/core.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAOzC,wBAAgB,IAAI,IAAI,UAAU,EAAE,CAMnC"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAQzC,wBAAgB,IAAI,IAAI,UAAU,EAAE,CAOnC"}
package/lib/core.js CHANGED
@@ -5,9 +5,11 @@ const use_memo_1 = require("./use-memo");
5
5
  const storage_1 = require("./storage");
6
6
  const use_storage_factory_1 = require("./storage/use-storage-factory");
7
7
  const use_execution_mode_1 = require("./use-execution-mode");
8
+ const use_logger_1 = require("./use-logger");
8
9
  function core() {
9
10
  return [
10
11
  use_memo_1.useMemo.options(),
12
+ (0, use_logger_1.logger)(new use_logger_1.ConsoleLoggerFactory()),
11
13
  use_execution_mode_1.useExecutionMode.paperOptions({ recording: false }),
12
14
  use_storage_factory_1.useStorageFactory.options(new storage_1.InMemoryStorageFactory())
13
15
  ];
@@ -1,10 +1,20 @@
1
+ import { Dependency } from './module';
2
+ export interface ILogger {
3
+ info(message: any, ...params: unknown[]): void;
4
+ debug(message: any, ...params: unknown[]): void;
5
+ warn(message: any, ...params: unknown[]): void;
6
+ error(message: any, ...params: unknown[]): void;
7
+ }
8
+ export interface ILoggerFactory {
9
+ for(context: string, tint?: string): ILogger;
10
+ }
11
+ export declare function logger(logger: ILoggerFactory): Dependency;
12
+ export declare class ConsoleLoggerFactory implements ILoggerFactory {
13
+ for(context: string, tint?: string): ILogger;
14
+ private colorize;
15
+ }
1
16
  /**
2
17
  *
3
18
  */
4
- export declare const useLogger: (context: string, tint?: string | undefined) => {
5
- info: (message: any, ...params: unknown[]) => void;
6
- debug: (message: any, ...params: unknown[]) => void;
7
- warn: (message: any, ...params: unknown[]) => void;
8
- error: (message: any, ...params: unknown[]) => void;
9
- };
19
+ export declare const useLogger: (context: string, tint?: string | undefined) => ILogger;
10
20
  //# sourceMappingURL=use-logger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-logger.d.ts","sourceRoot":"","sources":["../src/use-logger.ts"],"names":[],"mappings":"AAgBA;;GAEG;AACH,eAAO,MAAM,SAAS;oBAOF,GAAG,aAAa,OAAO,EAAE;qBAKxB,GAAG,aAAa,OAAO,EAAE;oBAK1B,GAAG,aAAa,OAAO,EAAE;qBAKxB,GAAG,aAAa,OAAO,EAAE;CAK5C,CAAC"}
1
+ {"version":3,"file":"use-logger.d.ts","sourceRoot":"","sources":["../src/use-logger.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAc,MAAM,UAAU,CAAC;AAMlD,MAAM,WAAW,OAAO;IACtB,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC/C,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAChD,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC/C,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CACjD;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC9C;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,UAAU,CAKzD;AAED,qBAAa,oBAAqB,YAAW,cAAc;IACzD,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IA6B5C,OAAO,CAAC,QAAQ,CASd;CACH;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,yDAErB,CAAC"}
package/lib/use-logger.js CHANGED
@@ -3,35 +3,50 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.useLogger = void 0;
6
+ exports.useLogger = exports.ConsoleLoggerFactory = exports.logger = void 0;
7
7
  const chalk_1 = __importDefault(require("chalk"));
8
+ const module_1 = require("./module");
8
9
  const use_timestamp_1 = require("./use-timestamp");
9
10
  const with_memo_1 = require("./with-memo");
10
- const colorize = (content) => {
11
- let hash = 0x811c9dc5;
12
- for (let i = 0; i < content.length; i++) {
13
- hash ^= content.charCodeAt(i);
14
- hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);
11
+ const token = Symbol('logger');
12
+ function logger(logger) {
13
+ return {
14
+ provide: token,
15
+ useValue: logger
16
+ };
17
+ }
18
+ exports.logger = logger;
19
+ class ConsoleLoggerFactory {
20
+ constructor() {
21
+ this.colorize = (content) => {
22
+ let hash = 0x811c9dc5;
23
+ for (let i = 0; i < content.length; i++) {
24
+ hash ^= content.charCodeAt(i);
25
+ hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);
26
+ }
27
+ return chalk_1.default.hex('#' + (hash * 0xfffff * 1000000).toString(16).slice(0, 6))(content);
28
+ };
15
29
  }
16
- return chalk_1.default.hex('#' + (hash * 0xfffff * 1000000).toString(16).slice(0, 6))(content);
17
- };
30
+ for(context, tint) {
31
+ const prefix = () => `${chalk_1.default.hex(tint !== null && tint !== void 0 ? tint : this.colorize(context))(new Date((0, use_timestamp_1.useTimestamp)()).toISOString())} ${chalk_1.default.hex(tint !== null && tint !== void 0 ? tint : this.colorize(context))(context)}`;
32
+ return {
33
+ info: (message, ...params) => (params === null || params === void 0 ? void 0 : params.length)
34
+ ? console.info(`${prefix()}: ${message}`, params)
35
+ : console.info(`${prefix()}: ${message}`),
36
+ debug: (message, ...params) => (params === null || params === void 0 ? void 0 : params.length)
37
+ ? console.debug(`${prefix()}: ${message}`, params)
38
+ : console.debug(`${prefix()}: ${message}`),
39
+ warn: (message, ...params) => (params === null || params === void 0 ? void 0 : params.length)
40
+ ? console.warn(`${prefix()}: ${message}`, params)
41
+ : console.warn(`${prefix()}: ${message}`),
42
+ error: (message, ...params) => (params === null || params === void 0 ? void 0 : params.length)
43
+ ? console.error(`${prefix()}: ${chalk_1.default.red(message)}`, params)
44
+ : console.error(`${prefix()}: ${chalk_1.default.red(message)}`)
45
+ };
46
+ }
47
+ }
48
+ exports.ConsoleLoggerFactory = ConsoleLoggerFactory;
18
49
  /**
19
50
  *
20
51
  */
21
- exports.useLogger = (0, with_memo_1.withMemo)((context, tint) => {
22
- const prefix = () => `${chalk_1.default.hex(tint !== null && tint !== void 0 ? tint : colorize(context))(new Date((0, use_timestamp_1.useTimestamp)()).toISOString())} ${chalk_1.default.hex(tint !== null && tint !== void 0 ? tint : colorize(context))(context)}`;
23
- return {
24
- info: (message, ...params) => (params === null || params === void 0 ? void 0 : params.length)
25
- ? console.info(`${prefix()}: ${message}`, params)
26
- : console.info(`${prefix()}: ${message}`),
27
- debug: (message, ...params) => (params === null || params === void 0 ? void 0 : params.length)
28
- ? console.debug(`${prefix()}: ${message}`, params)
29
- : console.debug(`${prefix()}: ${message}`),
30
- warn: (message, ...params) => (params === null || params === void 0 ? void 0 : params.length)
31
- ? console.warn(`${prefix()}: ${message}`, params)
32
- : console.warn(`${prefix()}: ${message}`),
33
- error: (message, ...params) => (params === null || params === void 0 ? void 0 : params.length)
34
- ? console.error(`${prefix()}: ${chalk_1.default.red(message)}`, params)
35
- : console.error(`${prefix()}: ${chalk_1.default.red(message)}`)
36
- };
37
- });
52
+ exports.useLogger = (0, with_memo_1.withMemo)((context, tint) => (0, module_1.useContext)(token).for(context, tint));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quantform/core",
3
- "version": "0.7.11",
3
+ "version": "0.7.12",
4
4
  "license": "MIT",
5
5
  "author": "Mateusz Majchrzak",
6
6
  "description": "Node.js library for building systematic trading strategies in reactive way.",
package/src/core.ts CHANGED
@@ -4,10 +4,12 @@ import { useMemo } from '@lib/use-memo';
4
4
  import { InMemoryStorageFactory } from './storage';
5
5
  import { useStorageFactory } from './storage/use-storage-factory';
6
6
  import { useExecutionMode } from './use-execution-mode';
7
+ import { ConsoleLoggerFactory, logger } from './use-logger';
7
8
 
8
9
  export function core(): Dependency[] {
9
10
  return [
10
11
  useMemo.options(),
12
+ logger(new ConsoleLoggerFactory()),
11
13
  useExecutionMode.paperOptions({ recording: false }),
12
14
  useStorageFactory.options(new InMemoryStorageFactory())
13
15
  ];
package/src/use-logger.ts CHANGED
@@ -1,47 +1,74 @@
1
1
  import chalk from 'chalk';
2
2
 
3
+ import { Dependency, useContext } from './module';
3
4
  import { useTimestamp } from './use-timestamp';
4
5
  import { withMemo } from './with-memo';
5
6
 
6
- const colorize = (content: string) => {
7
- let hash = 0x811c9dc5;
7
+ const token = Symbol('logger');
8
8
 
9
- for (let i = 0; i < content.length; i++) {
10
- hash ^= content.charCodeAt(i);
11
- hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);
9
+ export interface ILogger {
10
+ info(message: any, ...params: unknown[]): void;
11
+ debug(message: any, ...params: unknown[]): void;
12
+ warn(message: any, ...params: unknown[]): void;
13
+ error(message: any, ...params: unknown[]): void;
14
+ }
15
+
16
+ export interface ILoggerFactory {
17
+ for(context: string, tint?: string): ILogger;
18
+ }
19
+
20
+ export function logger(logger: ILoggerFactory): Dependency {
21
+ return {
22
+ provide: token,
23
+ useValue: logger
24
+ };
25
+ }
26
+
27
+ export class ConsoleLoggerFactory implements ILoggerFactory {
28
+ for(context: string, tint?: string): ILogger {
29
+ const prefix = () =>
30
+ `${chalk.hex(tint ?? this.colorize(context))(
31
+ new Date(useTimestamp()).toISOString()
32
+ )} ${chalk.hex(tint ?? this.colorize(context))(context)}`;
33
+
34
+ return {
35
+ info: (message: any, ...params: unknown[]) =>
36
+ params?.length
37
+ ? console.info(`${prefix()}: ${message}`, params)
38
+ : console.info(`${prefix()}: ${message}`),
39
+
40
+ debug: (message: any, ...params: unknown[]) =>
41
+ params?.length
42
+ ? console.debug(`${prefix()}: ${message}`, params)
43
+ : console.debug(`${prefix()}: ${message}`),
44
+
45
+ warn: (message: any, ...params: unknown[]) =>
46
+ params?.length
47
+ ? console.warn(`${prefix()}: ${message}`, params)
48
+ : console.warn(`${prefix()}: ${message}`),
49
+
50
+ error: (message: any, ...params: unknown[]) =>
51
+ params?.length
52
+ ? console.error(`${prefix()}: ${chalk.red(message)}`, params)
53
+ : console.error(`${prefix()}: ${chalk.red(message)}`)
54
+ };
12
55
  }
13
56
 
14
- return chalk.hex('#' + (hash * 0xfffff * 1000000).toString(16).slice(0, 6))(content);
15
- };
57
+ private colorize = (content: string) => {
58
+ let hash = 0x811c9dc5;
59
+
60
+ for (let i = 0; i < content.length; i++) {
61
+ hash ^= content.charCodeAt(i);
62
+ hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);
63
+ }
64
+
65
+ return chalk.hex('#' + (hash * 0xfffff * 1000000).toString(16).slice(0, 6))(content);
66
+ };
67
+ }
16
68
 
17
69
  /**
18
70
  *
19
71
  */
20
- export const useLogger = withMemo((context: string, tint?: string) => {
21
- const prefix = () =>
22
- `${chalk.hex(tint ?? colorize(context))(
23
- new Date(useTimestamp()).toISOString()
24
- )} ${chalk.hex(tint ?? colorize(context))(context)}`;
25
-
26
- return {
27
- info: (message: any, ...params: unknown[]) =>
28
- params?.length
29
- ? console.info(`${prefix()}: ${message}`, params)
30
- : console.info(`${prefix()}: ${message}`),
31
-
32
- debug: (message: any, ...params: unknown[]) =>
33
- params?.length
34
- ? console.debug(`${prefix()}: ${message}`, params)
35
- : console.debug(`${prefix()}: ${message}`),
36
-
37
- warn: (message: any, ...params: unknown[]) =>
38
- params?.length
39
- ? console.warn(`${prefix()}: ${message}`, params)
40
- : console.warn(`${prefix()}: ${message}`),
41
-
42
- error: (message: any, ...params: unknown[]) =>
43
- params?.length
44
- ? console.error(`${prefix()}: ${chalk.red(message)}`, params)
45
- : console.error(`${prefix()}: ${chalk.red(message)}`)
46
- };
47
- });
72
+ export const useLogger = withMemo((context: string, tint?: string) =>
73
+ useContext<ILoggerFactory>(token).for(context, tint)
74
+ );