@vibes.diy/api-svc 12.2.12 → 12.3.1
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/intern/backend-db-callback.js +16 -11
- package/intern/backend-db-callback.js.map +1 -1
- package/intern/get-vibe-route-hints.js +7 -6
- package/intern/get-vibe-route-hints.js.map +1 -1
- package/intern/process-access-bindings.js +14 -2
- package/intern/process-access-bindings.js.map +1 -1
- package/intern/put-access-gate.js +10 -1
- package/intern/put-access-gate.js.map +1 -1
- package/intern/read-anonymous-seed-docs.js +6 -5
- package/intern/read-anonymous-seed-docs.js.map +1 -1
- package/intern/ssr-theme-css.js +11 -1
- package/intern/ssr-theme-css.js.map +1 -1
- package/package.json +11 -11
- package/public/access-binding-resolver.js +17 -8
- package/public/access-binding-resolver.js.map +1 -1
- package/public/access-helpers.d.ts +3 -0
- package/public/access-helpers.js +17 -14
- package/public/access-helpers.js.map +1 -1
- package/public/anon-write-legacy-sweep.d.ts +22 -0
- package/public/anon-write-legacy-sweep.js +85 -0
- package/public/anon-write-legacy-sweep.js.map +1 -0
- package/public/app-documents-read-eventos.js +26 -19
- package/public/app-documents-read-eventos.js.map +1 -1
- package/public/app-documents-shared.d.ts +6 -5
- package/public/app-documents-shared.js +19 -8
- package/public/app-documents-shared.js.map +1 -1
- package/public/app-documents-write-eventos.js.map +1 -1
- package/public/app-setting-items.d.ts +1 -0
- package/public/app-setting-items.js +22 -0
- package/public/app-setting-items.js.map +1 -1
- package/public/app-settings-sql-upsert.js +7 -1
- package/public/app-settings-sql-upsert.js.map +1 -1
- package/public/asset-upload-grant.js +4 -3
- package/public/asset-upload-grant.js.map +1 -1
- package/public/audience-channels.d.ts +1 -0
- package/public/audience-channels.js +4 -0
- package/public/audience-channels.js.map +1 -1
- package/public/db-acl-resolver.d.ts +10 -2
- package/public/db-acl-resolver.js +37 -8
- package/public/db-acl-resolver.js.map +1 -1
- package/public/ensure-app-settings.js +78 -10
- package/public/ensure-app-settings.js.map +1 -1
- package/public/ensure-app-slug-item.js +43 -0
- package/public/ensure-app-slug-item.js.map +1 -1
- package/public/files-asset.js +19 -18
- package/public/files-asset.js.map +1 -1
- package/public/fork-app.js +7 -12
- package/public/fork-app.js.map +1 -1
- package/public/get-app-by-fsid.js +4 -10
- package/public/get-app-by-fsid.js.map +1 -1
- package/public/get-cached-suggestion.js.map +1 -1
- package/public/get-vibe-chips.js +68 -20
- package/public/get-vibe-chips.js.map +1 -1
- package/public/img-doc-write.js +13 -4
- package/public/img-doc-write.js.map +1 -1
- package/public/inherit-read-resolver.d.ts +2 -0
- package/public/inherit-read-resolver.js +5 -5
- package/public/inherit-read-resolver.js.map +1 -1
- package/public/list-members.js +3 -3
- package/public/list-members.js.map +1 -1
- package/public/platform-comments-access-fn.d.ts +4 -0
- package/public/platform-comments-access-fn.js +37 -0
- package/public/platform-comments-access-fn.js.map +1 -0
- package/public/platform-comments-migration.d.ts +5 -0
- package/public/platform-comments-migration.js +204 -0
- package/public/platform-comments-migration.js.map +1 -0
- package/public/platform-db-registry.d.ts +36 -0
- package/public/platform-db-registry.js +86 -0
- package/public/platform-db-registry.js.map +1 -0
- package/public/publish-app.d.ts +17 -3
- package/public/publish-app.js +68 -18
- package/public/publish-app.js.map +1 -1
- package/public/request-flow.js.map +1 -1
- package/public/set-version-lock.js +3 -2
- package/public/set-version-lock.js.map +1 -1
- package/public/settings-envelope-readout.d.ts +2 -0
- package/public/settings-envelope-readout.js +42 -0
- package/public/settings-envelope-readout.js.map +1 -0
- package/public/sync-eventos.js +15 -7
- package/public/sync-eventos.js.map +1 -1
- package/public/viewer-channel-resolver.d.ts +1 -0
- package/public/viewer-channel-resolver.js +2 -0
- package/public/viewer-channel-resolver.js.map +1 -1
- package/public/who-am-i.js.map +1 -1
- package/public/write-front-door.js +14 -6
- package/public/write-front-door.js.map +1 -1
- package/usage-report/check-env.sh +188 -0
- package/usage-report/user-journey.js +29 -3
- package/usage-report/user-journey.js.map +1 -1
- package/usage-report/vibe-usage.py +117 -53
- package/usage-report/warm-vibe-cache.js.map +1 -1
package/public/get-vibe-chips.js
CHANGED
|
@@ -8,7 +8,50 @@ import { optAuth } from "../check-auth.js";
|
|
|
8
8
|
import { isPublicReadable, isWorldReadable, checkDocAccess } from "./access-helpers.js";
|
|
9
9
|
import { selectLatestAppPerSlug } from "./select-app.js";
|
|
10
10
|
import { isHiddenForCaller } from "./unpublished-binding.js";
|
|
11
|
-
import { and, eq, ne } from "drizzle-orm/sql/expressions";
|
|
11
|
+
import { and, eq, inArray, ne } from "drizzle-orm/sql/expressions";
|
|
12
|
+
const TURN_FETCH_BATCH = 4;
|
|
13
|
+
async function loadTurnSections(vctx, metas, logger) {
|
|
14
|
+
const out = new Map();
|
|
15
|
+
if (metas.length === 0)
|
|
16
|
+
return out;
|
|
17
|
+
const byKey = new Map(metas.map((m) => [`${m.chatId}|${m.promptId}`, m]));
|
|
18
|
+
const rows = await vctx.sql.db
|
|
19
|
+
.select({
|
|
20
|
+
chatId: vctx.sql.tables.chatSections.chatId,
|
|
21
|
+
promptId: vctx.sql.tables.chatSections.promptId,
|
|
22
|
+
blockSeq: vctx.sql.tables.chatSections.blockSeq,
|
|
23
|
+
blocks: vctx.sql.tables.chatSections.blocks,
|
|
24
|
+
})
|
|
25
|
+
.from(vctx.sql.tables.chatSections)
|
|
26
|
+
.where(and(inArray(vctx.sql.tables.chatSections.chatId, [...new Set(metas.map((m) => m.chatId))]), inArray(vctx.sql.tables.chatSections.promptId, [...new Set(metas.map((m) => m.promptId))]), ne(vctx.sql.tables.chatSections.blockSeq, RESEARCH_BLOCK_SEQ)));
|
|
27
|
+
for (const row of rows) {
|
|
28
|
+
const key = `${row.chatId}|${row.promptId}`;
|
|
29
|
+
const meta = byKey.get(key);
|
|
30
|
+
if (meta === undefined)
|
|
31
|
+
continue;
|
|
32
|
+
let turn = out.get(key);
|
|
33
|
+
if (turn === undefined) {
|
|
34
|
+
turn = {
|
|
35
|
+
chatId: meta.chatId,
|
|
36
|
+
promptId: meta.promptId,
|
|
37
|
+
created: meta.created,
|
|
38
|
+
...(meta.fsId !== undefined ? { fsId: meta.fsId } : {}),
|
|
39
|
+
sections: [],
|
|
40
|
+
};
|
|
41
|
+
out.set(key, turn);
|
|
42
|
+
}
|
|
43
|
+
const { filtered: parsedBlocks, warning } = parseArrayWarning(row.blocks, PromptAndBlockMsgs);
|
|
44
|
+
const blocks = parsedBlocks.filter((block) => !isPromptResearch(block) && !isPromptStatus(block));
|
|
45
|
+
if (warning.length > 0) {
|
|
46
|
+
logger.Warn().Any({ parseErrors: warning }).Msg("skip");
|
|
47
|
+
}
|
|
48
|
+
turn.sections.push({ blockSeq: row.blockSeq, blocks });
|
|
49
|
+
}
|
|
50
|
+
for (const turn of out.values()) {
|
|
51
|
+
turn.sections.sort((a, b) => a.blockSeq - b.blockSeq);
|
|
52
|
+
}
|
|
53
|
+
return out;
|
|
54
|
+
}
|
|
12
55
|
export const getVibeChipsEvento = {
|
|
13
56
|
hash: "get-vibe-chips",
|
|
14
57
|
validate: unwrapMsgBase(async (msg) => {
|
|
@@ -64,8 +107,6 @@ export const getVibeChipsEvento = {
|
|
|
64
107
|
fsId: vctx.sql.tables.promptContexts.fsId,
|
|
65
108
|
promptCreated: vctx.sql.tables.promptContexts.created,
|
|
66
109
|
sectionCreated: vctx.sql.tables.chatSections.created,
|
|
67
|
-
blockSeq: vctx.sql.tables.chatSections.blockSeq,
|
|
68
|
-
blocks: vctx.sql.tables.chatSections.blocks,
|
|
69
110
|
})
|
|
70
111
|
.from(vctx.sql.tables.chatContexts)
|
|
71
112
|
.innerJoin(vctx.sql.tables.chatSections, eq(vctx.sql.tables.chatSections.chatId, vctx.sql.tables.chatContexts.chatId))
|
|
@@ -73,27 +114,14 @@ export const getVibeChipsEvento = {
|
|
|
73
114
|
.where(and(eq(vctx.sql.tables.chatContexts.ownerHandle, req.ownerHandle), eq(vctx.sql.tables.chatContexts.appSlug, req.appSlug), ne(vctx.sql.tables.chatSections.blockSeq, RESEARCH_BLOCK_SEQ)));
|
|
74
115
|
const turns = new Map();
|
|
75
116
|
for (const row of rows) {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
turn = {
|
|
117
|
+
if (!turns.has(row.promptId)) {
|
|
118
|
+
turns.set(row.promptId, {
|
|
79
119
|
chatId: row.chatId,
|
|
80
120
|
promptId: row.promptId,
|
|
81
121
|
created: row.promptCreated ?? row.sectionCreated,
|
|
82
122
|
...(row.fsId !== undefined && row.fsId !== null ? { fsId: row.fsId } : {}),
|
|
83
|
-
|
|
84
|
-
};
|
|
85
|
-
turns.set(row.promptId, turn);
|
|
86
|
-
}
|
|
87
|
-
const { filtered: parsedBlocks, warning } = parseArrayWarning(row.blocks, PromptAndBlockMsgs);
|
|
88
|
-
const blocks = parsedBlocks.filter((block) => !isPromptResearch(block) && !isPromptStatus(block));
|
|
89
|
-
if (warning.length > 0) {
|
|
90
|
-
logger.Warn().Any({ parseErrors: warning }).Msg("skip");
|
|
123
|
+
});
|
|
91
124
|
}
|
|
92
|
-
const section = { blockSeq: row.blockSeq, blocks };
|
|
93
|
-
turn.sections.push(section);
|
|
94
|
-
}
|
|
95
|
-
for (const turn of turns.values()) {
|
|
96
|
-
turn.sections.sort((a, b) => a.blockSeq - b.blockSeq);
|
|
97
125
|
}
|
|
98
126
|
const orderedTurns = Array.from(turns.values()).sort((a, b) => (a.created < b.created ? 1 : a.created > b.created ? -1 : 0));
|
|
99
127
|
let inheritedFsId;
|
|
@@ -113,7 +141,27 @@ export const getVibeChipsEvento = {
|
|
|
113
141
|
}
|
|
114
142
|
const effectiveFsId = req.fsId ?? app?.fsId;
|
|
115
143
|
const candidateTurns = !isMember && app?.fsId ? normalizedTurns.filter((t) => t.fsId === app.fsId) : normalizedTurns;
|
|
116
|
-
const
|
|
144
|
+
const pinned = (effectiveFsId ? candidateTurns.find((t) => t.fsId === effectiveFsId) : undefined) ?? candidateTurns[0];
|
|
145
|
+
let chips = [];
|
|
146
|
+
if (pinned !== undefined) {
|
|
147
|
+
const fallbackPool = effectiveFsId ? candidateTurns.filter((t) => t.fsId === effectiveFsId) : candidateTurns;
|
|
148
|
+
const visit = [pinned, ...fallbackPool.filter((t) => t !== pinned)];
|
|
149
|
+
for (let i = 0; i < visit.length && chips.length === 0;) {
|
|
150
|
+
const batch = visit.slice(i, i === 0 ? 1 : i + TURN_FETCH_BATCH);
|
|
151
|
+
i += batch.length;
|
|
152
|
+
const loaded = await loadTurnSections(vctx, batch, logger);
|
|
153
|
+
for (const meta of batch) {
|
|
154
|
+
const full = loaded.get(`${meta.chatId}|${meta.promptId}`);
|
|
155
|
+
if (full === undefined)
|
|
156
|
+
continue;
|
|
157
|
+
const turnChips = latestTurnChips([full]);
|
|
158
|
+
if (turnChips.length > 0) {
|
|
159
|
+
chips = turnChips;
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
117
165
|
await ctx.send.send(ctx, {
|
|
118
166
|
type: "vibes.diy.res-get-vibe-chips",
|
|
119
167
|
ownerHandle: req.ownerHandle,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-vibe-chips.js","sourceRoot":"","sources":["../../jsr/public/get-vibe-chips.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,MAAM,EAAE,MAAM,EAAsC,YAAY,
|
|
1
|
+
{"version":3,"file":"get-vibe-chips.js","sourceRoot":"","sources":["../../jsr/public/get-vibe-chips.ts"],"names":[],"mappings":"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"}
|
package/public/img-doc-write.js
CHANGED
|
@@ -5,7 +5,8 @@ import { makeBackendDbCallback, resolveBackendWriteIdentity } from "../intern/ba
|
|
|
5
5
|
import { invokeAccessFnForDoc } from "./app-documents-write-eventos.js";
|
|
6
6
|
import { MEDIA_BUILTIN_CID } from "./media-access-fn.js";
|
|
7
7
|
import { checkDocAccess } from "./access-helpers.js";
|
|
8
|
-
import {
|
|
8
|
+
import { resolveDbAccess } from "./db-acl-resolver.js";
|
|
9
|
+
import { writeAllowed } from "./app-documents-shared.js";
|
|
9
10
|
const PROMPT_KEY = "p1";
|
|
10
11
|
const MEDIA_APPEND_ONLY_FORBIDDEN = "version docs are append-only";
|
|
11
12
|
function isPlainRecord(v) {
|
|
@@ -159,9 +160,17 @@ async function authorizeImgGenWriteInner(vctx, params) {
|
|
|
159
160
|
return { allowed: false, reason: "authentication required" };
|
|
160
161
|
}
|
|
161
162
|
const authorHandle = identity.userContext.userHandle;
|
|
162
|
-
const
|
|
163
|
-
const { access } = await checkDocAccess(vctx, identity.userId, appSlug, ownerHandle, false);
|
|
164
|
-
|
|
163
|
+
const rEnv = await resolveDbAccess({ vctx, ownerHandle, appSlug, dbName: mediaDbName(target.dbName) });
|
|
164
|
+
const { access, blocked } = await checkDocAccess(vctx, identity.userId, appSlug, ownerHandle, false);
|
|
165
|
+
const mayWrite = rEnv.isOk() &&
|
|
166
|
+
(await writeAllowed({
|
|
167
|
+
vctx,
|
|
168
|
+
env: rEnv.Ok(),
|
|
169
|
+
caller: { access, authenticated: true, blocked: blocked === true },
|
|
170
|
+
appSlug,
|
|
171
|
+
ownerHandle,
|
|
172
|
+
}));
|
|
173
|
+
if (mayWrite === false) {
|
|
165
174
|
return { allowed: false, reason: "write access denied" };
|
|
166
175
|
}
|
|
167
176
|
const candidate = buildMediaVersionDoc({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"img-doc-write.js","sourceRoot":"","sources":["../../jsr/public/img-doc-write.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EAGpB,WAAW,EACX,iBAAiB,EACjB,iBAAiB,GAElB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAA6B,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AACjI,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"img-doc-write.js","sourceRoot":"","sources":["../../jsr/public/img-doc-write.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { filterDocsByChannel } from "./channel-read-filter.js";
|
|
|
4
4
|
import { extractContribution, newSeededReduce } from "./grant-reduce.js";
|
|
5
5
|
import { audienceChannelsForReader, collectAudienceSubjects, inheritChannelKey, presentInheritRead } from "./audience-channels.js";
|
|
6
6
|
import { resolveAudienceMembershipFailClosed } from "./social-store.js";
|
|
7
|
-
import {
|
|
7
|
+
import { resolveDbAccess } from "./db-acl-resolver.js";
|
|
8
8
|
import { readAllowed } from "./app-documents-shared.js";
|
|
9
9
|
import { startClock } from "./cold-pull-timing.js";
|
|
10
10
|
export const MAX_INHERIT_HOST_DBS = 32;
|
|
@@ -82,13 +82,13 @@ export async function resolveInheritReadChannels(vctx, args) {
|
|
|
82
82
|
return keys;
|
|
83
83
|
};
|
|
84
84
|
const tOut = vctx.sql.tables.accessFnOutputs;
|
|
85
|
-
const
|
|
86
|
-
if (
|
|
85
|
+
const rEnv = await resolveDbAccess({ vctx, ownerHandle, appSlug, dbName: hostDb });
|
|
86
|
+
if (rEnv.isErr())
|
|
87
87
|
return record([]);
|
|
88
88
|
if ((await readAllowed({
|
|
89
89
|
vctx,
|
|
90
|
-
|
|
91
|
-
access,
|
|
90
|
+
env: rEnv.Ok(),
|
|
91
|
+
caller: { access, authenticated: args.authenticated, blocked: args.blocked === true },
|
|
92
92
|
appSlug,
|
|
93
93
|
ownerHandle,
|
|
94
94
|
})) === false)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inherit-read-resolver.js","sourceRoot":"","sources":["../../jsr/public/inherit-read-resolver.ts"],"names":[],"mappings":"AA4CA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG/C,OAAO,EAAE,sBAAsB,EAAqD,MAAM,4BAA4B,CAAC;AACvH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACnI,OAAO,EAAE,mCAAmC,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"inherit-read-resolver.js","sourceRoot":"","sources":["../../jsr/public/inherit-read-resolver.ts"],"names":[],"mappings":"AA4CA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG/C,OAAO,EAAE,sBAAsB,EAAqD,MAAM,4BAA4B,CAAC;AACvH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACnI,OAAO,EAAE,mCAAmC,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAyB,MAAM,uBAAuB,CAAC;AAyD1E,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AACvC,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAGrC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAG9B,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAO7B,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAOjC,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,IAAoB,EAAE,IAAiB;IACtF,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IAM/E,MAAM,IAAI,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC5C,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,MAAM,MAAM,GAAG,CAAC,EAAU,EAAE,KAAa,EAAQ,EAAE;QACjD,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,IAAI,IAAI,CAAC,IAAI,IAAI,oBAAoB,EAAE,CAAC;gBACtC,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;oBAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;gBACvD,OAAO;YACT,CAAC;YACD,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;YACxB,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACpB,CAAC;QACD,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC;YAC7B,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACf,QAAQ,EAAE,CAAC;QACb,CAAC;IACH,CAAC,CAAC;IACF,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAK5B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,QAAQ,IAAI,gBAAgB,EAAE,CAAC;gBACjC,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;oBAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;gBACvD,MAAM;YACR,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,EAAE,UAAU,EAAE,IAAI,OAAO,EAAE,CAAC;YACrC,IAAI,QAAQ,IAAI,gBAAgB,EAAE,CAAC;gBACjC,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;oBAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;gBACvD,MAAM;YACR,CAAC;YACD,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,WAAW,CAAC;gBAAE,SAAS;YAC1D,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;IAC7B,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,IAAI,GAAG,EAAU,CAAC;IAE9C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IAE1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,mBAAmB,EAAE,CAAC;QAC7D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,CAAC;QACxD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACnG,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,KAAK,MAAM,GAAG,IAAI,IAAI;gBAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;IAGd,KAAK,UAAU,aAAa,CAAC,MAAc,EAAE,UAAoB;QAC/D,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;QAC7B,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,MAAM,MAAM,GAAG,CAAC,IAAc,EAAY,EAAE;YAC1C,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC7B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;YAC7F,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QACF,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC;QAK7C,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACnF,IAAI,IAAI,CAAC,KAAK,EAAE;YAAE,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC;QACpC,IACE,CAAC,MAAM,WAAW,CAAC;YACjB,IAAI;YACJ,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE;YAEd,MAAM,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE;YACrF,OAAO;YACP,WAAW;SACZ,CAAC,CAAC,KAAK,KAAK;YAEb,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC;QAKpB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE;aAChC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;aAClD,IAAI,CAAC,IAAI,CAAC;aACV,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;aACxH,KAAK,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC;QAClC,KAAK,MAAM,CAAC,IAAI,SAAS;YAAE,WAAW,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;QAC1D,UAAU,IAAI,SAAS,CAAC,MAAM,CAAC;QAC/B,IAAI,SAAS,CAAC,MAAM,GAAG,mBAAmB,EAAE,CAAC;YAC3C,OAAO,CAAC,KAAK,CACX,yBAAyB,WAAW,IAAI,OAAO,IAAI,MAAM,SAAS,mBAAmB,mFAAmF,CACzK,CAAC;YACF,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC;QACpB,CAAC;QAID,MAAM,OAAO,GAAsB,EAAE,CAAC;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,gBAAgB,EAAE,CAAC;YAC7D,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,CAAC;YACxD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE;iBAC3B,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;iBAClD,IAAI,CAAC,IAAI,CAAC;iBACV,KAAK,CACJ,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CACvH,CAAC;YACJ,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;gBACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChB,WAAW,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YACjC,CAAC;YACD,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC;QAC5B,CAAC;QAMD,MAAM,WAAW,GAAG,IAAI,GAAG,EAA2B,CAAC;QACvD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3D,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;YAC3C,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK;gBAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACtE,CAAC;QACD,MAAM,WAAW,GAAG,sBAAsB,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAItE,MAAM,MAAM,GAAG,eAAe,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QACxD,KAAK,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,WAAW,EAAE,CAAC;YAC9C,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC;QAC5F,CAAC;QACD,MAAM,aAAa,GAAG,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAU,CAAC;QAM5G,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,uBAAuB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;YAC1F,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,UAAU,GAAG,MAAM,mCAAmC,CAAC,IAAI,EAAE;oBACjE,MAAM,EAAE,UAAU;oBAClB,QAAQ;oBACR,WAAW;oBACX,OAAO;iBACR,CAAC,CAAC;gBACH,KAAK,MAAM,EAAE,IAAI,yBAAyB,CAAC,UAAU,CAAC;oBAAE,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChF,CAAC;QACH,CAAC;QAKD,MAAM,SAAS,GAAG,mBAAmB,CAAC;YACpC,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;YAC3C,UAAU,EAAE,WAAW;YACvB,UAAU;YACV,iBAAiB,EAAE,aAAa;YAChC,cAAc,EAAE,MAAM,CAAC,cAAc;SACtC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC;AACH,CAAC"}
|
package/public/list-members.js
CHANGED
|
@@ -4,7 +4,7 @@ import { eq, and } from "drizzle-orm";
|
|
|
4
4
|
import { type } from "arktype";
|
|
5
5
|
import { unwrapMsgBase } from "../unwrap-msg-base.js";
|
|
6
6
|
import { optAuth } from "../check-auth.js";
|
|
7
|
-
import { checkDocAccess, canRead,
|
|
7
|
+
import { checkDocAccess, canRead, anyoneCanJoin } from "./access-helpers.js";
|
|
8
8
|
import { deriveDisplayName } from "./derive-display-name.js";
|
|
9
9
|
function safeDisplay(foreignInfo, fallbackEmail) {
|
|
10
10
|
const fi = foreignInfo;
|
|
@@ -31,8 +31,8 @@ export const listMembersEvento = {
|
|
|
31
31
|
const { access, isOwner } = req._auth
|
|
32
32
|
? await checkDocAccess(vctx, req._auth.verifiedAuth.claims.userId, req.appSlug, req.ownerHandle)
|
|
33
33
|
: { access: "none", isOwner: false };
|
|
34
|
-
const
|
|
35
|
-
const allowed =
|
|
34
|
+
const strangersWelcome = await anyoneCanJoin(vctx, req.appSlug, req.ownerHandle);
|
|
35
|
+
const allowed = strangersWelcome ? isOwner : canRead(access);
|
|
36
36
|
if (!allowed) {
|
|
37
37
|
await ctx.send.send(ctx, {
|
|
38
38
|
type: "vibes.diy.res-error",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-members.js","sourceRoot":"","sources":["../../jsr/public/list-members.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,MAAM,EAAE,MAAM,EAAsC,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAClH,OAAO,EAEL,cAAc,GAWf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"list-members.js","sourceRoot":"","sources":["../../jsr/public/list-members.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { AccessDescriptor } from "@vibes.diy/api-types";
|
|
2
|
+
export declare const PLATFORM_COMMENTS_CHANNEL = "comments";
|
|
3
|
+
export declare const PLATFORM_COMMENTS_DESCRIPTOR: AccessDescriptor;
|
|
4
|
+
export declare const PLATFORM_COMMENTS_SOURCE = "export function _comments(doc, oldDoc, user, ctx) {\n const READ = { channels: [\"comments\"], grant: { public: [\"comments\"] } };\n if (!user) {\n return { forbidden: \"sign in to comment\" };\n }\n const claimed = typeof doc.authorHandle === \"string\" ? doc.authorHandle : \"\";\n if (doc.authorIsOwner === true && user.isOwner !== true) {\n return { forbidden: \"a comment cannot claim to be the owner's\" };\n }\n if (oldDoc) {\n const priorAuthor = typeof oldDoc.authorHandle === \"string\" ? oldDoc.authorHandle : \"\";\n if (user.userHandle !== priorAuthor && user.isOwner !== true) {\n return { forbidden: \"only the comment's author or the vibe owner may change it\" };\n }\n if (claimed !== priorAuthor) {\n return { forbidden: \"a comment's author cannot be reassigned\" };\n }\n if (doc.authorUserId !== oldDoc.authorUserId) {\n return { forbidden: \"a comment's author cannot be reassigned\" };\n }\n if ((doc.authorIsOwner === true) !== (oldDoc.authorIsOwner === true)) {\n return { forbidden: \"a comment's owner badge cannot be changed\" };\n }\n return READ;\n }\n if (claimed !== user.userHandle) {\n return { forbidden: \"a comment must be attributed to the person writing it\" };\n }\n return READ;\n}\n";
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export const PLATFORM_COMMENTS_CHANNEL = "comments";
|
|
2
|
+
export const PLATFORM_COMMENTS_DESCRIPTOR = {
|
|
3
|
+
channels: [PLATFORM_COMMENTS_CHANNEL],
|
|
4
|
+
grant: { public: [PLATFORM_COMMENTS_CHANNEL] },
|
|
5
|
+
};
|
|
6
|
+
export const PLATFORM_COMMENTS_SOURCE = `export function _comments(doc, oldDoc, user, ctx) {
|
|
7
|
+
const READ = { channels: ["${PLATFORM_COMMENTS_CHANNEL}"], grant: { public: ["${PLATFORM_COMMENTS_CHANNEL}"] } };
|
|
8
|
+
if (!user) {
|
|
9
|
+
return { forbidden: "sign in to comment" };
|
|
10
|
+
}
|
|
11
|
+
const claimed = typeof doc.authorHandle === "string" ? doc.authorHandle : "";
|
|
12
|
+
if (doc.authorIsOwner === true && user.isOwner !== true) {
|
|
13
|
+
return { forbidden: "a comment cannot claim to be the owner's" };
|
|
14
|
+
}
|
|
15
|
+
if (oldDoc) {
|
|
16
|
+
const priorAuthor = typeof oldDoc.authorHandle === "string" ? oldDoc.authorHandle : "";
|
|
17
|
+
if (user.userHandle !== priorAuthor && user.isOwner !== true) {
|
|
18
|
+
return { forbidden: "only the comment's author or the vibe owner may change it" };
|
|
19
|
+
}
|
|
20
|
+
if (claimed !== priorAuthor) {
|
|
21
|
+
return { forbidden: "a comment's author cannot be reassigned" };
|
|
22
|
+
}
|
|
23
|
+
if (doc.authorUserId !== oldDoc.authorUserId) {
|
|
24
|
+
return { forbidden: "a comment's author cannot be reassigned" };
|
|
25
|
+
}
|
|
26
|
+
if ((doc.authorIsOwner === true) !== (oldDoc.authorIsOwner === true)) {
|
|
27
|
+
return { forbidden: "a comment's owner badge cannot be changed" };
|
|
28
|
+
}
|
|
29
|
+
return READ;
|
|
30
|
+
}
|
|
31
|
+
if (claimed !== user.userHandle) {
|
|
32
|
+
return { forbidden: "a comment must be attributed to the person writing it" };
|
|
33
|
+
}
|
|
34
|
+
return READ;
|
|
35
|
+
}
|
|
36
|
+
`;
|
|
37
|
+
//# sourceMappingURL=platform-comments-access-fn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform-comments-access-fn.js","sourceRoot":"","sources":["../../jsr/public/platform-comments-access-fn.ts"],"names":[],"mappings":"AAsFA,MAAM,CAAC,MAAM,yBAAyB,GAAG,UAAU,CAAC;AAYpD,MAAM,CAAC,MAAM,4BAA4B,GAAqB;IAC5D,QAAQ,EAAE,CAAC,yBAAyB,CAAC;IACrC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,yBAAyB,CAAC,EAAE;CAC/C,CAAC;AAKF,MAAM,CAAC,MAAM,wBAAwB,GAAG;+BACT,yBAAyB,0BAA0B,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6B1G,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { VibesApiSQLCtx } from "../types.js";
|
|
2
|
+
import { ensureAppSettings } from "./ensure-app-settings.js";
|
|
3
|
+
export declare function resetLegacyCommentsMigrationMemo(vctx: VibesApiSQLCtx): void;
|
|
4
|
+
export declare function ensureLegacyCommentsMigrated(vctx: VibesApiSQLCtx, ownerHandle: string, appSlug: string): Promise<void>;
|
|
5
|
+
export declare function moveStoredPin(vctx: VibesApiSQLCtx, ownerHandle: string, appSlug: string, ensureSettings?: typeof ensureAppSettings): Promise<void>;
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import { and, desc, eq, sql } from "drizzle-orm";
|
|
2
|
+
import { exception2Result } from "@adviser/cement";
|
|
3
|
+
import { LEGACY_COMMENTS_DB_NAME } from "@vibes.diy/api-types";
|
|
4
|
+
import { clearChannelIndexCompletenessMarker, syncChannelIndexForDescriptor } from "./access-fn-channel-index.js";
|
|
5
|
+
import { allocateAndInsertRevision } from "./seq-allocation.js";
|
|
6
|
+
import { ensureAppSettings } from "./ensure-app-settings.js";
|
|
7
|
+
import { hasGrantBearingDescriptor } from "./viewer-channel-resolver.js";
|
|
8
|
+
import { PLATFORM_COMMENTS_CID, PLATFORM_COMMENTS_DB_NAME, PLATFORM_COMMENTS_DESCRIPTOR } from "./platform-db-registry.js";
|
|
9
|
+
const MEMO_TTL_MS = 5 * 60 * 1000;
|
|
10
|
+
const checked = new WeakMap();
|
|
11
|
+
function memoKey(ownerHandle, appSlug) {
|
|
12
|
+
return JSON.stringify([ownerHandle, appSlug]);
|
|
13
|
+
}
|
|
14
|
+
export function resetLegacyCommentsMigrationMemo(vctx) {
|
|
15
|
+
checked.delete(vctx.sql.db);
|
|
16
|
+
}
|
|
17
|
+
export async function ensureLegacyCommentsMigrated(vctx, ownerHandle, appSlug) {
|
|
18
|
+
const dbKey = vctx.sql.db;
|
|
19
|
+
let perDb = checked.get(dbKey);
|
|
20
|
+
if (perDb === undefined) {
|
|
21
|
+
perDb = new Map();
|
|
22
|
+
checked.set(dbKey, perDb);
|
|
23
|
+
}
|
|
24
|
+
const key = memoKey(ownerHandle, appSlug);
|
|
25
|
+
const last = perDb.get(key);
|
|
26
|
+
const now = Date.now();
|
|
27
|
+
if (last !== undefined && now - last < MEMO_TTL_MS)
|
|
28
|
+
return;
|
|
29
|
+
const r = await exception2Result(() => migrate(vctx, ownerHandle, appSlug));
|
|
30
|
+
if (r.isErr()) {
|
|
31
|
+
console.warn(`comments migration failed for ${ownerHandle}/${appSlug}:`, r.Err());
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
perDb.set(key, now);
|
|
35
|
+
}
|
|
36
|
+
async function migrate(vctx, ownerHandle, appSlug) {
|
|
37
|
+
const tDocs = vctx.sql.tables.appDocuments;
|
|
38
|
+
const tAfb = vctx.sql.tables.accessFunctionBindings;
|
|
39
|
+
const ownedBinding = await vctx.sql.db
|
|
40
|
+
.select({ dbName: tAfb.dbName })
|
|
41
|
+
.from(tAfb)
|
|
42
|
+
.where(and(eq(tAfb.ownerHandle, ownerHandle), eq(tAfb.appSlug, appSlug), eq(tAfb.dbName, LEGACY_COMMENTS_DB_NAME)))
|
|
43
|
+
.limit(1)
|
|
44
|
+
.then((rows) => rows[0]);
|
|
45
|
+
if (ownedBinding !== undefined)
|
|
46
|
+
return;
|
|
47
|
+
await moveStoredPin(vctx, ownerHandle, appSlug);
|
|
48
|
+
const legacyRevisions = await vctx.sql.db
|
|
49
|
+
.select({ docId: tDocs.docId, seq: tDocs.seq, deleted: tDocs.deleted })
|
|
50
|
+
.from(tDocs)
|
|
51
|
+
.where(and(eq(tDocs.ownerHandle, ownerHandle), eq(tDocs.appSlug, appSlug), eq(tDocs.dbName, LEGACY_COMMENTS_DB_NAME)))
|
|
52
|
+
.orderBy(sql `${tDocs.docId}, ${tDocs.seq}`);
|
|
53
|
+
if (legacyRevisions.length === 0)
|
|
54
|
+
return;
|
|
55
|
+
const latestDeleted = new Map();
|
|
56
|
+
for (const row of legacyRevisions)
|
|
57
|
+
latestDeleted.set(row.docId, row.deleted);
|
|
58
|
+
const liveDocIds = [...latestDeleted.entries()].filter(([, deleted]) => deleted !== 1).map(([docId]) => docId);
|
|
59
|
+
const tOutputs = vctx.sql.tables.accessFnOutputs;
|
|
60
|
+
for (const docId of liveDocIds)
|
|
61
|
+
await materializeOutput(vctx, ownerHandle, appSlug, docId);
|
|
62
|
+
const failures = [];
|
|
63
|
+
for (const docId of new Set(legacyRevisions.map((r) => r.docId))) {
|
|
64
|
+
const rMove = await exception2Result(() => moveOneDoc(vctx, ownerHandle, appSlug, docId));
|
|
65
|
+
if (rMove.isErr()) {
|
|
66
|
+
console.warn(`comments migration: could not move ${ownerHandle}/${appSlug}/${docId}:`, rMove.Err());
|
|
67
|
+
failures.push(docId);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
const migratedRevisions = await vctx.sql.db
|
|
71
|
+
.select({ docId: tDocs.docId, seq: tDocs.seq, deleted: tDocs.deleted })
|
|
72
|
+
.from(tDocs)
|
|
73
|
+
.where(and(eq(tDocs.ownerHandle, ownerHandle), eq(tDocs.appSlug, appSlug), eq(tDocs.dbName, PLATFORM_COMMENTS_DB_NAME)))
|
|
74
|
+
.orderBy(sql `${tDocs.docId}, ${tDocs.seq}`);
|
|
75
|
+
const migratedDeleted = new Map();
|
|
76
|
+
for (const row of migratedRevisions)
|
|
77
|
+
migratedDeleted.set(row.docId, row.deleted);
|
|
78
|
+
const covered = new Set((await vctx.sql.db
|
|
79
|
+
.select({ docId: tOutputs.docId })
|
|
80
|
+
.from(tOutputs)
|
|
81
|
+
.where(and(eq(tOutputs.ownerHandle, ownerHandle), eq(tOutputs.appSlug, appSlug), eq(tOutputs.dbName, PLATFORM_COMMENTS_DB_NAME)))).map((r) => r.docId));
|
|
82
|
+
for (const [docId, deleted] of migratedDeleted) {
|
|
83
|
+
if (deleted === 1 || covered.has(docId))
|
|
84
|
+
continue;
|
|
85
|
+
await materializeOutput(vctx, ownerHandle, appSlug, docId);
|
|
86
|
+
}
|
|
87
|
+
await vctx.sql.db
|
|
88
|
+
.delete(tOutputs)
|
|
89
|
+
.where(and(eq(tOutputs.ownerHandle, ownerHandle), eq(tOutputs.appSlug, appSlug), eq(tOutputs.dbName, LEGACY_COMMENTS_DB_NAME)));
|
|
90
|
+
const tIdx = vctx.sql.tables.accessFnChannelIndex;
|
|
91
|
+
if (tIdx !== undefined) {
|
|
92
|
+
await vctx.sql.db
|
|
93
|
+
.delete(tIdx)
|
|
94
|
+
.where(and(eq(tIdx.ownerHandle, ownerHandle), eq(tIdx.appSlug, appSlug), eq(tIdx.dbName, LEGACY_COMMENTS_DB_NAME)));
|
|
95
|
+
}
|
|
96
|
+
await clearChannelIndexCompletenessMarker(vctx.sql.db, vctx.sql.tables, {
|
|
97
|
+
ownerHandle,
|
|
98
|
+
appSlug,
|
|
99
|
+
dbName: LEGACY_COMMENTS_DB_NAME,
|
|
100
|
+
});
|
|
101
|
+
const tFeed = vctx.sql.tables.syncFeed;
|
|
102
|
+
if (tFeed !== undefined) {
|
|
103
|
+
await vctx.sql.db
|
|
104
|
+
.delete(tFeed)
|
|
105
|
+
.where(and(eq(tFeed.ownerHandle, ownerHandle), eq(tFeed.appSlug, appSlug), eq(tFeed.dbName, LEGACY_COMMENTS_DB_NAME)));
|
|
106
|
+
}
|
|
107
|
+
if (failures.length > 0) {
|
|
108
|
+
throw new Error(`comments migration could not move ${failures.length} doc(s): ${failures.join(", ")}`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
async function moveOneDoc(vctx, ownerHandle, appSlug, docId) {
|
|
112
|
+
const tDocs = vctx.sql.tables.appDocuments;
|
|
113
|
+
const legacyWhere = and(eq(tDocs.ownerHandle, ownerHandle), eq(tDocs.appSlug, appSlug), eq(tDocs.dbName, LEGACY_COMMENTS_DB_NAME), eq(tDocs.docId, docId));
|
|
114
|
+
const existing = await vctx.sql.db
|
|
115
|
+
.select({ seq: tDocs.seq })
|
|
116
|
+
.from(tDocs)
|
|
117
|
+
.where(and(eq(tDocs.ownerHandle, ownerHandle), eq(tDocs.appSlug, appSlug), eq(tDocs.dbName, PLATFORM_COMMENTS_DB_NAME), eq(tDocs.docId, docId)))
|
|
118
|
+
.limit(1)
|
|
119
|
+
.then((rows) => rows[0]);
|
|
120
|
+
if (existing === undefined) {
|
|
121
|
+
await vctx.sql.db.update(tDocs).set({ dbName: PLATFORM_COMMENTS_DB_NAME }).where(legacyWhere);
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
const legacyHead = await vctx.sql.db
|
|
125
|
+
.select({ seq: tDocs.seq, data: tDocs.data, deleted: tDocs.deleted, userId: tDocs.userId, created: tDocs.created })
|
|
126
|
+
.from(tDocs)
|
|
127
|
+
.where(legacyWhere)
|
|
128
|
+
.orderBy(desc(tDocs.seq))
|
|
129
|
+
.limit(1)
|
|
130
|
+
.then((rows) => rows[0]);
|
|
131
|
+
if (legacyHead !== undefined) {
|
|
132
|
+
await allocateAndInsertRevision({
|
|
133
|
+
db: vctx.sql.db,
|
|
134
|
+
flavour: vctx.sql.flavour,
|
|
135
|
+
table: tDocs,
|
|
136
|
+
row: {
|
|
137
|
+
ownerHandle,
|
|
138
|
+
appSlug,
|
|
139
|
+
dbName: PLATFORM_COMMENTS_DB_NAME,
|
|
140
|
+
docId,
|
|
141
|
+
userId: legacyHead.userId,
|
|
142
|
+
data: legacyHead.data,
|
|
143
|
+
deleted: legacyHead.deleted,
|
|
144
|
+
created: legacyHead.created,
|
|
145
|
+
},
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
await vctx.sql.db.delete(tDocs).where(legacyWhere);
|
|
149
|
+
}
|
|
150
|
+
async function materializeOutput(vctx, ownerHandle, appSlug, docId) {
|
|
151
|
+
const tOutputs = vctx.sql.tables.accessFnOutputs;
|
|
152
|
+
const output = JSON.stringify(PLATFORM_COMMENTS_DESCRIPTOR);
|
|
153
|
+
const hasGrants = hasGrantBearingDescriptor(PLATFORM_COMMENTS_DESCRIPTOR) ? 1 : 0;
|
|
154
|
+
await vctx.sql.db
|
|
155
|
+
.insert(tOutputs)
|
|
156
|
+
.values({
|
|
157
|
+
ownerHandle,
|
|
158
|
+
appSlug,
|
|
159
|
+
dbName: PLATFORM_COMMENTS_DB_NAME,
|
|
160
|
+
docId,
|
|
161
|
+
fnCid: PLATFORM_COMMENTS_CID,
|
|
162
|
+
output,
|
|
163
|
+
hasGrants,
|
|
164
|
+
})
|
|
165
|
+
.onConflictDoUpdate({
|
|
166
|
+
target: [tOutputs.ownerHandle, tOutputs.appSlug, tOutputs.dbName, tOutputs.docId],
|
|
167
|
+
set: { fnCid: PLATFORM_COMMENTS_CID, output, hasGrants },
|
|
168
|
+
});
|
|
169
|
+
const rIndex = await syncChannelIndexForDescriptor(vctx.sql.db, vctx.sql.tables, { ownerHandle, appSlug, dbName: PLATFORM_COMMENTS_DB_NAME, docId }, PLATFORM_COMMENTS_DESCRIPTOR);
|
|
170
|
+
if (rIndex.isErr())
|
|
171
|
+
throw rIndex.Err();
|
|
172
|
+
}
|
|
173
|
+
export async function moveStoredPin(vctx, ownerHandle, appSlug, ensureSettings = ensureAppSettings) {
|
|
174
|
+
const read = { type: "vibes.diy.req-ensure-app-settings", appSlug, ownerHandle };
|
|
175
|
+
const rSettings = await ensureSettings(vctx, { ...read, env: [] });
|
|
176
|
+
if (rSettings.isErr())
|
|
177
|
+
return;
|
|
178
|
+
const dbAcls = rSettings.Ok().settings.entry.dbAcls;
|
|
179
|
+
const legacyPin = dbAcls?.[LEGACY_COMMENTS_DB_NAME];
|
|
180
|
+
if (legacyPin === undefined)
|
|
181
|
+
return;
|
|
182
|
+
const tHandle = vctx.sql.tables.handleBinding;
|
|
183
|
+
const ownerRow = await vctx.sql.db
|
|
184
|
+
.select({ userId: tHandle.userId })
|
|
185
|
+
.from(tHandle)
|
|
186
|
+
.where(eq(tHandle.handle, ownerHandle))
|
|
187
|
+
.limit(1)
|
|
188
|
+
.then((rows) => rows[0]);
|
|
189
|
+
if (ownerRow === undefined)
|
|
190
|
+
return;
|
|
191
|
+
if (dbAcls?.[PLATFORM_COMMENTS_DB_NAME] === undefined) {
|
|
192
|
+
const rSet = await ensureSettings(vctx, { ...read, dbAcl: { dbName: PLATFORM_COMMENTS_DB_NAME, acl: legacyPin } }, ownerRow.userId);
|
|
193
|
+
if (rSet.isErr())
|
|
194
|
+
throw new Error(`could not re-pin ${PLATFORM_COMMENTS_DB_NAME}: ${rSet.Err().message}`);
|
|
195
|
+
if (rSet.Ok().error !== undefined)
|
|
196
|
+
throw new Error(`could not re-pin ${PLATFORM_COMMENTS_DB_NAME}: ${rSet.Ok().error}`);
|
|
197
|
+
const stored = rSet.Ok().settings.entry.dbAcls?.[PLATFORM_COMMENTS_DB_NAME];
|
|
198
|
+
if (stored === undefined) {
|
|
199
|
+
throw new Error(`re-pin of ${PLATFORM_COMMENTS_DB_NAME} reported success but stored nothing`);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
await ensureSettings(vctx, { ...read, dbAclRemove: { dbName: LEGACY_COMMENTS_DB_NAME } }, ownerRow.userId);
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=platform-comments-migration.js.map
|