document-model 6.0.0-dev.28 → 6.0.0-dev.29

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.
@@ -4,6 +4,8 @@ export * from "./documents.js";
4
4
  export * from "./errors.js";
5
5
  export * from "./files.js";
6
6
  export * from "./header.js";
7
+ export * from "./logger.js";
8
+ export * from "./logger-types.js";
7
9
  export * from "./operations.js";
8
10
  export * from "./reducer.js";
9
11
  export * from "./schemas.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC"}
@@ -4,6 +4,8 @@ export * from "./documents.js";
4
4
  export * from "./errors.js";
5
5
  export * from "./files.js";
6
6
  export * from "./header.js";
7
+ export * from "./logger.js";
8
+ export * from "./logger-types.js";
7
9
  export * from "./operations.js";
8
10
  export * from "./reducer.js";
9
11
  export * from "./schemas.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,12 @@
1
+ export type LoggerErrorHandler = (...data: any[]) => void;
2
+ export type ILogger = {
3
+ level: "verbose" | "debug" | "info" | "warn" | "error";
4
+ verbose: (message: string, ...replacements: any[]) => void;
5
+ debug: (message: string, ...replacements: any[]) => void;
6
+ info: (message: string, ...replacements: any[]) => void;
7
+ warn: (message: string, ...replacements: any[]) => void;
8
+ error: (message: string, ...replacements: any[]) => void;
9
+ errorHandler: LoggerErrorHandler;
10
+ child: (tags: string[]) => ILogger;
11
+ };
12
+ //# sourceMappingURL=logger-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger-types.d.ts","sourceRoot":"","sources":["../../../src/core/logger-types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;AAE1D,MAAM,MAAM,OAAO,GAAG;IACpB,KAAK,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAEvD,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAC3D,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IACzD,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IACxD,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IACxD,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAEzD,YAAY,EAAE,kBAAkB,CAAC;IAEjC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC;CACpC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=logger-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger-types.js","sourceRoot":"","sources":["../../../src/core/logger-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,27 @@
1
+ import type { ILogger, LoggerErrorHandler } from "./logger-types.js";
2
+ declare const LOG_LEVELS: {
3
+ readonly verbose: 0;
4
+ readonly debug: 1;
5
+ readonly info: 2;
6
+ readonly warn: 3;
7
+ readonly error: 4;
8
+ };
9
+ export declare class ConsoleLogger implements ILogger {
10
+ #private;
11
+ errorHandler: LoggerErrorHandler;
12
+ constructor(tags?: string[], handler?: LoggerErrorHandler);
13
+ get level(): keyof typeof LOG_LEVELS;
14
+ set level(value: keyof typeof LOG_LEVELS);
15
+ child(tags: string[]): ILogger;
16
+ verbose(message: string, ...replacements: any[]): void;
17
+ debug(message: string, ...replacements: any[]): void;
18
+ info(message: string, ...replacements: any[]): void;
19
+ warn(message: string, ...replacements: any[]): void;
20
+ error(message: string, ...replacements: any[]): void;
21
+ }
22
+ export declare const logger: ILogger;
23
+ export declare const setLogLevel: (level: ILogger["level"]) => void;
24
+ export declare const setErrorHandler: (handler: LoggerErrorHandler) => void;
25
+ export declare const childLogger: (tags: string[]) => ILogger;
26
+ export {};
27
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/core/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AA2DrE,QAAA,MAAM,UAAU;;;;;;CAMN,CAAC;AAEX,qBAAa,aAAc,YAAW,OAAO;;IAK3C,YAAY,EAAE,kBAAkB,CAAC;gBAErB,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,kBAAkB;IAOzD,IAAI,KAAK,IAAI,MAAM,OAAO,UAAU,CAInC;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,OAAO,UAAU,EAEvC;IAED,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO;IAS9B,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,GAAG,EAAE,GAAG,IAAI;IAYtD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,GAAG,EAAE,GAAG,IAAI;IAYpD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,GAAG,EAAE,GAAG,IAAI;IAYnD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,GAAG,EAAE,GAAG,IAAI;IAYnD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,GAAG,EAAE,GAAG,IAAI;CAWrD;AAGD,eAAO,MAAM,MAAM,EAAE,OAA6B,CAAC;AAGnD,eAAO,MAAM,WAAW,GAAI,OAAO,OAAO,CAAC,OAAO,CAAC,SAElD,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,SAAS,kBAAkB,SAE1D,CAAC;AAGF,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,EAAE,KAAG,OAE5C,CAAC"}
@@ -0,0 +1,121 @@
1
+ const tokenSub = /@([a-zA-Z0-9_]+)/g;
2
+ const dtf = new Intl.DateTimeFormat();
3
+ const formatMessage = (tagString, message, replacements) => {
4
+ const meta = {};
5
+ const uniqueTokens = [];
6
+ let results;
7
+ while ((results = tokenSub.exec(message)) !== null) {
8
+ const tokenName = results[1];
9
+ const index = uniqueTokens.indexOf(tokenName);
10
+ if (index === -1) {
11
+ uniqueTokens.push(tokenName);
12
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
13
+ const replacement = replacements[uniqueTokens.length - 1];
14
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
15
+ meta[tokenName] = replacement;
16
+ }
17
+ }
18
+ // replace
19
+ for (const [key, value] of Object.entries(meta)) {
20
+ let stringValue;
21
+ if (!value) {
22
+ stringValue = "null";
23
+ }
24
+ else if (typeof value === "string") {
25
+ stringValue = value;
26
+ }
27
+ else if (typeof value === "object") {
28
+ stringValue = JSON.stringify(value);
29
+ }
30
+ else if (typeof value === "function") {
31
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
32
+ const name = value.name;
33
+ stringValue = name ? `${name}()` : "anonymous()";
34
+ }
35
+ else {
36
+ stringValue = String(value);
37
+ }
38
+ message = message.replaceAll(`@${key}`, stringValue);
39
+ }
40
+ if (tagString.length > 0) {
41
+ message = `${tagString} ${message}`;
42
+ }
43
+ // timestamp
44
+ const now = new Date();
45
+ const timestamp = dtf.format(now);
46
+ meta["timestamp"] = timestamp;
47
+ return [message, meta];
48
+ };
49
+ const LOG_LEVELS = {
50
+ verbose: 0,
51
+ debug: 1,
52
+ info: 2,
53
+ warn: 3,
54
+ error: 4,
55
+ };
56
+ export class ConsoleLogger {
57
+ #tags;
58
+ #tagString;
59
+ #level = LOG_LEVELS.info;
60
+ errorHandler;
61
+ constructor(tags, handler) {
62
+ this.#tags = tags || [];
63
+ this.#tagString = this.#tags.map((tag) => `[${tag}]`).join("");
64
+ this.errorHandler = handler ?? (() => { });
65
+ }
66
+ get level() {
67
+ return Object.keys(LOG_LEVELS).find((key) => LOG_LEVELS[key] === this.#level);
68
+ }
69
+ set level(value) {
70
+ this.#level = LOG_LEVELS[value];
71
+ }
72
+ child(tags) {
73
+ const logger = new ConsoleLogger([...this.#tags, ...tags], this.errorHandler);
74
+ logger.level = this.level;
75
+ return logger;
76
+ }
77
+ verbose(message, ...replacements) {
78
+ if (this.#level <= LOG_LEVELS.verbose) {
79
+ const [formattedMessage, meta] = formatMessage(this.#tagString, message, replacements);
80
+ console.debug(`[${meta["timestamp"]}] ${formattedMessage}`, meta);
81
+ }
82
+ }
83
+ debug(message, ...replacements) {
84
+ if (this.#level <= LOG_LEVELS.debug) {
85
+ const [formattedMessage, meta] = formatMessage(this.#tagString, message, replacements);
86
+ console.debug(`[${meta["timestamp"]}] ${formattedMessage}`, meta);
87
+ }
88
+ }
89
+ info(message, ...replacements) {
90
+ if (this.#level <= LOG_LEVELS.info) {
91
+ const [formattedMessage, meta] = formatMessage(this.#tagString, message, replacements);
92
+ console.info(`[${meta["timestamp"]}] ${formattedMessage}`, meta);
93
+ }
94
+ }
95
+ warn(message, ...replacements) {
96
+ if (this.#level <= LOG_LEVELS.warn) {
97
+ const [formattedMessage, meta] = formatMessage(this.#tagString, message, replacements);
98
+ console.warn(`[${meta["timestamp"]}] ${formattedMessage}`, meta);
99
+ }
100
+ }
101
+ error(message, ...replacements) {
102
+ if (this.#level <= LOG_LEVELS.error) {
103
+ const [formattedMessage, meta] = formatMessage(this.#tagString, message, replacements);
104
+ console.error(`[${meta["timestamp"]}] ${formattedMessage}`, meta);
105
+ }
106
+ }
107
+ }
108
+ // Singleton instance
109
+ export const logger = new ConsoleLogger();
110
+ // Global configuration
111
+ export const setLogLevel = (level) => {
112
+ logger.level = level;
113
+ };
114
+ export const setErrorHandler = (handler) => {
115
+ logger.errorHandler = handler;
116
+ };
117
+ // Backwards-compatible factory function
118
+ export const childLogger = (tags) => {
119
+ return logger.child(tags);
120
+ };
121
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/core/logger.ts"],"names":[],"mappings":"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"}