@miketako3/cloki 0.1.20 → 0.1.22
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 +100 -4
- package/dist/logger.d.ts +58 -14
- package/dist/logger.js +138 -20
- package/dist/logger.js.map +1 -1
- package/dist/logger.test.js +225 -55
- package/dist/logger.test.js.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -75,23 +75,119 @@ You can pass a string directly as a message. It will be converted to `{"message"
|
|
|
75
75
|
await logger.info("Hello World!");
|
|
76
76
|
```
|
|
77
77
|
|
|
78
|
-
#### 3. Cloudflare Workers `ctx.waitUntil`
|
|
78
|
+
#### 3. Cloudflare Workers `ctx.waitUntil` and `cf` properties
|
|
79
79
|
|
|
80
|
-
To prevent the log sending from being cancelled when the worker returns a response, you can pass the `ExecutionContext`.
|
|
80
|
+
To prevent the log sending from being cancelled when the worker returns a response, you can pass the `ExecutionContext` to `getLokiLogger` or to each log method. You can also automatically add labels from `request.cf`.
|
|
81
81
|
|
|
82
82
|
```typescript
|
|
83
83
|
export default {
|
|
84
84
|
async fetch(request, env, ctx) {
|
|
85
|
-
const logger = getLokiLogger({
|
|
85
|
+
const logger = getLokiLogger({
|
|
86
|
+
cf: request.cf, // Automatically add cf_colo, cf_country, etc.
|
|
87
|
+
ctx: ctx // Use ctx.waitUntil internally for all logs
|
|
88
|
+
});
|
|
86
89
|
|
|
87
90
|
// This will use ctx.waitUntil internally and won't block the response
|
|
88
|
-
logger.info("Request received", { path: new URL(request.url).pathname }
|
|
91
|
+
logger.info("Request received", { path: new URL(request.url).pathname });
|
|
89
92
|
|
|
90
93
|
return new Response("OK");
|
|
91
94
|
}
|
|
92
95
|
}
|
|
93
96
|
```
|
|
94
97
|
|
|
98
|
+
#### 4. Zero Configuration (Environment Variables)
|
|
99
|
+
|
|
100
|
+
If you set the following environment variables, you can initialize the logger without any arguments:
|
|
101
|
+
|
|
102
|
+
- `LOKI_HOST` (e.g., `logs-prod-us-central1.grafana.net`)
|
|
103
|
+
- `LOKI_USER`
|
|
104
|
+
- `LOKI_TOKEN`
|
|
105
|
+
|
|
106
|
+
Standard usage for Cloudflare Workers:
|
|
107
|
+
|
|
108
|
+
```typescript
|
|
109
|
+
export default {
|
|
110
|
+
async fetch(request, env, ctx) {
|
|
111
|
+
const logger = getLokiLogger({ cf: request.cf, ctx });
|
|
112
|
+
// ...
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
#### 5. Retries and Error Handling
|
|
118
|
+
|
|
119
|
+
You can configure retries and a callback for when sending fails.
|
|
120
|
+
|
|
121
|
+
```typescript
|
|
122
|
+
const logger = getLokiLogger({
|
|
123
|
+
retries: 3,
|
|
124
|
+
onSendError: (err, msg) => {
|
|
125
|
+
console.error("Failed to send to Loki after retries", err);
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
#### 6. Custom Formatter and Silent Mode
|
|
131
|
+
|
|
132
|
+
```typescript
|
|
133
|
+
const logger = getLokiLogger({
|
|
134
|
+
silent: process.env.NODE_ENV === 'development',
|
|
135
|
+
format: (level, msg, labels) => {
|
|
136
|
+
// Return custom LokiMessage structure
|
|
137
|
+
return {
|
|
138
|
+
streams: [{
|
|
139
|
+
stream: { ...labels, level, custom: 'label' },
|
|
140
|
+
values: [[Date.now().toString() + "000000", JSON.stringify(msg)]]
|
|
141
|
+
}]
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
#### 7. Request Auto Extraction and Trace IDs
|
|
148
|
+
|
|
149
|
+
You can automatically extract labels like `http_method`, `http_url`, `trace_id` (from `CF-Ray`), and `request_id` (from `X-Request-ID`) by passing the `Request` object.
|
|
150
|
+
|
|
151
|
+
```typescript
|
|
152
|
+
const logger = getLokiLogger({
|
|
153
|
+
request: request // Default request for all logs
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
// Or pass it in a specific log
|
|
157
|
+
await logger.info({ message: "API called", request: request });
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
#### 8. Function Wrapper (AOP Style)
|
|
161
|
+
|
|
162
|
+
You can measure execution time and log it automatically using the `wrap` method.
|
|
163
|
+
|
|
164
|
+
```typescript
|
|
165
|
+
const wrappedFetch = logger.wrap("external-api", async (url) => {
|
|
166
|
+
return await fetch(url);
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
const response = await wrappedFetch("https://example.com");
|
|
170
|
+
// This will automatically log: Function external-api executed with duration_ms
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
#### 9. Development Environment (Pretty Print)
|
|
174
|
+
|
|
175
|
+
When `NODE_ENV` or `WORKER_ENV` is set to `development` (or `dev`), or `silent: true` is set, `cloki` will output colorized and formatted logs to the console for better readability.
|
|
176
|
+
|
|
177
|
+
#### 10. TypeScript Type Safety for Labels
|
|
178
|
+
|
|
179
|
+
You can define the allowed label keys using Generics.
|
|
180
|
+
|
|
181
|
+
```typescript
|
|
182
|
+
type MyLabels = 'env' | 'service' | 'version';
|
|
183
|
+
const logger = getLokiLogger<MyLabels>({
|
|
184
|
+
defaultLabels: { env: 'prod' } // Type checked
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
await logger.info("Hello", { service: 'api' }); // Type checked
|
|
188
|
+
// await logger.info("Hello", { unknown: 'label' }); // TypeScript Error
|
|
189
|
+
```
|
|
190
|
+
|
|
95
191
|
## Contributing
|
|
96
192
|
|
|
97
193
|
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
|
package/dist/logger.d.ts
CHANGED
|
@@ -1,18 +1,46 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Loki config
|
|
3
3
|
*/
|
|
4
|
-
export type LokiConfig = {
|
|
5
|
-
lokiHost
|
|
6
|
-
lokiToken
|
|
7
|
-
lokiUser
|
|
4
|
+
export type LokiConfig<T extends string = string> = {
|
|
5
|
+
lokiHost?: string;
|
|
6
|
+
lokiToken?: string;
|
|
7
|
+
lokiUser?: string;
|
|
8
8
|
/**
|
|
9
9
|
* Default labels added to all logs
|
|
10
10
|
*/
|
|
11
|
-
defaultLabels?: LokiLabels
|
|
11
|
+
defaultLabels?: LokiLabels<T>;
|
|
12
12
|
/**
|
|
13
13
|
* Minimum log level to send to Loki
|
|
14
14
|
*/
|
|
15
15
|
minLevel?: LogLevel;
|
|
16
|
+
/**
|
|
17
|
+
* Number of retries for fetch (default: 0)
|
|
18
|
+
*/
|
|
19
|
+
retries?: number;
|
|
20
|
+
/**
|
|
21
|
+
* Callback when fetch fails
|
|
22
|
+
*/
|
|
23
|
+
onSendError?: (error: unknown, message: LokiMessage<T>) => void;
|
|
24
|
+
/**
|
|
25
|
+
* Custom formatter for Loki message
|
|
26
|
+
*/
|
|
27
|
+
format?: (logLevel: LogLevel, message: object, labels: LokiLabels<T>) => LokiMessage<T>;
|
|
28
|
+
/**
|
|
29
|
+
* If true, don't send to Loki (just console.log)
|
|
30
|
+
*/
|
|
31
|
+
silent?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Automatically add labels from request.cf
|
|
34
|
+
*/
|
|
35
|
+
cf?: CfProperties;
|
|
36
|
+
/**
|
|
37
|
+
* Default ExecutionContext for ctx.waitUntil
|
|
38
|
+
*/
|
|
39
|
+
ctx?: ExecutionContext;
|
|
40
|
+
/**
|
|
41
|
+
* Default Request object for automatic label extraction
|
|
42
|
+
*/
|
|
43
|
+
request?: Request;
|
|
16
44
|
};
|
|
17
45
|
/**
|
|
18
46
|
* Log levels
|
|
@@ -21,20 +49,32 @@ export type LogLevel = "debug" | "info" | "warn" | "error";
|
|
|
21
49
|
/**
|
|
22
50
|
* Loki labels
|
|
23
51
|
*/
|
|
24
|
-
export type LokiLabels = {
|
|
52
|
+
export type LokiLabels<T extends string = string> = {
|
|
53
|
+
[key in T]?: string;
|
|
54
|
+
} & {
|
|
25
55
|
[key: string]: string;
|
|
26
56
|
};
|
|
27
57
|
/**
|
|
28
58
|
* Loki message
|
|
29
59
|
*/
|
|
30
|
-
export type LokiMessage = {
|
|
60
|
+
export type LokiMessage<T extends string = string> = {
|
|
31
61
|
streams: [
|
|
32
62
|
{
|
|
33
|
-
stream: LokiLabels
|
|
63
|
+
stream: LokiLabels<T>;
|
|
34
64
|
values: [string[]];
|
|
35
65
|
}
|
|
36
66
|
];
|
|
37
67
|
};
|
|
68
|
+
/**
|
|
69
|
+
* Cloudflare Workers IncomingRequestCfProperties
|
|
70
|
+
*/
|
|
71
|
+
export type CfProperties = {
|
|
72
|
+
colo?: string;
|
|
73
|
+
country?: string;
|
|
74
|
+
city?: string;
|
|
75
|
+
asn?: number;
|
|
76
|
+
[key: string]: unknown;
|
|
77
|
+
};
|
|
38
78
|
/**
|
|
39
79
|
* Cloudflare Workers ExecutionContext
|
|
40
80
|
*/
|
|
@@ -44,16 +84,20 @@ export type ExecutionContext = {
|
|
|
44
84
|
/**
|
|
45
85
|
* Log message type
|
|
46
86
|
*/
|
|
47
|
-
export type LogMessage = string | object
|
|
87
|
+
export type LogMessage = string | object | {
|
|
88
|
+
request?: Request;
|
|
89
|
+
[key: string]: unknown;
|
|
90
|
+
};
|
|
48
91
|
/**
|
|
49
92
|
* Create a Loki logger
|
|
50
93
|
* logger has some async logging methods like info, error, warn, etc.
|
|
51
94
|
*
|
|
52
95
|
* @param config
|
|
53
96
|
*/
|
|
54
|
-
export declare const getLokiLogger: (config
|
|
55
|
-
info: (message: LogMessage, labels?: LokiLabels, ctx?: ExecutionContext) => Promise<void>;
|
|
56
|
-
warn: (message: LogMessage, labels?: LokiLabels, ctx?: ExecutionContext) => Promise<void>;
|
|
57
|
-
error: (message: LogMessage, labels?: LokiLabels, ctx?: ExecutionContext) => Promise<void>;
|
|
58
|
-
debug: (message: LogMessage, labels?: LokiLabels, ctx?: ExecutionContext) => Promise<void>;
|
|
97
|
+
export declare const getLokiLogger: <T extends string = string>(config?: LokiConfig<T>) => {
|
|
98
|
+
info: (message: LogMessage, labels?: LokiLabels<T> | undefined, ctx?: ExecutionContext) => Promise<void>;
|
|
99
|
+
warn: (message: LogMessage, labels?: LokiLabels<T> | undefined, ctx?: ExecutionContext) => Promise<void>;
|
|
100
|
+
error: (message: LogMessage, labels?: LokiLabels<T> | undefined, ctx?: ExecutionContext) => Promise<void>;
|
|
101
|
+
debug: (message: LogMessage, labels?: LokiLabels<T> | undefined, ctx?: ExecutionContext) => Promise<void>;
|
|
102
|
+
wrap: <R, Args extends unknown[]>(name: string, fn: (...args: Args) => R | Promise<R>) => (...args: Args) => Promise<R>;
|
|
59
103
|
};
|
package/dist/logger.js
CHANGED
|
@@ -22,15 +22,62 @@ const LOG_LEVEL_PRIORITY = {
|
|
|
22
22
|
*
|
|
23
23
|
* @param config
|
|
24
24
|
*/
|
|
25
|
-
const getLokiLogger = (config) => {
|
|
25
|
+
const getLokiLogger = (config = {}) => {
|
|
26
|
+
var _a;
|
|
27
|
+
const mergedConfig = Object.assign(Object.assign({}, config), { lokiHost: config.lokiHost ||
|
|
28
|
+
getEnv("LOKI_HOST") ||
|
|
29
|
+
((_a = getEnv("LOKI_URL")) === null || _a === void 0 ? void 0 : _a.replace(/^https?:\/\//, "")), lokiToken: config.lokiToken || getEnv("LOKI_TOKEN"), lokiUser: config.lokiUser || getEnv("LOKI_USER") });
|
|
26
30
|
return {
|
|
27
|
-
info: lokiInfo(
|
|
28
|
-
warn: lokiWarn(
|
|
29
|
-
error: lokiError(
|
|
30
|
-
debug: lokiDebug(
|
|
31
|
+
info: lokiInfo(mergedConfig),
|
|
32
|
+
warn: lokiWarn(mergedConfig),
|
|
33
|
+
error: lokiError(mergedConfig),
|
|
34
|
+
debug: lokiDebug(mergedConfig),
|
|
35
|
+
wrap: (name, fn) => {
|
|
36
|
+
return (...args) => __awaiter(void 0, void 0, void 0, function* () {
|
|
37
|
+
const start = Date.now();
|
|
38
|
+
try {
|
|
39
|
+
const result = yield fn(...args);
|
|
40
|
+
const duration = Date.now() - start;
|
|
41
|
+
yield log(mergedConfig, "info", {
|
|
42
|
+
message: `Function ${name} executed`,
|
|
43
|
+
duration_ms: duration,
|
|
44
|
+
function_name: name,
|
|
45
|
+
}, {});
|
|
46
|
+
return result;
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
const duration = Date.now() - start;
|
|
50
|
+
yield log(mergedConfig, "error", {
|
|
51
|
+
message: `Function ${name} failed`,
|
|
52
|
+
duration_ms: duration,
|
|
53
|
+
function_name: name,
|
|
54
|
+
error: error instanceof Error ? error.message : String(error),
|
|
55
|
+
}, {});
|
|
56
|
+
throw error;
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
},
|
|
31
60
|
};
|
|
32
61
|
};
|
|
33
62
|
exports.getLokiLogger = getLokiLogger;
|
|
63
|
+
/**
|
|
64
|
+
* Get environment variable from various sources
|
|
65
|
+
*/
|
|
66
|
+
function getEnv(name) {
|
|
67
|
+
try {
|
|
68
|
+
// Node.js
|
|
69
|
+
if (typeof process !== "undefined" && process.env) {
|
|
70
|
+
return process.env[name];
|
|
71
|
+
}
|
|
72
|
+
// Global
|
|
73
|
+
if (typeof globalThis !== "undefined") {
|
|
74
|
+
const global = globalThis;
|
|
75
|
+
return global[name];
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
catch (_e) { }
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
34
81
|
/**
|
|
35
82
|
* Log info to Loki curried
|
|
36
83
|
*
|
|
@@ -79,11 +126,30 @@ function log(config, logLevel, message, labels, ctx) {
|
|
|
79
126
|
return;
|
|
80
127
|
}
|
|
81
128
|
const normalizedMessage = typeof message === "string" ? { message } : message;
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
129
|
+
const isDev = getEnv("NODE_ENV") === "development" || getEnv("WORKER_ENV") === "dev";
|
|
130
|
+
if (config.silent || isDev) {
|
|
131
|
+
const colorMap = {
|
|
132
|
+
debug: "\x1b[34m", // blue
|
|
133
|
+
info: "\x1b[32m", // green
|
|
134
|
+
warn: "\x1b[33m", // yellow
|
|
135
|
+
error: "\x1b[31m", // red
|
|
136
|
+
};
|
|
137
|
+
const reset = "\x1b[0m";
|
|
138
|
+
console.log(`${colorMap[logLevel]}[${logLevel.toUpperCase()}]${reset}`, JSON.stringify(normalizedMessage, null, isDev ? 2 : 0));
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
console.log(JSON.stringify(normalizedMessage));
|
|
142
|
+
}
|
|
143
|
+
if (config.silent) {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
const lokiMessage = config.format
|
|
147
|
+
? config.format(logLevel, normalizedMessage, labels)
|
|
148
|
+
: generateLokiMessage(config, logLevel, normalizedMessage, labels);
|
|
149
|
+
const promise = sendWithRetry(config, lokiMessage);
|
|
150
|
+
const effectiveCtx = ctx || config.ctx;
|
|
151
|
+
if (effectiveCtx) {
|
|
152
|
+
effectiveCtx.waitUntil(promise);
|
|
87
153
|
}
|
|
88
154
|
else {
|
|
89
155
|
yield promise;
|
|
@@ -99,15 +165,69 @@ function log(config, logLevel, message, labels, ctx) {
|
|
|
99
165
|
* @param labels
|
|
100
166
|
*/
|
|
101
167
|
function generateLokiMessage(config, logLevel, message, labels) {
|
|
168
|
+
const cfLabels = {};
|
|
169
|
+
if (config.cf) {
|
|
170
|
+
if (config.cf.colo)
|
|
171
|
+
cfLabels.cf_colo = config.cf.colo;
|
|
172
|
+
if (config.cf.country)
|
|
173
|
+
cfLabels.cf_country = config.cf.country;
|
|
174
|
+
if (config.cf.city)
|
|
175
|
+
cfLabels.cf_city = config.cf.city;
|
|
176
|
+
if (config.cf.asn)
|
|
177
|
+
cfLabels.cf_asn = config.cf.asn.toString();
|
|
178
|
+
}
|
|
179
|
+
const requestLabels = {};
|
|
180
|
+
const req = message.request || config.request;
|
|
181
|
+
if (req) {
|
|
182
|
+
requestLabels.http_method = req.method;
|
|
183
|
+
requestLabels.http_url = req.url;
|
|
184
|
+
const userAgent = req.headers.get("user-agent");
|
|
185
|
+
if (userAgent)
|
|
186
|
+
requestLabels.http_user_agent = userAgent;
|
|
187
|
+
const rayId = req.headers.get("cf-ray");
|
|
188
|
+
if (rayId)
|
|
189
|
+
requestLabels.trace_id = rayId;
|
|
190
|
+
const requestId = req.headers.get("x-request-id");
|
|
191
|
+
if (requestId)
|
|
192
|
+
requestLabels.request_id = requestId;
|
|
193
|
+
}
|
|
102
194
|
return {
|
|
103
195
|
streams: [
|
|
104
196
|
{
|
|
105
|
-
stream: Object.assign(Object.assign({ level: logLevel }, config.defaultLabels), labels),
|
|
197
|
+
stream: Object.assign(Object.assign(Object.assign(Object.assign({ level: logLevel }, config.defaultLabels), cfLabels), requestLabels), labels),
|
|
106
198
|
values: [[`${Date.now().toString()}000000`, JSON.stringify(message)]],
|
|
107
199
|
},
|
|
108
200
|
],
|
|
109
201
|
};
|
|
110
202
|
}
|
|
203
|
+
/**
|
|
204
|
+
* Send with retry
|
|
205
|
+
*/
|
|
206
|
+
function sendWithRetry(config, lokiMessage) {
|
|
207
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
208
|
+
const retries = config.retries || 0;
|
|
209
|
+
let lastError;
|
|
210
|
+
for (let i = 0; i <= retries; i++) {
|
|
211
|
+
try {
|
|
212
|
+
yield sendToLoki(config, lokiMessage);
|
|
213
|
+
return; // Success
|
|
214
|
+
}
|
|
215
|
+
catch (e) {
|
|
216
|
+
lastError = e;
|
|
217
|
+
if (i < retries) {
|
|
218
|
+
// Simple backoff: 100ms, 200ms, 400ms...
|
|
219
|
+
yield new Promise((resolve) => setTimeout(resolve, 100 * 2 ** i));
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
if (config.onSendError) {
|
|
224
|
+
config.onSendError(lastError, lokiMessage);
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
console.error("Loki logging failed after retries:", lastError);
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
}
|
|
111
231
|
/**
|
|
112
232
|
* Send a message to Loki
|
|
113
233
|
*
|
|
@@ -116,22 +236,20 @@ function generateLokiMessage(config, logLevel, message, labels) {
|
|
|
116
236
|
*/
|
|
117
237
|
function sendToLoki(config, lokiMessage) {
|
|
118
238
|
return __awaiter(this, void 0, void 0, function* () {
|
|
119
|
-
|
|
239
|
+
if (!config.lokiHost || !config.lokiUser || !config.lokiToken) {
|
|
240
|
+
throw new Error("Loki configuration missing (host, user, or token)");
|
|
241
|
+
}
|
|
242
|
+
const response = yield fetch(`https://${config.lokiHost}/loki/api/v1/push`, {
|
|
120
243
|
method: "POST",
|
|
121
244
|
headers: {
|
|
122
245
|
"Content-Type": "application/json",
|
|
123
246
|
Authorization: `Basic ${btoa(`${config.lokiUser}:${config.lokiToken}`)}`,
|
|
124
247
|
},
|
|
125
248
|
body: JSON.stringify(lokiMessage),
|
|
126
|
-
})
|
|
127
|
-
.then((r) => {
|
|
128
|
-
if (!r.ok) {
|
|
129
|
-
throw new Error(r.statusText);
|
|
130
|
-
}
|
|
131
|
-
})
|
|
132
|
-
.catch((e) => {
|
|
133
|
-
console.error("Error:", e);
|
|
134
249
|
});
|
|
250
|
+
if (!response.ok) {
|
|
251
|
+
throw new Error(`Loki push failed: ${response.status} ${response.statusText}`);
|
|
252
|
+
}
|
|
135
253
|
});
|
|
136
254
|
}
|
|
137
255
|
//# sourceMappingURL=logger.js.map
|
package/dist/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
|
package/dist/logger.test.js
CHANGED
|
@@ -14,7 +14,6 @@ const logger_1 = require("./logger"); // Adjust the import path as necessary
|
|
|
14
14
|
global.fetch = vitest_1.vi.fn(() => Promise.resolve({
|
|
15
15
|
ok: true,
|
|
16
16
|
}));
|
|
17
|
-
Date.now = vitest_1.vi.fn(() => 1482363367071);
|
|
18
17
|
(0, vitest_1.describe)("Loki Logger", () => {
|
|
19
18
|
const mockConfig = {
|
|
20
19
|
lokiHost: "testhost",
|
|
@@ -23,6 +22,7 @@ Date.now = vitest_1.vi.fn(() => 1482363367071);
|
|
|
23
22
|
};
|
|
24
23
|
(0, vitest_1.beforeEach)(() => {
|
|
25
24
|
vitest_1.vi.clearAllMocks();
|
|
25
|
+
vitest_1.vi.restoreAllMocks();
|
|
26
26
|
});
|
|
27
27
|
(0, vitest_1.it)("should create a logger with the correct methods", () => {
|
|
28
28
|
const logger = (0, logger_1.getLokiLogger)(mockConfig);
|
|
@@ -32,15 +32,13 @@ Date.now = vitest_1.vi.fn(() => 1482363367071);
|
|
|
32
32
|
(0, vitest_1.expect)(logger).toHaveProperty("debug");
|
|
33
33
|
});
|
|
34
34
|
(0, vitest_1.describe)("Logging Methods", () => {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
"
|
|
38
|
-
"error",
|
|
39
|
-
"debug",
|
|
40
|
-
])("should call log for %s method", (method) => __awaiter(void 0, void 0, void 0, function* () {
|
|
35
|
+
const methods = ["info", "warn", "error", "debug"];
|
|
36
|
+
vitest_1.it.each(methods)("should call log for %s method", (method) => __awaiter(void 0, void 0, void 0, function* () {
|
|
37
|
+
const consoleErrorSpy = vitest_1.vi.spyOn(console, "error").mockImplementation(() => { });
|
|
41
38
|
const logger = (0, logger_1.getLokiLogger)(mockConfig);
|
|
42
39
|
const mockMessage = { test: "message" };
|
|
43
40
|
const consoleSpy = vitest_1.vi.spyOn(console, "log").mockImplementation(() => { });
|
|
41
|
+
const dateNowSpy = vitest_1.vi.spyOn(Date, "now").mockReturnValue(1482363367071);
|
|
44
42
|
yield logger[method](mockMessage);
|
|
45
43
|
(0, vitest_1.expect)(consoleSpy).toHaveBeenCalledWith(JSON.stringify(mockMessage));
|
|
46
44
|
(0, vitest_1.expect)(fetch).toHaveBeenCalledTimes(1);
|
|
@@ -54,17 +52,16 @@ Date.now = vitest_1.vi.fn(() => 1482363367071);
|
|
|
54
52
|
});
|
|
55
53
|
// Reset the spy
|
|
56
54
|
consoleSpy.mockRestore();
|
|
55
|
+
dateNowSpy.mockRestore();
|
|
56
|
+
consoleErrorSpy.mockRestore();
|
|
57
57
|
}));
|
|
58
|
-
vitest_1.it.each(
|
|
59
|
-
"
|
|
60
|
-
"warn",
|
|
61
|
-
"error",
|
|
62
|
-
"debug",
|
|
63
|
-
])("should call log for %s method with some labels", (method) => __awaiter(void 0, void 0, void 0, function* () {
|
|
58
|
+
vitest_1.it.each(methods)("should call log for %s method with some labels", (method) => __awaiter(void 0, void 0, void 0, function* () {
|
|
59
|
+
const consoleErrorSpy = vitest_1.vi.spyOn(console, "error").mockImplementation(() => { });
|
|
64
60
|
const logger = (0, logger_1.getLokiLogger)(mockConfig);
|
|
65
61
|
const mockMessage = { test: "message" };
|
|
66
62
|
const mockLabels = { hoge: "huga" };
|
|
67
63
|
const consoleSpy = vitest_1.vi.spyOn(console, "log").mockImplementation(() => { });
|
|
64
|
+
const dateNowSpy = vitest_1.vi.spyOn(Date, "now").mockReturnValue(1482363367071);
|
|
68
65
|
yield logger[method](mockMessage, mockLabels);
|
|
69
66
|
(0, vitest_1.expect)(consoleSpy).toHaveBeenCalledWith(JSON.stringify(mockMessage));
|
|
70
67
|
(0, vitest_1.expect)(fetch).toHaveBeenCalledTimes(1);
|
|
@@ -76,62 +73,235 @@ Date.now = vitest_1.vi.fn(() => 1482363367071);
|
|
|
76
73
|
},
|
|
77
74
|
body: `{"streams":[{"stream":{"level":"${method}","hoge":"huga"},"values":[["1482363367071000000","{\\"test\\":\\"message\\"}"]]}]}`,
|
|
78
75
|
});
|
|
79
|
-
// Reset the spy
|
|
80
76
|
consoleSpy.mockRestore();
|
|
77
|
+
dateNowSpy.mockRestore();
|
|
78
|
+
consoleErrorSpy.mockRestore();
|
|
81
79
|
}));
|
|
82
80
|
});
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
81
|
+
});
|
|
82
|
+
(0, vitest_1.describe)("Advanced Features", () => {
|
|
83
|
+
const mockConfig = {
|
|
84
|
+
lokiHost: "testhost",
|
|
85
|
+
lokiToken: "token123",
|
|
86
|
+
lokiUser: "user",
|
|
87
|
+
};
|
|
88
|
+
(0, vitest_1.beforeEach)(() => {
|
|
89
|
+
vitest_1.vi.clearAllMocks();
|
|
90
|
+
});
|
|
91
|
+
(0, vitest_1.it)("should support zero config from env", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
92
|
+
const consoleSpy = vitest_1.vi.spyOn(console, "error").mockImplementation(() => { });
|
|
93
|
+
// Mock environment variables
|
|
94
|
+
process.env.LOKI_HOST = "env-host";
|
|
95
|
+
process.env.LOKI_TOKEN = "env-token";
|
|
96
|
+
process.env.LOKI_USER = "env-user";
|
|
97
|
+
const logger = (0, logger_1.getLokiLogger)();
|
|
98
|
+
yield logger.info({ msg: "test" });
|
|
99
|
+
(0, vitest_1.expect)(fetch).toHaveBeenCalledWith(vitest_1.expect.stringContaining("env-host"), vitest_1.expect.objectContaining({
|
|
100
|
+
headers: vitest_1.expect.objectContaining({
|
|
101
|
+
Authorization: `Basic ${btoa("env-user:env-token")}`,
|
|
102
|
+
}),
|
|
103
|
+
}));
|
|
104
|
+
// Cleanup
|
|
105
|
+
delete process.env.LOKI_HOST;
|
|
106
|
+
delete process.env.LOKI_TOKEN;
|
|
107
|
+
delete process.env.LOKI_USER;
|
|
108
|
+
consoleSpy.mockRestore();
|
|
109
|
+
}));
|
|
110
|
+
(0, vitest_1.it)("should not send when silent: true", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
111
|
+
const logger = (0, logger_1.getLokiLogger)(Object.assign(Object.assign({}, mockConfig), { silent: true }));
|
|
112
|
+
yield logger.info({ msg: "test" });
|
|
113
|
+
(0, vitest_1.expect)(fetch).not.toHaveBeenCalled();
|
|
114
|
+
}));
|
|
115
|
+
(0, vitest_1.it)("should retry on failure", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
116
|
+
const consoleSpy = vitest_1.vi.spyOn(console, "error").mockImplementation(() => { });
|
|
117
|
+
let callCount = 0;
|
|
118
|
+
global.fetch = vitest_1.vi.fn(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
119
|
+
callCount++;
|
|
120
|
+
if (callCount < 3) {
|
|
121
|
+
return { ok: false, status: 500, statusText: "Error" };
|
|
122
|
+
}
|
|
123
|
+
return { ok: true };
|
|
124
|
+
}));
|
|
125
|
+
const logger = (0, logger_1.getLokiLogger)(Object.assign(Object.assign({}, mockConfig), { retries: 3 }));
|
|
126
|
+
yield logger.info({ msg: "test" });
|
|
127
|
+
(0, vitest_1.expect)(fetch).toHaveBeenCalledTimes(3);
|
|
128
|
+
consoleSpy.mockRestore();
|
|
129
|
+
}));
|
|
130
|
+
(0, vitest_1.it)("should call onSendError after retries fail", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
131
|
+
const consoleSpy = vitest_1.vi.spyOn(console, "error").mockImplementation(() => { });
|
|
132
|
+
global.fetch = vitest_1.vi.fn(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
133
|
+
return ({
|
|
134
|
+
ok: false,
|
|
135
|
+
status: 500,
|
|
136
|
+
statusText: "Fatal",
|
|
137
|
+
});
|
|
138
|
+
}));
|
|
139
|
+
const onSendError = vitest_1.vi.fn();
|
|
140
|
+
const logger = (0, logger_1.getLokiLogger)(Object.assign(Object.assign({}, mockConfig), { retries: 1, onSendError }));
|
|
141
|
+
yield logger.info({ msg: "test" });
|
|
142
|
+
(0, vitest_1.expect)(fetch).toHaveBeenCalledTimes(2);
|
|
143
|
+
(0, vitest_1.expect)(onSendError).toHaveBeenCalled();
|
|
144
|
+
consoleSpy.mockRestore();
|
|
145
|
+
}));
|
|
146
|
+
(0, vitest_1.it)("should support custom format", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
147
|
+
const consoleSpy = vitest_1.vi.spyOn(console, "error").mockImplementation(() => { });
|
|
148
|
+
const format = vitest_1.vi.fn((_level, _msg, _labels) => ({
|
|
149
|
+
streams: [
|
|
150
|
+
{
|
|
151
|
+
stream: { custom: "label" },
|
|
152
|
+
values: [["123456", "custom-body"]],
|
|
153
|
+
},
|
|
154
|
+
],
|
|
155
|
+
}));
|
|
156
|
+
const logger = (0, logger_1.getLokiLogger)(Object.assign(Object.assign({}, mockConfig), { format: format }));
|
|
157
|
+
yield logger.info({ msg: "test" });
|
|
158
|
+
const fetchMock = fetch;
|
|
159
|
+
const _body = JSON.parse(fetchMock.mock.calls[0][1].body);
|
|
160
|
+
(0, vitest_1.expect)(format).toHaveBeenCalled();
|
|
161
|
+
(0, vitest_1.expect)(fetch).toHaveBeenCalledWith(vitest_1.expect.any(String), vitest_1.expect.objectContaining({
|
|
162
|
+
body: vitest_1.expect.stringContaining("custom-body"),
|
|
163
|
+
}));
|
|
164
|
+
consoleSpy.mockRestore();
|
|
165
|
+
}));
|
|
166
|
+
(0, vitest_1.it)("should add labels from cf properties", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
167
|
+
const consoleSpy = vitest_1.vi.spyOn(console, "error").mockImplementation(() => { });
|
|
168
|
+
const cf = {
|
|
169
|
+
colo: "KIX",
|
|
170
|
+
country: "JP",
|
|
171
|
+
city: "Osaka",
|
|
172
|
+
asn: 12345,
|
|
173
|
+
};
|
|
174
|
+
const logger = (0, logger_1.getLokiLogger)(Object.assign(Object.assign({}, mockConfig), { cf }));
|
|
175
|
+
yield logger.info({ msg: "test" });
|
|
176
|
+
const fetchMock = fetch;
|
|
177
|
+
const body = JSON.parse(fetchMock.mock.calls[0][1].body);
|
|
178
|
+
const stream = body.streams[0].stream;
|
|
179
|
+
(0, vitest_1.expect)(stream.cf_colo).toBe("KIX");
|
|
180
|
+
(0, vitest_1.expect)(stream.cf_country).toBe("JP");
|
|
181
|
+
(0, vitest_1.expect)(stream.cf_city).toBe("Osaka");
|
|
182
|
+
(0, vitest_1.expect)(stream.cf_asn).toBe("12345");
|
|
183
|
+
consoleSpy.mockRestore();
|
|
184
|
+
}));
|
|
185
|
+
(0, vitest_1.describe)("Request Auto Extraction", () => {
|
|
186
|
+
const mockRequest = {
|
|
187
|
+
method: "GET",
|
|
188
|
+
url: "https://example.com/api",
|
|
189
|
+
headers: new Map([
|
|
190
|
+
["user-agent", "test-agent"],
|
|
191
|
+
["cf-ray", "ray-123"],
|
|
192
|
+
["x-request-id", "req-456"],
|
|
193
|
+
]),
|
|
194
|
+
};
|
|
195
|
+
(0, vitest_1.it)("should extract labels from request in config", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
196
|
+
const consoleSpy = vitest_1.vi.spyOn(console, "error").mockImplementation(() => { });
|
|
197
|
+
const logger = (0, logger_1.getLokiLogger)(Object.assign(Object.assign({}, mockConfig), { request: mockRequest }));
|
|
198
|
+
yield logger.info({ msg: "test" });
|
|
199
|
+
const fetchMock = fetch;
|
|
200
|
+
const body = JSON.parse(fetchMock.mock.calls[0][1].body);
|
|
201
|
+
const stream = body.streams[0].stream;
|
|
202
|
+
(0, vitest_1.expect)(stream.http_method).toBe("GET");
|
|
203
|
+
(0, vitest_1.expect)(stream.http_url).toBe("https://example.com/api");
|
|
204
|
+
(0, vitest_1.expect)(stream.http_user_agent).toBe("test-agent");
|
|
205
|
+
(0, vitest_1.expect)(stream.trace_id).toBe("ray-123");
|
|
206
|
+
(0, vitest_1.expect)(stream.request_id).toBe("req-456");
|
|
93
207
|
consoleSpy.mockRestore();
|
|
94
208
|
}));
|
|
95
|
-
(0, vitest_1.it)("should
|
|
96
|
-
const
|
|
97
|
-
const logger = (0, logger_1.getLokiLogger)(
|
|
98
|
-
|
|
99
|
-
const
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
(0, vitest_1.expect)(fetch).toHaveBeenCalledWith(vitest_1.expect.any(String), vitest_1.expect.objectContaining({
|
|
105
|
-
body: vitest_1.expect.stringContaining('"app":"test"'),
|
|
106
|
-
}));
|
|
209
|
+
(0, vitest_1.it)("should extract labels from request in message", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
210
|
+
const consoleSpy = vitest_1.vi.spyOn(console, "error").mockImplementation(() => { });
|
|
211
|
+
const logger = (0, logger_1.getLokiLogger)(mockConfig);
|
|
212
|
+
yield logger.info({ msg: "test", request: mockRequest });
|
|
213
|
+
const fetchMock = fetch;
|
|
214
|
+
const body = JSON.parse(fetchMock.mock.calls[0][1].body);
|
|
215
|
+
const stream = body.streams[0].stream;
|
|
216
|
+
(0, vitest_1.expect)(stream.http_method).toBe("GET");
|
|
217
|
+
(0, vitest_1.expect)(stream.trace_id).toBe("ray-123");
|
|
107
218
|
consoleSpy.mockRestore();
|
|
108
219
|
}));
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
const consoleSpy = vitest_1.vi.spyOn(console, "
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
220
|
+
});
|
|
221
|
+
(0, vitest_1.describe)("Wrapper (AOP)", () => {
|
|
222
|
+
(0, vitest_1.it)("should measure execution time and log it", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
223
|
+
const consoleSpy = vitest_1.vi.spyOn(console, "error").mockImplementation(() => { });
|
|
224
|
+
const logger = (0, logger_1.getLokiLogger)(mockConfig);
|
|
225
|
+
// Simulate passage of time by returning different values for Date.now
|
|
226
|
+
const dateNowSpy = vitest_1.vi.spyOn(Date, "now");
|
|
227
|
+
dateNowSpy
|
|
228
|
+
.mockReturnValueOnce(1000) // start
|
|
229
|
+
.mockReturnValueOnce(1010) // end
|
|
230
|
+
.mockReturnValue(1010); // for generateLokiMessage
|
|
231
|
+
const fn = (a, b) => __awaiter(void 0, void 0, void 0, function* () {
|
|
232
|
+
return a + b;
|
|
233
|
+
});
|
|
234
|
+
const wrapped = logger.wrap("testFn", fn);
|
|
235
|
+
const result = yield wrapped(1, 2);
|
|
236
|
+
(0, vitest_1.expect)(result).toBe(3);
|
|
117
237
|
(0, vitest_1.expect)(fetch).toHaveBeenCalledTimes(1);
|
|
118
|
-
|
|
119
|
-
|
|
238
|
+
const fetchMock = fetch;
|
|
239
|
+
const body = JSON.parse(fetchMock.mock.calls[0][1].body);
|
|
240
|
+
const message = JSON.parse(body.streams[0].values[0][1]);
|
|
241
|
+
(0, vitest_1.expect)(message.function_name).toBe("testFn");
|
|
242
|
+
(0, vitest_1.expect)(message.duration_ms).toBe(10);
|
|
243
|
+
dateNowSpy.mockRestore();
|
|
120
244
|
consoleSpy.mockRestore();
|
|
121
245
|
}));
|
|
122
|
-
(0, vitest_1.it)("should
|
|
246
|
+
(0, vitest_1.it)("should log error on failure", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
247
|
+
const consoleSpy = vitest_1.vi.spyOn(console, "error").mockImplementation(() => { });
|
|
123
248
|
const logger = (0, logger_1.getLokiLogger)(mockConfig);
|
|
124
|
-
const
|
|
125
|
-
|
|
126
|
-
};
|
|
249
|
+
const fn = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
250
|
+
throw new Error("fail");
|
|
251
|
+
});
|
|
252
|
+
const wrapped = logger.wrap("failFn", fn);
|
|
253
|
+
yield (0, vitest_1.expect)(wrapped()).rejects.toThrow("fail");
|
|
254
|
+
const fetchMock = fetch;
|
|
255
|
+
const body = JSON.parse(fetchMock.mock.calls[0][1].body);
|
|
256
|
+
const stream = body.streams[0].stream;
|
|
257
|
+
(0, vitest_1.expect)(stream.level).toBe("error");
|
|
258
|
+
const message = JSON.parse(body.streams[0].values[0][1]);
|
|
259
|
+
(0, vitest_1.expect)(message.function_name).toBe("failFn");
|
|
260
|
+
(0, vitest_1.expect)(message.error).toBe("fail");
|
|
261
|
+
consoleSpy.mockRestore();
|
|
262
|
+
}));
|
|
263
|
+
});
|
|
264
|
+
(0, vitest_1.describe)("Dev environment", () => {
|
|
265
|
+
(0, vitest_1.it)("should use pretty print in dev", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
266
|
+
process.env.NODE_ENV = "development";
|
|
127
267
|
const consoleSpy = vitest_1.vi.spyOn(console, "log").mockImplementation(() => { });
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
// At least we verify waitUntil was called.
|
|
268
|
+
const logger = (0, logger_1.getLokiLogger)(mockConfig);
|
|
269
|
+
yield logger.info({ msg: "test" });
|
|
270
|
+
(0, vitest_1.expect)(consoleSpy).toHaveBeenCalledWith(vitest_1.expect.stringContaining("[INFO]"), vitest_1.expect.stringContaining('{\n "msg": "test"\n}'));
|
|
271
|
+
delete process.env.NODE_ENV;
|
|
133
272
|
consoleSpy.mockRestore();
|
|
134
273
|
}));
|
|
135
274
|
});
|
|
136
275
|
});
|
|
276
|
+
(0, vitest_1.describe)("Cloudflare Workers context", () => {
|
|
277
|
+
const mockConfig = {
|
|
278
|
+
lokiHost: "testhost",
|
|
279
|
+
lokiToken: "token123",
|
|
280
|
+
lokiUser: "user",
|
|
281
|
+
};
|
|
282
|
+
(0, vitest_1.it)("should use ctx from getLokiLogger", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
283
|
+
const consoleSpy = vitest_1.vi.spyOn(console, "error").mockImplementation(() => { });
|
|
284
|
+
const ctx = {
|
|
285
|
+
waitUntil: vitest_1.vi.fn(),
|
|
286
|
+
};
|
|
287
|
+
const logger = (0, logger_1.getLokiLogger)(Object.assign(Object.assign({}, mockConfig), { ctx }));
|
|
288
|
+
yield logger.info("test");
|
|
289
|
+
(0, vitest_1.expect)(ctx.waitUntil).toHaveBeenCalled();
|
|
290
|
+
consoleSpy.mockRestore();
|
|
291
|
+
}));
|
|
292
|
+
(0, vitest_1.it)("should use ctx from method call even if getLokiLogger has one", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
293
|
+
const consoleSpy = vitest_1.vi.spyOn(console, "error").mockImplementation(() => { });
|
|
294
|
+
const ctx1 = {
|
|
295
|
+
waitUntil: vitest_1.vi.fn(),
|
|
296
|
+
};
|
|
297
|
+
const ctx2 = {
|
|
298
|
+
waitUntil: vitest_1.vi.fn(),
|
|
299
|
+
};
|
|
300
|
+
const logger = (0, logger_1.getLokiLogger)(Object.assign(Object.assign({}, mockConfig), { ctx: ctx1 }));
|
|
301
|
+
yield logger.info("test", {}, ctx2);
|
|
302
|
+
(0, vitest_1.expect)(ctx2.waitUntil).toHaveBeenCalled();
|
|
303
|
+
(0, vitest_1.expect)(ctx1.waitUntil).not.toHaveBeenCalled();
|
|
304
|
+
consoleSpy.mockRestore();
|
|
305
|
+
}));
|
|
306
|
+
});
|
|
137
307
|
//# sourceMappingURL=logger.test.js.map
|
package/dist/logger.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.test.js","sourceRoot":"","sources":["../src/logger.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"logger.test.js","sourceRoot":"","sources":["../src/logger.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@miketako3/cloki",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.22",
|
|
4
4
|
"description": "cloki is zero dependency and simple logger library for Loki and Cloudflare Workers.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"files": [
|
|
@@ -13,7 +13,8 @@
|
|
|
13
13
|
"build": "tsc",
|
|
14
14
|
"format": "bunx @biomejs/biome check . --write",
|
|
15
15
|
"lint": "bunx @biomejs/biome check .",
|
|
16
|
-
"test": "vitest run"
|
|
16
|
+
"test": "vitest run",
|
|
17
|
+
"typecheck": "tsc --noEmit"
|
|
17
18
|
},
|
|
18
19
|
"repository": {
|
|
19
20
|
"type": "git",
|