ugly-app 0.1.233 → 0.1.237
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/feedbackResolve.d.ts.map +1 -1
- package/dist/cli/feedbackResolve.js +15 -18
- package/dist/cli/feedbackResolve.js.map +1 -1
- package/dist/cli/feedbackSubmit.d.ts +1 -1
- package/dist/cli/feedbackSubmit.d.ts.map +1 -1
- package/dist/cli/feedbackSubmit.js +48 -50
- package/dist/cli/feedbackSubmit.js.map +1 -1
- package/dist/cli/serverLogQueryApi.d.ts.map +1 -1
- package/dist/cli/serverLogQueryApi.js +47 -16
- package/dist/cli/serverLogQueryApi.js.map +1 -1
- package/dist/cli/version.d.ts +1 -1
- package/dist/cli/version.js +1 -1
- package/dist/client/AppApi.d.ts +17 -0
- package/dist/client/AppApi.d.ts.map +1 -0
- package/dist/client/AppApi.js +44 -0
- package/dist/client/AppApi.js.map +1 -0
- package/dist/client/Logger.d.ts +3 -4
- package/dist/client/Logger.d.ts.map +1 -1
- package/dist/client/Logger.js +17 -13
- package/dist/client/Logger.js.map +1 -1
- package/dist/client/components/FeedbackButton.d.ts +1 -8
- package/dist/client/components/FeedbackButton.d.ts.map +1 -1
- package/dist/client/components/FeedbackButton.js +20 -16
- package/dist/client/components/FeedbackButton.js.map +1 -1
- package/dist/collab/client/CollabProvider.d.ts +36 -0
- package/dist/collab/client/CollabProvider.d.ts.map +1 -0
- package/dist/collab/client/CollabProvider.js +152 -0
- package/dist/collab/client/CollabProvider.js.map +1 -0
- package/dist/collab/client/collabUtils.d.ts +3 -0
- package/dist/collab/client/collabUtils.d.ts.map +1 -0
- package/dist/collab/client/collabUtils.js +17 -0
- package/dist/collab/client/collabUtils.js.map +1 -0
- package/dist/collab/client/index.d.ts +5 -0
- package/dist/collab/client/index.d.ts.map +1 -0
- package/dist/collab/client/index.js +4 -0
- package/dist/collab/client/index.js.map +1 -0
- package/dist/collab/client/useCollab.d.ts +14 -0
- package/dist/collab/client/useCollab.d.ts.map +1 -0
- package/dist/collab/client/useCollab.js +38 -0
- package/dist/collab/client/useCollab.js.map +1 -0
- package/dist/collab/server/CollabServer.d.ts +64 -0
- package/dist/collab/server/CollabServer.d.ts.map +1 -0
- package/dist/collab/server/CollabServer.js +381 -0
- package/dist/collab/server/CollabServer.js.map +1 -0
- package/dist/collab/server/index.d.ts +20 -0
- package/dist/collab/server/index.d.ts.map +1 -0
- package/dist/collab/server/index.js +21 -0
- package/dist/collab/server/index.js.map +1 -0
- package/dist/collab/shared/CollabTypes.d.ts +31 -0
- package/dist/collab/shared/CollabTypes.d.ts.map +1 -0
- package/dist/collab/shared/CollabTypes.js +3 -0
- package/dist/collab/shared/CollabTypes.js.map +1 -0
- package/dist/server/App.d.ts.map +1 -1
- package/dist/server/App.js +1 -66
- package/dist/server/App.js.map +1 -1
- package/dist/server/Auth.d.ts.map +1 -1
- package/dist/server/Auth.js +1 -44
- package/dist/server/Auth.js.map +1 -1
- package/dist/server/Email.d.ts +4 -7
- package/dist/server/Email.d.ts.map +1 -1
- package/dist/server/Email.js +26 -37
- package/dist/server/Email.js.map +1 -1
- package/dist/server/Logging.d.ts +3 -4
- package/dist/server/Logging.d.ts.map +1 -1
- package/dist/server/Logging.js +80 -91
- package/dist/server/Logging.js.map +1 -1
- package/dist/server/PostgresFilter.d.ts.map +1 -1
- package/dist/server/PostgresFilter.js +13 -3
- package/dist/server/PostgresFilter.js.map +1 -1
- package/dist/server/index.d.ts +3 -4
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +4 -3
- package/dist/server/index.js.map +1 -1
- package/dist/server/vector.d.ts +58 -0
- package/dist/server/vector.d.ts.map +1 -0
- package/dist/server/vector.js +300 -0
- package/dist/server/vector.js.map +1 -0
- package/dist/shared/DB.d.ts +3 -86
- package/dist/shared/DB.d.ts.map +1 -1
- package/dist/shared/DB.js +1 -9
- package/dist/shared/DB.js.map +1 -1
- package/dist/shared/FrameworkRequests.d.ts +0 -31
- package/dist/shared/FrameworkRequests.d.ts.map +1 -1
- package/dist/shared/FrameworkRequests.js +0 -27
- package/dist/shared/FrameworkRequests.js.map +1 -1
- package/package.json +10 -3
- package/src/cli/feedbackResolve.ts +22 -22
- package/src/cli/feedbackSubmit.ts +55 -60
- package/src/cli/serverLogQueryApi.ts +53 -19
- package/src/cli/version.ts +1 -1
- package/src/client/AppApi.ts +56 -0
- package/src/client/Logger.ts +18 -14
- package/src/client/components/FeedbackButton.tsx +23 -23
- package/src/collab/client/CollabProvider.ts +187 -0
- package/src/collab/client/collabUtils.ts +18 -0
- package/src/collab/client/index.ts +12 -0
- package/src/collab/client/useCollab.ts +56 -0
- package/src/collab/server/CollabServer.ts +530 -0
- package/src/collab/server/index.ts +36 -0
- package/src/collab/shared/CollabTypes.ts +44 -0
- package/src/server/App.ts +0 -70
- package/src/server/Auth.ts +2 -56
- package/src/server/Email.ts +28 -43
- package/src/server/Logging.ts +96 -96
- package/src/server/PostgresFilter.ts +11 -3
- package/src/server/index.ts +24 -17
- package/src/server/vector.ts +380 -0
- package/src/shared/DB.ts +1 -9
- package/src/shared/FrameworkRequests.ts +0 -31
- package/src/shared/index.ts +0 -1
- package/src/server/ErrorLogAdmin.ts +0 -221
- package/src/server/FeedbackReport.ts +0 -109
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedbackResolve.d.ts","sourceRoot":"","sources":["../../src/cli/feedbackResolve.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;CACpB;
|
|
1
|
+
{"version":3,"file":"feedbackResolve.d.ts","sourceRoot":"","sources":["../../src/cli/feedbackResolve.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;CACpB;AAsBD,wBAAsB,eAAe,CACnC,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAwBf"}
|
|
@@ -1,32 +1,29 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
|
+
import os from 'node:os';
|
|
2
3
|
import path from 'node:path';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
envContent = fs.readFileSync(path.join(process.cwd(), '.env'), 'utf-8');
|
|
4
|
+
function readAuth() {
|
|
5
|
+
const authPath = path.join(os.homedir(), '.ugly-bot', 'auth.json');
|
|
6
|
+
if (!fs.existsSync(authPath)) {
|
|
7
|
+
throw new Error('Not logged in. Run "ugly-app login" first.');
|
|
8
8
|
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
if (!match?.[1]) {
|
|
14
|
-
throw new Error('UGLY_BOT_TOKEN not found in .env. Run "npx ugly-app login" first.');
|
|
15
|
-
}
|
|
16
|
-
return match[1];
|
|
9
|
+
return JSON.parse(fs.readFileSync(authPath, 'utf-8'));
|
|
10
|
+
}
|
|
11
|
+
function getAppApiUrl() {
|
|
12
|
+
return process.env['UGLY_BOT_API'] ?? 'https://ugly.bot';
|
|
17
13
|
}
|
|
18
14
|
export async function resolveFeedback(opts) {
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
const res = await fetch(`${
|
|
15
|
+
const appApiUrl = getAppApiUrl();
|
|
16
|
+
const auth = readAuth();
|
|
17
|
+
const res = await fetch(`${appApiUrl}/request`, {
|
|
22
18
|
method: 'POST',
|
|
23
19
|
headers: {
|
|
24
|
-
'Authorization': `Bearer ${token}`,
|
|
20
|
+
'Authorization': `Bearer ${auth.token}`,
|
|
25
21
|
'Content-Type': 'application/json',
|
|
26
22
|
},
|
|
27
23
|
body: JSON.stringify({
|
|
24
|
+
function: 'feedbackReportResolve',
|
|
28
25
|
input: {
|
|
29
|
-
|
|
26
|
+
feedbackReportId: opts.feedbackId,
|
|
30
27
|
status: opts.status,
|
|
31
28
|
resolution: opts.resolution,
|
|
32
29
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedbackResolve.js","sourceRoot":"","sources":["../../src/cli/feedbackResolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,
|
|
1
|
+
{"version":3,"file":"feedbackResolve.js","sourceRoot":"","sources":["../../src/cli/feedbackResolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAc7B,SAAS,QAAQ;IACf,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IACnE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CACb,4CAA4C,CAC7C,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAe,CAAC;AACtE,CAAC;AAED,SAAS,YAAY;IACnB,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,kBAAkB,CAAC;AAC3D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAA4B;IAE5B,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;IAExB,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,SAAS,UAAU,EAAE;QAC9C,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,eAAe,EAAE,UAAU,IAAI,CAAC,KAAK,EAAE;YACvC,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,QAAQ,EAAE,uBAAuB;YACjC,KAAK,EAAE;gBACL,gBAAgB,EAAE,IAAI,CAAC,UAAU;gBACjC,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,UAAU,EAAE,IAAI,CAAC,UAAU;aAC5B;SACF,CAAC;KACH,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,+BAA+B,GAAG,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC;IACvE,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedbackSubmit.d.ts","sourceRoot":"","sources":["../../src/cli/feedbackSubmit.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"feedbackSubmit.d.ts","sourceRoot":"","sources":["../../src/cli/feedbackSubmit.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA0BD,wBAAsB,cAAc,CAClC,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,CAoEzB"}
|
|
@@ -1,80 +1,77 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
|
+
import os from 'node:os';
|
|
2
3
|
import path from 'node:path';
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
if (!fs.existsSync(filePath)) {
|
|
9
|
-
throw new Error(`Screenshot file not found: ${filePath}`);
|
|
4
|
+
import { readUglyAppConfig } from './uglyappConfig.js';
|
|
5
|
+
function readAuth() {
|
|
6
|
+
const authPath = path.join(os.homedir(), '.ugly-bot', 'auth.json');
|
|
7
|
+
try {
|
|
8
|
+
return JSON.parse(fs.readFileSync(authPath, 'utf-8'));
|
|
10
9
|
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
method: 'POST',
|
|
14
|
-
headers: {
|
|
15
|
-
'Authorization': `Bearer ${token}`,
|
|
16
|
-
'Content-Type': 'application/json',
|
|
17
|
-
},
|
|
18
|
-
body: JSON.stringify({
|
|
19
|
-
input: { key, contentType: `image/${ext}` },
|
|
20
|
-
}),
|
|
21
|
-
});
|
|
22
|
-
if (!presignRes.ok) {
|
|
23
|
-
throw new Error(`Failed to get upload URL: ${presignRes.status}`);
|
|
10
|
+
catch {
|
|
11
|
+
return null;
|
|
24
12
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
});
|
|
33
|
-
if (!uploadRes.ok) {
|
|
34
|
-
throw new Error(`Failed to upload screenshot: ${uploadRes.status}`);
|
|
35
|
-
}
|
|
36
|
-
return resultUrl;
|
|
13
|
+
}
|
|
14
|
+
function getAppApiUrl() {
|
|
15
|
+
return process.env['UGLY_BOT_API'] ?? 'https://ugly.bot';
|
|
16
|
+
}
|
|
17
|
+
function getProjectId() {
|
|
18
|
+
const config = readUglyAppConfig(process.cwd());
|
|
19
|
+
return process.env['UGLY_BOT_PROJECT_ID'] ?? config?.projectId ?? 'unknown';
|
|
37
20
|
}
|
|
38
21
|
export async function submitFeedback(opts) {
|
|
39
|
-
const
|
|
40
|
-
|
|
22
|
+
const appApiUrl = getAppApiUrl();
|
|
23
|
+
const projectId = getProjectId();
|
|
24
|
+
const auth = readAuth();
|
|
25
|
+
let screenshotBase64;
|
|
41
26
|
if (opts.screenshot) {
|
|
42
|
-
|
|
27
|
+
if (!fs.existsSync(opts.screenshot)) {
|
|
28
|
+
throw new Error(`Screenshot file not found: ${opts.screenshot}`);
|
|
29
|
+
}
|
|
30
|
+
screenshotBase64 = fs.readFileSync(opts.screenshot).toString('base64');
|
|
43
31
|
}
|
|
44
|
-
let
|
|
32
|
+
let logs = [];
|
|
45
33
|
if (opts.logs) {
|
|
46
34
|
try {
|
|
47
|
-
|
|
35
|
+
logs = JSON.parse(opts.logs);
|
|
48
36
|
}
|
|
49
37
|
catch {
|
|
50
38
|
throw new Error(`--logs must be valid JSON: ${opts.logs.slice(0, 100)}`);
|
|
51
39
|
}
|
|
52
40
|
}
|
|
53
|
-
let
|
|
41
|
+
let context;
|
|
54
42
|
if (opts.elementMap) {
|
|
55
43
|
try {
|
|
56
44
|
const raw = fs.readFileSync(opts.elementMap, 'utf-8');
|
|
57
45
|
JSON.parse(raw); // validate it's valid JSON
|
|
58
|
-
|
|
46
|
+
context = { elementMap: raw };
|
|
59
47
|
}
|
|
60
48
|
catch (e) {
|
|
61
49
|
throw new Error(`--element-map must be a valid JSON file: ${e.message}`);
|
|
62
50
|
}
|
|
63
51
|
}
|
|
64
|
-
const
|
|
52
|
+
const headers = {
|
|
53
|
+
'Content-Type': 'application/json',
|
|
54
|
+
};
|
|
55
|
+
const token = opts.token ?? auth?.token;
|
|
56
|
+
if (token)
|
|
57
|
+
headers['Authorization'] = `Bearer ${token}`;
|
|
58
|
+
const fn = token ? 'feedbackReportCreate' : 'feedbackReportCreateNoAuth';
|
|
59
|
+
const res = await fetch(`${appApiUrl}/request`, {
|
|
65
60
|
method: 'POST',
|
|
66
|
-
headers
|
|
67
|
-
'Authorization': `Bearer ${opts.token}`,
|
|
68
|
-
'Content-Type': 'application/json',
|
|
69
|
-
},
|
|
61
|
+
headers,
|
|
70
62
|
body: JSON.stringify({
|
|
63
|
+
function: fn,
|
|
71
64
|
input: {
|
|
65
|
+
projectId,
|
|
66
|
+
description: opts.message,
|
|
72
67
|
type: opts.type,
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
68
|
+
url: opts.url ?? '',
|
|
69
|
+
screenshotBase64,
|
|
70
|
+
logs: logs.map((l) => ({
|
|
71
|
+
...l,
|
|
72
|
+
args: [],
|
|
73
|
+
})),
|
|
74
|
+
context,
|
|
78
75
|
},
|
|
79
76
|
}),
|
|
80
77
|
});
|
|
@@ -82,6 +79,7 @@ export async function submitFeedback(opts) {
|
|
|
82
79
|
const body = await res.text().catch(() => '');
|
|
83
80
|
throw new Error(`Failed to submit feedback: ${res.status} ${body}`);
|
|
84
81
|
}
|
|
85
|
-
|
|
82
|
+
const data = (await res.json());
|
|
83
|
+
return { id: data.result.feedbackReportId };
|
|
86
84
|
}
|
|
87
85
|
//# sourceMappingURL=feedbackSubmit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedbackSubmit.js","sourceRoot":"","sources":["../../src/cli/feedbackSubmit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"feedbackSubmit.js","sourceRoot":"","sources":["../../src/cli/feedbackSubmit.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serverLogQueryApi.d.ts","sourceRoot":"","sources":["../../src/cli/serverLogQueryApi.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"serverLogQueryApi.d.ts","sourceRoot":"","sources":["../../src/cli/serverLogQueryApi.ts"],"names":[],"mappings":"AAiIA,KAAK,eAAe,GAAG,UAAU,GAAG,SAAS,GAAG,gBAAgB,CAAC;AAEjE,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,eAAe,EAC3B,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAC1D,OAAO,CAAC,IAAI,CAAC,CAoDf"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import os from 'os';
|
|
4
|
+
import { readUglyAppConfig } from './uglyappConfig.js';
|
|
4
5
|
function readAuth() {
|
|
5
6
|
const authPath = path.join(os.homedir(), '.ugly-bot', 'auth.json');
|
|
6
7
|
if (!fs.existsSync(authPath)) {
|
|
@@ -8,15 +9,23 @@ function readAuth() {
|
|
|
8
9
|
}
|
|
9
10
|
return JSON.parse(fs.readFileSync(authPath, 'utf-8'));
|
|
10
11
|
}
|
|
12
|
+
function getAppApiUrl() {
|
|
13
|
+
return process.env['UGLY_BOT_API'] ?? 'https://ugly.bot';
|
|
14
|
+
}
|
|
15
|
+
function getProjectId() {
|
|
16
|
+
const config = readUglyAppConfig(process.cwd());
|
|
17
|
+
return process.env['UGLY_BOT_PROJECT_ID'] ?? config?.projectId ?? undefined;
|
|
18
|
+
}
|
|
11
19
|
async function adminRequest(op, input) {
|
|
12
20
|
const auth = readAuth();
|
|
13
|
-
const
|
|
21
|
+
const appApiUrl = getAppApiUrl();
|
|
22
|
+
const res = await fetch(`${appApiUrl}/request`, {
|
|
14
23
|
method: 'POST',
|
|
15
24
|
headers: {
|
|
16
25
|
'Authorization': `Bearer ${auth.token}`,
|
|
17
26
|
'Content-Type': 'application/json',
|
|
18
27
|
},
|
|
19
|
-
body: JSON.stringify({ op, input }),
|
|
28
|
+
body: JSON.stringify({ function: op, input }),
|
|
20
29
|
});
|
|
21
30
|
if (!res.ok) {
|
|
22
31
|
const body = await res.text().catch(() => '');
|
|
@@ -61,7 +70,7 @@ function formatPerfDoc(doc) {
|
|
|
61
70
|
function formatFeedbackDoc(doc) {
|
|
62
71
|
const ts = formatTimestamp(doc['created']);
|
|
63
72
|
const type = String(doc['type'] ?? '').toUpperCase().padEnd(7);
|
|
64
|
-
const message = String(doc['message'] ?? '');
|
|
73
|
+
const message = String(doc['description'] ?? doc['message'] ?? '');
|
|
65
74
|
const lines = [`${ts} [${type}] ${message}`];
|
|
66
75
|
if (doc['status'])
|
|
67
76
|
lines.push(` Status: ${doc['status']}`);
|
|
@@ -71,12 +80,15 @@ function formatFeedbackDoc(doc) {
|
|
|
71
80
|
lines.push(` URL: ${doc['url']}`);
|
|
72
81
|
if (doc['screenshotUri'])
|
|
73
82
|
lines.push(` Screenshot: ${doc['screenshotUri']}`);
|
|
74
|
-
const ctx =
|
|
75
|
-
if (ctx &&
|
|
76
|
-
|
|
83
|
+
const ctx = doc['context'];
|
|
84
|
+
if (ctx && typeof ctx === 'object') {
|
|
85
|
+
const ctxStr = JSON.stringify(ctx);
|
|
86
|
+
if (ctxStr !== '{}')
|
|
87
|
+
lines.push(` Context: ${ctxStr}`);
|
|
88
|
+
}
|
|
77
89
|
if (doc['resolution'])
|
|
78
90
|
lines.push(` Resolution: ${doc['resolution']}`);
|
|
79
|
-
const previousLogs = doc['previousLogs'];
|
|
91
|
+
const previousLogs = doc['logs'] ?? doc['previousLogs'];
|
|
80
92
|
if (Array.isArray(previousLogs) && previousLogs.length > 0) {
|
|
81
93
|
lines.push(` Console logs (${previousLogs.length}):`);
|
|
82
94
|
for (const entry of previousLogs) {
|
|
@@ -93,17 +105,36 @@ const formatters = {
|
|
|
93
105
|
perfLog: formatPerfDoc,
|
|
94
106
|
feedbackReport: formatFeedbackDoc,
|
|
95
107
|
};
|
|
96
|
-
const opMap = {
|
|
97
|
-
errorLog: 'adminGetErrorLogs',
|
|
98
|
-
perfLog: 'adminGetPerfLogs',
|
|
99
|
-
feedbackReport: 'adminGetFeedbackLogs',
|
|
100
|
-
};
|
|
101
108
|
export async function queryServerLogsApi(collection, options) {
|
|
102
109
|
const limit = options.limit ?? 50;
|
|
103
|
-
const
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
110
|
+
const projectId = getProjectId();
|
|
111
|
+
let items;
|
|
112
|
+
if (collection === 'errorLog') {
|
|
113
|
+
const input = { limit };
|
|
114
|
+
if (options.level)
|
|
115
|
+
input['level'] = options.level;
|
|
116
|
+
if (projectId)
|
|
117
|
+
input['projectId'] = projectId;
|
|
118
|
+
const result = await adminRequest('errorLogGetList', input);
|
|
119
|
+
items = result.errors;
|
|
120
|
+
}
|
|
121
|
+
else if (collection === 'feedbackReport') {
|
|
122
|
+
// Use errorLogGetList with feedback filter or a dedicated endpoint
|
|
123
|
+
// For now, query the admin API directly
|
|
124
|
+
const input = { limit };
|
|
125
|
+
if (projectId)
|
|
126
|
+
input['projectId'] = projectId;
|
|
127
|
+
const result = await adminRequest('adminGetFeedbackLogs', input);
|
|
128
|
+
items = result.items;
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
// perfLog — still uses the old admin API
|
|
132
|
+
const input = { limit };
|
|
133
|
+
if (options.level)
|
|
134
|
+
input['level'] = options.level;
|
|
135
|
+
const result = await adminRequest('adminGetPerfLogs', input);
|
|
136
|
+
items = result.items;
|
|
137
|
+
}
|
|
107
138
|
// Reverse so oldest first (server returns newest first)
|
|
108
139
|
items.reverse();
|
|
109
140
|
if (items.length === 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serverLogQueryApi.js","sourceRoot":"","sources":["../../src/cli/serverLogQueryApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"serverLogQueryApi.js","sourceRoot":"","sources":["../../src/cli/serverLogQueryApi.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.237";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/cli/version.js
CHANGED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client-side HTTP helper for calling ugly.bot (../app) API directly.
|
|
3
|
+
* Used by FeedbackButton and Logger to send data to the centralized backend.
|
|
4
|
+
*/
|
|
5
|
+
export declare function initAppApi(opts: {
|
|
6
|
+
appApiUrl: string;
|
|
7
|
+
projectId: string;
|
|
8
|
+
getToken?: () => string | null;
|
|
9
|
+
}): void;
|
|
10
|
+
export declare function getAppApiProjectId(): string;
|
|
11
|
+
export declare function isAppApiInitialized(): boolean;
|
|
12
|
+
export declare function appApiRequest(fn: string, input: Record<string, unknown>): Promise<unknown>;
|
|
13
|
+
/**
|
|
14
|
+
* Fire-and-forget version — never throws. Used by Logger.
|
|
15
|
+
*/
|
|
16
|
+
export declare function appApiRequestSilent(fn: string, input: Record<string, unknown>): void;
|
|
17
|
+
//# sourceMappingURL=AppApi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppApi.d.ts","sourceRoot":"","sources":["../../src/client/AppApi.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,wBAAgB,UAAU,CAAC,IAAI,EAAE;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CAChC,GAAG,IAAI,CAIP;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AAED,wBAAsB,aAAa,CACjC,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,OAAO,CAAC,CAclB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,IAAI,CAGN"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client-side HTTP helper for calling ugly.bot (../app) API directly.
|
|
3
|
+
* Used by FeedbackButton and Logger to send data to the centralized backend.
|
|
4
|
+
*/
|
|
5
|
+
let _appApiUrl = '';
|
|
6
|
+
let _projectId = '';
|
|
7
|
+
let _getToken = null;
|
|
8
|
+
export function initAppApi(opts) {
|
|
9
|
+
_appApiUrl = opts.appApiUrl.replace(/\/$/, '');
|
|
10
|
+
_projectId = opts.projectId;
|
|
11
|
+
_getToken = opts.getToken ?? null;
|
|
12
|
+
}
|
|
13
|
+
export function getAppApiProjectId() {
|
|
14
|
+
return _projectId;
|
|
15
|
+
}
|
|
16
|
+
export function isAppApiInitialized() {
|
|
17
|
+
return _appApiUrl !== '' && _projectId !== '';
|
|
18
|
+
}
|
|
19
|
+
export async function appApiRequest(fn, input) {
|
|
20
|
+
const token = _getToken?.();
|
|
21
|
+
const headers = { 'Content-Type': 'application/json' };
|
|
22
|
+
if (token)
|
|
23
|
+
headers['Authorization'] = `Bearer ${token}`;
|
|
24
|
+
const res = await fetch(`${_appApiUrl}/request`, {
|
|
25
|
+
method: 'POST',
|
|
26
|
+
headers,
|
|
27
|
+
body: JSON.stringify({
|
|
28
|
+
function: fn,
|
|
29
|
+
input: { ...input, projectId: _projectId },
|
|
30
|
+
}),
|
|
31
|
+
});
|
|
32
|
+
if (!res.ok)
|
|
33
|
+
throw new Error(`AppApi ${fn}: ${res.status}`);
|
|
34
|
+
return res.json();
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Fire-and-forget version — never throws. Used by Logger.
|
|
38
|
+
*/
|
|
39
|
+
export function appApiRequestSilent(fn, input) {
|
|
40
|
+
if (!_appApiUrl || !_projectId)
|
|
41
|
+
return;
|
|
42
|
+
appApiRequest(fn, input).catch(() => { });
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=AppApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppApi.js","sourceRoot":"","sources":["../../src/client/AppApi.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,IAAI,UAAU,GAAG,EAAE,CAAC;AACpB,IAAI,UAAU,GAAG,EAAE,CAAC;AACpB,IAAI,SAAS,GAAiC,IAAI,CAAC;AAEnD,MAAM,UAAU,UAAU,CAAC,IAI1B;IACC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC/C,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;IAC5B,SAAS,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,UAAU,KAAK,EAAE,IAAI,UAAU,KAAK,EAAE,CAAC;AAChD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,EAAU,EACV,KAA8B;IAE9B,MAAM,KAAK,GAAG,SAAS,EAAE,EAAE,CAAC;IAC5B,MAAM,OAAO,GAA2B,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;IAC/E,IAAI,KAAK;QAAE,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,KAAK,EAAE,CAAC;IACxD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,UAAU,UAAU,EAAE;QAC/C,MAAM,EAAE,MAAM;QACd,OAAO;QACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,QAAQ,EAAE,EAAE;YACZ,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE;SAC3C,CAAC;KACH,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,UAAU,EAAE,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5D,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,EAAU,EACV,KAA8B;IAE9B,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU;QAAE,OAAO;IACvC,aAAa,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AAC3C,CAAC"}
|
package/dist/client/Logger.d.ts
CHANGED
|
@@ -5,9 +5,8 @@ import type { ErrorLogEntry } from '../shared/DB.js';
|
|
|
5
5
|
*/
|
|
6
6
|
export declare function getConsoleBuffer(): ErrorLogEntry[];
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* and logs are sent to the relative `/logs/client` path by default.
|
|
8
|
+
* No-op for backward compatibility — Logger now uses AppApi for flushing.
|
|
9
|
+
* Call initAppApi() instead to configure the API endpoint.
|
|
11
10
|
*/
|
|
12
|
-
export declare function initClientLogger(
|
|
11
|
+
export declare function initClientLogger(_serverUrl?: string): void;
|
|
13
12
|
//# sourceMappingURL=Logger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../../src/client/Logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../../src/client/Logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,iBAAiB,CAAC;AAkJpE;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,EAAE,CAElD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,SAAK,GAAG,IAAI,CAEtD"}
|
package/dist/client/Logger.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { appApiRequestSilent, isAppApiInitialized } from './AppApi.js';
|
|
1
2
|
// Module-level state
|
|
2
|
-
let _serverUrl = '';
|
|
3
3
|
let _intercepted = false;
|
|
4
4
|
const MAX_BUFFER = 100;
|
|
5
5
|
const consoleBuffer = [];
|
|
@@ -23,15 +23,20 @@ function addToBuffer(level, args) {
|
|
|
23
23
|
consoleBuffer.shift();
|
|
24
24
|
}
|
|
25
25
|
function flush() {
|
|
26
|
-
if (sendBuffer.length === 0)
|
|
26
|
+
if (sendBuffer.length === 0 || !isAppApiInitialized())
|
|
27
27
|
return;
|
|
28
28
|
const entries = sendBuffer.splice(0);
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
29
|
+
appApiRequestSilent('errorLogCaptureNoAuth', {
|
|
30
|
+
entries: entries.map((e) => ({
|
|
31
|
+
level: e.level,
|
|
32
|
+
message: e.message,
|
|
33
|
+
stack: e.stack,
|
|
34
|
+
url: e.url,
|
|
35
|
+
timestamp: e.timestamp,
|
|
36
|
+
source: 'browser',
|
|
37
|
+
type: 'console',
|
|
38
|
+
})),
|
|
39
|
+
});
|
|
35
40
|
}
|
|
36
41
|
function schedule() {
|
|
37
42
|
if (flushTimer)
|
|
@@ -126,11 +131,10 @@ export function getConsoleBuffer() {
|
|
|
126
131
|
return [...consoleBuffer];
|
|
127
132
|
}
|
|
128
133
|
/**
|
|
129
|
-
*
|
|
130
|
-
*
|
|
131
|
-
* and logs are sent to the relative `/logs/client` path by default.
|
|
134
|
+
* No-op for backward compatibility — Logger now uses AppApi for flushing.
|
|
135
|
+
* Call initAppApi() instead to configure the API endpoint.
|
|
132
136
|
*/
|
|
133
|
-
export function initClientLogger(
|
|
134
|
-
|
|
137
|
+
export function initClientLogger(_serverUrl = '') {
|
|
138
|
+
// No-op — kept for backward compatibility
|
|
135
139
|
}
|
|
136
140
|
//# sourceMappingURL=Logger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../src/client/Logger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../src/client/Logger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAWvE,qBAAqB;AACrB,IAAI,YAAY,GAAG,KAAK,CAAC;AACzB,MAAM,UAAU,GAAG,GAAG,CAAC;AACvB,MAAM,aAAa,GAAoB,EAAE,CAAC;AAC1C,MAAM,UAAU,GAAqB,EAAE,CAAC;AACxC,IAAI,UAAU,GAAyC,IAAI,CAAC;AAE5D,SAAS,WAAW,CAAC,KAAoB,EAAE,IAAe;IACxD,MAAM,KAAK,GAAkB;QAC3B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,KAAK;QACL,OAAO,EAAE,IAAI;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACT,CAAC,YAAY,KAAK;YAChB,CAAC,CAAC,CAAC,CAAC,OAAO;YACX,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI;gBACnC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gBACnB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAChB;aACA,IAAI,CAAC,GAAG,CAAC;QACZ,IAAI;KACL,CAAC;IACF,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,IAAI,aAAa,CAAC,MAAM,GAAG,UAAU;QAAE,aAAa,CAAC,KAAK,EAAE,CAAC;AAC/D,CAAC;AAED,SAAS,KAAK;IACZ,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE;QAAE,OAAO;IAC9D,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACrC,mBAAmB,CAAC,uBAAuB,EAAE;QAC3C,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3B,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,MAAM,EAAE,SAAS;YACjB,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;KACJ,CAAC,CAAC;AACL,CAAC;AAED,SAAS,QAAQ;IACf,IAAI,UAAU;QAAE,OAAO;IACvB,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE;QAC3B,UAAU,GAAG,IAAI,CAAC;QAClB,KAAK,EAAE,CAAC;IACV,CAAC,EAAE,IAAI,CAAC,CAAC;AACX,CAAC;AAED,SAAS,cAAc,CAAC,KAAuB,EAAE,IAAe;IAC9D,MAAM,OAAO,GAAG,IAAI;SACjB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;SACxD,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC;QAClD,EAAE,KAAK,CAAC;IACV,UAAU,CAAC,IAAI,CAAC;QACd,KAAK;QACL,OAAO;QACP,KAAK;QACL,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;QACzB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;KACtB,CAAC,CAAC;IACH,QAAQ,EAAE,CAAC;AACb,CAAC;AAED,SAAS,gBAAgB;IACvB,IAAI,YAAY;QAAE,OAAO;IACzB,YAAY,GAAG,IAAI,CAAC;IAEpB,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAE9C,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;QACrC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;QACnB,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC3B,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC,CAAC;IACF,OAAO,CAAC,IAAI,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;QACpC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;QAClB,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC1B,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC,CAAC;IACF,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;QACnC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;QACjB,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC,CAAC;IACF,OAAO,CAAC,IAAI,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;QACpC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;QAClB,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC;IACF,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;QACrC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;QACnB,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;QACrC,MAAM,KAAK,GAAmB;YAC5B,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK;YACrB,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;YACzB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;QACF,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7C,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,QAAQ,EAAE,CAAC;IACb,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,CAAC,CAAC,EAAE,EAAE;QAClD,MAAM,OAAO,GACX,CAAC,CAAC,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAClE,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QACrE,MAAM,KAAK,GAAmB;YAC5B,KAAK,EAAE,OAAO;YACd,OAAO;YACP,KAAK;YACL,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;YACzB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;QACF,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QACjC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,QAAQ,EAAE,CAAC;IACb,CAAC,CAAC,CAAC;AACL,CAAC;AAED,+CAA+C;AAC/C,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IAClC,gBAAgB,EAAE,CAAC;AACrB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,CAAC,GAAG,aAAa,CAAC,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAAU,GAAG,EAAE;IAC9C,0CAA0C;AAC5C,CAAC"}
|
|
@@ -1,10 +1,3 @@
|
|
|
1
1
|
import { type ReactNode } from 'react';
|
|
2
|
-
|
|
3
|
-
socket: {
|
|
4
|
-
request(name: string, input: unknown): Promise<unknown>;
|
|
5
|
-
uploadFile(file: File, key: string): Promise<string>;
|
|
6
|
-
} | null;
|
|
7
|
-
}
|
|
8
|
-
export declare function FeedbackButton({ socket }: Props): ReactNode;
|
|
9
|
-
export {};
|
|
2
|
+
export declare function FeedbackButton(): ReactNode;
|
|
10
3
|
//# sourceMappingURL=FeedbackButton.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeedbackButton.d.ts","sourceRoot":"","sources":["../../../src/client/components/FeedbackButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"FeedbackButton.d.ts","sourceRoot":"","sources":["../../../src/client/components/FeedbackButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAQzD,wBAAgB,cAAc,IAAI,SAAS,CA6K1C"}
|