ugly-app 0.1.760 → 0.1.762
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 -39
- package/dist/cli/feedbackResolve.js.map +1 -1
- package/dist/cli/telemetryD1.d.ts +20 -0
- package/dist/cli/telemetryD1.d.ts.map +1 -0
- package/dist/cli/telemetryD1.js +41 -0
- package/dist/cli/telemetryD1.js.map +1 -0
- package/dist/cli/version.d.ts +1 -1
- package/dist/cli/version.js +1 -1
- package/dist/shared/DB.d.ts +23 -0
- package/dist/shared/DB.d.ts.map +1 -1
- package/dist/shared/DB.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/feedbackResolve.test.ts +66 -0
- package/src/cli/feedbackResolve.ts +18 -54
- package/src/cli/telemetryD1.ts +68 -0
- package/src/cli/version.ts +1 -1
- package/src/shared/DB.ts +29 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedbackResolve.d.ts","sourceRoot":"","sources":["../../src/cli/feedbackResolve.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"feedbackResolve.d.ts","sourceRoot":"","sources":["../../src/cli/feedbackResolve.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;CACpB;AAoBD,wBAAsB,eAAe,CACnC,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAUf;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,mBAAmB,EAAE,EAC5B,MAAM,CAAC,EAAE,CACP,IAAI,EAAE,mBAAmB,EACzB,MAAM,EAAE;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,KAChD,IAAI,GACR,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE,CAAC,CAe3E;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,EAAE,CA8BpE;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CASzD"}
|
|
@@ -1,43 +1,21 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
async function resolveOne(appApiUrl, token, item) {
|
|
16
|
-
const res = await fetch(`${appApiUrl}/request`, {
|
|
17
|
-
method: 'POST',
|
|
18
|
-
headers: {
|
|
19
|
-
'Authorization': `Bearer ${token}`,
|
|
20
|
-
'Content-Type': 'application/json',
|
|
21
|
-
},
|
|
22
|
-
body: JSON.stringify({
|
|
23
|
-
function: 'feedbackReportResolve',
|
|
24
|
-
input: {
|
|
25
|
-
feedbackReportId: item.id,
|
|
26
|
-
status: item.status,
|
|
27
|
-
resolution: item.resolution,
|
|
28
|
-
},
|
|
29
|
-
}),
|
|
30
|
-
});
|
|
31
|
-
if (!res.ok) {
|
|
32
|
-
const body = await res.text().catch(() => '');
|
|
33
|
-
throw new Error(`${res.status} ${body}`);
|
|
1
|
+
import { execTelemetryD1 } from './telemetryD1.js';
|
|
2
|
+
/**
|
|
3
|
+
* Update a single feedback report's status + resolution directly in the
|
|
4
|
+
* project's PROD Cloudflare D1 (`feedback_report` table) — the same store the
|
|
5
|
+
* `feedback` read CLI queries. The previous implementation POSTed
|
|
6
|
+
* `{function:'feedbackReportResolve'}` to `ugly.bot/request`, an endpoint that
|
|
7
|
+
* lived on the retired `app` monolith; the live ugly.bot is a billable-op proxy
|
|
8
|
+
* that 400s ("Missing op"), so resolves silently failed for every child app.
|
|
9
|
+
*/
|
|
10
|
+
async function resolveOne(item) {
|
|
11
|
+
const { meta } = await execTelemetryD1('UPDATE feedback_report SET status = ?, resolution = ? WHERE id = ?', [item.status, item.resolution, item.id]);
|
|
12
|
+
if (!meta || (meta.changes ?? 0) === 0) {
|
|
13
|
+
throw new Error(`no feedback_report row with id "${item.id}"`);
|
|
34
14
|
}
|
|
35
15
|
}
|
|
36
16
|
export async function resolveFeedback(opts) {
|
|
37
|
-
const appApiUrl = getAppApiUrl();
|
|
38
|
-
const auth = readAuth();
|
|
39
17
|
try {
|
|
40
|
-
await resolveOne(
|
|
18
|
+
await resolveOne({
|
|
41
19
|
id: opts.feedbackId,
|
|
42
20
|
status: opts.status,
|
|
43
21
|
resolution: opts.resolution,
|
|
@@ -55,13 +33,11 @@ export async function resolveFeedback(opts) {
|
|
|
55
33
|
* leave items at `status: new` for a duplicate-process next cycle).
|
|
56
34
|
*/
|
|
57
35
|
export async function resolveFeedbackBatch(items, onItem) {
|
|
58
|
-
const appApiUrl = getAppApiUrl();
|
|
59
|
-
const auth = readAuth();
|
|
60
36
|
const failures = [];
|
|
61
37
|
let successes = 0;
|
|
62
38
|
for (const item of items) {
|
|
63
39
|
try {
|
|
64
|
-
await resolveOne(
|
|
40
|
+
await resolveOne(item);
|
|
65
41
|
successes++;
|
|
66
42
|
onItem?.(item, { ok: true });
|
|
67
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedbackResolve.js","sourceRoot":"","sources":["../../src/cli/feedbackResolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"feedbackResolve.js","sourceRoot":"","sources":["../../src/cli/feedbackResolve.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type ProdNeonLookupOptions } from './prodDb.js';
|
|
2
|
+
export interface D1ExecResult {
|
|
3
|
+
results: Record<string, unknown>[];
|
|
4
|
+
/** D1 result meta — `changes` is the number of rows an UPDATE/DELETE modified. */
|
|
5
|
+
meta: {
|
|
6
|
+
changes?: number;
|
|
7
|
+
rows_written?: number;
|
|
8
|
+
rows_read?: number;
|
|
9
|
+
} | null;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Run a single SQL statement (read OR write) against the project's PRODUCTION
|
|
13
|
+
* Cloudflare D1 telemetry DB (errorLog / feedbackReport / …) via the HTTP API.
|
|
14
|
+
*
|
|
15
|
+
* This is the write-capable twin of the `feedback` / `errors` read path — both
|
|
16
|
+
* hit the same D1 database with the same publish-state-resolved token, so the
|
|
17
|
+
* CLI never has to route feedback mutations through a server endpoint.
|
|
18
|
+
*/
|
|
19
|
+
export declare function execTelemetryD1(sql: string, params?: unknown[], opts?: ProdNeonLookupOptions): Promise<D1ExecResult>;
|
|
20
|
+
//# sourceMappingURL=telemetryD1.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetryD1.d.ts","sourceRoot":"","sources":["../../src/cli/telemetryD1.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,qBAAqB,EAE3B,MAAM,aAAa,CAAC;AAIrB,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACnC,kFAAkF;IAClF,IAAI,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC9E;AAeD;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,OAAO,EAAO,EACtB,IAAI,GAAE,qBAA0B,GAC/B,OAAO,CAAC,YAAY,CAAC,CA2BvB"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { getSecret } from './publish/secret-storage.js';
|
|
2
|
+
import { resolveProdTelemetryD1, } from './prodDb.js';
|
|
3
|
+
const CLOUDFLARE_API_BASE = 'https://api.cloudflare.com/client/v4';
|
|
4
|
+
/** Resolve the Cloudflare API token for a project's D1 (same lookup the read path uses). */
|
|
5
|
+
async function resolveD1Token(d1) {
|
|
6
|
+
const token = (await getSecret(`cloudflare:token:${d1.projectId}`)) ??
|
|
7
|
+
(await getSecret(`cloudflare:access-token:${d1.projectId}`));
|
|
8
|
+
if (!token) {
|
|
9
|
+
throw new Error(`No Cloudflare token for project "${d1.projectId}". Re-authenticate: \`ugly-app publish\`.`);
|
|
10
|
+
}
|
|
11
|
+
return token;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Run a single SQL statement (read OR write) against the project's PRODUCTION
|
|
15
|
+
* Cloudflare D1 telemetry DB (errorLog / feedbackReport / …) via the HTTP API.
|
|
16
|
+
*
|
|
17
|
+
* This is the write-capable twin of the `feedback` / `errors` read path — both
|
|
18
|
+
* hit the same D1 database with the same publish-state-resolved token, so the
|
|
19
|
+
* CLI never has to route feedback mutations through a server endpoint.
|
|
20
|
+
*/
|
|
21
|
+
export async function execTelemetryD1(sql, params = [], opts = {}) {
|
|
22
|
+
const d1 = resolveProdTelemetryD1(opts);
|
|
23
|
+
const token = await resolveD1Token(d1);
|
|
24
|
+
const res = await globalThis.fetch(`${CLOUDFLARE_API_BASE}/accounts/${d1.accountId}/d1/database/${d1.databaseId}/query`, {
|
|
25
|
+
method: 'POST',
|
|
26
|
+
headers: {
|
|
27
|
+
Authorization: `Bearer ${token}`,
|
|
28
|
+
'Content-Type': 'application/json',
|
|
29
|
+
Accept: 'application/json',
|
|
30
|
+
},
|
|
31
|
+
body: JSON.stringify({ sql, params }),
|
|
32
|
+
});
|
|
33
|
+
if (!res.ok) {
|
|
34
|
+
const body = await res.text().catch(() => '');
|
|
35
|
+
throw new Error(`D1 query failed (${res.status}): ${body.slice(0, 200)}`);
|
|
36
|
+
}
|
|
37
|
+
const payload = (await res.json());
|
|
38
|
+
const first = payload.result?.[0];
|
|
39
|
+
return { results: first?.results ?? [], meta: first?.meta ?? null };
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=telemetryD1.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetryD1.js","sourceRoot":"","sources":["../../src/cli/telemetryD1.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EACL,sBAAsB,GAGvB,MAAM,aAAa,CAAC;AAErB,MAAM,mBAAmB,GAAG,sCAAsC,CAAC;AAQnE,4FAA4F;AAC5F,KAAK,UAAU,cAAc,CAAC,EAAmB;IAC/C,MAAM,KAAK,GACT,CAAC,MAAM,SAAS,CAAC,oBAAoB,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;QACrD,CAAC,MAAM,SAAS,CAAC,2BAA2B,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAC/D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,oCAAoC,EAAE,CAAC,SAAS,2CAA2C,CAC5F,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,GAAW,EACX,SAAoB,EAAE,EACtB,OAA8B,EAAE;IAEhC,MAAM,EAAE,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,KAAK,CAChC,GAAG,mBAAmB,aAAa,EAAE,CAAC,SAAS,gBAAgB,EAAE,CAAC,UAAU,QAAQ,EACpF;QACE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,KAAK,EAAE;YAChC,cAAc,EAAE,kBAAkB;YAClC,MAAM,EAAE,kBAAkB;SAC3B;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;KACtC,CACF,CAAC;IACF,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,oBAAoB,GAAG,CAAC,MAAM,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAKhC,CAAC;IACF,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IAClC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC;AACtE,CAAC"}
|
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.762";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/cli/version.js
CHANGED
package/dist/shared/DB.d.ts
CHANGED
|
@@ -273,6 +273,29 @@ export interface TypedDB<_Map extends Record<string, DBObject> = Record<never, D
|
|
|
273
273
|
filter?: Record<string, unknown>;
|
|
274
274
|
}): Promise<T[]>;
|
|
275
275
|
}
|
|
276
|
+
/**
|
|
277
|
+
* The db surface to type an INJECTED db with — for apps that share request
|
|
278
|
+
* handlers between the Node entry (`server/index.ts`) and the Cloudflare Workers
|
|
279
|
+
* entry (`server/workers.ts`) by extracting a runtime-agnostic
|
|
280
|
+
* `makeXHandlers(getDb)` module.
|
|
281
|
+
*
|
|
282
|
+
* **Type the injected db with this (or with {@link TypedDB}).** `InjectableDb`
|
|
283
|
+
* is a pure type with ZERO runtime coupling, so it is safe to import in a
|
|
284
|
+
* runtime-agnostic module. Both the Node `app.db` and the Workers `ctx.typedDb`
|
|
285
|
+
* satisfy it.
|
|
286
|
+
*
|
|
287
|
+
* ❌ **Do NOT hand-roll a loose interface** like
|
|
288
|
+
* `getDoc(col: unknown): Promise<unknown>` /
|
|
289
|
+
* `getDoc(col: unknown): Promise<Record<string, unknown> | null>`. That discards
|
|
290
|
+
* the per-collection document typing and forces `as SomeType` / `as never`
|
|
291
|
+
* casts on every read — which routinely hide real bugs (incomplete `setDoc`
|
|
292
|
+
* docs, un-narrowed enums, missing fields).
|
|
293
|
+
*
|
|
294
|
+
* ✅ With this type, `db.getDoc(collections.foo, id)` is typed `Foo | null` and
|
|
295
|
+
* needs zero casts. Use `setDocFields` / `setDocFieldsOrCreate` for partial
|
|
296
|
+
* updates rather than read-merge-write.
|
|
297
|
+
*/
|
|
298
|
+
export type InjectableDb = Pick<TypedDB, 'getDoc' | 'getByIds' | 'getDocs' | 'getQuery' | 'setDoc' | 'setDocFields' | 'setDocFieldsOrIgnore' | 'setDocFieldsOrCreate' | 'setDocOp' | 'deleteDoc' | 'deleteQuery' | 'batch'>;
|
|
276
299
|
export declare function defineCollections<Defs extends CollectionDefInputRegistry>(defs: Defs): {
|
|
277
300
|
[K in keyof Defs & string]: CollectionDef<InferDocType<Defs[K]['schema']>> & {
|
|
278
301
|
name: K;
|
package/dist/shared/DB.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DB.d.ts","sourceRoot":"","sources":["../../src/shared/DB.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DB.d.ts","sourceRoot":"","sources":["../../src/shared/DB.ts"],"names":[],"mappings":"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"}
|
package/dist/shared/DB.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DB.js","sourceRoot":"","sources":["../../src/shared/DB.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAmDxB,4EAA4E;AAC5E,MAAM,UAAU,cAAc,CAAC,IAA+C;IAC5E,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC;AACvB,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,UAAU,CAAC,IAA+C;IACxE,OAAO,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7F,CAAC;
|
|
1
|
+
{"version":3,"file":"DB.js","sourceRoot":"","sources":["../../src/shared/DB.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ugly-app",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.762",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"comment:files": "Allowlist what ships to npm. dist = runtime; src = sourcemap targets (dist/*.js.map reference ../../src/); templates = CLI scaffold. Everything else at repo root (.pgdata local Postgres, coverage, assets/icons sources, test/, test-results/) is excluded by omission. The !negations strip the scaffold's installed deps + cruft (templates/node_modules is 200MB+ and must never ship). package.json/README/LICENSE ship automatically.",
|
|
6
6
|
"files": [
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
2
|
+
|
|
3
|
+
// The resolve path writes to Cloudflare D1 via execTelemetryD1 — mock it so the
|
|
4
|
+
// unit test asserts the SQL/params contract without hitting the network.
|
|
5
|
+
vi.mock('./telemetryD1.js', () => ({ execTelemetryD1: vi.fn() }));
|
|
6
|
+
|
|
7
|
+
import { execTelemetryD1 } from './telemetryD1.js';
|
|
8
|
+
import {
|
|
9
|
+
parseBatchPayload,
|
|
10
|
+
resolveFeedback,
|
|
11
|
+
resolveFeedbackBatch,
|
|
12
|
+
} from './feedbackResolve.js';
|
|
13
|
+
|
|
14
|
+
const mockExec = vi.mocked(execTelemetryD1);
|
|
15
|
+
|
|
16
|
+
beforeEach(() => {
|
|
17
|
+
mockExec.mockReset();
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
describe('resolveFeedback', () => {
|
|
21
|
+
it('UPDATEs feedback_report with status + resolution keyed by id', async () => {
|
|
22
|
+
mockExec.mockResolvedValue({ results: [], meta: { changes: 1 } });
|
|
23
|
+
await resolveFeedback({ feedbackId: 'fb-1', status: 'resolved', resolution: 'done' });
|
|
24
|
+
expect(mockExec).toHaveBeenCalledTimes(1);
|
|
25
|
+
const [sql, params] = mockExec.mock.calls[0]!;
|
|
26
|
+
expect(sql).toMatch(/UPDATE\s+feedback_report\s+SET\s+status\s*=\s*\?,\s*resolution\s*=\s*\?\s+WHERE\s+id\s*=\s*\?/i);
|
|
27
|
+
expect(params).toEqual(['resolved', 'done', 'fb-1']);
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
it('throws when no row matched the id (changes === 0)', async () => {
|
|
31
|
+
mockExec.mockResolvedValue({ results: [], meta: { changes: 0 } });
|
|
32
|
+
await expect(
|
|
33
|
+
resolveFeedback({ feedbackId: 'missing', status: 'declined', resolution: 'n/a' }),
|
|
34
|
+
).rejects.toThrow(/no feedback_report row with id "missing"/);
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
it('throws when D1 returns no meta', async () => {
|
|
38
|
+
mockExec.mockResolvedValue({ results: [], meta: null });
|
|
39
|
+
await expect(
|
|
40
|
+
resolveFeedback({ feedbackId: 'x', status: 'resolved', resolution: 'y' }),
|
|
41
|
+
).rejects.toThrow(/Failed to resolve feedback/);
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
describe('resolveFeedbackBatch', () => {
|
|
46
|
+
it('processes every item and reports partial failures without throwing', async () => {
|
|
47
|
+
mockExec
|
|
48
|
+
.mockResolvedValueOnce({ results: [], meta: { changes: 1 } }) // ok
|
|
49
|
+
.mockResolvedValueOnce({ results: [], meta: { changes: 0 } }); // missing row
|
|
50
|
+
const { successes, failures } = await resolveFeedbackBatch([
|
|
51
|
+
{ id: 'a', status: 'resolved', resolution: 'r1' },
|
|
52
|
+
{ id: 'b', status: 'resolved', resolution: 'r2' },
|
|
53
|
+
]);
|
|
54
|
+
expect(successes).toBe(1);
|
|
55
|
+
expect(failures).toHaveLength(1);
|
|
56
|
+
expect(failures[0]!.id).toBe('b');
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
describe('parseBatchPayload', () => {
|
|
61
|
+
it('rejects an invalid status value', () => {
|
|
62
|
+
expect(() =>
|
|
63
|
+
parseBatchPayload(JSON.stringify([{ id: 'a', status: 'nope', resolution: 'x' }])),
|
|
64
|
+
).toThrow(/invalid status "nope"/);
|
|
65
|
+
});
|
|
66
|
+
});
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
import os from 'node:os';
|
|
3
|
-
import path from 'node:path';
|
|
4
|
-
import { getUglyBotUrl } from '../shared/uglyBotUrl.js';
|
|
1
|
+
import { execTelemetryD1 } from './telemetryD1.js';
|
|
5
2
|
|
|
6
3
|
export interface FeedbackResolveOptions {
|
|
7
4
|
feedbackId: string;
|
|
@@ -15,60 +12,29 @@ export interface FeedbackResolveItem {
|
|
|
15
12
|
resolution: string;
|
|
16
13
|
}
|
|
17
14
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
function getAppApiUrl(): string {
|
|
35
|
-
return getUglyBotUrl();
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
async function resolveOne(
|
|
39
|
-
appApiUrl: string,
|
|
40
|
-
token: string,
|
|
41
|
-
item: FeedbackResolveItem,
|
|
42
|
-
): Promise<void> {
|
|
43
|
-
const res = await fetch(`${appApiUrl}/request`, {
|
|
44
|
-
method: 'POST',
|
|
45
|
-
headers: {
|
|
46
|
-
'Authorization': `Bearer ${token}`,
|
|
47
|
-
'Content-Type': 'application/json',
|
|
48
|
-
},
|
|
49
|
-
body: JSON.stringify({
|
|
50
|
-
function: 'feedbackReportResolve',
|
|
51
|
-
input: {
|
|
52
|
-
feedbackReportId: item.id,
|
|
53
|
-
status: item.status,
|
|
54
|
-
resolution: item.resolution,
|
|
55
|
-
},
|
|
56
|
-
}),
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
if (!res.ok) {
|
|
60
|
-
const body = await res.text().catch(() => '');
|
|
61
|
-
throw new Error(`${res.status} ${body}`);
|
|
15
|
+
/**
|
|
16
|
+
* Update a single feedback report's status + resolution directly in the
|
|
17
|
+
* project's PROD Cloudflare D1 (`feedback_report` table) — the same store the
|
|
18
|
+
* `feedback` read CLI queries. The previous implementation POSTed
|
|
19
|
+
* `{function:'feedbackReportResolve'}` to `ugly.bot/request`, an endpoint that
|
|
20
|
+
* lived on the retired `app` monolith; the live ugly.bot is a billable-op proxy
|
|
21
|
+
* that 400s ("Missing op"), so resolves silently failed for every child app.
|
|
22
|
+
*/
|
|
23
|
+
async function resolveOne(item: FeedbackResolveItem): Promise<void> {
|
|
24
|
+
const { meta } = await execTelemetryD1(
|
|
25
|
+
'UPDATE feedback_report SET status = ?, resolution = ? WHERE id = ?',
|
|
26
|
+
[item.status, item.resolution, item.id],
|
|
27
|
+
);
|
|
28
|
+
if (!meta || (meta.changes ?? 0) === 0) {
|
|
29
|
+
throw new Error(`no feedback_report row with id "${item.id}"`);
|
|
62
30
|
}
|
|
63
31
|
}
|
|
64
32
|
|
|
65
33
|
export async function resolveFeedback(
|
|
66
34
|
opts: FeedbackResolveOptions,
|
|
67
35
|
): Promise<void> {
|
|
68
|
-
const appApiUrl = getAppApiUrl();
|
|
69
|
-
const auth = readAuth();
|
|
70
36
|
try {
|
|
71
|
-
await resolveOne(
|
|
37
|
+
await resolveOne({
|
|
72
38
|
id: opts.feedbackId,
|
|
73
39
|
status: opts.status,
|
|
74
40
|
resolution: opts.resolution,
|
|
@@ -92,13 +58,11 @@ export async function resolveFeedbackBatch(
|
|
|
92
58
|
result: { ok: true } | { ok: false; error: string },
|
|
93
59
|
) => void,
|
|
94
60
|
): Promise<{ successes: number; failures: { id: string; error: string }[] }> {
|
|
95
|
-
const appApiUrl = getAppApiUrl();
|
|
96
|
-
const auth = readAuth();
|
|
97
61
|
const failures: { id: string; error: string }[] = [];
|
|
98
62
|
let successes = 0;
|
|
99
63
|
for (const item of items) {
|
|
100
64
|
try {
|
|
101
|
-
await resolveOne(
|
|
65
|
+
await resolveOne(item);
|
|
102
66
|
successes++;
|
|
103
67
|
onItem?.(item, { ok: true });
|
|
104
68
|
} catch (e) {
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { getSecret } from './publish/secret-storage.js';
|
|
2
|
+
import {
|
|
3
|
+
resolveProdTelemetryD1,
|
|
4
|
+
type ProdNeonLookupOptions,
|
|
5
|
+
type ProdTelemetryD1,
|
|
6
|
+
} from './prodDb.js';
|
|
7
|
+
|
|
8
|
+
const CLOUDFLARE_API_BASE = 'https://api.cloudflare.com/client/v4';
|
|
9
|
+
|
|
10
|
+
export interface D1ExecResult {
|
|
11
|
+
results: Record<string, unknown>[];
|
|
12
|
+
/** D1 result meta — `changes` is the number of rows an UPDATE/DELETE modified. */
|
|
13
|
+
meta: { changes?: number; rows_written?: number; rows_read?: number } | null;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/** Resolve the Cloudflare API token for a project's D1 (same lookup the read path uses). */
|
|
17
|
+
async function resolveD1Token(d1: ProdTelemetryD1): Promise<string> {
|
|
18
|
+
const token =
|
|
19
|
+
(await getSecret(`cloudflare:token:${d1.projectId}`)) ??
|
|
20
|
+
(await getSecret(`cloudflare:access-token:${d1.projectId}`));
|
|
21
|
+
if (!token) {
|
|
22
|
+
throw new Error(
|
|
23
|
+
`No Cloudflare token for project "${d1.projectId}". Re-authenticate: \`ugly-app publish\`.`,
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
return token;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Run a single SQL statement (read OR write) against the project's PRODUCTION
|
|
31
|
+
* Cloudflare D1 telemetry DB (errorLog / feedbackReport / …) via the HTTP API.
|
|
32
|
+
*
|
|
33
|
+
* This is the write-capable twin of the `feedback` / `errors` read path — both
|
|
34
|
+
* hit the same D1 database with the same publish-state-resolved token, so the
|
|
35
|
+
* CLI never has to route feedback mutations through a server endpoint.
|
|
36
|
+
*/
|
|
37
|
+
export async function execTelemetryD1(
|
|
38
|
+
sql: string,
|
|
39
|
+
params: unknown[] = [],
|
|
40
|
+
opts: ProdNeonLookupOptions = {},
|
|
41
|
+
): Promise<D1ExecResult> {
|
|
42
|
+
const d1 = resolveProdTelemetryD1(opts);
|
|
43
|
+
const token = await resolveD1Token(d1);
|
|
44
|
+
const res = await globalThis.fetch(
|
|
45
|
+
`${CLOUDFLARE_API_BASE}/accounts/${d1.accountId}/d1/database/${d1.databaseId}/query`,
|
|
46
|
+
{
|
|
47
|
+
method: 'POST',
|
|
48
|
+
headers: {
|
|
49
|
+
Authorization: `Bearer ${token}`,
|
|
50
|
+
'Content-Type': 'application/json',
|
|
51
|
+
Accept: 'application/json',
|
|
52
|
+
},
|
|
53
|
+
body: JSON.stringify({ sql, params }),
|
|
54
|
+
},
|
|
55
|
+
);
|
|
56
|
+
if (!res.ok) {
|
|
57
|
+
const body = await res.text().catch(() => '');
|
|
58
|
+
throw new Error(`D1 query failed (${res.status}): ${body.slice(0, 200)}`);
|
|
59
|
+
}
|
|
60
|
+
const payload = (await res.json()) as {
|
|
61
|
+
result?: {
|
|
62
|
+
results?: Record<string, unknown>[];
|
|
63
|
+
meta?: D1ExecResult['meta'];
|
|
64
|
+
}[];
|
|
65
|
+
};
|
|
66
|
+
const first = payload.result?.[0];
|
|
67
|
+
return { results: first?.results ?? [], meta: first?.meta ?? null };
|
|
68
|
+
}
|
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.762";
|
package/src/shared/DB.ts
CHANGED
|
@@ -370,6 +370,35 @@ export interface TypedDB<
|
|
|
370
370
|
): Promise<T[]>;
|
|
371
371
|
}
|
|
372
372
|
|
|
373
|
+
/**
|
|
374
|
+
* The db surface to type an INJECTED db with — for apps that share request
|
|
375
|
+
* handlers between the Node entry (`server/index.ts`) and the Cloudflare Workers
|
|
376
|
+
* entry (`server/workers.ts`) by extracting a runtime-agnostic
|
|
377
|
+
* `makeXHandlers(getDb)` module.
|
|
378
|
+
*
|
|
379
|
+
* **Type the injected db with this (or with {@link TypedDB}).** `InjectableDb`
|
|
380
|
+
* is a pure type with ZERO runtime coupling, so it is safe to import in a
|
|
381
|
+
* runtime-agnostic module. Both the Node `app.db` and the Workers `ctx.typedDb`
|
|
382
|
+
* satisfy it.
|
|
383
|
+
*
|
|
384
|
+
* ❌ **Do NOT hand-roll a loose interface** like
|
|
385
|
+
* `getDoc(col: unknown): Promise<unknown>` /
|
|
386
|
+
* `getDoc(col: unknown): Promise<Record<string, unknown> | null>`. That discards
|
|
387
|
+
* the per-collection document typing and forces `as SomeType` / `as never`
|
|
388
|
+
* casts on every read — which routinely hide real bugs (incomplete `setDoc`
|
|
389
|
+
* docs, un-narrowed enums, missing fields).
|
|
390
|
+
*
|
|
391
|
+
* ✅ With this type, `db.getDoc(collections.foo, id)` is typed `Foo | null` and
|
|
392
|
+
* needs zero casts. Use `setDocFields` / `setDocFieldsOrCreate` for partial
|
|
393
|
+
* updates rather than read-merge-write.
|
|
394
|
+
*/
|
|
395
|
+
export type InjectableDb = Pick<
|
|
396
|
+
TypedDB,
|
|
397
|
+
| 'getDoc' | 'getByIds' | 'getDocs' | 'getQuery'
|
|
398
|
+
| 'setDoc' | 'setDocFields' | 'setDocFieldsOrIgnore' | 'setDocFieldsOrCreate' | 'setDocOp'
|
|
399
|
+
| 'deleteDoc' | 'deleteQuery' | 'batch'
|
|
400
|
+
>;
|
|
401
|
+
|
|
373
402
|
export function defineCollections<Defs extends CollectionDefInputRegistry>(
|
|
374
403
|
defs: Defs,
|
|
375
404
|
): { [K in keyof Defs & string]: CollectionDef<InferDocType<Defs[K]['schema']>> & { name: K; schema: Defs[K]['schema']; meta: Defs[K]['meta'] } } {
|