ugly-app 0.1.129 → 0.1.131
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/dist/cli/serverLogQuery.d.ts.map +1 -1
- package/dist/cli/serverLogQuery.js +45 -10
- package/dist/cli/serverLogQuery.js.map +1 -1
- package/dist/cli/version.d.ts +1 -1
- package/dist/cli/version.js +1 -1
- package/package.json +1 -1
- package/src/cli/serverLogQuery.ts +49 -11
- package/src/cli/version.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serverLogQuery.d.ts","sourceRoot":"","sources":["../../src/cli/serverLogQuery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"serverLogQuery.d.ts","sourceRoot":"","sources":["../../src/cli/serverLogQuery.ts"],"names":[],"mappings":"AAmGA,wBAAsB,eAAe,CACnC,UAAU,EAAE,UAAU,GAAG,SAAS,GAAG,gBAAgB,EACrD,OAAO,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3E,OAAO,CAAC,IAAI,CAAC,CAwCf"}
|
|
@@ -41,20 +41,54 @@ async function getMongoUri(envFile) {
|
|
|
41
41
|
// 3. For server (.env.prod), no fallback — fail
|
|
42
42
|
throw new Error(`MONGODB_URI not found in ${envFile}. Add MONGODB_URI=<your-uri> to ${envFile}.`);
|
|
43
43
|
}
|
|
44
|
-
function
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
.
|
|
50
|
-
|
|
44
|
+
function formatTimestamp(created) {
|
|
45
|
+
if (created instanceof Date) {
|
|
46
|
+
return created.toISOString().replace('T', ' ').replace('Z', '');
|
|
47
|
+
}
|
|
48
|
+
if (typeof created === 'number') {
|
|
49
|
+
return new Date(created).toISOString().replace('T', ' ').replace('Z', '');
|
|
50
|
+
}
|
|
51
|
+
return String(created ?? '');
|
|
52
|
+
}
|
|
53
|
+
function formatErrorDoc(doc) {
|
|
54
|
+
const ts = formatTimestamp(doc['created']);
|
|
55
|
+
const level = String(doc['level'] ?? 'error').toUpperCase().padEnd(5);
|
|
56
|
+
const source = doc['source'] ? `[${doc['source']}]` : '';
|
|
51
57
|
const message = String(doc['message'] ?? '');
|
|
52
|
-
const
|
|
58
|
+
const userId = doc['userId'] ? ` user:${doc['userId']}` : '';
|
|
53
59
|
const stack = doc['stack']
|
|
54
60
|
? `\n ${String(doc['stack']).split('\n').slice(0, 3).join('\n ')}`
|
|
55
61
|
: '';
|
|
56
|
-
return `${ts} ${level} ${message}${
|
|
62
|
+
return `${ts} ${level} ${source} ${message}${userId}${stack}`;
|
|
63
|
+
}
|
|
64
|
+
function formatPerfDoc(doc) {
|
|
65
|
+
const ts = formatTimestamp(doc['created']);
|
|
66
|
+
const op = String(doc['operation'] ?? '');
|
|
67
|
+
const ms = doc['durationMs'] != null ? `${doc['durationMs']}ms` : '';
|
|
68
|
+
const userId = doc['userId'] ? ` user:${doc['userId']}` : '';
|
|
69
|
+
return `${ts} ${op} ${ms}${userId}`;
|
|
70
|
+
}
|
|
71
|
+
function formatFeedbackDoc(doc) {
|
|
72
|
+
const ts = formatTimestamp(doc['created']);
|
|
73
|
+
const type = String(doc['type'] ?? '').toUpperCase().padEnd(7);
|
|
74
|
+
const status = String(doc['status'] ?? '').padEnd(8);
|
|
75
|
+
const message = String(doc['message'] ?? '');
|
|
76
|
+
const url = doc['url'] ? `\n URL: ${doc['url']}` : '';
|
|
77
|
+
const screenshot = doc['screenshotUri']
|
|
78
|
+
? `\n Screenshot: ${doc['screenshotUri']}`
|
|
79
|
+
: '';
|
|
80
|
+
const context = doc['context'] ? `\n Context: ${doc['context']}` : '';
|
|
81
|
+
const resolution = doc['resolution']
|
|
82
|
+
? `\n Resolution: ${doc['resolution']}`
|
|
83
|
+
: '';
|
|
84
|
+
const userId = doc['userId'] ? ` user:${doc['userId']}` : '';
|
|
85
|
+
return `${ts} [${type}] ${status} ${message}${userId}${url}${screenshot}${context}${resolution}`;
|
|
57
86
|
}
|
|
87
|
+
const formatters = {
|
|
88
|
+
errorLog: formatErrorDoc,
|
|
89
|
+
perfLog: formatPerfDoc,
|
|
90
|
+
feedbackReport: formatFeedbackDoc,
|
|
91
|
+
};
|
|
58
92
|
export async function queryServerLogs(collection, options) {
|
|
59
93
|
const limit = options.limit ?? 50;
|
|
60
94
|
const uri = await getMongoUri(options.envFile);
|
|
@@ -83,7 +117,8 @@ export async function queryServerLogs(collection, options) {
|
|
|
83
117
|
console.log(JSON.stringify(doc));
|
|
84
118
|
}
|
|
85
119
|
else {
|
|
86
|
-
|
|
120
|
+
const fmt = formatters[collection] ?? formatErrorDoc;
|
|
121
|
+
console.log(fmt(doc));
|
|
87
122
|
}
|
|
88
123
|
}
|
|
89
124
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serverLogQuery.js","sourceRoot":"","sources":["../../src/cli/serverLogQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvE,2EAA2E;AAC3E,KAAK,UAAU,kBAAkB,CAAC,OAAe;IAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;IAClD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACpD,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,MAAM,KAAK,GAAG,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3D,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,uCAAuC;IACzC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,gFAAgF;AAChF,SAAS,wBAAwB;IAC/B,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACvC,OAAO,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC;AACrC,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,OAAe;IACxC,gCAAgC;IAChC,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAE5B,+DAA+D;IAC/D,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,UAAU,GAAG,wBAAwB,EAAE,CAAC;QAC9C,IAAI,UAAU;YAAE,OAAO,UAAU,CAAC;QAClC,OAAO,+BAA+B,CAAC;IACzC,CAAC;IAED,gDAAgD;IAChD,MAAM,IAAI,KAAK,CACb,4BAA4B,OAAO,mCAAmC,OAAO,GAAG,CACjF,CAAC;AACJ,CAAC;AAED,SAAS,
|
|
1
|
+
{"version":3,"file":"serverLogQuery.js","sourceRoot":"","sources":["../../src/cli/serverLogQuery.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const CLI_VERSION = "0.1.
|
|
1
|
+
export declare const CLI_VERSION = "0.1.131";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/cli/version.js
CHANGED
package/package.json
CHANGED
|
@@ -44,22 +44,59 @@ async function getMongoUri(envFile: string): Promise<string> {
|
|
|
44
44
|
);
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
function
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
47
|
+
function formatTimestamp(created: unknown): string {
|
|
48
|
+
if (created instanceof Date) {
|
|
49
|
+
return created.toISOString().replace('T', ' ').replace('Z', '');
|
|
50
|
+
}
|
|
51
|
+
if (typeof created === 'number') {
|
|
52
|
+
return new Date(created).toISOString().replace('T', ' ').replace('Z', '');
|
|
53
|
+
}
|
|
54
|
+
return String(created ?? '');
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function formatErrorDoc(doc: Record<string, unknown>): string {
|
|
58
|
+
const ts = formatTimestamp(doc['created']);
|
|
59
|
+
const level = String(doc['level'] ?? 'error').toUpperCase().padEnd(5);
|
|
60
|
+
const source = doc['source'] ? `[${doc['source']}]` : '';
|
|
55
61
|
const message = String(doc['message'] ?? '');
|
|
56
|
-
const
|
|
62
|
+
const userId = doc['userId'] ? ` user:${doc['userId']}` : '';
|
|
57
63
|
const stack = doc['stack']
|
|
58
64
|
? `\n ${String(doc['stack']).split('\n').slice(0, 3).join('\n ')}`
|
|
59
65
|
: '';
|
|
60
|
-
return `${ts} ${level} ${message}${
|
|
66
|
+
return `${ts} ${level} ${source} ${message}${userId}${stack}`;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
function formatPerfDoc(doc: Record<string, unknown>): string {
|
|
70
|
+
const ts = formatTimestamp(doc['created']);
|
|
71
|
+
const op = String(doc['operation'] ?? '');
|
|
72
|
+
const ms = doc['durationMs'] != null ? `${doc['durationMs']}ms` : '';
|
|
73
|
+
const userId = doc['userId'] ? ` user:${doc['userId']}` : '';
|
|
74
|
+
return `${ts} ${op} ${ms}${userId}`;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
function formatFeedbackDoc(doc: Record<string, unknown>): string {
|
|
78
|
+
const ts = formatTimestamp(doc['created']);
|
|
79
|
+
const type = String(doc['type'] ?? '').toUpperCase().padEnd(7);
|
|
80
|
+
const status = String(doc['status'] ?? '').padEnd(8);
|
|
81
|
+
const message = String(doc['message'] ?? '');
|
|
82
|
+
const url = doc['url'] ? `\n URL: ${doc['url']}` : '';
|
|
83
|
+
const screenshot = doc['screenshotUri']
|
|
84
|
+
? `\n Screenshot: ${doc['screenshotUri']}`
|
|
85
|
+
: '';
|
|
86
|
+
const context = doc['context'] ? `\n Context: ${doc['context']}` : '';
|
|
87
|
+
const resolution = doc['resolution']
|
|
88
|
+
? `\n Resolution: ${doc['resolution']}`
|
|
89
|
+
: '';
|
|
90
|
+
const userId = doc['userId'] ? ` user:${doc['userId']}` : '';
|
|
91
|
+
return `${ts} [${type}] ${status} ${message}${userId}${url}${screenshot}${context}${resolution}`;
|
|
61
92
|
}
|
|
62
93
|
|
|
94
|
+
const formatters: Record<string, (doc: Record<string, unknown>) => string> = {
|
|
95
|
+
errorLog: formatErrorDoc,
|
|
96
|
+
perfLog: formatPerfDoc,
|
|
97
|
+
feedbackReport: formatFeedbackDoc,
|
|
98
|
+
};
|
|
99
|
+
|
|
63
100
|
export async function queryServerLogs(
|
|
64
101
|
collection: 'errorLog' | 'perfLog' | 'feedbackReport',
|
|
65
102
|
options: { envFile: string; limit?: number; level?: string; json?: boolean },
|
|
@@ -96,7 +133,8 @@ export async function queryServerLogs(
|
|
|
96
133
|
if (options.json) {
|
|
97
134
|
console.log(JSON.stringify(doc));
|
|
98
135
|
} else {
|
|
99
|
-
|
|
136
|
+
const fmt = formatters[collection] ?? formatErrorDoc;
|
|
137
|
+
console.log(fmt(doc as Record<string, unknown>));
|
|
100
138
|
}
|
|
101
139
|
}
|
|
102
140
|
} finally {
|
package/src/cli/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Auto-generated by prebuild — do not edit manually
|
|
2
|
-
export const CLI_VERSION = "0.1.
|
|
2
|
+
export const CLI_VERSION = "0.1.131";
|