react-native-bug-reporter 1.0.4 → 1.1.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/lib/commonjs/services/supabaseService.js +32 -1
- package/lib/commonjs/services/supabaseService.js.map +1 -1
- package/lib/commonjs/types.js.map +1 -1
- package/lib/module/services/supabaseService.js +32 -1
- package/lib/module/services/supabaseService.js.map +1 -1
- package/lib/module/types.js.map +1 -1
- package/lib/typescript/src/services/supabaseService.d.ts +4 -0
- package/lib/typescript/src/services/supabaseService.d.ts.map +1 -1
- package/lib/typescript/src/types.d.ts +10 -0
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/services/supabaseService.ts +35 -0
- package/src/types.ts +10 -0
|
@@ -41,6 +41,7 @@ function getClient(url, anonKey) {
|
|
|
41
41
|
function mapRow(row) {
|
|
42
42
|
return {
|
|
43
43
|
id: row.id,
|
|
44
|
+
appKey: row.app_key ?? 'default',
|
|
44
45
|
title: row.title ?? '',
|
|
45
46
|
description: row.description ?? '',
|
|
46
47
|
severity: row.severity ?? 'medium',
|
|
@@ -97,6 +98,7 @@ async function insertReport(target, report) {
|
|
|
97
98
|
data,
|
|
98
99
|
error
|
|
99
100
|
} = await supabase.from(target.tableName).insert({
|
|
101
|
+
app_key: target.appKey,
|
|
100
102
|
title: report.title,
|
|
101
103
|
description: report.description,
|
|
102
104
|
severity: report.severity,
|
|
@@ -109,9 +111,35 @@ async function insertReport(target, report) {
|
|
|
109
111
|
}).select().single();
|
|
110
112
|
if (error) throw error;
|
|
111
113
|
_logger.logger.log('report inserted', data.id);
|
|
114
|
+
// Register the app (insert-if-absent) so it shows in the admin panel.
|
|
115
|
+
void ensureAppRegistered(target);
|
|
112
116
|
return mapRow(data);
|
|
113
117
|
}
|
|
114
118
|
|
|
119
|
+
/**
|
|
120
|
+
* Inserts the app into bug_report_apps if it's not there yet (without clobbering
|
|
121
|
+
* its notify_emails). Fire-and-forget — never blocks submission.
|
|
122
|
+
*/
|
|
123
|
+
async function ensureAppRegistered(target) {
|
|
124
|
+
try {
|
|
125
|
+
await fetch(`${target.supabaseUrl.replace(/\/+$/, '')}/rest/v1/bug_report_apps?on_conflict=app_key`, {
|
|
126
|
+
method: 'POST',
|
|
127
|
+
headers: {
|
|
128
|
+
apikey: target.supabaseAnonKey,
|
|
129
|
+
Authorization: `Bearer ${target.supabaseAnonKey}`,
|
|
130
|
+
'Content-Type': 'application/json',
|
|
131
|
+
Prefer: 'resolution=ignore-duplicates'
|
|
132
|
+
},
|
|
133
|
+
body: JSON.stringify({
|
|
134
|
+
app_key: target.appKey,
|
|
135
|
+
app_name: target.appName
|
|
136
|
+
})
|
|
137
|
+
});
|
|
138
|
+
} catch {
|
|
139
|
+
// ignore — not critical
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
115
143
|
/**
|
|
116
144
|
* Subscribes to the reports table (newest first). Does an initial fetch, then
|
|
117
145
|
* refetches on any realtime change. Returns an unsubscribe function.
|
|
@@ -156,11 +184,14 @@ async function updateReportStatus(target, reportId, status) {
|
|
|
156
184
|
|
|
157
185
|
/** Builds a SupabaseTarget from the SDK config (with defaults). */
|
|
158
186
|
function targetFromConfig(config) {
|
|
187
|
+
const appKey = config.appKey ?? 'default';
|
|
159
188
|
return {
|
|
160
189
|
supabaseUrl: config.supabaseUrl,
|
|
161
190
|
supabaseAnonKey: config.supabaseAnonKey,
|
|
162
191
|
tableName: config.tableName ?? 'bug_reports',
|
|
163
|
-
storageBucket: config.storageBucket ?? 'bug-reports'
|
|
192
|
+
storageBucket: config.storageBucket ?? 'bug-reports',
|
|
193
|
+
appKey,
|
|
194
|
+
appName: config.appName ?? appKey
|
|
164
195
|
};
|
|
165
196
|
}
|
|
166
197
|
//# sourceMappingURL=supabaseService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["require","_supabaseJs","_logger","client","clientKey","getClient","url","anonKey","key","createClient","auth","persistSession","autoRefreshToken","mapRow","row","id","title","description","severity","screenshotUrl","screenshot_url","screenshotPath","screenshot_path","context","status","createdAt","created_at","notifyEmails","notify_emails","undefined","uploadScreenshot","target","localUri","storagePath","Date","now","Math","floor","random","endpoint","supabaseUrl","replace","storageBucket","form","FormData","append","uri","name","type","res","fetch","method","headers","apikey","supabaseAnonKey","Authorization","body","ok","text","catch","Error","publicUrl","logger","log","insertReport","report","supabase","data","error","from","tableName","insert","select","single","subscribeToReports","onData","onError","fetchAll","order","ascending","limit","map","channel","on","event","schema","table","subscribe","removeChannel","updateReportStatus","reportId","update","eq","targetFromConfig","config"],"sourceRoot":"../../../src","sources":["services/supabaseService.ts"],"mappings":";;;;;;;;;;AAAAA,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AAEA,IAAAE,OAAA,GAAAF,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAIG,MAA6B,GAAG,IAAI;AACxC,IAAIC,SAAS,GAAG,EAAE;AAElB,SAASC,SAASA,CAACC,GAAW,EAAEC,OAAe,EAAkB;EAC/D,MAAMC,GAAG,GAAG,GAAGF,GAAG,KAAKC,OAAO,EAAE;EAChC,IAAI,CAACJ,MAAM,IAAIC,SAAS,KAAKI,GAAG,EAAE;IAChCL,MAAM,GAAG,IAAAM,wBAAY,EAACH,GAAG,EAAEC,OAAO,EAAE;MAClCG,IAAI,EAAE;QAAEC,cAAc,EAAE,KAAK;QAAEC,gBAAgB,EAAE;MAAM;IACzD,CAAC,CAAC;IACFR,SAAS,GAAGI,GAAG;EACjB;EACA,OAAOL,MAAM;AACf;
|
|
1
|
+
{"version":3,"names":["require","_supabaseJs","_logger","client","clientKey","getClient","url","anonKey","key","createClient","auth","persistSession","autoRefreshToken","mapRow","row","id","appKey","app_key","title","description","severity","screenshotUrl","screenshot_url","screenshotPath","screenshot_path","context","status","createdAt","created_at","notifyEmails","notify_emails","undefined","uploadScreenshot","target","localUri","storagePath","Date","now","Math","floor","random","endpoint","supabaseUrl","replace","storageBucket","form","FormData","append","uri","name","type","res","fetch","method","headers","apikey","supabaseAnonKey","Authorization","body","ok","text","catch","Error","publicUrl","logger","log","insertReport","report","supabase","data","error","from","tableName","insert","select","single","ensureAppRegistered","Prefer","JSON","stringify","app_name","appName","subscribeToReports","onData","onError","fetchAll","order","ascending","limit","map","channel","on","event","schema","table","subscribe","removeChannel","updateReportStatus","reportId","update","eq","targetFromConfig","config"],"sourceRoot":"../../../src","sources":["services/supabaseService.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["SEVERITIES","exports"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":";;;;;;AAAA;AACA;AACA;;AAIO,MAAMA,UAAyB,GAAAC,OAAA,CAAAD,UAAA,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC;;AAE9E;AACA;AACA;AACA;;AASA;;AAmBA;;AAUA;;AAUA;;AAWA;;AAOA;;
|
|
1
|
+
{"version":3,"names":["SEVERITIES","exports"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":";;;;;;AAAA;AACA;AACA;;AAIO,MAAMA,UAAyB,GAAAC,OAAA,CAAAD,UAAA,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC;;AAE9E;AACA;AACA;AACA;;AASA;;AAmBA;;AAUA;;AAUA;;AAWA;;AAOA;;AAcA;;AAYA;;AAUA","ignoreList":[]}
|
|
@@ -34,6 +34,7 @@ function getClient(url, anonKey) {
|
|
|
34
34
|
function mapRow(row) {
|
|
35
35
|
return {
|
|
36
36
|
id: row.id,
|
|
37
|
+
appKey: row.app_key ?? 'default',
|
|
37
38
|
title: row.title ?? '',
|
|
38
39
|
description: row.description ?? '',
|
|
39
40
|
severity: row.severity ?? 'medium',
|
|
@@ -90,6 +91,7 @@ export async function insertReport(target, report) {
|
|
|
90
91
|
data,
|
|
91
92
|
error
|
|
92
93
|
} = await supabase.from(target.tableName).insert({
|
|
94
|
+
app_key: target.appKey,
|
|
93
95
|
title: report.title,
|
|
94
96
|
description: report.description,
|
|
95
97
|
severity: report.severity,
|
|
@@ -102,9 +104,35 @@ export async function insertReport(target, report) {
|
|
|
102
104
|
}).select().single();
|
|
103
105
|
if (error) throw error;
|
|
104
106
|
logger.log('report inserted', data.id);
|
|
107
|
+
// Register the app (insert-if-absent) so it shows in the admin panel.
|
|
108
|
+
void ensureAppRegistered(target);
|
|
105
109
|
return mapRow(data);
|
|
106
110
|
}
|
|
107
111
|
|
|
112
|
+
/**
|
|
113
|
+
* Inserts the app into bug_report_apps if it's not there yet (without clobbering
|
|
114
|
+
* its notify_emails). Fire-and-forget — never blocks submission.
|
|
115
|
+
*/
|
|
116
|
+
async function ensureAppRegistered(target) {
|
|
117
|
+
try {
|
|
118
|
+
await fetch(`${target.supabaseUrl.replace(/\/+$/, '')}/rest/v1/bug_report_apps?on_conflict=app_key`, {
|
|
119
|
+
method: 'POST',
|
|
120
|
+
headers: {
|
|
121
|
+
apikey: target.supabaseAnonKey,
|
|
122
|
+
Authorization: `Bearer ${target.supabaseAnonKey}`,
|
|
123
|
+
'Content-Type': 'application/json',
|
|
124
|
+
Prefer: 'resolution=ignore-duplicates'
|
|
125
|
+
},
|
|
126
|
+
body: JSON.stringify({
|
|
127
|
+
app_key: target.appKey,
|
|
128
|
+
app_name: target.appName
|
|
129
|
+
})
|
|
130
|
+
});
|
|
131
|
+
} catch {
|
|
132
|
+
// ignore — not critical
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
108
136
|
/**
|
|
109
137
|
* Subscribes to the reports table (newest first). Does an initial fetch, then
|
|
110
138
|
* refetches on any realtime change. Returns an unsubscribe function.
|
|
@@ -149,11 +177,14 @@ export async function updateReportStatus(target, reportId, status) {
|
|
|
149
177
|
|
|
150
178
|
/** Builds a SupabaseTarget from the SDK config (with defaults). */
|
|
151
179
|
export function targetFromConfig(config) {
|
|
180
|
+
const appKey = config.appKey ?? 'default';
|
|
152
181
|
return {
|
|
153
182
|
supabaseUrl: config.supabaseUrl,
|
|
154
183
|
supabaseAnonKey: config.supabaseAnonKey,
|
|
155
184
|
tableName: config.tableName ?? 'bug_reports',
|
|
156
|
-
storageBucket: config.storageBucket ?? 'bug-reports'
|
|
185
|
+
storageBucket: config.storageBucket ?? 'bug-reports',
|
|
186
|
+
appKey,
|
|
187
|
+
appName: config.appName ?? appKey
|
|
157
188
|
};
|
|
158
189
|
}
|
|
159
190
|
//# sourceMappingURL=supabaseService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createClient","logger","client","clientKey","getClient","url","anonKey","key","auth","persistSession","autoRefreshToken","mapRow","row","id","title","description","severity","screenshotUrl","screenshot_url","screenshotPath","screenshot_path","context","status","createdAt","created_at","notifyEmails","notify_emails","undefined","uploadScreenshot","target","localUri","storagePath","Date","now","Math","floor","random","endpoint","supabaseUrl","replace","storageBucket","form","FormData","append","uri","name","type","res","fetch","method","headers","apikey","supabaseAnonKey","Authorization","body","ok","text","catch","Error","publicUrl","log","insertReport","report","supabase","data","error","from","tableName","insert","select","single","subscribeToReports","onData","onError","fetchAll","order","ascending","limit","map","channel","on","event","schema","table","subscribe","removeChannel","updateReportStatus","reportId","update","eq","targetFromConfig","config"],"sourceRoot":"../../../src","sources":["services/supabaseService.ts"],"mappings":";;AAAA,OAAO,gCAAgC;AACvC,SAASA,YAAY,QAA6B,uBAAuB;AAEzE,SAASC,MAAM,QAAQ,iBAAiB;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAIC,MAA6B,GAAG,IAAI;AACxC,IAAIC,SAAS,GAAG,EAAE;AAElB,SAASC,SAASA,CAACC,GAAW,EAAEC,OAAe,EAAkB;EAC/D,MAAMC,GAAG,GAAG,GAAGF,GAAG,KAAKC,OAAO,EAAE;EAChC,IAAI,CAACJ,MAAM,IAAIC,SAAS,KAAKI,GAAG,EAAE;IAChCL,MAAM,GAAGF,YAAY,CAACK,GAAG,EAAEC,OAAO,EAAE;MAClCE,IAAI,EAAE;QAAEC,cAAc,EAAE,KAAK;QAAEC,gBAAgB,EAAE;MAAM;IACzD,CAAC,CAAC;IACFP,SAAS,GAAGI,GAAG;EACjB;EACA,OAAOL,MAAM;AACf;
|
|
1
|
+
{"version":3,"names":["createClient","logger","client","clientKey","getClient","url","anonKey","key","auth","persistSession","autoRefreshToken","mapRow","row","id","appKey","app_key","title","description","severity","screenshotUrl","screenshot_url","screenshotPath","screenshot_path","context","status","createdAt","created_at","notifyEmails","notify_emails","undefined","uploadScreenshot","target","localUri","storagePath","Date","now","Math","floor","random","endpoint","supabaseUrl","replace","storageBucket","form","FormData","append","uri","name","type","res","fetch","method","headers","apikey","supabaseAnonKey","Authorization","body","ok","text","catch","Error","publicUrl","log","insertReport","report","supabase","data","error","from","tableName","insert","select","single","ensureAppRegistered","Prefer","JSON","stringify","app_name","appName","subscribeToReports","onData","onError","fetchAll","order","ascending","limit","map","channel","on","event","schema","table","subscribe","removeChannel","updateReportStatus","reportId","update","eq","targetFromConfig","config"],"sourceRoot":"../../../src","sources":["services/supabaseService.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/module/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["SEVERITIES"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":";;AAAA;AACA;AACA;;AAIA,OAAO,MAAMA,UAAyB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC;;AAE9E;AACA;AACA;AACA;;AASA;;AAmBA;;AAUA;;AAUA;;AAWA;;AAOA;;
|
|
1
|
+
{"version":3,"names":["SEVERITIES"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":";;AAAA;AACA;AACA;;AAIA,OAAO,MAAMA,UAAyB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC;;AAE9E;AACA;AACA;AACA;;AASA;;AAmBA;;AAUA;;AAUA;;AAWA;;AAOA;;AAcA;;AAYA;;AAUA","ignoreList":[]}
|
|
@@ -5,6 +5,8 @@ export interface SupabaseTarget {
|
|
|
5
5
|
supabaseAnonKey: string;
|
|
6
6
|
tableName: string;
|
|
7
7
|
storageBucket: string;
|
|
8
|
+
appKey: string;
|
|
9
|
+
appName: string;
|
|
8
10
|
}
|
|
9
11
|
export interface UploadResult {
|
|
10
12
|
publicUrl: string;
|
|
@@ -34,5 +36,7 @@ export declare function targetFromConfig(config: {
|
|
|
34
36
|
supabaseAnonKey: string;
|
|
35
37
|
tableName?: string;
|
|
36
38
|
storageBucket?: string;
|
|
39
|
+
appKey?: string;
|
|
40
|
+
appName?: string;
|
|
37
41
|
}): SupabaseTarget;
|
|
38
42
|
//# sourceMappingURL=supabaseService.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supabaseService.d.ts","sourceRoot":"","sources":["../../../../src/services/supabaseService.ts"],"names":[],"mappings":"AAAA,OAAO,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AA4B1C,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"supabaseService.d.ts","sourceRoot":"","sources":["../../../../src/services/supabaseService.ts"],"names":[],"mappings":"AAAA,OAAO,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AA4B1C,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAmBD,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,YAAY,CAAC,CA6BvB;AAED,6DAA6D;AAC7D,wBAAsB,YAAY,CAChC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,GAC5B,OAAO,CAAC,SAAS,CAAC,CAuBpB;AA0BD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,IAAI,EACtC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAC/B,MAAM,IAAI,CA+BZ;AAED,yCAAyC;AACzC,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,GAC1B,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,mEAAmE;AACnE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,cAAc,CAUjB"}
|
|
@@ -69,6 +69,8 @@ export interface BugReportInput {
|
|
|
69
69
|
/** The full bug report persisted on the backend. */
|
|
70
70
|
export interface BugReport extends BugReportInput {
|
|
71
71
|
id?: string;
|
|
72
|
+
/** Logical app this report belongs to. */
|
|
73
|
+
appKey?: string;
|
|
72
74
|
screenshotUrl: string | null;
|
|
73
75
|
screenshotPath: string | null;
|
|
74
76
|
context: CollectedContext;
|
|
@@ -102,6 +104,14 @@ export interface BugReporterConfig {
|
|
|
102
104
|
supabaseUrl: string;
|
|
103
105
|
/** Supabase anon (public) API key. */
|
|
104
106
|
supabaseAnonKey: string;
|
|
107
|
+
/**
|
|
108
|
+
* Logical app identifier for multi-app bug tracking. Every report is tagged
|
|
109
|
+
* with this key so the admin panel can show per-app sections + counts and
|
|
110
|
+
* route notification emails per app. Defaults to "default".
|
|
111
|
+
*/
|
|
112
|
+
appKey?: string;
|
|
113
|
+
/** Human-friendly app name shown in the admin panel (defaults to appKey). */
|
|
114
|
+
appName?: string;
|
|
105
115
|
/** Postgres table reports are inserted into. Defaults to "bug_reports". */
|
|
106
116
|
tableName?: string;
|
|
107
117
|
/** Supabase Storage bucket for screenshots. Defaults to "bug-reports". */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-bug-reporter",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Universal React Native bug reporter: auto-detect screenshots, annotate, collect device/app/user context, and ship to Supabase (Postgres + Storage) with Edge Function email.",
|
|
5
5
|
"main": "lib/commonjs/index.js",
|
|
6
6
|
"module": "lib/module/index.js",
|
|
@@ -33,12 +33,15 @@ export interface SupabaseTarget {
|
|
|
33
33
|
supabaseAnonKey: string;
|
|
34
34
|
tableName: string;
|
|
35
35
|
storageBucket: string;
|
|
36
|
+
appKey: string;
|
|
37
|
+
appName: string;
|
|
36
38
|
}
|
|
37
39
|
|
|
38
40
|
/** DB row (snake_case) → SDK BugReport (camelCase). */
|
|
39
41
|
function mapRow(row: Record<string, unknown>): BugReport {
|
|
40
42
|
return {
|
|
41
43
|
id: row.id as string,
|
|
44
|
+
appKey: (row.app_key as string) ?? 'default',
|
|
42
45
|
title: (row.title as string) ?? '',
|
|
43
46
|
description: (row.description as string) ?? '',
|
|
44
47
|
severity: (row.severity as BugReport['severity']) ?? 'medium',
|
|
@@ -107,6 +110,7 @@ export async function insertReport(
|
|
|
107
110
|
const { data, error } = await supabase
|
|
108
111
|
.from(target.tableName)
|
|
109
112
|
.insert({
|
|
113
|
+
app_key: target.appKey,
|
|
110
114
|
title: report.title,
|
|
111
115
|
description: report.description,
|
|
112
116
|
severity: report.severity,
|
|
@@ -121,9 +125,35 @@ export async function insertReport(
|
|
|
121
125
|
.single();
|
|
122
126
|
if (error) throw error;
|
|
123
127
|
logger.log('report inserted', data.id);
|
|
128
|
+
// Register the app (insert-if-absent) so it shows in the admin panel.
|
|
129
|
+
void ensureAppRegistered(target);
|
|
124
130
|
return mapRow(data);
|
|
125
131
|
}
|
|
126
132
|
|
|
133
|
+
/**
|
|
134
|
+
* Inserts the app into bug_report_apps if it's not there yet (without clobbering
|
|
135
|
+
* its notify_emails). Fire-and-forget — never blocks submission.
|
|
136
|
+
*/
|
|
137
|
+
async function ensureAppRegistered(target: SupabaseTarget): Promise<void> {
|
|
138
|
+
try {
|
|
139
|
+
await fetch(
|
|
140
|
+
`${target.supabaseUrl.replace(/\/+$/, '')}/rest/v1/bug_report_apps?on_conflict=app_key`,
|
|
141
|
+
{
|
|
142
|
+
method: 'POST',
|
|
143
|
+
headers: {
|
|
144
|
+
apikey: target.supabaseAnonKey,
|
|
145
|
+
Authorization: `Bearer ${target.supabaseAnonKey}`,
|
|
146
|
+
'Content-Type': 'application/json',
|
|
147
|
+
Prefer: 'resolution=ignore-duplicates',
|
|
148
|
+
},
|
|
149
|
+
body: JSON.stringify({ app_key: target.appKey, app_name: target.appName }),
|
|
150
|
+
},
|
|
151
|
+
);
|
|
152
|
+
} catch {
|
|
153
|
+
// ignore — not critical
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
127
157
|
/**
|
|
128
158
|
* Subscribes to the reports table (newest first). Does an initial fetch, then
|
|
129
159
|
* refetches on any realtime change. Returns an unsubscribe function.
|
|
@@ -185,11 +215,16 @@ export function targetFromConfig(config: {
|
|
|
185
215
|
supabaseAnonKey: string;
|
|
186
216
|
tableName?: string;
|
|
187
217
|
storageBucket?: string;
|
|
218
|
+
appKey?: string;
|
|
219
|
+
appName?: string;
|
|
188
220
|
}): SupabaseTarget {
|
|
221
|
+
const appKey = config.appKey ?? 'default';
|
|
189
222
|
return {
|
|
190
223
|
supabaseUrl: config.supabaseUrl,
|
|
191
224
|
supabaseAnonKey: config.supabaseAnonKey,
|
|
192
225
|
tableName: config.tableName ?? 'bug_reports',
|
|
193
226
|
storageBucket: config.storageBucket ?? 'bug-reports',
|
|
227
|
+
appKey,
|
|
228
|
+
appName: config.appName ?? appKey,
|
|
194
229
|
};
|
|
195
230
|
}
|
package/src/types.ts
CHANGED
|
@@ -78,6 +78,8 @@ export interface BugReportInput {
|
|
|
78
78
|
/** The full bug report persisted on the backend. */
|
|
79
79
|
export interface BugReport extends BugReportInput {
|
|
80
80
|
id?: string;
|
|
81
|
+
/** Logical app this report belongs to. */
|
|
82
|
+
appKey?: string;
|
|
81
83
|
screenshotUrl: string | null;
|
|
82
84
|
screenshotPath: string | null;
|
|
83
85
|
context: CollectedContext;
|
|
@@ -115,6 +117,14 @@ export interface BugReporterConfig {
|
|
|
115
117
|
supabaseUrl: string;
|
|
116
118
|
/** Supabase anon (public) API key. */
|
|
117
119
|
supabaseAnonKey: string;
|
|
120
|
+
/**
|
|
121
|
+
* Logical app identifier for multi-app bug tracking. Every report is tagged
|
|
122
|
+
* with this key so the admin panel can show per-app sections + counts and
|
|
123
|
+
* route notification emails per app. Defaults to "default".
|
|
124
|
+
*/
|
|
125
|
+
appKey?: string;
|
|
126
|
+
/** Human-friendly app name shown in the admin panel (defaults to appKey). */
|
|
127
|
+
appName?: string;
|
|
118
128
|
/** Postgres table reports are inserted into. Defaults to "bug_reports". */
|
|
119
129
|
tableName?: string;
|
|
120
130
|
/** Supabase Storage bucket for screenshots. Defaults to "bug-reports". */
|