MIRROR: javascript for 馃悳's, a tiny runtime with big ambitions
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

add privacy policy page for js.report

+61 -2
+4
docs/reports/public/assets/report.css
··· 73 73 margin: 0; 74 74 } 75 75 76 + .policy p { 77 + overflow: visible; 78 + } 79 + 76 80 .label { 77 81 color: #777; 78 82 }
+2 -1
docs/reports/src/routes.ts
··· 3 3 import type { Bindings } from './env'; 4 4 import { drizzle } from 'drizzle-orm/d1'; 5 5 import { CrashReportSchema } from './schema'; 6 - import { renderBlank, renderReport } from './view'; 6 + import { renderBlank, renderPrivacy, renderReport } from './view'; 7 7 import { createReport, getRawReport, getReport } from './reports'; 8 8 9 9 import { ··· 17 17 const app = new Hono<{ Bindings: Bindings }>(); 18 18 19 19 app.get('/', c => c.html(renderBlank(), 404)); 20 + app.get('/privacy', c => c.html(renderPrivacy())); 20 21 21 22 app.get('/og/:image', async c => { 22 23 const db = drizzle(c.env.DB);
+55 -1
docs/reports/src/view.tsx
··· 62 62 <a href="https://github.com/theMackabu/ant">Ant</a> 63 63 <ins> 路 </ins> 64 64 <a href="https://github.com/theMackabu/ant/issues/new">Report this on GitHub</a> 65 + <ins> 路 </ins> 66 + <a href="/privacy">Privacy</a> 65 67 </p> 66 68 ); 67 69 ··· 81 83 <p style="margin-top: -10px">If you were given a report link, check the URL and try again.</p> 82 84 <p class="footer"> 83 85 <a href="https://github.com/theMackabu/ant">Ant on GitHub</a> 86 + <ins> 路 </ins> 87 + <a href="/privacy">Privacy</a> 88 + </p> 89 + </Shell> 90 + ); 91 + 92 + const PrivacyPage = () => ( 93 + <Shell 94 + title="Privacy | js.report" 95 + meta={{ 96 + url: 'https://js.report/privacy', 97 + title: 'Privacy | js.report', 98 + description: 'What js.report stores for Ant crash reports.', 99 + }} 100 + > 101 + <Logo /> 102 + <p> 103 + <b>Privacy.</b> <ins>Crash report storage policy.</ins> 104 + </p> 105 + <div class="policy"> 106 + <p>js.report does not store IP addresses in its database.</p> 107 + <p> 108 + The database stores the crash report JSON submitted by Ant, plus server metadata needed to 109 + render, deduplicate, and expire reports. 110 + </p> 111 + <p> 112 + <span class="label">Submitted report fields:</span> 113 + <br /> 114 + <code>schema</code>, <code>runtime</code>, <code>version</code>, <code>target</code>,{' '} 115 + <code>os</code>, <code>arch</code>, <code>kind</code>, <code>code</code>,{' '} 116 + <code>reason</code>, <code>addr</code>, <code>elapsedMs</code>, <code>peakRss</code>,{' '} 117 + <code>frames</code> 118 + </p> 119 + <p> 120 + <span class="label">Stored server fields:</span> 121 + <br /> 122 + <code>id</code>, <code>trace</code>, <code>firstSeenAt</code>, <code>lastSeenAt</code>,{' '} 123 + <code>hitCount</code>, <code>expiresAt</code>, and per-frame hashes used for deduplication. 124 + </p> 125 + <p> 126 + Crash report links are public to anyone with the URL. Raw JSON is available by adding{' '} 127 + <code>.json</code> to a report URL. 128 + </p> 129 + </div> 130 + <p class="footer"> 131 + <a href="/">js.report</a> 132 + <ins> 路 </ins> 133 + <a href="https://github.com/theMackabu/ant">Ant on GitHub</a> 84 134 </p> 85 135 </Shell> 86 136 ); ··· 98 148 99 149 return ( 100 150 <Shell 101 - title={`Ant crash report | ${detail}`} 151 + title={`${detail} | js.report`} 102 152 meta={{ 103 153 url, 104 154 title: `${report.reason}. ${detail} at ${report.addr}`, ··· 156 206 157 207 export function renderBlank(): string { 158 208 return `<!doctype html>${(<BlankPage />)}`; 209 + } 210 + 211 + export function renderPrivacy(): string { 212 + return `<!doctype html>${(<PrivacyPage />)}`; 159 213 } 160 214 161 215 export function renderReport(report: CrashReport, url: string, imageUrl: string): string {