@dasasian/firebase-structured-logger 0.1.0 → 0.2.0
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 +6 -4
- package/dist/client/breadcrumbs.d.ts.map +1 -1
- package/dist/client/breadcrumbs.js +8 -3
- package/dist/client/breadcrumbs.js.map +1 -1
- package/dist/client/errorHandler.js.map +1 -1
- package/dist/client/index.d.ts +2 -2
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +1 -2
- package/dist/client/index.js.map +1 -1
- package/dist/client/logger.d.ts +5 -5
- package/dist/client/logger.d.ts.map +1 -1
- package/dist/client/logger.js +40 -54
- package/dist/client/logger.js.map +1 -1
- package/dist/client/rateLimiter.d.ts +26 -4
- package/dist/client/rateLimiter.d.ts.map +1 -1
- package/dist/client/rateLimiter.js +36 -31
- package/dist/client/rateLimiter.js.map +1 -1
- package/dist/functions/logHandler.d.ts.map +1 -1
- package/dist/functions/logHandler.js +9 -38
- package/dist/functions/logHandler.js.map +1 -1
- package/dist/functions/logger.d.ts +8 -3
- package/dist/functions/logger.d.ts.map +1 -1
- package/dist/functions/logger.js +46 -68
- package/dist/functions/logger.js.map +1 -1
- package/dist/functions/requestLogger.d.ts.map +1 -1
- package/dist/functions/requestLogger.js +2 -5
- package/dist/functions/requestLogger.js.map +1 -1
- package/dist/functions/sourceMapCache.d.ts +10 -2
- package/dist/functions/sourceMapCache.d.ts.map +1 -1
- package/dist/functions/sourceMapCache.js +37 -14
- package/dist/functions/sourceMapCache.js.map +1 -1
- package/dist/functions/symbolicate.d.ts +6 -2
- package/dist/functions/symbolicate.d.ts.map +1 -1
- package/dist/functions/symbolicate.js +23 -5
- package/dist/functions/symbolicate.js.map +1 -1
- package/dist/shared/error.d.ts +6 -0
- package/dist/shared/error.d.ts.map +1 -0
- package/dist/shared/error.js +18 -0
- package/dist/shared/error.js.map +1 -0
- package/dist/shared/severity.d.ts +9 -0
- package/dist/shared/severity.d.ts.map +1 -0
- package/dist/shared/severity.js +16 -0
- package/dist/shared/severity.js.map +1 -0
- package/dist/shared/types.d.ts +7 -6
- package/dist/shared/types.d.ts.map +1 -1
- package/package.json +6 -6
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { LogSeverity, LogPayload } from "../shared/types";
|
|
2
|
+
export declare const LOG_FILENAME = "dev.jsonl";
|
|
2
3
|
interface FunctionsLoggerConfig {
|
|
3
4
|
appId: string;
|
|
4
5
|
logLocalDir?: string;
|
|
@@ -11,6 +12,10 @@ interface FunctionsLoggerConfig {
|
|
|
11
12
|
* Call once at module load (before any onCall handlers run).
|
|
12
13
|
*/
|
|
13
14
|
export declare function initLogger(config: FunctionsLoggerConfig): void;
|
|
15
|
+
/**
|
|
16
|
+
* Strip null/undefined labels and convert all values to strings for Cloud Logging.
|
|
17
|
+
*/
|
|
18
|
+
export declare function cleanLabels(labels: Record<string, unknown> | undefined): Record<string, string>;
|
|
14
19
|
/**
|
|
15
20
|
* Write a structured log entry. Transport depends on environment.
|
|
16
21
|
*/
|
|
@@ -23,9 +28,9 @@ export declare function writeLog(payload: LogPayload & {
|
|
|
23
28
|
*/
|
|
24
29
|
export declare function createLogWriter(baseLabels: Record<string, string | undefined>): {
|
|
25
30
|
error(raw: unknown, labels?: Record<string, string | undefined>, context?: Record<string, unknown>, attachments?: Record<string, string | Buffer>): void;
|
|
26
|
-
info(message: string, labels?: Record<string, string | undefined>, context?: Record<string, unknown>, attachments?: Record<string, string | Buffer>)
|
|
27
|
-
warning(message: string, labels?: Record<string, string | undefined>, context?: Record<string, unknown>, attachments?: Record<string, string | Buffer>)
|
|
28
|
-
debug(message: string, labels?: Record<string, string | undefined>, context?: Record<string, unknown>, attachments?: Record<string, string | Buffer>)
|
|
31
|
+
info: (message: string, labels?: Record<string, string | undefined>, context?: Record<string, unknown>, attachments?: Record<string, string | Buffer>) => void;
|
|
32
|
+
warning: (message: string, labels?: Record<string, string | undefined>, context?: Record<string, unknown>, attachments?: Record<string, string | Buffer>) => void;
|
|
33
|
+
debug: (message: string, labels?: Record<string, string | undefined>, context?: Record<string, unknown>, attachments?: Record<string, string | Buffer>) => void;
|
|
29
34
|
};
|
|
30
35
|
export type LogWriter = ReturnType<typeof createLogWriter>;
|
|
31
36
|
export type { LogSeverity };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/functions/logger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/functions/logger.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAM/D,eAAO,MAAM,YAAY,cAAc,CAAC;AAExC,UAAU,qBAAqB;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAKD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAQ9D;AAkED;;GAEG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAC1C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CASxB;AAED;;GAEG;AACH,wBAAgB,QAAQ,CACtB,OAAO,EAAE,UAAU,GAAG;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAClE,IAAI,CAiEN;AAaD;;GAEG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;eAuBrC,OAAO,WACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,YACjC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,gBACnB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAC5C,IAAI;oBAWI,MAAM,WACN,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,YACjC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,gBACnB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,KAC5C,IAAI;uBAEI,MAAM,WACN,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,YACjC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,gBACnB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,KAC5C,IAAI;qBAEI,MAAM,WACN,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,YACjC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,gBACnB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,KAC5C,IAAI;EAEV;AAED,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAG3D,YAAY,EAAE,WAAW,EAAE,CAAC"}
|
package/dist/functions/logger.js
CHANGED
|
@@ -33,23 +33,20 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.LOG_FILENAME = void 0;
|
|
36
37
|
exports.initLogger = initLogger;
|
|
38
|
+
exports.cleanLabels = cleanLabels;
|
|
37
39
|
exports.writeLog = writeLog;
|
|
38
40
|
exports.createLogWriter = createLogWriter;
|
|
39
41
|
const fs = __importStar(require("fs"));
|
|
40
42
|
const path = __importStar(require("path"));
|
|
41
43
|
const logger_1 = require("firebase-functions/logger");
|
|
42
44
|
const ulid_1 = require("ulid");
|
|
43
|
-
const
|
|
45
|
+
const severity_1 = require("../shared/severity");
|
|
46
|
+
const error_1 = require("../shared/error");
|
|
44
47
|
const sourceMapCache_1 = require("./sourceMapCache");
|
|
45
48
|
const IS_EMULATOR = process.env.FUNCTIONS_EMULATOR === "true";
|
|
46
|
-
|
|
47
|
-
const SEVERITY_ORDER = {
|
|
48
|
-
ERROR: 0,
|
|
49
|
-
WARNING: 1,
|
|
50
|
-
INFO: 2,
|
|
51
|
-
DEBUG: 3,
|
|
52
|
-
};
|
|
49
|
+
exports.LOG_FILENAME = "dev.jsonl";
|
|
53
50
|
let globalConfig = null;
|
|
54
51
|
let currentRecordCount = 0;
|
|
55
52
|
/**
|
|
@@ -68,7 +65,7 @@ function initLogger(config) {
|
|
|
68
65
|
* Rotate the current log file to a timestamped backup, delete oldest files beyond limit.
|
|
69
66
|
*/
|
|
70
67
|
function rotateLogFile(logDir, maxRotatedFiles) {
|
|
71
|
-
const current = path.join(logDir, LOG_FILENAME);
|
|
68
|
+
const current = path.join(logDir, exports.LOG_FILENAME);
|
|
72
69
|
try {
|
|
73
70
|
// The functions emulator spawns multiple worker processes that each call
|
|
74
71
|
// initLogger() on startup. existsSync + renameSync is a TOCTOU race:
|
|
@@ -105,21 +102,38 @@ function rotateLogFile(logDir, maxRotatedFiles) {
|
|
|
105
102
|
}
|
|
106
103
|
}
|
|
107
104
|
async function uploadLogAttachments(logId, logAttachments) {
|
|
108
|
-
const
|
|
109
|
-
const bucket = bucketName
|
|
110
|
-
? (0, storage_1.getStorage)().bucket(bucketName)
|
|
111
|
-
: (0, storage_1.getStorage)().bucket();
|
|
105
|
+
const bucket = (0, sourceMapCache_1.getBucket)();
|
|
112
106
|
await Promise.all(Object.entries(logAttachments).map(async ([name, data]) => {
|
|
113
107
|
const file = bucket.file(`logAttachments/${logId}/${name}`);
|
|
114
108
|
await file.save(Buffer.from(data, "base64"));
|
|
115
109
|
}));
|
|
116
110
|
}
|
|
111
|
+
const CONSOLE_FN = {
|
|
112
|
+
ERROR: console.error,
|
|
113
|
+
WARNING: console.warn,
|
|
114
|
+
DEBUG: console.debug,
|
|
115
|
+
INFO: console.log,
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* Strip null/undefined labels and convert all values to strings for Cloud Logging.
|
|
119
|
+
*/
|
|
120
|
+
function cleanLabels(labels) {
|
|
121
|
+
if (!labels)
|
|
122
|
+
return {};
|
|
123
|
+
const cleaned = {};
|
|
124
|
+
for (const [key, value] of Object.entries(labels)) {
|
|
125
|
+
if (value !== null && value !== undefined) {
|
|
126
|
+
cleaned[key] = String(value);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return cleaned;
|
|
130
|
+
}
|
|
117
131
|
/**
|
|
118
132
|
* Write a structured log entry. Transport depends on environment.
|
|
119
133
|
*/
|
|
120
134
|
function writeLog(payload) {
|
|
121
135
|
const minSeverity = globalConfig?.minSeverity ?? (IS_EMULATOR ? "DEBUG" : "WARNING");
|
|
122
|
-
if (SEVERITY_ORDER[payload.severity] > SEVERITY_ORDER[minSeverity])
|
|
136
|
+
if (severity_1.SEVERITY_ORDER[payload.severity] > severity_1.SEVERITY_ORDER[minSeverity])
|
|
123
137
|
return;
|
|
124
138
|
const logId = (0, ulid_1.ulid)();
|
|
125
139
|
const hasAttachments = payload.attachments && Object.keys(payload.attachments).length > 0;
|
|
@@ -153,7 +167,7 @@ function writeLog(payload) {
|
|
|
153
167
|
rotateLogFile(globalConfig.logLocalDir, maxRotated);
|
|
154
168
|
currentRecordCount = 0;
|
|
155
169
|
}
|
|
156
|
-
const logFile = path.join(globalConfig.logLocalDir, LOG_FILENAME);
|
|
170
|
+
const logFile = path.join(globalConfig.logLocalDir, exports.LOG_FILENAME);
|
|
157
171
|
fs.appendFileSync(logFile, JSON.stringify(entry) + "\n", "utf-8");
|
|
158
172
|
currentRecordCount++;
|
|
159
173
|
}
|
|
@@ -162,14 +176,7 @@ function writeLog(payload) {
|
|
|
162
176
|
}
|
|
163
177
|
}
|
|
164
178
|
// Also write to console for immediate visibility
|
|
165
|
-
|
|
166
|
-
? console.error
|
|
167
|
-
: payload.severity === "WARNING"
|
|
168
|
-
? console.warn
|
|
169
|
-
: payload.severity === "DEBUG"
|
|
170
|
-
? console.debug
|
|
171
|
-
: console.log;
|
|
172
|
-
consoleFn(`[${payload.severity}] ${payload.message}`, labels);
|
|
179
|
+
CONSOLE_FN[payload.severity](`[${payload.severity}] ${payload.message}`, labels);
|
|
173
180
|
return;
|
|
174
181
|
}
|
|
175
182
|
// Production: use firebase-functions/logger write() directly, bypassing entryFromArgs.
|
|
@@ -195,59 +202,30 @@ function logAttachmentsToBase64(logAttachments) {
|
|
|
195
202
|
* Convenience wrapper that builds a logger object for a given label set.
|
|
196
203
|
*/
|
|
197
204
|
function createLogWriter(baseLabels) {
|
|
198
|
-
const merge = (extra) => ({
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
205
|
+
const merge = (extra) => ({ ...baseLabels, ...extra });
|
|
206
|
+
const write = (severity, message, labels, context, attachments) => {
|
|
207
|
+
writeLog({
|
|
208
|
+
message,
|
|
209
|
+
severity,
|
|
210
|
+
labels: merge(labels),
|
|
211
|
+
jsonPayload: { context },
|
|
212
|
+
attachments: logAttachmentsToBase64(attachments),
|
|
213
|
+
});
|
|
214
|
+
};
|
|
202
215
|
return {
|
|
203
216
|
error(raw, labels, context, attachments) {
|
|
204
|
-
const error =
|
|
217
|
+
const error = (0, error_1.toError)(raw);
|
|
205
218
|
writeLog({
|
|
206
219
|
message: error.message,
|
|
207
220
|
severity: "ERROR",
|
|
208
|
-
labels: merge({
|
|
209
|
-
|
|
210
|
-
...labels,
|
|
211
|
-
}),
|
|
212
|
-
jsonPayload: {
|
|
213
|
-
context,
|
|
214
|
-
error: {
|
|
215
|
-
message: error.message,
|
|
216
|
-
stack: error.stack,
|
|
217
|
-
name: error.name,
|
|
218
|
-
cause: error.cause !== undefined ? String(error.cause) : undefined,
|
|
219
|
-
},
|
|
220
|
-
},
|
|
221
|
-
attachments: logAttachmentsToBase64(attachments),
|
|
222
|
-
});
|
|
223
|
-
},
|
|
224
|
-
info(message, labels, context, attachments) {
|
|
225
|
-
writeLog({
|
|
226
|
-
message,
|
|
227
|
-
severity: "INFO",
|
|
228
|
-
labels: merge(labels),
|
|
229
|
-
jsonPayload: { context },
|
|
230
|
-
attachments: logAttachmentsToBase64(attachments),
|
|
231
|
-
});
|
|
232
|
-
},
|
|
233
|
-
warning(message, labels, context, attachments) {
|
|
234
|
-
writeLog({
|
|
235
|
-
message,
|
|
236
|
-
severity: "WARNING",
|
|
237
|
-
labels: merge(labels),
|
|
238
|
-
jsonPayload: { context },
|
|
239
|
-
attachments: logAttachmentsToBase64(attachments),
|
|
240
|
-
});
|
|
241
|
-
},
|
|
242
|
-
debug(message, labels, context, attachments) {
|
|
243
|
-
writeLog({
|
|
244
|
-
message,
|
|
245
|
-
severity: "DEBUG",
|
|
246
|
-
labels: merge(labels),
|
|
247
|
-
jsonPayload: { context },
|
|
221
|
+
labels: merge({ errorType: error.name, ...labels }),
|
|
222
|
+
jsonPayload: { context, error: (0, error_1.toErrorPayload)(error) },
|
|
248
223
|
attachments: logAttachmentsToBase64(attachments),
|
|
249
224
|
});
|
|
250
225
|
},
|
|
226
|
+
info: (message, labels, context, attachments) => write("INFO", message, labels, context, attachments),
|
|
227
|
+
warning: (message, labels, context, attachments) => write("WARNING", message, labels, context, attachments),
|
|
228
|
+
debug: (message, labels, context, attachments) => write("DEBUG", message, labels, context, attachments),
|
|
251
229
|
};
|
|
252
230
|
}
|
|
253
231
|
//# sourceMappingURL=logger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/functions/logger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/functions/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requestLogger.d.ts","sourceRoot":"","sources":["../../src/functions/requestLogger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAClE,OAAO,
|
|
1
|
+
{"version":3,"file":"requestLogger.d.ts","sourceRoot":"","sources":["../../src/functions/requestLogger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAClE,OAAO,EAAgC,KAAK,SAAS,EAAE,MAAM,UAAU,CAAA;AAIvE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAEzF,OAAO,EAAE,eAAe,EACxB,KAAK,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;CAAE,GAC7E,SAAS,CAWX;AAED;;;;GAIG;AACH,wBAAgB,SAAS,IAAI,SAAS,CAErC"}
|
|
@@ -22,15 +22,12 @@ const storage = new async_hooks_1.AsyncLocalStorage();
|
|
|
22
22
|
* })
|
|
23
23
|
*/
|
|
24
24
|
function initRequestLogger(request, extra) {
|
|
25
|
-
const
|
|
25
|
+
const writer = (0, logger_1.createLogWriter)((0, logger_1.cleanLabels)({
|
|
26
26
|
functionName: extra?.functionName,
|
|
27
27
|
userId: request.auth?.uid,
|
|
28
28
|
appId: extra?.appId,
|
|
29
29
|
...extra?.labels,
|
|
30
|
-
};
|
|
31
|
-
// Remove undefined values
|
|
32
|
-
const cleanLabels = Object.fromEntries(Object.entries(labels).filter(([, v]) => v !== undefined));
|
|
33
|
-
const writer = (0, logger_1.createLogWriter)(cleanLabels);
|
|
30
|
+
}));
|
|
34
31
|
storage.enterWith(writer);
|
|
35
32
|
return writer;
|
|
36
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requestLogger.js","sourceRoot":"","sources":["../../src/functions/requestLogger.ts"],"names":[],"mappings":";;AAsBA,
|
|
1
|
+
{"version":3,"file":"requestLogger.js","sourceRoot":"","sources":["../../src/functions/requestLogger.ts"],"names":[],"mappings":";;AAsBA,8CAgBC;AAOD,8BAEC;AA/CD,6CAA+C;AAE/C,qCAAuE;AAEvE,MAAM,OAAO,GAAG,IAAI,+BAAiB,EAAa,CAAA;AAElD;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,iBAAiB,CAG/B,OAAwB,EACxB,KAA8E;IAE9E,MAAM,MAAM,GAAG,IAAA,wBAAe,EAC5B,IAAA,oBAAW,EAAC;QACV,YAAY,EAAE,KAAK,EAAE,YAAY;QACjC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG;QACzB,KAAK,EAAE,KAAK,EAAE,KAAK;QACnB,GAAG,KAAK,EAAE,MAAM;KACjB,CAAC,CACH,CAAA;IACD,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IACzB,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;GAIG;AACH,SAAgB,SAAS;IACvB,OAAO,OAAO,CAAC,QAAQ,EAAE,IAAI,IAAA,wBAAe,EAAC,EAAE,CAAC,CAAA;AAClD,CAAC"}
|
|
@@ -1,9 +1,17 @@
|
|
|
1
|
+
import type { Bucket } from '@google-cloud/storage';
|
|
1
2
|
import type { EncodedSourceMap } from '@jridgewell/trace-mapping';
|
|
2
3
|
export declare function configureSourceMapBucket(bucketName: string): void;
|
|
3
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Resolve the configured Storage bucket, falling back to the project default.
|
|
6
|
+
*
|
|
7
|
+
* The return type is spelled out rather than inferred: without it the emitted
|
|
8
|
+
* `.d.ts` would need to name `Bucket` from a path inside `node_modules`, which
|
|
9
|
+
* TypeScript 7 rejects as non-portable (TS2883).
|
|
10
|
+
*/
|
|
11
|
+
export declare function getBucket(bucketName?: string | undefined): Bucket;
|
|
4
12
|
/**
|
|
5
13
|
* Get source map — checks embedded first (instant), then Storage (for old releases).
|
|
6
14
|
*/
|
|
7
|
-
export declare function getSourceMap(releaseId: string, fileName: string): Promise<EncodedSourceMap | null>;
|
|
15
|
+
export declare function getSourceMap(releaseId: string, fileName: string, bucketName?: string): Promise<EncodedSourceMap | null>;
|
|
8
16
|
export declare function clearSourceMapCache(): void;
|
|
9
17
|
//# sourceMappingURL=sourceMapCache.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sourceMapCache.d.ts","sourceRoot":"","sources":["../../src/functions/sourceMapCache.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"sourceMapCache.d.ts","sourceRoot":"","sources":["../../src/functions/sourceMapCache.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAcjE,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAEjE;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,UAAU,qBAAgB,GAAG,MAAM,CAE5D;AA4DD;;GAEG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAIlC;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAG1C"}
|
|
@@ -34,7 +34,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.configureSourceMapBucket = configureSourceMapBucket;
|
|
37
|
-
exports.
|
|
37
|
+
exports.getBucket = getBucket;
|
|
38
38
|
exports.getSourceMap = getSourceMap;
|
|
39
39
|
exports.clearSourceMapCache = clearSourceMapCache;
|
|
40
40
|
const fs = __importStar(require("fs"));
|
|
@@ -42,17 +42,40 @@ const path = __importStar(require("path"));
|
|
|
42
42
|
const storage_1 = require("firebase-admin/storage");
|
|
43
43
|
// In-memory cache: cacheKey → EncodedSourceMap | null (null = confirmed not found)
|
|
44
44
|
const cache = new Map();
|
|
45
|
-
|
|
45
|
+
// Separate cache for the embedded (current release) maps, keyed by bundle filename.
|
|
46
|
+
const embeddedCache = new Map();
|
|
47
|
+
// Process-wide fallback bucket. Used by writeLog() for attachments, which has
|
|
48
|
+
// no per-handler config to draw on. Source-map lookups do NOT rely on this —
|
|
49
|
+
// they take the bucket explicitly, so two handlers configured with different
|
|
50
|
+
// buckets cannot silently resolve to whichever was constructed last.
|
|
51
|
+
let defaultBucket;
|
|
46
52
|
function configureSourceMapBucket(bucketName) {
|
|
47
|
-
|
|
53
|
+
defaultBucket = bucketName;
|
|
48
54
|
}
|
|
49
|
-
|
|
50
|
-
|
|
55
|
+
/**
|
|
56
|
+
* Resolve the configured Storage bucket, falling back to the project default.
|
|
57
|
+
*
|
|
58
|
+
* The return type is spelled out rather than inferred: without it the emitted
|
|
59
|
+
* `.d.ts` would need to name `Bucket` from a path inside `node_modules`, which
|
|
60
|
+
* TypeScript 7 rejects as non-portable (TS2883).
|
|
61
|
+
*/
|
|
62
|
+
function getBucket(bucketName = defaultBucket) {
|
|
63
|
+
return bucketName ? (0, storage_1.getStorage)().bucket(bucketName) : (0, storage_1.getStorage)().bucket();
|
|
51
64
|
}
|
|
52
65
|
/**
|
|
53
66
|
* Load source map from embedded current release directory (instant for current release).
|
|
67
|
+
* Result is memoised — this sits on the per-error hot path and the embedded maps
|
|
68
|
+
* cannot change while the instance is alive.
|
|
54
69
|
*/
|
|
55
70
|
function loadEmbeddedSourceMap(fileName) {
|
|
71
|
+
const cached = embeddedCache.get(fileName);
|
|
72
|
+
if (cached !== undefined)
|
|
73
|
+
return cached;
|
|
74
|
+
const sourceMap = readEmbeddedSourceMap(fileName);
|
|
75
|
+
embeddedCache.set(fileName, sourceMap);
|
|
76
|
+
return sourceMap;
|
|
77
|
+
}
|
|
78
|
+
function readEmbeddedSourceMap(fileName) {
|
|
56
79
|
try {
|
|
57
80
|
// Looks for sourcemaps/current/{fileName}.map relative to the Cloud Function working directory
|
|
58
81
|
const mapPath = path.join(process.cwd(), 'sourcemaps', 'current', `${fileName}.map`);
|
|
@@ -67,15 +90,14 @@ function loadEmbeddedSourceMap(fileName) {
|
|
|
67
90
|
/**
|
|
68
91
|
* Load source map from Firebase Storage (for older releases).
|
|
69
92
|
*/
|
|
70
|
-
async function loadStorageSourceMap(releaseId, fileName) {
|
|
71
|
-
|
|
93
|
+
async function loadStorageSourceMap(releaseId, fileName, bucketName) {
|
|
94
|
+
// The bucket is part of the key: the same release/file in two buckets is two
|
|
95
|
+
// different maps, and caching them under one key would serve the wrong one.
|
|
96
|
+
const cacheKey = `${bucketName ?? defaultBucket ?? ''}/${releaseId}/${fileName}`;
|
|
72
97
|
if (cache.has(cacheKey))
|
|
73
98
|
return cache.get(cacheKey) ?? null;
|
|
74
99
|
try {
|
|
75
|
-
const
|
|
76
|
-
? (0, storage_1.getStorage)().bucket(configuredBucket)
|
|
77
|
-
: (0, storage_1.getStorage)().bucket();
|
|
78
|
-
const file = bucket.file(`sourcemaps/${releaseId}/${fileName}.map`);
|
|
100
|
+
const file = getBucket(bucketName).file(`sourcemaps/${releaseId}/${fileName}.map`);
|
|
79
101
|
const [exists] = await file.exists();
|
|
80
102
|
if (!exists) {
|
|
81
103
|
cache.set(cacheKey, null);
|
|
@@ -88,20 +110,21 @@ async function loadStorageSourceMap(releaseId, fileName) {
|
|
|
88
110
|
}
|
|
89
111
|
catch (err) {
|
|
90
112
|
console.warn(`[fsl] Failed to load Storage map for ${releaseId}/${fileName}:`, err);
|
|
91
|
-
cache.set(
|
|
113
|
+
cache.set(cacheKey, null);
|
|
92
114
|
return null;
|
|
93
115
|
}
|
|
94
116
|
}
|
|
95
117
|
/**
|
|
96
118
|
* Get source map — checks embedded first (instant), then Storage (for old releases).
|
|
97
119
|
*/
|
|
98
|
-
async function getSourceMap(releaseId, fileName) {
|
|
120
|
+
async function getSourceMap(releaseId, fileName, bucketName) {
|
|
99
121
|
const embedded = loadEmbeddedSourceMap(fileName);
|
|
100
122
|
if (embedded)
|
|
101
123
|
return embedded;
|
|
102
|
-
return loadStorageSourceMap(releaseId, fileName);
|
|
124
|
+
return loadStorageSourceMap(releaseId, fileName, bucketName);
|
|
103
125
|
}
|
|
104
126
|
function clearSourceMapCache() {
|
|
105
127
|
cache.clear();
|
|
128
|
+
embeddedCache.clear();
|
|
106
129
|
}
|
|
107
130
|
//# sourceMappingURL=sourceMapCache.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sourceMapCache.js","sourceRoot":"","sources":["../../src/functions/sourceMapCache.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"sourceMapCache.js","sourceRoot":"","sources":["../../src/functions/sourceMapCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,9 +21,13 @@ export declare function symbolicate(sourceMap: EncodedSourceMap, generatedLine:
|
|
|
21
21
|
name?: string;
|
|
22
22
|
} | null;
|
|
23
23
|
/**
|
|
24
|
-
* Apply source
|
|
24
|
+
* Apply source maps to all frames in a stack trace.
|
|
25
|
+
*
|
|
26
|
+
* `resolve` picks the source map for a given frame, so a stack spanning several
|
|
27
|
+
* bundles is handled by the same code path as a single-bundle one. Pass
|
|
28
|
+
* `() => map` when one map covers the whole stack.
|
|
25
29
|
*/
|
|
26
|
-
export declare function symbolicateStackTrace(frames: StackFrame[],
|
|
30
|
+
export declare function symbolicateStackTrace(frames: StackFrame[], resolve: (frame: StackFrame) => EncodedSourceMap | null | undefined): StackFrame[];
|
|
27
31
|
/**
|
|
28
32
|
* Format symbolicated frames back to a stack trace string.
|
|
29
33
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symbolicate.d.ts","sourceRoot":"","sources":["../../src/functions/symbolicate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,KAAK,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAEhG,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAGD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE,CAkD3D;
|
|
1
|
+
{"version":3,"file":"symbolicate.d.ts","sourceRoot":"","sources":["../../src/functions/symbolicate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,KAAK,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAEhG,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAGD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE,CAkD3D;AAeD;;GAEG;AACH,wBAAgB,WAAW,CACzB,SAAS,EAAE,gBAAgB,EAC3B,aAAa,EAAE,MAAM,EACrB,eAAe,EAAE,MAAM,GACtB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAgBxE;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,UAAU,EAAE,EACpB,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,gBAAgB,GAAG,IAAI,GAAG,SAAS,GAClE,UAAU,EAAE,CAkBd;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAQ7D"}
|
|
@@ -55,13 +55,26 @@ function parseStackTrace(stack) {
|
|
|
55
55
|
}
|
|
56
56
|
return frames;
|
|
57
57
|
}
|
|
58
|
+
// Building a TraceMap decodes the whole mappings string, so keep one per source
|
|
59
|
+
// map instead of rebuilding it for every frame of every stack.
|
|
60
|
+
const tracers = new WeakMap();
|
|
61
|
+
function tracerFor(sourceMap) {
|
|
62
|
+
let tracer = tracers.get(sourceMap);
|
|
63
|
+
if (!tracer) {
|
|
64
|
+
tracer = new trace_mapping_1.TraceMap(sourceMap);
|
|
65
|
+
tracers.set(sourceMap, tracer);
|
|
66
|
+
}
|
|
67
|
+
return tracer;
|
|
68
|
+
}
|
|
58
69
|
/**
|
|
59
70
|
* Look up original source location for a generated line/column.
|
|
60
71
|
*/
|
|
61
72
|
function symbolicate(sourceMap, generatedLine, generatedColumn) {
|
|
62
73
|
try {
|
|
63
|
-
const
|
|
64
|
-
|
|
74
|
+
const result = (0, trace_mapping_1.originalPositionFor)(tracerFor(sourceMap), {
|
|
75
|
+
line: generatedLine,
|
|
76
|
+
column: generatedColumn,
|
|
77
|
+
});
|
|
65
78
|
if (!result.source)
|
|
66
79
|
return null;
|
|
67
80
|
return {
|
|
@@ -76,13 +89,18 @@ function symbolicate(sourceMap, generatedLine, generatedColumn) {
|
|
|
76
89
|
}
|
|
77
90
|
}
|
|
78
91
|
/**
|
|
79
|
-
* Apply source
|
|
92
|
+
* Apply source maps to all frames in a stack trace.
|
|
93
|
+
*
|
|
94
|
+
* `resolve` picks the source map for a given frame, so a stack spanning several
|
|
95
|
+
* bundles is handled by the same code path as a single-bundle one. Pass
|
|
96
|
+
* `() => map` when one map covers the whole stack.
|
|
80
97
|
*/
|
|
81
|
-
function symbolicateStackTrace(frames,
|
|
98
|
+
function symbolicateStackTrace(frames, resolve) {
|
|
82
99
|
return frames.map((frame) => {
|
|
83
100
|
if (!frame.lineNumber || !frame.columnNumber || !frame.fileName)
|
|
84
101
|
return frame;
|
|
85
|
-
|
|
102
|
+
const sourceMap = resolve(frame);
|
|
103
|
+
if (!sourceMap)
|
|
86
104
|
return frame;
|
|
87
105
|
const result = symbolicate(sourceMap, frame.lineNumber, frame.columnNumber);
|
|
88
106
|
if (!result)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symbolicate.js","sourceRoot":"","sources":["../../src/functions/symbolicate.ts"],"names":[],"mappings":";;AAeA,0CAkDC;
|
|
1
|
+
{"version":3,"file":"symbolicate.js","sourceRoot":"","sources":["../../src/functions/symbolicate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ErrorPayload } from './types';
|
|
2
|
+
/** Coerce an unknown thrown value into an Error. */
|
|
3
|
+
export declare function toError(raw: unknown): Error;
|
|
4
|
+
/** Build the wire-shape error payload logged under `jsonPayload.error`. */
|
|
5
|
+
export declare function toErrorPayload(error: Error): ErrorPayload;
|
|
6
|
+
//# sourceMappingURL=error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/shared/error.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAE3C,oDAAoD;AACpD,wBAAgB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,KAAK,CAE3C;AAED,2EAA2E;AAC3E,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,YAAY,CAOzD"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toError = toError;
|
|
4
|
+
exports.toErrorPayload = toErrorPayload;
|
|
5
|
+
/** Coerce an unknown thrown value into an Error. */
|
|
6
|
+
function toError(raw) {
|
|
7
|
+
return raw instanceof Error ? raw : new Error(String(raw));
|
|
8
|
+
}
|
|
9
|
+
/** Build the wire-shape error payload logged under `jsonPayload.error`. */
|
|
10
|
+
function toErrorPayload(error) {
|
|
11
|
+
return {
|
|
12
|
+
message: error.message,
|
|
13
|
+
stack: error.stack,
|
|
14
|
+
name: error.name,
|
|
15
|
+
cause: error.cause != null ? String(error.cause) : undefined,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/shared/error.ts"],"names":[],"mappings":";;AAGA,0BAEC;AAGD,wCAOC;AAbD,oDAAoD;AACpD,SAAgB,OAAO,CAAC,GAAY;IAClC,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;AAC5D,CAAC;AAED,2EAA2E;AAC3E,SAAgB,cAAc,CAAC,KAAY;IACzC,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;KAC7D,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { LogSeverity } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Single source of truth for severity ranking. Lower number = more severe.
|
|
4
|
+
* Both the client and functions loggers filter against this, so a change here
|
|
5
|
+
* keeps min-level behaviour consistent on both sides of the wire.
|
|
6
|
+
*/
|
|
7
|
+
export declare const SEVERITY_ORDER: Record<LogSeverity, number>;
|
|
8
|
+
export declare const SEVERITIES: LogSeverity[];
|
|
9
|
+
//# sourceMappingURL=severity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"severity.d.ts","sourceRoot":"","sources":["../../src/shared/severity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAKtD,CAAA;AAED,eAAO,MAAM,UAAU,EAAkC,WAAW,EAAE,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SEVERITIES = exports.SEVERITY_ORDER = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Single source of truth for severity ranking. Lower number = more severe.
|
|
6
|
+
* Both the client and functions loggers filter against this, so a change here
|
|
7
|
+
* keeps min-level behaviour consistent on both sides of the wire.
|
|
8
|
+
*/
|
|
9
|
+
exports.SEVERITY_ORDER = {
|
|
10
|
+
ERROR: 0,
|
|
11
|
+
WARNING: 1,
|
|
12
|
+
INFO: 2,
|
|
13
|
+
DEBUG: 3,
|
|
14
|
+
};
|
|
15
|
+
exports.SEVERITIES = Object.keys(exports.SEVERITY_ORDER);
|
|
16
|
+
//# sourceMappingURL=severity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"severity.js","sourceRoot":"","sources":["../../src/shared/severity.ts"],"names":[],"mappings":";;;AAEA;;;;GAIG;AACU,QAAA,cAAc,GAAgC;IACzD,KAAK,EAAE,CAAC;IACR,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;CACT,CAAA;AAEY,QAAA,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,sBAAc,CAAkB,CAAA"}
|
package/dist/shared/types.d.ts
CHANGED
|
@@ -10,6 +10,12 @@ export interface BaseLabels {
|
|
|
10
10
|
errorCategory?: string;
|
|
11
11
|
activity?: string;
|
|
12
12
|
}
|
|
13
|
+
export interface ErrorPayload {
|
|
14
|
+
message: string;
|
|
15
|
+
stack?: string;
|
|
16
|
+
name?: string;
|
|
17
|
+
cause?: string;
|
|
18
|
+
}
|
|
13
19
|
export interface LogPayload {
|
|
14
20
|
message: string;
|
|
15
21
|
severity: LogSeverity;
|
|
@@ -17,12 +23,7 @@ export interface LogPayload {
|
|
|
17
23
|
jsonPayload?: {
|
|
18
24
|
breadcrumbs?: BreadcrumbEntry[];
|
|
19
25
|
context?: Record<string, unknown>;
|
|
20
|
-
error?:
|
|
21
|
-
message: string;
|
|
22
|
-
stack?: string;
|
|
23
|
-
name?: string;
|
|
24
|
-
cause?: string;
|
|
25
|
-
};
|
|
26
|
+
error?: ErrorPayload;
|
|
26
27
|
};
|
|
27
28
|
/** Base64-encoded attachments keyed by name. Uploaded to GCS, stripped before writing to Cloud Logging. */
|
|
28
29
|
attachments?: Record<string, string>;
|