semola 0.5.2 → 0.5.3
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 +88 -13
- package/dist/cron/builder/index.cjs +166 -0
- package/dist/cron/builder/index.d.cts +28 -0
- package/dist/cron/builder/index.d.cts.map +1 -0
- package/dist/cron/builder/index.d.mts +28 -0
- package/dist/cron/builder/index.d.mts.map +1 -0
- package/dist/cron/builder/index.mjs +163 -0
- package/dist/cron/builder/index.mjs.map +1 -0
- package/dist/cron/builder/types.cjs +27 -0
- package/dist/cron/builder/types.d.cts +79 -0
- package/dist/cron/builder/types.d.cts.map +1 -0
- package/dist/cron/builder/types.d.mts +79 -0
- package/dist/cron/builder/types.d.mts.map +1 -0
- package/dist/cron/builder/types.mjs +28 -0
- package/dist/cron/builder/types.mjs.map +1 -0
- package/dist/cron/core/index.cjs +308 -0
- package/dist/cron/core/index.d.cts +39 -0
- package/dist/cron/core/index.d.cts.map +1 -0
- package/dist/cron/core/index.d.mts +39 -0
- package/dist/cron/core/index.d.mts.map +1 -0
- package/dist/cron/core/index.mjs +310 -0
- package/dist/cron/core/index.mjs.map +1 -0
- package/dist/cron/{scanner.cjs → core/scanner.cjs} +2 -2
- package/dist/cron/{scanner.mjs → core/scanner.mjs} +2 -2
- package/dist/cron/core/scanner.mjs.map +1 -0
- package/dist/cron/{types.d.cts → core/types.d.cts} +1 -1
- package/dist/cron/core/types.d.cts.map +1 -0
- package/dist/cron/{types.d.mts → core/types.d.mts} +1 -1
- package/dist/cron/core/types.d.mts.map +1 -0
- package/dist/errors/types.d.cts +1 -1
- package/dist/errors/types.d.mts +1 -1
- package/dist/lib/cache/index.d.cts +3 -3
- package/dist/lib/cache/index.d.mts +3 -3
- package/dist/lib/cron/index.cjs +12 -275
- package/dist/lib/cron/index.d.cts +4 -39
- package/dist/lib/cron/index.d.mts +4 -39
- package/dist/lib/cron/index.mjs +4 -277
- package/dist/lib/errors/index.d.cts +2 -2
- package/dist/lib/errors/index.d.cts.map +1 -1
- package/dist/lib/errors/index.d.mts +2 -2
- package/dist/lib/errors/index.d.mts.map +1 -1
- package/dist/lib/errors/index.mjs.map +1 -1
- package/dist/lib/i18n/index.cjs +6 -1
- package/dist/lib/i18n/index.d.cts.map +1 -1
- package/dist/lib/i18n/index.d.mts.map +1 -1
- package/dist/lib/i18n/index.mjs +6 -1
- package/dist/lib/i18n/index.mjs.map +1 -1
- package/dist/lib/logging/index.cjs +18 -0
- package/dist/lib/logging/index.d.cts +7 -0
- package/dist/lib/logging/index.d.mts +7 -0
- package/dist/lib/logging/index.mjs +5 -0
- package/dist/lib/orm/index.cjs +20 -0
- package/dist/lib/orm/index.d.cts +7 -0
- package/dist/lib/orm/index.d.mts +7 -0
- package/dist/lib/orm/index.mjs +6 -0
- package/dist/lib/prompts/index.d.cts +8 -8
- package/dist/lib/prompts/index.d.mts +8 -8
- package/dist/lib/pubsub/index.cjs +82 -13
- package/dist/lib/pubsub/index.d.cts +14 -5
- package/dist/lib/pubsub/index.d.cts.map +1 -1
- package/dist/lib/pubsub/index.d.mts +14 -5
- package/dist/lib/pubsub/index.d.mts.map +1 -1
- package/dist/lib/pubsub/index.mjs +82 -13
- package/dist/lib/pubsub/index.mjs.map +1 -1
- package/dist/lib/queue/index.d.cts +2 -2
- package/dist/lib/queue/index.d.mts +2 -2
- package/dist/lib/workflow/index.cjs +534 -0
- package/dist/lib/workflow/index.d.cts +7 -0
- package/dist/lib/workflow/index.d.cts.map +1 -0
- package/dist/lib/workflow/index.d.mts +7 -0
- package/dist/lib/workflow/index.d.mts.map +1 -0
- package/dist/lib/workflow/index.mjs +535 -0
- package/dist/lib/workflow/index.mjs.map +1 -0
- package/dist/logging/core/index.cjs +99 -0
- package/dist/logging/core/index.d.cts +26 -0
- package/dist/logging/core/index.d.cts.map +1 -0
- package/dist/logging/core/index.d.mts +26 -0
- package/dist/logging/core/index.d.mts.map +1 -0
- package/dist/logging/core/index.mjs +99 -0
- package/dist/logging/core/index.mjs.map +1 -0
- package/dist/logging/core/types.cjs +10 -0
- package/dist/logging/core/types.d.cts +22 -0
- package/dist/logging/core/types.d.cts.map +1 -0
- package/dist/logging/core/types.d.mts +22 -0
- package/dist/logging/core/types.d.mts.map +1 -0
- package/dist/logging/core/types.mjs +12 -0
- package/dist/logging/core/types.mjs.map +1 -0
- package/dist/logging/formatter/index.cjs +119 -0
- package/dist/logging/formatter/index.d.cts +27 -0
- package/dist/logging/formatter/index.d.cts.map +1 -0
- package/dist/logging/formatter/index.d.mts +27 -0
- package/dist/logging/formatter/index.d.mts.map +1 -0
- package/dist/logging/formatter/index.mjs +115 -0
- package/dist/logging/formatter/index.mjs.map +1 -0
- package/dist/logging/formatter/types.d.cts +5 -0
- package/dist/logging/formatter/types.d.cts.map +1 -0
- package/dist/logging/formatter/types.d.mts +5 -0
- package/dist/logging/formatter/types.d.mts.map +1 -0
- package/dist/logging/provider/index.cjs +165 -0
- package/dist/logging/provider/index.d.cts +28 -0
- package/dist/logging/provider/index.d.cts.map +1 -0
- package/dist/logging/provider/index.d.mts +28 -0
- package/dist/logging/provider/index.d.mts.map +1 -0
- package/dist/logging/provider/index.mjs +165 -0
- package/dist/logging/provider/index.mjs.map +1 -0
- package/dist/logging/provider/types.d.cts +23 -0
- package/dist/logging/provider/types.d.cts.map +1 -0
- package/dist/logging/provider/types.d.mts +23 -0
- package/dist/logging/provider/types.d.mts.map +1 -0
- package/dist/orm/column.cjs +137 -0
- package/dist/orm/column.d.cts +121 -0
- package/dist/orm/column.d.cts.map +1 -0
- package/dist/orm/column.d.mts +121 -0
- package/dist/orm/column.d.mts.map +1 -0
- package/dist/orm/column.mjs +132 -0
- package/dist/orm/column.mjs.map +1 -0
- package/dist/orm/dialect/index.cjs +14 -0
- package/dist/orm/dialect/index.mjs +16 -0
- package/dist/orm/dialect/index.mjs.map +1 -0
- package/dist/orm/dialect/mysql.cjs +31 -0
- package/dist/orm/dialect/mysql.mjs +33 -0
- package/dist/orm/dialect/mysql.mjs.map +1 -0
- package/dist/orm/dialect/postgres.cjs +23 -0
- package/dist/orm/dialect/postgres.mjs +25 -0
- package/dist/orm/dialect/postgres.mjs.map +1 -0
- package/dist/orm/dialect/sqlite.cjs +31 -0
- package/dist/orm/dialect/sqlite.mjs +33 -0
- package/dist/orm/dialect/sqlite.mjs.map +1 -0
- package/dist/orm/dialect/utils.cjs +8 -0
- package/dist/orm/dialect/utils.mjs +10 -0
- package/dist/orm/dialect/utils.mjs.map +1 -0
- package/dist/orm/internal/table-columns.cjs +31 -0
- package/dist/orm/internal/table-columns.mjs +32 -0
- package/dist/orm/internal/table-columns.mjs.map +1 -0
- package/dist/orm/internal/table-lookup.cjs +35 -0
- package/dist/orm/internal/table-lookup.mjs +35 -0
- package/dist/orm/internal/table-lookup.mjs.map +1 -0
- package/dist/orm/internal/table-relations.cjs +28 -0
- package/dist/orm/internal/table-relations.mjs +29 -0
- package/dist/orm/internal/table-relations.mjs.map +1 -0
- package/dist/orm/migration/config.cjs +7 -0
- package/dist/orm/migration/config.d.cts +7 -0
- package/dist/orm/migration/config.d.cts.map +1 -0
- package/dist/orm/migration/config.d.mts +7 -0
- package/dist/orm/migration/config.d.mts.map +1 -0
- package/dist/orm/migration/config.mjs +8 -0
- package/dist/orm/migration/config.mjs.map +1 -0
- package/dist/orm/migration/types.d.cts +20 -0
- package/dist/orm/migration/types.d.cts.map +1 -0
- package/dist/orm/migration/types.d.mts +20 -0
- package/dist/orm/migration/types.d.mts.map +1 -0
- package/dist/orm/orm.cjs +41 -0
- package/dist/orm/orm.d.cts +18 -0
- package/dist/orm/orm.d.cts.map +1 -0
- package/dist/orm/orm.d.mts +18 -0
- package/dist/orm/orm.d.mts.map +1 -0
- package/dist/orm/orm.mjs +43 -0
- package/dist/orm/orm.mjs.map +1 -0
- package/dist/orm/relation.cjs +18 -0
- package/dist/orm/relation.d.cts +8 -0
- package/dist/orm/relation.d.cts.map +1 -0
- package/dist/orm/relation.d.mts +8 -0
- package/dist/orm/relation.d.mts.map +1 -0
- package/dist/orm/relation.mjs +19 -0
- package/dist/orm/relation.mjs.map +1 -0
- package/dist/orm/runtime/builders/mutations.cjs +29 -0
- package/dist/orm/runtime/builders/mutations.mjs +28 -0
- package/dist/orm/runtime/builders/mutations.mjs.map +1 -0
- package/dist/orm/runtime/builders/select.cjs +18 -0
- package/dist/orm/runtime/builders/select.mjs +19 -0
- package/dist/orm/runtime/builders/select.mjs.map +1 -0
- package/dist/orm/runtime/client.cjs +90 -0
- package/dist/orm/runtime/client.mjs +92 -0
- package/dist/orm/runtime/client.mjs.map +1 -0
- package/dist/orm/runtime/context.cjs +49 -0
- package/dist/orm/runtime/context.mjs +51 -0
- package/dist/orm/runtime/context.mjs.map +1 -0
- package/dist/orm/runtime/dialect/index.cjs +11 -0
- package/dist/orm/runtime/dialect/index.mjs +13 -0
- package/dist/orm/runtime/dialect/index.mjs.map +1 -0
- package/dist/orm/runtime/dialect/mysql.cjs +95 -0
- package/dist/orm/runtime/dialect/mysql.mjs +97 -0
- package/dist/orm/runtime/dialect/mysql.mjs.map +1 -0
- package/dist/orm/runtime/dialect/postgres.cjs +51 -0
- package/dist/orm/runtime/dialect/postgres.mjs +53 -0
- package/dist/orm/runtime/dialect/postgres.mjs.map +1 -0
- package/dist/orm/runtime/dialect/sqlite.cjs +4 -0
- package/dist/orm/runtime/dialect/sqlite.mjs +7 -0
- package/dist/orm/runtime/dialect/sqlite.mjs.map +1 -0
- package/dist/orm/runtime/errors.cjs +19 -0
- package/dist/orm/runtime/errors.mjs +21 -0
- package/dist/orm/runtime/errors.mjs.map +1 -0
- package/dist/orm/runtime/hydrate/many.cjs +46 -0
- package/dist/orm/runtime/hydrate/many.mjs +48 -0
- package/dist/orm/runtime/hydrate/many.mjs.map +1 -0
- package/dist/orm/runtime/hydrate/one.cjs +38 -0
- package/dist/orm/runtime/hydrate/one.mjs +40 -0
- package/dist/orm/runtime/hydrate/one.mjs.map +1 -0
- package/dist/orm/runtime/hydrate.cjs +49 -0
- package/dist/orm/runtime/hydrate.mjs +51 -0
- package/dist/orm/runtime/hydrate.mjs.map +1 -0
- package/dist/orm/runtime/rows.cjs +30 -0
- package/dist/orm/runtime/rows.mjs +31 -0
- package/dist/orm/runtime/rows.mjs.map +1 -0
- package/dist/orm/runtime/utils.cjs +27 -0
- package/dist/orm/runtime/utils.mjs +27 -0
- package/dist/orm/runtime/utils.mjs.map +1 -0
- package/dist/orm/sql/parse-array.cjs +64 -0
- package/dist/orm/sql/parse-array.mjs +66 -0
- package/dist/orm/sql/parse-array.mjs.map +1 -0
- package/dist/orm/sql/plan/select.cjs +36 -0
- package/dist/orm/sql/plan/select.mjs +38 -0
- package/dist/orm/sql/plan/select.mjs.map +1 -0
- package/dist/orm/sql/plan/where/operators.cjs +95 -0
- package/dist/orm/sql/plan/where/operators.mjs +97 -0
- package/dist/orm/sql/plan/where/operators.mjs.map +1 -0
- package/dist/orm/sql/plan/where.cjs +59 -0
- package/dist/orm/sql/plan/where.mjs +61 -0
- package/dist/orm/sql/plan/where.mjs.map +1 -0
- package/dist/orm/sql/serialize/clauses.cjs +36 -0
- package/dist/orm/sql/serialize/clauses.mjs +37 -0
- package/dist/orm/sql/serialize/clauses.mjs.map +1 -0
- package/dist/orm/sql/serialize/joins.cjs +31 -0
- package/dist/orm/sql/serialize/joins.mjs +33 -0
- package/dist/orm/sql/serialize/joins.mjs.map +1 -0
- package/dist/orm/sql/serialize/values.cjs +30 -0
- package/dist/orm/sql/serialize/values.mjs +32 -0
- package/dist/orm/sql/serialize/values.mjs.map +1 -0
- package/dist/orm/sql/serialize/where/predicate.cjs +73 -0
- package/dist/orm/sql/serialize/where/predicate.mjs +75 -0
- package/dist/orm/sql/serialize/where/predicate.mjs.map +1 -0
- package/dist/orm/sql/serialize/where/tree.cjs +26 -0
- package/dist/orm/sql/serialize/where/tree.mjs +28 -0
- package/dist/orm/sql/serialize/where/tree.mjs.map +1 -0
- package/dist/orm/sql/serialize/where.cjs +10 -0
- package/dist/orm/sql/serialize/where.mjs +12 -0
- package/dist/orm/sql/serialize/where.mjs.map +1 -0
- package/dist/orm/sql/serialize.cjs +24 -0
- package/dist/orm/sql/serialize.mjs +25 -0
- package/dist/orm/sql/serialize.mjs.map +1 -0
- package/dist/orm/table.cjs +12 -0
- package/dist/orm/table.d.cts +12 -0
- package/dist/orm/table.d.cts.map +1 -0
- package/dist/orm/table.d.mts +12 -0
- package/dist/orm/table.d.mts.map +1 -0
- package/dist/orm/table.mjs +14 -0
- package/dist/orm/table.mjs.map +1 -0
- package/dist/orm/types.d.cts +183 -0
- package/dist/orm/types.d.cts.map +1 -0
- package/dist/orm/types.d.mts +183 -0
- package/dist/orm/types.d.mts.map +1 -0
- package/dist/workflow/types.d.cts +83 -0
- package/dist/workflow/types.d.cts.map +1 -0
- package/dist/workflow/types.d.mts +83 -0
- package/dist/workflow/types.d.mts.map +1 -0
- package/package.json +29 -3
- package/dist/cron/scanner.mjs.map +0 -1
- package/dist/cron/types.d.cts.map +0 -1
- package/dist/cron/types.d.mts.map +0 -1
- package/dist/lib/cron/index.d.cts.map +0 -1
- package/dist/lib/cron/index.d.mts.map +0 -1
- package/dist/lib/cron/index.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.cts","names":[],"sources":["../../../src/lib/logging/formatter/types.ts"],"mappings":";KAAY,aAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.mts","names":[],"sources":["../../../src/lib/logging/formatter/types.ts"],"mappings":";KAAY,aAAA"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
const require_lib_errors_index = require("../../lib/errors/index.cjs");
|
|
2
|
+
const require_index = require("../formatter/index.cjs");
|
|
3
|
+
const require_index$1 = require("../core/index.cjs");
|
|
4
|
+
const require_types = require("../core/types.cjs");
|
|
5
|
+
let node_path = require("node:path");
|
|
6
|
+
let node_fs = require("node:fs");
|
|
7
|
+
//#region src/lib/logging/provider/index.ts
|
|
8
|
+
const DEFAULT_MAX_SIZE = 4 * 1024;
|
|
9
|
+
const DurationUnit = {
|
|
10
|
+
hour: 1e3 * 60 * 60,
|
|
11
|
+
day: 1e3 * 60 * 60 * 24,
|
|
12
|
+
week: 1e3 * 60 * 60 * 24 * 7,
|
|
13
|
+
month: 1e3 * 60 * 60 * 24 * 7 * 4.345
|
|
14
|
+
};
|
|
15
|
+
var LoggerProvider = class {
|
|
16
|
+
options;
|
|
17
|
+
constructor(options = require_index$1.PROVIDER_OPTION_DEFAULT) {
|
|
18
|
+
this.options = {
|
|
19
|
+
...require_index$1.PROVIDER_OPTION_DEFAULT,
|
|
20
|
+
...options
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
getLogLevel() {
|
|
24
|
+
if (!this.options.level) return require_types.LogLevel.debug;
|
|
25
|
+
return require_types.LogLevel[this.options.level];
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
const FILE_PROVIDER_OPTION_DEFAULT = {
|
|
29
|
+
...require_index$1.PROVIDER_OPTION_DEFAULT,
|
|
30
|
+
policy: { type: "size" }
|
|
31
|
+
};
|
|
32
|
+
var FileProvider = class extends LoggerProvider {
|
|
33
|
+
filePath;
|
|
34
|
+
counter;
|
|
35
|
+
file;
|
|
36
|
+
policy;
|
|
37
|
+
constructor(file, options = FILE_PROVIDER_OPTION_DEFAULT) {
|
|
38
|
+
super({
|
|
39
|
+
formatter: options.formatter ?? require_index$1.PROVIDER_OPTION_DEFAULT.formatter,
|
|
40
|
+
level: options.level ?? require_index$1.PROVIDER_OPTION_DEFAULT.level
|
|
41
|
+
});
|
|
42
|
+
this.policy = options.policy ?? FILE_PROVIDER_OPTION_DEFAULT.policy;
|
|
43
|
+
this.filePath = file;
|
|
44
|
+
this.counter = 0;
|
|
45
|
+
this.file = this.createNewFileName();
|
|
46
|
+
}
|
|
47
|
+
execute(data) {
|
|
48
|
+
if (this.getLogLevel() > require_types.LogLevel[data.level]) return;
|
|
49
|
+
const [error, formattedMessage] = require_lib_errors_index.mightThrowSync(() => {
|
|
50
|
+
if (this.isJSONFile()) return JSON.stringify({
|
|
51
|
+
timestamp: require_index.isoDateTimeFormat(),
|
|
52
|
+
level: data.level,
|
|
53
|
+
message: data.msg
|
|
54
|
+
});
|
|
55
|
+
const { formatter } = this.options;
|
|
56
|
+
return formatter?.format(data) ?? "";
|
|
57
|
+
});
|
|
58
|
+
const [fsError] = require_lib_errors_index.mightThrowSync(() => {
|
|
59
|
+
if (error && error instanceof Error) {
|
|
60
|
+
const { formatter } = this.options;
|
|
61
|
+
const errorMsg = formatter?.formatError(data, error);
|
|
62
|
+
(0, node_fs.appendFileSync)(this.file, `${errorMsg}\n`);
|
|
63
|
+
}
|
|
64
|
+
if (this.canRollFile()) {
|
|
65
|
+
this.counter += 1;
|
|
66
|
+
this.file = this.createNewFileName();
|
|
67
|
+
}
|
|
68
|
+
if (error || !formattedMessage) return;
|
|
69
|
+
(0, node_fs.appendFileSync)(this.file, `${formattedMessage}\n`);
|
|
70
|
+
});
|
|
71
|
+
if (fsError && fsError instanceof Error) throw fsError;
|
|
72
|
+
}
|
|
73
|
+
canRollFile() {
|
|
74
|
+
if (!this.policy) return false;
|
|
75
|
+
switch (this.policy.type) {
|
|
76
|
+
case "size":
|
|
77
|
+
if (this.policy.maxSize) return this.getFileSize() >= this.policy.maxSize;
|
|
78
|
+
return this.getFileSize() >= DEFAULT_MAX_SIZE;
|
|
79
|
+
case "time": {
|
|
80
|
+
if (!(0, node_fs.existsSync)(this.file)) return false;
|
|
81
|
+
const { duration, instant } = this.policy;
|
|
82
|
+
const { birthtime } = (0, node_fs.statSync)(this.file);
|
|
83
|
+
const creationTimeMs = birthtime.getTime();
|
|
84
|
+
const currenTimeMs = Date.now();
|
|
85
|
+
const diffMs = currenTimeMs - creationTimeMs;
|
|
86
|
+
switch (instant) {
|
|
87
|
+
case "hour": return Math.floor(diffMs / DurationUnit.hour) >= duration;
|
|
88
|
+
case "day": return Math.floor(diffMs / DurationUnit.day) >= duration;
|
|
89
|
+
case "week": return Math.floor(diffMs / DurationUnit.week) >= duration;
|
|
90
|
+
case "month": {
|
|
91
|
+
const currentDate = new Date(currenTimeMs);
|
|
92
|
+
const monthsDiff = (currentDate.getFullYear() - birthtime.getFullYear()) * 12 + (currentDate.getMonth() - birthtime.getMonth());
|
|
93
|
+
return (currentDate.getDate() >= birthtime.getDate() ? monthsDiff : monthsDiff - 1) >= duration;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
getFileSize() {
|
|
100
|
+
if (!(0, node_fs.existsSync)(this.file)) return 0;
|
|
101
|
+
const [statError, size] = require_lib_errors_index.mightThrowSync(() => {
|
|
102
|
+
const { size } = (0, node_fs.statSync)(this.file);
|
|
103
|
+
return size;
|
|
104
|
+
});
|
|
105
|
+
if (statError && statError instanceof Error) return 0;
|
|
106
|
+
if (!size) return 0;
|
|
107
|
+
return size;
|
|
108
|
+
}
|
|
109
|
+
isJSONFile() {
|
|
110
|
+
return (0, node_path.extname)(this.filePath) === ".json";
|
|
111
|
+
}
|
|
112
|
+
createNewFileName() {
|
|
113
|
+
const fileName = (0, node_path.basename)(this.filePath);
|
|
114
|
+
const directory = (0, node_path.dirname)(this.filePath);
|
|
115
|
+
if (!(0, node_fs.existsSync)(directory)) (0, node_fs.mkdirSync)(directory, { recursive: true });
|
|
116
|
+
const fileInfo = fileName.split(".");
|
|
117
|
+
const extension = fileInfo.pop();
|
|
118
|
+
return (0, node_path.join)(directory, [
|
|
119
|
+
...fileInfo,
|
|
120
|
+
this.counter,
|
|
121
|
+
extension
|
|
122
|
+
].join("."));
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
var ConsoleProvider = class extends LoggerProvider {
|
|
126
|
+
execute(data) {
|
|
127
|
+
const level = this.getLogLevel();
|
|
128
|
+
const userLevel = require_types.LogLevel[data.level];
|
|
129
|
+
if (level > userLevel) return;
|
|
130
|
+
const [error, formattedMessage] = require_lib_errors_index.mightThrowSync(() => {
|
|
131
|
+
const { formatter } = this.options;
|
|
132
|
+
return formatter?.format(data) ?? "";
|
|
133
|
+
});
|
|
134
|
+
if (error && error instanceof Error) {
|
|
135
|
+
const { formatter } = this.options;
|
|
136
|
+
console.error(formatter?.formatError(data, error));
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
if (!formattedMessage) return;
|
|
140
|
+
switch (userLevel) {
|
|
141
|
+
case require_types.LogLevel.debug:
|
|
142
|
+
console.debug(formattedMessage);
|
|
143
|
+
break;
|
|
144
|
+
case require_types.LogLevel.info:
|
|
145
|
+
console.info(formattedMessage);
|
|
146
|
+
break;
|
|
147
|
+
case require_types.LogLevel.warning:
|
|
148
|
+
console.warn(formattedMessage);
|
|
149
|
+
break;
|
|
150
|
+
case require_types.LogLevel.error:
|
|
151
|
+
console.error(formattedMessage);
|
|
152
|
+
break;
|
|
153
|
+
case require_types.LogLevel.critical:
|
|
154
|
+
console.error(formattedMessage);
|
|
155
|
+
break;
|
|
156
|
+
default:
|
|
157
|
+
console.debug(formattedMessage);
|
|
158
|
+
break;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
//#endregion
|
|
163
|
+
exports.ConsoleProvider = ConsoleProvider;
|
|
164
|
+
exports.FileProvider = FileProvider;
|
|
165
|
+
exports.LoggerProvider = LoggerProvider;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { LogDataType } from "../core/types.cjs";
|
|
2
|
+
import { FileProviderOptions, ProviderOptions } from "./types.cjs";
|
|
3
|
+
|
|
4
|
+
//#region src/lib/logging/provider/index.d.ts
|
|
5
|
+
declare abstract class LoggerProvider {
|
|
6
|
+
protected options: ProviderOptions;
|
|
7
|
+
constructor(options?: ProviderOptions);
|
|
8
|
+
abstract execute(data: LogDataType): void;
|
|
9
|
+
getLogLevel(): number;
|
|
10
|
+
}
|
|
11
|
+
declare class FileProvider extends LoggerProvider {
|
|
12
|
+
private readonly filePath;
|
|
13
|
+
private counter;
|
|
14
|
+
private file;
|
|
15
|
+
private policy?;
|
|
16
|
+
constructor(file: string, options?: FileProviderOptions);
|
|
17
|
+
execute(data: LogDataType): void;
|
|
18
|
+
private canRollFile;
|
|
19
|
+
private getFileSize;
|
|
20
|
+
private isJSONFile;
|
|
21
|
+
private createNewFileName;
|
|
22
|
+
}
|
|
23
|
+
declare class ConsoleProvider extends LoggerProvider {
|
|
24
|
+
execute(data: LogDataType): void;
|
|
25
|
+
}
|
|
26
|
+
//#endregion
|
|
27
|
+
export { ConsoleProvider, FileProvider, LoggerProvider };
|
|
28
|
+
//# sourceMappingURL=index.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../../../src/lib/logging/provider/index.ts"],"mappings":";;;;uBAuBsB,cAAA;EAAA,UACV,OAAA,EAAS,eAAA;cAEA,OAAA,GAAS,eAAA;EAAA,SAIZ,OAAA,CAAQ,IAAA,EAAM,WAAA;EAEvB,WAAA,CAAA;AAAA;AAAA,cAcI,YAAA,SAAqB,cAAA;EAAA,iBACf,QAAA;EAAA,QAET,OAAA;EAAA,QACA,IAAA;EAAA,QACA,MAAA;cAGN,IAAA,UACA,OAAA,GAAS,mBAAA;EAaJ,OAAA,CAAQ,IAAA,EAAM,WAAA;EAAA,QAuCb,WAAA;EAAA,QA6CA,WAAA;EAAA,QAmBA,UAAA;EAAA,QAIA,iBAAA;AAAA;AAAA,cAgBG,eAAA,SAAwB,cAAA;EAC5B,OAAA,CAAQ,IAAA,EAAM,WAAA;AAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { LogDataType } from "../core/types.mjs";
|
|
2
|
+
import { FileProviderOptions, ProviderOptions } from "./types.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/lib/logging/provider/index.d.ts
|
|
5
|
+
declare abstract class LoggerProvider {
|
|
6
|
+
protected options: ProviderOptions;
|
|
7
|
+
constructor(options?: ProviderOptions);
|
|
8
|
+
abstract execute(data: LogDataType): void;
|
|
9
|
+
getLogLevel(): number;
|
|
10
|
+
}
|
|
11
|
+
declare class FileProvider extends LoggerProvider {
|
|
12
|
+
private readonly filePath;
|
|
13
|
+
private counter;
|
|
14
|
+
private file;
|
|
15
|
+
private policy?;
|
|
16
|
+
constructor(file: string, options?: FileProviderOptions);
|
|
17
|
+
execute(data: LogDataType): void;
|
|
18
|
+
private canRollFile;
|
|
19
|
+
private getFileSize;
|
|
20
|
+
private isJSONFile;
|
|
21
|
+
private createNewFileName;
|
|
22
|
+
}
|
|
23
|
+
declare class ConsoleProvider extends LoggerProvider {
|
|
24
|
+
execute(data: LogDataType): void;
|
|
25
|
+
}
|
|
26
|
+
//#endregion
|
|
27
|
+
export { ConsoleProvider, FileProvider, LoggerProvider };
|
|
28
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../../src/lib/logging/provider/index.ts"],"mappings":";;;;uBAuBsB,cAAA;EAAA,UACV,OAAA,EAAS,eAAA;cAEA,OAAA,GAAS,eAAA;EAAA,SAIZ,OAAA,CAAQ,IAAA,EAAM,WAAA;EAEvB,WAAA,CAAA;AAAA;AAAA,cAcI,YAAA,SAAqB,cAAA;EAAA,iBACf,QAAA;EAAA,QAET,OAAA;EAAA,QACA,IAAA;EAAA,QACA,MAAA;cAGN,IAAA,UACA,OAAA,GAAS,mBAAA;EAaJ,OAAA,CAAQ,IAAA,EAAM,WAAA;EAAA,QAuCb,WAAA;EAAA,QA6CA,WAAA;EAAA,QAmBA,UAAA;EAAA,QAIA,iBAAA;AAAA;AAAA,cAgBG,eAAA,SAAwB,cAAA;EAC5B,OAAA,CAAQ,IAAA,EAAM,WAAA;AAAA"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { mightThrowSync } from "../../lib/errors/index.mjs";
|
|
2
|
+
import { isoDateTimeFormat } from "../formatter/index.mjs";
|
|
3
|
+
import { PROVIDER_OPTION_DEFAULT } from "../core/index.mjs";
|
|
4
|
+
import { LogLevel } from "../core/types.mjs";
|
|
5
|
+
import { basename, dirname, extname, join } from "node:path";
|
|
6
|
+
import { appendFileSync, existsSync, mkdirSync, statSync } from "node:fs";
|
|
7
|
+
//#region src/lib/logging/provider/index.ts
|
|
8
|
+
const DEFAULT_MAX_SIZE = 4 * 1024;
|
|
9
|
+
const DurationUnit = {
|
|
10
|
+
hour: 1e3 * 60 * 60,
|
|
11
|
+
day: 1e3 * 60 * 60 * 24,
|
|
12
|
+
week: 1e3 * 60 * 60 * 24 * 7,
|
|
13
|
+
month: 1e3 * 60 * 60 * 24 * 7 * 4.345
|
|
14
|
+
};
|
|
15
|
+
var LoggerProvider = class {
|
|
16
|
+
options;
|
|
17
|
+
constructor(options = PROVIDER_OPTION_DEFAULT) {
|
|
18
|
+
this.options = {
|
|
19
|
+
...PROVIDER_OPTION_DEFAULT,
|
|
20
|
+
...options
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
getLogLevel() {
|
|
24
|
+
if (!this.options.level) return LogLevel.debug;
|
|
25
|
+
return LogLevel[this.options.level];
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
const FILE_PROVIDER_OPTION_DEFAULT = {
|
|
29
|
+
...PROVIDER_OPTION_DEFAULT,
|
|
30
|
+
policy: { type: "size" }
|
|
31
|
+
};
|
|
32
|
+
var FileProvider = class extends LoggerProvider {
|
|
33
|
+
filePath;
|
|
34
|
+
counter;
|
|
35
|
+
file;
|
|
36
|
+
policy;
|
|
37
|
+
constructor(file, options = FILE_PROVIDER_OPTION_DEFAULT) {
|
|
38
|
+
super({
|
|
39
|
+
formatter: options.formatter ?? PROVIDER_OPTION_DEFAULT.formatter,
|
|
40
|
+
level: options.level ?? PROVIDER_OPTION_DEFAULT.level
|
|
41
|
+
});
|
|
42
|
+
this.policy = options.policy ?? FILE_PROVIDER_OPTION_DEFAULT.policy;
|
|
43
|
+
this.filePath = file;
|
|
44
|
+
this.counter = 0;
|
|
45
|
+
this.file = this.createNewFileName();
|
|
46
|
+
}
|
|
47
|
+
execute(data) {
|
|
48
|
+
if (this.getLogLevel() > LogLevel[data.level]) return;
|
|
49
|
+
const [error, formattedMessage] = mightThrowSync(() => {
|
|
50
|
+
if (this.isJSONFile()) return JSON.stringify({
|
|
51
|
+
timestamp: isoDateTimeFormat(),
|
|
52
|
+
level: data.level,
|
|
53
|
+
message: data.msg
|
|
54
|
+
});
|
|
55
|
+
const { formatter } = this.options;
|
|
56
|
+
return formatter?.format(data) ?? "";
|
|
57
|
+
});
|
|
58
|
+
const [fsError] = mightThrowSync(() => {
|
|
59
|
+
if (error && error instanceof Error) {
|
|
60
|
+
const { formatter } = this.options;
|
|
61
|
+
const errorMsg = formatter?.formatError(data, error);
|
|
62
|
+
appendFileSync(this.file, `${errorMsg}\n`);
|
|
63
|
+
}
|
|
64
|
+
if (this.canRollFile()) {
|
|
65
|
+
this.counter += 1;
|
|
66
|
+
this.file = this.createNewFileName();
|
|
67
|
+
}
|
|
68
|
+
if (error || !formattedMessage) return;
|
|
69
|
+
appendFileSync(this.file, `${formattedMessage}\n`);
|
|
70
|
+
});
|
|
71
|
+
if (fsError && fsError instanceof Error) throw fsError;
|
|
72
|
+
}
|
|
73
|
+
canRollFile() {
|
|
74
|
+
if (!this.policy) return false;
|
|
75
|
+
switch (this.policy.type) {
|
|
76
|
+
case "size":
|
|
77
|
+
if (this.policy.maxSize) return this.getFileSize() >= this.policy.maxSize;
|
|
78
|
+
return this.getFileSize() >= DEFAULT_MAX_SIZE;
|
|
79
|
+
case "time": {
|
|
80
|
+
if (!existsSync(this.file)) return false;
|
|
81
|
+
const { duration, instant } = this.policy;
|
|
82
|
+
const { birthtime } = statSync(this.file);
|
|
83
|
+
const creationTimeMs = birthtime.getTime();
|
|
84
|
+
const currenTimeMs = Date.now();
|
|
85
|
+
const diffMs = currenTimeMs - creationTimeMs;
|
|
86
|
+
switch (instant) {
|
|
87
|
+
case "hour": return Math.floor(diffMs / DurationUnit.hour) >= duration;
|
|
88
|
+
case "day": return Math.floor(diffMs / DurationUnit.day) >= duration;
|
|
89
|
+
case "week": return Math.floor(diffMs / DurationUnit.week) >= duration;
|
|
90
|
+
case "month": {
|
|
91
|
+
const currentDate = new Date(currenTimeMs);
|
|
92
|
+
const monthsDiff = (currentDate.getFullYear() - birthtime.getFullYear()) * 12 + (currentDate.getMonth() - birthtime.getMonth());
|
|
93
|
+
return (currentDate.getDate() >= birthtime.getDate() ? monthsDiff : monthsDiff - 1) >= duration;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
getFileSize() {
|
|
100
|
+
if (!existsSync(this.file)) return 0;
|
|
101
|
+
const [statError, size] = mightThrowSync(() => {
|
|
102
|
+
const { size } = statSync(this.file);
|
|
103
|
+
return size;
|
|
104
|
+
});
|
|
105
|
+
if (statError && statError instanceof Error) return 0;
|
|
106
|
+
if (!size) return 0;
|
|
107
|
+
return size;
|
|
108
|
+
}
|
|
109
|
+
isJSONFile() {
|
|
110
|
+
return extname(this.filePath) === ".json";
|
|
111
|
+
}
|
|
112
|
+
createNewFileName() {
|
|
113
|
+
const fileName = basename(this.filePath);
|
|
114
|
+
const directory = dirname(this.filePath);
|
|
115
|
+
if (!existsSync(directory)) mkdirSync(directory, { recursive: true });
|
|
116
|
+
const fileInfo = fileName.split(".");
|
|
117
|
+
const extension = fileInfo.pop();
|
|
118
|
+
return join(directory, [
|
|
119
|
+
...fileInfo,
|
|
120
|
+
this.counter,
|
|
121
|
+
extension
|
|
122
|
+
].join("."));
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
var ConsoleProvider = class extends LoggerProvider {
|
|
126
|
+
execute(data) {
|
|
127
|
+
const level = this.getLogLevel();
|
|
128
|
+
const userLevel = LogLevel[data.level];
|
|
129
|
+
if (level > userLevel) return;
|
|
130
|
+
const [error, formattedMessage] = mightThrowSync(() => {
|
|
131
|
+
const { formatter } = this.options;
|
|
132
|
+
return formatter?.format(data) ?? "";
|
|
133
|
+
});
|
|
134
|
+
if (error && error instanceof Error) {
|
|
135
|
+
const { formatter } = this.options;
|
|
136
|
+
console.error(formatter?.formatError(data, error));
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
if (!formattedMessage) return;
|
|
140
|
+
switch (userLevel) {
|
|
141
|
+
case LogLevel.debug:
|
|
142
|
+
console.debug(formattedMessage);
|
|
143
|
+
break;
|
|
144
|
+
case LogLevel.info:
|
|
145
|
+
console.info(formattedMessage);
|
|
146
|
+
break;
|
|
147
|
+
case LogLevel.warning:
|
|
148
|
+
console.warn(formattedMessage);
|
|
149
|
+
break;
|
|
150
|
+
case LogLevel.error:
|
|
151
|
+
console.error(formattedMessage);
|
|
152
|
+
break;
|
|
153
|
+
case LogLevel.critical:
|
|
154
|
+
console.error(formattedMessage);
|
|
155
|
+
break;
|
|
156
|
+
default:
|
|
157
|
+
console.debug(formattedMessage);
|
|
158
|
+
break;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
//#endregion
|
|
163
|
+
export { ConsoleProvider, FileProvider, LoggerProvider };
|
|
164
|
+
|
|
165
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../../src/lib/logging/provider/index.ts"],"sourcesContent":["import { appendFileSync, existsSync, mkdirSync, statSync } from \"node:fs\";\nimport { basename, dirname, extname, join } from \"node:path\";\nimport { mightThrowSync } from \"../../errors/index.js\";\nimport { PROVIDER_OPTION_DEFAULT } from \"../core/index.js\";\n\nimport { type LogDataType, LogLevel } from \"../core/types.js\";\nimport { isoDateTimeFormat } from \"../formatter/index.js\";\nimport type {\n FileProviderOptions,\n ProviderOptions,\n SizeBasedPolicyType,\n TimeBasedPolicyType,\n} from \"./types.js\";\n\nconst DEFAULT_MAX_SIZE = 4 * 1024; // 4KB\n\nconst DurationUnit = {\n hour: 1000 * 60 * 60,\n day: 1000 * 60 * 60 * 24,\n week: 1000 * 60 * 60 * 24 * 7,\n month: 1000 * 60 * 60 * 24 * 7 * 4.345, // On average 1 month has 4,345 weeks\n} as const;\n\nexport abstract class LoggerProvider {\n protected options: ProviderOptions;\n\n public constructor(options: ProviderOptions = PROVIDER_OPTION_DEFAULT) {\n this.options = { ...PROVIDER_OPTION_DEFAULT, ...options };\n }\n\n public abstract execute(data: LogDataType): void;\n\n public getLogLevel(): number {\n if (!this.options.level) {\n return LogLevel.debug;\n }\n\n return LogLevel[this.options.level];\n }\n}\n\nconst FILE_PROVIDER_OPTION_DEFAULT: FileProviderOptions = {\n ...PROVIDER_OPTION_DEFAULT,\n policy: { type: \"size\" },\n} as const;\n\nexport class FileProvider extends LoggerProvider {\n private readonly filePath: string;\n\n private counter: number;\n private file: string;\n private policy?: SizeBasedPolicyType | TimeBasedPolicyType;\n\n public constructor(\n file: string,\n options: FileProviderOptions = FILE_PROVIDER_OPTION_DEFAULT,\n ) {\n super({\n formatter: options.formatter ?? PROVIDER_OPTION_DEFAULT.formatter,\n level: options.level ?? PROVIDER_OPTION_DEFAULT.level,\n });\n this.policy = options.policy ?? FILE_PROVIDER_OPTION_DEFAULT.policy;\n\n this.filePath = file;\n this.counter = 0;\n this.file = this.createNewFileName();\n }\n\n public execute(data: LogDataType): void {\n const level = this.getLogLevel();\n const userLevel = LogLevel[data.level];\n if (level > userLevel) return;\n\n const [error, formattedMessage] = mightThrowSync(() => {\n if (this.isJSONFile()) {\n return JSON.stringify({\n timestamp: isoDateTimeFormat(),\n level: data.level,\n message: data.msg,\n });\n }\n\n const { formatter } = this.options;\n return formatter?.format(data) ?? \"\";\n });\n\n const [fsError] = mightThrowSync(() => {\n if (error && error instanceof Error) {\n const { formatter } = this.options;\n const errorMsg = formatter?.formatError(data, error);\n appendFileSync(this.file, `${errorMsg}\\n`);\n }\n\n if (this.canRollFile()) {\n this.counter += 1;\n this.file = this.createNewFileName();\n }\n\n if (error || !formattedMessage) return;\n appendFileSync(this.file, `${formattedMessage}\\n`);\n });\n\n if (fsError && fsError instanceof Error) {\n throw fsError;\n }\n }\n\n private canRollFile() {\n if (!this.policy) return false;\n\n switch (this.policy.type) {\n case \"size\": {\n if (this.policy.maxSize) {\n return this.getFileSize() >= this.policy.maxSize;\n }\n\n return this.getFileSize() >= DEFAULT_MAX_SIZE;\n }\n case \"time\": {\n if (!existsSync(this.file)) return false;\n\n const { duration, instant } = this.policy;\n const { birthtime } = statSync(this.file);\n const creationTimeMs = birthtime.getTime();\n const currenTimeMs = Date.now();\n const diffMs = currenTimeMs - creationTimeMs;\n\n switch (instant) {\n case \"hour\":\n return Math.floor(diffMs / DurationUnit.hour) >= duration;\n case \"day\":\n return Math.floor(diffMs / DurationUnit.day) >= duration;\n case \"week\":\n return Math.floor(diffMs / DurationUnit.week) >= duration;\n case \"month\": {\n const currentDate = new Date(currenTimeMs);\n const monthsDiff =\n (currentDate.getFullYear() - birthtime.getFullYear()) * 12 +\n (currentDate.getMonth() - birthtime.getMonth());\n\n const adjustedDiff =\n currentDate.getDate() >= birthtime.getDate()\n ? monthsDiff\n : monthsDiff - 1;\n\n return adjustedDiff >= duration;\n }\n }\n }\n }\n }\n\n private getFileSize() {\n if (!existsSync(this.file)) {\n return 0;\n }\n\n const [statError, size] = mightThrowSync(() => {\n const { size } = statSync(this.file);\n return size;\n });\n\n if (statError && statError instanceof Error) {\n return 0;\n }\n\n if (!size) return 0;\n\n return size;\n }\n\n private isJSONFile() {\n return extname(this.filePath) === \".json\";\n }\n\n private createNewFileName() {\n const fileName = basename(this.filePath);\n const directory = dirname(this.filePath);\n\n if (!existsSync(directory)) {\n mkdirSync(directory, { recursive: true });\n }\n\n const fileInfo = fileName.split(\".\");\n const extension = fileInfo.pop();\n const newFileName = [...fileInfo, this.counter, extension].join(\".\");\n\n return join(directory, newFileName);\n }\n}\n\nexport class ConsoleProvider extends LoggerProvider {\n public execute(data: LogDataType): void {\n const level = this.getLogLevel();\n const userLevel = LogLevel[data.level];\n if (level > userLevel) return;\n\n const [error, formattedMessage] = mightThrowSync(() => {\n const { formatter } = this.options;\n return formatter?.format(data) ?? \"\";\n });\n\n // biome-ignore-start lint/suspicious/noConsole: function used for the correct\n // functionality of the logger\n if (error && error instanceof Error) {\n const { formatter } = this.options;\n console.error(formatter?.formatError(data, error));\n\n return;\n }\n\n if (!formattedMessage) return;\n\n switch (userLevel) {\n case LogLevel.debug:\n console.debug(formattedMessage);\n break;\n case LogLevel.info:\n console.info(formattedMessage);\n break;\n case LogLevel.warning:\n console.warn(formattedMessage);\n break;\n case LogLevel.error:\n console.error(formattedMessage);\n break;\n case LogLevel.critical:\n console.error(formattedMessage);\n break;\n default:\n console.debug(formattedMessage);\n break;\n }\n // biome-ignore-end lint/suspicious/noConsole: function used for the correct\n // functionality of the logger\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { LogLevelType } from "../core/types.cjs";
|
|
2
|
+
import { Formatter } from "../formatter/index.cjs";
|
|
3
|
+
|
|
4
|
+
//#region src/lib/logging/provider/types.d.ts
|
|
5
|
+
type ProviderOptions = {
|
|
6
|
+
level?: LogLevelType;
|
|
7
|
+
formatter?: Formatter;
|
|
8
|
+
};
|
|
9
|
+
interface SizeBasedPolicyType {
|
|
10
|
+
type: "size";
|
|
11
|
+
maxSize?: number;
|
|
12
|
+
}
|
|
13
|
+
interface TimeBasedPolicyType {
|
|
14
|
+
type: "time";
|
|
15
|
+
instant: "hour" | "day" | "week" | "month";
|
|
16
|
+
duration: number;
|
|
17
|
+
}
|
|
18
|
+
type FileProviderOptions = ProviderOptions & {
|
|
19
|
+
policy?: SizeBasedPolicyType | TimeBasedPolicyType;
|
|
20
|
+
};
|
|
21
|
+
//#endregion
|
|
22
|
+
export { FileProviderOptions, ProviderOptions, SizeBasedPolicyType, TimeBasedPolicyType };
|
|
23
|
+
//# sourceMappingURL=types.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.cts","names":[],"sources":["../../../src/lib/logging/provider/types.ts"],"mappings":";;;;KAGY,eAAA;EACV,KAAA,GAAQ,YAAA;EACR,SAAA,GAAY,SAAA;AAAA;AAAA,UAGG,mBAAA;EACf,IAAA;EACA,OAAA;AAAA;AAAA,UAGe,mBAAA;EACf,IAAA;EACA,OAAA;EACA,QAAA;AAAA;AAAA,KAGU,mBAAA,GAAsB,eAAA;EAChC,MAAA,GAAS,mBAAA,GAAsB,mBAAA;AAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { LogLevelType } from "../core/types.mjs";
|
|
2
|
+
import { Formatter } from "../formatter/index.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/lib/logging/provider/types.d.ts
|
|
5
|
+
type ProviderOptions = {
|
|
6
|
+
level?: LogLevelType;
|
|
7
|
+
formatter?: Formatter;
|
|
8
|
+
};
|
|
9
|
+
interface SizeBasedPolicyType {
|
|
10
|
+
type: "size";
|
|
11
|
+
maxSize?: number;
|
|
12
|
+
}
|
|
13
|
+
interface TimeBasedPolicyType {
|
|
14
|
+
type: "time";
|
|
15
|
+
instant: "hour" | "day" | "week" | "month";
|
|
16
|
+
duration: number;
|
|
17
|
+
}
|
|
18
|
+
type FileProviderOptions = ProviderOptions & {
|
|
19
|
+
policy?: SizeBasedPolicyType | TimeBasedPolicyType;
|
|
20
|
+
};
|
|
21
|
+
//#endregion
|
|
22
|
+
export { FileProviderOptions, ProviderOptions, SizeBasedPolicyType, TimeBasedPolicyType };
|
|
23
|
+
//# sourceMappingURL=types.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.mts","names":[],"sources":["../../../src/lib/logging/provider/types.ts"],"mappings":";;;;KAGY,eAAA;EACV,KAAA,GAAQ,YAAA;EACR,SAAA,GAAY,SAAA;AAAA;AAAA,UAGG,mBAAA;EACf,IAAA;EACA,OAAA;AAAA;AAAA,UAGe,mBAAA;EACf,IAAA;EACA,OAAA;EACA,QAAA;AAAA;AAAA,KAGU,mBAAA,GAAsB,eAAA;EAChC,MAAA,GAAS,mBAAA,GAAsB,mBAAA;AAAA"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
//#region src/lib/orm/column.ts
|
|
2
|
+
var ColumnDef = class ColumnDef {
|
|
3
|
+
constructor(kind, meta) {
|
|
4
|
+
this.kind = kind;
|
|
5
|
+
this.meta = meta;
|
|
6
|
+
}
|
|
7
|
+
primaryKey() {
|
|
8
|
+
return new ColumnDef(this.kind, {
|
|
9
|
+
...this.meta,
|
|
10
|
+
isPrimaryKey: true,
|
|
11
|
+
isNotNull: true
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
asArray() {
|
|
15
|
+
return new ColumnDef(this.kind, {
|
|
16
|
+
...this.meta,
|
|
17
|
+
isSqlArray: true
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
notNull() {
|
|
21
|
+
return new ColumnDef(this.kind, {
|
|
22
|
+
...this.meta,
|
|
23
|
+
isNotNull: true
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
unique() {
|
|
27
|
+
return new ColumnDef(this.kind, {
|
|
28
|
+
...this.meta,
|
|
29
|
+
isUnique: true
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
references(fn) {
|
|
33
|
+
return new ColumnDef(this.kind, {
|
|
34
|
+
...this.meta,
|
|
35
|
+
references: fn
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
onDelete(action) {
|
|
39
|
+
return new ColumnDef(this.kind, {
|
|
40
|
+
...this.meta,
|
|
41
|
+
onDeleteAction: action
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
default(value) {
|
|
45
|
+
return new ColumnDef(this.kind, {
|
|
46
|
+
...this.meta,
|
|
47
|
+
hasDefault: true,
|
|
48
|
+
defaultKind: "value",
|
|
49
|
+
defaultValue: value,
|
|
50
|
+
defaultFn: null
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
defaultFn(fn) {
|
|
54
|
+
return new ColumnDef(this.kind, {
|
|
55
|
+
...this.meta,
|
|
56
|
+
hasDefault: true,
|
|
57
|
+
defaultKind: "fn",
|
|
58
|
+
defaultValue: void 0,
|
|
59
|
+
defaultFn: fn
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
const defaultMeta = {
|
|
64
|
+
isSqlArray: false,
|
|
65
|
+
isPrimaryKey: false,
|
|
66
|
+
isNotNull: false,
|
|
67
|
+
isUnique: false,
|
|
68
|
+
isEnum: false,
|
|
69
|
+
enumValues: null,
|
|
70
|
+
enumName: null,
|
|
71
|
+
hasDefault: false,
|
|
72
|
+
defaultKind: null,
|
|
73
|
+
defaultValue: void 0,
|
|
74
|
+
defaultFn: null,
|
|
75
|
+
references: null,
|
|
76
|
+
onDeleteAction: null
|
|
77
|
+
};
|
|
78
|
+
function uuid(sqlName) {
|
|
79
|
+
return new ColumnDef("uuid", {
|
|
80
|
+
...defaultMeta,
|
|
81
|
+
sqlName
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
function string(sqlName) {
|
|
85
|
+
return new ColumnDef("string", {
|
|
86
|
+
...defaultMeta,
|
|
87
|
+
sqlName
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
function enumeration(sqlName, enumName, values) {
|
|
91
|
+
return new ColumnDef("enum", {
|
|
92
|
+
...defaultMeta,
|
|
93
|
+
isEnum: true,
|
|
94
|
+
enumValues: values,
|
|
95
|
+
enumName,
|
|
96
|
+
sqlName
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
function number(sqlName) {
|
|
100
|
+
return new ColumnDef("number", {
|
|
101
|
+
...defaultMeta,
|
|
102
|
+
sqlName
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
function boolean(sqlName) {
|
|
106
|
+
return new ColumnDef("boolean", {
|
|
107
|
+
...defaultMeta,
|
|
108
|
+
sqlName
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
function date(sqlName) {
|
|
112
|
+
return new ColumnDef("date", {
|
|
113
|
+
...defaultMeta,
|
|
114
|
+
sqlName
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
function json(sqlName) {
|
|
118
|
+
return new ColumnDef("json", {
|
|
119
|
+
...defaultMeta,
|
|
120
|
+
sqlName
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
function jsonb(sqlName) {
|
|
124
|
+
return new ColumnDef("jsonb", {
|
|
125
|
+
...defaultMeta,
|
|
126
|
+
sqlName
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
//#endregion
|
|
130
|
+
exports.boolean = boolean;
|
|
131
|
+
exports.date = date;
|
|
132
|
+
exports.enumeration = enumeration;
|
|
133
|
+
exports.json = json;
|
|
134
|
+
exports.jsonb = jsonb;
|
|
135
|
+
exports.number = number;
|
|
136
|
+
exports.string = string;
|
|
137
|
+
exports.uuid = uuid;
|