@vibes.diy/api-svc 10.7.4 → 10.8.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.
@@ -68,6 +68,9 @@ export declare const lockedGroupsVersions: {
68
68
  "@vibes.diy/vibe-runtime/": string;
69
69
  "@vibes.diy/vibe-types": string;
70
70
  "@vibes.diy/api-types": string;
71
+ "@vibes.diy/api-types/db-acls": string;
72
+ "@vibes.diy/api-types/app-documents": string;
73
+ "@vibes.diy/api-types/access-function": string;
71
74
  "@vibes.diy/call-ai-v2": string;
72
75
  "@vibes.diy/vibe-db-explorer": string;
73
76
  "@vibes.diy/vibe-db-explorer/page": string;
@@ -68,6 +68,9 @@ export const lockedGroupsVersions = {
68
68
  "@vibes.diy/vibe-runtime/": "privateNpm:",
69
69
  "@vibes.diy/vibe-types": "privateNpm:",
70
70
  "@vibes.diy/api-types": "privateNpm:",
71
+ "@vibes.diy/api-types/db-acls": "privateNpm:",
72
+ "@vibes.diy/api-types/app-documents": "privateNpm:",
73
+ "@vibes.diy/api-types/access-function": "privateNpm:",
71
74
  "@vibes.diy/call-ai-v2": "privateNpm:",
72
75
  "@vibes.diy/vibe-db-explorer": "privateNpm:",
73
76
  "@vibes.diy/vibe-db-explorer/page": "privateNpm:",
@@ -1 +1 @@
1
- {"version":3,"file":"grouped-vibe-import-map.js","sourceRoot":"","sources":["../../jsr/intern/grouped-vibe-import-map.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,EAAE,EAAE,SAAS;IAKb,KAAK,EAAE,QAAQ;IACf,cAAc,EAAE,QAAQ;IACxB,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,OAAO;IACZ,OAAO,EAAE,QAAQ;IACjB,IAAI,EAAE,OAAO;IACb,SAAS,EAAE,OAAO;IAClB,YAAY,EAAE,QAAQ;IACtB,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,QAAQ;IACrB,YAAY,EAAE,QAAQ;IACtB,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,SAAS;IAMlB,OAAO,EAAE,QAAQ;CAClB,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,WAAW,EAAE;QACX,WAAW,EAAE,qBAAqB;KACnC;IACD,SAAS,EAAE;QACT,iBAAiB,EAAE,wBAAwB;QAC3C,IAAI,EAAE,cAAc;QACpB,YAAY,EAAE,sBAAsB;QACpC,KAAK,EAAE,eAAe;QACtB,YAAY,EAAE,eAAe;QAC7B,cAAc,EAAE,eAAe;QAC/B,GAAG,EAAE,aAAa;QAClB,OAAO,EAAE,iBAAiB;QAC1B,IAAI,EAAE,cAAc;QACpB,iBAAiB,EAAE,cAAc;QACjC,SAAS,EAAE,mBAAmB;QAO9B,eAAe,EAAE,+BAA+B;QAChD,gBAAgB,EAAE,gCAAgC;QAClD,0BAA0B,EAAE,+BAA+B;QAC3D,2BAA2B,EAAE,gCAAgC;QAC7D,cAAc,EAAE,iBAAiB;KAClC;IAOD,KAAK,EAAE;QACL,KAAK,EAAE,qCAAqC;QAC5C,WAAW,EAAE,yCAAyC;KACvD;IACD,mBAAmB,EAAE;QACnB,WAAW,EAAE,yCAAyC;QACtD,kBAAkB,EAAE,gDAAgD;QACpE,mBAAmB,EAAE,iDAAiD;QACtE,uBAAuB,EAAE,qDAAqD;KAC/E;IACD,cAAc,EAAE;QACd,+BAA+B,EAAE,aAAa;QAC9C,mCAAmC,EAAE,aAAa;QAClD,0CAA0C,EAAE,aAAa;QACzD,2CAA2C,EAAE,aAAa;QAC1D,+CAA+C,EAAE,aAAa;KAC/D;IACD,SAAS,EAAE;QACT,mBAAmB,EAAE,iBAAiB;QAKtC,eAAe,EAAE,iBAAiB;KACnC;IACD,cAAc,EAAE;QACd,cAAc,EAAE,sBAAsB;QACtC,kBAAkB,EAAE,sBAAsB;KAC3C;IACD,cAAc,EAAE;QACd,iBAAiB,EAAE,aAAa;QAChC,yBAAyB,EAAE,aAAa;QAIxC,0BAA0B,EAAE,aAAa;QACzC,uBAAuB,EAAE,aAAa;QACtC,sBAAsB,EAAE,aAAa;QACrC,uBAAuB,EAAE,aAAa;QACtC,6BAA6B,EAAE,aAAa;QAC5C,kCAAkC,EAAE,aAAa;QACjD,kCAAkC,EAAE,aAAa;QACjD,mCAAmC,EAAE,aAAa;QAElD,SAAS,EAAE,+BAA+B;QAC1C,SAAS,EAAE,+BAA+B;QAC1C,WAAW,EAAE,+BAA+B;QAQ5C,2BAA2B,EAAE,aAAa;QAC1C,OAAO,EAAE,iCAAiC;KAC3C;CACF,CAAC"}
1
+ {"version":3,"file":"grouped-vibe-import-map.js","sourceRoot":"","sources":["../../jsr/intern/grouped-vibe-import-map.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,EAAE,EAAE,SAAS;IAKb,KAAK,EAAE,QAAQ;IACf,cAAc,EAAE,QAAQ;IACxB,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,OAAO;IACZ,OAAO,EAAE,QAAQ;IACjB,IAAI,EAAE,OAAO;IACb,SAAS,EAAE,OAAO;IAClB,YAAY,EAAE,QAAQ;IACtB,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,QAAQ;IACrB,YAAY,EAAE,QAAQ;IACtB,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,SAAS;IAMlB,OAAO,EAAE,QAAQ;CAClB,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,WAAW,EAAE;QACX,WAAW,EAAE,qBAAqB;KACnC;IACD,SAAS,EAAE;QACT,iBAAiB,EAAE,wBAAwB;QAC3C,IAAI,EAAE,cAAc;QACpB,YAAY,EAAE,sBAAsB;QACpC,KAAK,EAAE,eAAe;QACtB,YAAY,EAAE,eAAe;QAC7B,cAAc,EAAE,eAAe;QAC/B,GAAG,EAAE,aAAa;QAClB,OAAO,EAAE,iBAAiB;QAC1B,IAAI,EAAE,cAAc;QACpB,iBAAiB,EAAE,cAAc;QACjC,SAAS,EAAE,mBAAmB;QAO9B,eAAe,EAAE,+BAA+B;QAChD,gBAAgB,EAAE,gCAAgC;QAClD,0BAA0B,EAAE,+BAA+B;QAC3D,2BAA2B,EAAE,gCAAgC;QAC7D,cAAc,EAAE,iBAAiB;KAClC;IAOD,KAAK,EAAE;QACL,KAAK,EAAE,qCAAqC;QAC5C,WAAW,EAAE,yCAAyC;KACvD;IACD,mBAAmB,EAAE;QACnB,WAAW,EAAE,yCAAyC;QACtD,kBAAkB,EAAE,gDAAgD;QACpE,mBAAmB,EAAE,iDAAiD;QACtE,uBAAuB,EAAE,qDAAqD;KAC/E;IACD,cAAc,EAAE;QACd,+BAA+B,EAAE,aAAa;QAC9C,mCAAmC,EAAE,aAAa;QAClD,0CAA0C,EAAE,aAAa;QACzD,2CAA2C,EAAE,aAAa;QAC1D,+CAA+C,EAAE,aAAa;KAC/D;IACD,SAAS,EAAE;QACT,mBAAmB,EAAE,iBAAiB;QAKtC,eAAe,EAAE,iBAAiB;KACnC;IACD,cAAc,EAAE;QACd,cAAc,EAAE,sBAAsB;QACtC,kBAAkB,EAAE,sBAAsB;KAC3C;IACD,cAAc,EAAE;QACd,iBAAiB,EAAE,aAAa;QAChC,yBAAyB,EAAE,aAAa;QAIxC,0BAA0B,EAAE,aAAa;QACzC,uBAAuB,EAAE,aAAa;QACtC,sBAAsB,EAAE,aAAa;QAOrC,8BAA8B,EAAE,aAAa;QAC7C,oCAAoC,EAAE,aAAa;QACnD,sCAAsC,EAAE,aAAa;QACrD,uBAAuB,EAAE,aAAa;QACtC,6BAA6B,EAAE,aAAa;QAC5C,kCAAkC,EAAE,aAAa;QACjD,kCAAkC,EAAE,aAAa;QACjD,mCAAmC,EAAE,aAAa;QAElD,SAAS,EAAE,+BAA+B;QAC1C,SAAS,EAAE,+BAA+B;QAC1C,WAAW,EAAE,+BAA+B;QAQ5C,2BAA2B,EAAE,aAAa;QAC1C,OAAO,EAAE,iCAAiC;KAC3C;CACF,CAAC"}
@@ -26,53 +26,76 @@ async function readAnonymousSeedDocsInner(vctx, ownerHandle, appSlug) {
26
26
  .then((rows) => rows.map((r) => r.dbName));
27
27
  if (dbNames.length === 0)
28
28
  return undefined;
29
+ const perDb = [];
30
+ for (let i = 0; i < dbNames.length; i += SEED_DB_CONCURRENCY) {
31
+ const batch = dbNames.slice(i, i + SEED_DB_CONCURRENCY);
32
+ const batchDocs = await Promise.all(batch.map((dbName) => readSeedDbDocs(vctx, { ownerHandle, appSlug, dbName })));
33
+ for (const docs of batchDocs)
34
+ perDb.push(docs);
35
+ }
29
36
  const seed = {};
30
- for (const dbName of dbNames) {
31
- const rAcl = await resolveDbAcl({ vctx, ownerHandle, appSlug, dbName });
32
- if (rAcl.isErr())
33
- continue;
34
- const acl = rAcl.Ok();
35
- if (acl?.read !== undefined && !aclAllows(acl, "read", "none"))
36
- continue;
37
- const headDocs = await loadHeadDocs(vctx, { ownerHandle, appSlug, dbName });
38
- const docs = headDocs.map((row) => ({
39
- _id: row.docId,
40
- ...mintFilesUrls(row.data, {
41
- ownerHandle,
42
- appSlug,
43
- dbName,
44
- docId: row.docId,
45
- svc: vctx.params.vibes.svc,
46
- }),
47
- }));
48
- let visible = docs;
49
- const afbRow = await resolveAccessBinding(vctx, ownerHandle, appSlug, dbName);
50
- if (afbRow?.accessFnCid) {
51
- const out = vctx.sql.tables.accessFnOutputs;
52
- const rows = await vctx.sql.db
53
- .select({ docId: out.docId, output: out.output })
54
- .from(out)
55
- .where(and(eq(out.ownerHandle, ownerHandle), eq(out.appSlug, appSlug), eq(out.dbName, dbName)));
56
- const decodedOutputs = decodeAccessOutputRows(rows);
57
- const resolution = await resolveViewerChannels(vctx, {
58
- ownerHandle,
59
- appSlug,
60
- userId: null,
61
- isDm: false,
62
- access: "none",
63
- decodedOutputs,
64
- });
65
- visible = filterDocsByChannel({
66
- docs,
67
- outputRows: decodedOutputs,
68
- userHandle: null,
69
- effectiveChannels: resolution.effectiveChannels,
70
- publicChannels: resolution.publicChannels,
71
- });
72
- }
73
- if (visible.length > 0)
74
- seed[dbName] = visible;
37
+ for (const [i, dbName] of dbNames.entries()) {
38
+ const docs = perDb[i];
39
+ if (docs.length > 0)
40
+ seed[dbName] = docs;
75
41
  }
76
42
  return Object.keys(seed).length > 0 ? seed : undefined;
77
43
  }
44
+ const SEED_DB_CONCURRENCY = 4;
45
+ async function readSeedDbDocs(vctx, part) {
46
+ const { ownerHandle, appSlug, dbName } = part;
47
+ const rAcl = await resolveDbAcl({ vctx, ownerHandle, appSlug, dbName });
48
+ if (rAcl.isErr())
49
+ return [];
50
+ const acl = rAcl.Ok();
51
+ if (acl?.read !== undefined && aclAllows(acl, "read", "none") === false)
52
+ return [];
53
+ const afbRow = await resolveAccessBinding(vctx, ownerHandle, appSlug, dbName);
54
+ if (afbRow === undefined || afbRow.accessFnCid.length === 0) {
55
+ return toSeedDocs(vctx, part, await loadHeadDocs(vctx, part));
56
+ }
57
+ const candidates = await anonymousVisibleDocIds(vctx, part);
58
+ if (candidates.length === 0)
59
+ return [];
60
+ const headDocs = await loadHeadDocs(vctx, part, { docIds: [...candidates].sort() });
61
+ const visible = new Set(await anonymousVisibleDocIds(vctx, part, headDocs.map((row) => row.docId)));
62
+ return toSeedDocs(vctx, part, headDocs.filter((row) => visible.has(row.docId)));
63
+ }
64
+ async function anonymousVisibleDocIds(vctx, part, docIds) {
65
+ const { ownerHandle, appSlug, dbName } = part;
66
+ const out = vctx.sql.tables.accessFnOutputs;
67
+ const rows = await vctx.sql.db
68
+ .select({ docId: out.docId, output: out.output })
69
+ .from(out)
70
+ .where(and(eq(out.ownerHandle, ownerHandle), eq(out.appSlug, appSlug), eq(out.dbName, dbName)));
71
+ const decodedOutputs = decodeAccessOutputRows(rows);
72
+ const resolution = await resolveViewerChannels(vctx, {
73
+ ownerHandle,
74
+ appSlug,
75
+ userId: null,
76
+ isDm: false,
77
+ access: "none",
78
+ decodedOutputs,
79
+ });
80
+ const docs = (docIds ?? decodedOutputs.map(({ row }) => row.docId)).map((docId) => ({ _id: docId }));
81
+ return filterDocsByChannel({
82
+ docs,
83
+ outputRows: decodedOutputs,
84
+ userHandle: null,
85
+ effectiveChannels: resolution.effectiveChannels,
86
+ publicChannels: resolution.publicChannels,
87
+ }).map((doc) => doc._id);
88
+ }
89
+ function toSeedDocs(vctx, part, headDocs) {
90
+ return headDocs.map((row) => ({
91
+ _id: row.docId,
92
+ ...mintFilesUrls(row.data, {
93
+ ownerHandle: part.ownerHandle,
94
+ appSlug: part.appSlug,
95
+ dbName: part.dbName,
96
+ docId: row.docId,
97
+ svc: vctx.params.vibes.svc,
98
+ }),
99
+ }));
100
+ }
78
101
  //# sourceMappingURL=read-anonymous-seed-docs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"read-anonymous-seed-docs.js","sourceRoot":"","sources":["../../jsr/intern/read-anonymous-seed-docs.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAQrE,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAAoB,EACpB,WAAmB,EACnB,OAAe;IAEf,MAAM,CAAC,GAAG,MAAM,gBAAgB,CAAC,KAAK,IAAI,EAAE,CAAC,0BAA0B,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IACrG,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACvC,CAAC;AAED,KAAK,UAAU,0BAA0B,CACvC,IAAoB,EACpB,WAAmB,EACnB,OAAe;IAIf,IAAI,eAAe,CAAC,WAAW,CAAC;QAAE,OAAO,SAAS,CAAC;IAGnD,IAAI,CAAC,CAAC,MAAM,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAE5E,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC;IACvC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE;SAC9B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;SACpC,IAAI,CAAC,CAAC,CAAC;SACP,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;SAClE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAE3C,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAG7B,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QACxE,IAAI,IAAI,CAAC,KAAK,EAAE;YAAE,SAAS;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QACtB,IAAI,GAAG,EAAE,IAAI,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC;YAAE,SAAS;QAezE,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5E,MAAM,IAAI,GAAc,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC7C,GAAG,EAAE,GAAG,CAAC,KAAK;YACd,GAAG,aAAa,CAAC,GAAG,CAAC,IAA+B,EAAE;gBACpD,WAAW;gBACX,OAAO;gBACP,MAAM;gBACN,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG;aAC3B,CAAC;SACH,CAAC,CAAC,CAAC;QAOJ,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC9E,IAAI,MAAM,EAAE,WAAW,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC;YAC5C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE;iBAC3B,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;iBAChD,IAAI,CAAC,GAAG,CAAC;iBACT,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YAClG,MAAM,cAAc,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;YAGpD,MAAM,UAAU,GAAG,MAAM,qBAAqB,CAAC,IAAI,EAAE;gBACnD,WAAW;gBACX,OAAO;gBACP,MAAM,EAAE,IAAI;gBACZ,IAAI,EAAE,KAAK;gBACX,MAAM,EAAE,MAAM;gBACd,cAAc;aACf,CAAC,CAAC;YACH,OAAO,GAAG,mBAAmB,CAAC;gBAC5B,IAAI;gBACJ,UAAU,EAAE,cAAc;gBAC1B,UAAU,EAAE,IAAI;gBAChB,iBAAiB,EAAE,UAAU,CAAC,iBAAiB;gBAC/C,cAAc,EAAE,UAAU,CAAC,cAAc;aAC1C,CAAC,CAAC;QACL,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;IACjD,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC"}
1
+ {"version":3,"file":"read-anonymous-seed-docs.js","sourceRoot":"","sources":["../../jsr/intern/read-anonymous-seed-docs.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibes.diy/api-svc",
3
- "version": "10.7.4",
3
+ "version": "10.8.0",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "main": "./index.js",
@@ -22,18 +22,18 @@
22
22
  "@libsql/client": "~0.17.4",
23
23
  "@neondatabase/serverless": "~1.1.0",
24
24
  "@noble/hashes": "~2.2.0",
25
- "@vibes.diy/api-pkg": "10.7.4",
26
- "@vibes.diy/api-sql": "10.7.4",
27
- "@vibes.diy/api-types": "10.7.4",
28
- "@vibes.diy/call-ai-v2": "10.7.4",
29
- "@vibes.diy/identity": "10.7.4",
30
- "@vibes.diy/prompts": "10.7.4",
31
- "@vibes.diy/vibe-db-explorer": "10.7.4",
32
- "@vibes.diy/vibe-runtime": "10.7.4",
33
- "@vibes.diy/vibe-types": "10.7.4",
25
+ "@vibes.diy/api-pkg": "10.8.0",
26
+ "@vibes.diy/api-sql": "10.8.0",
27
+ "@vibes.diy/api-types": "10.8.0",
28
+ "@vibes.diy/call-ai-v2": "10.8.0",
29
+ "@vibes.diy/identity": "10.8.0",
30
+ "@vibes.diy/prompts": "10.8.0",
31
+ "@vibes.diy/vibe-db-explorer": "10.8.0",
32
+ "@vibes.diy/vibe-runtime": "10.8.0",
33
+ "@vibes.diy/vibe-types": "10.8.0",
34
34
  "acorn": "~8.17.0",
35
35
  "arktype": "~2.2.3",
36
- "call-ai": "10.7.4",
36
+ "call-ai": "10.8.0",
37
37
  "cookie": "~2.0.1",
38
38
  "csv-parse": "~7.0.1",
39
39
  "drizzle-orm": "~0.45.2",
@@ -4,8 +4,11 @@ export interface HeadDocRow {
4
4
  readonly seq: number;
5
5
  readonly data: unknown;
6
6
  }
7
+ export interface LoadHeadDocsOpts {
8
+ readonly docIds?: readonly string[];
9
+ }
7
10
  export declare function loadHeadDocs(vctx: VibesApiSQLCtx, part: {
8
11
  ownerHandle: string;
9
12
  appSlug: string;
10
13
  dbName: string;
11
- }): Promise<HeadDocRow[]>;
14
+ }, opts?: LoadHeadDocsOpts): Promise<HeadDocRow[]>;
@@ -1,17 +1,30 @@
1
- import { and, eq, max } from "drizzle-orm";
2
- export async function loadHeadDocs(vctx, part) {
1
+ import { and, eq, inArray, max } from "drizzle-orm";
2
+ const HEAD_DOC_IN_CHUNK = 200;
3
+ export async function loadHeadDocs(vctx, part, opts = {}) {
4
+ if (opts.docIds === undefined)
5
+ return loadHeadDocsChunk(vctx, part, undefined);
6
+ const rows = [];
7
+ for (let i = 0; i < opts.docIds.length; i += HEAD_DOC_IN_CHUNK) {
8
+ const chunk = opts.docIds.slice(i, i + HEAD_DOC_IN_CHUNK);
9
+ for (const row of await loadHeadDocsChunk(vctx, part, chunk))
10
+ rows.push(row);
11
+ }
12
+ return rows;
13
+ }
14
+ async function loadHeadDocsChunk(vctx, part, docIds) {
3
15
  const t = vctx.sql.tables.appDocuments;
16
+ const restrict = docIds === undefined ? undefined : inArray(t.docId, [...docIds]);
4
17
  const heads = vctx.sql.db
5
18
  .select({ docId: t.docId, headSeq: max(t.seq).as("headSeq") })
6
19
  .from(t)
7
- .where(and(eq(t.ownerHandle, part.ownerHandle), eq(t.appSlug, part.appSlug), eq(t.dbName, part.dbName)))
20
+ .where(and(eq(t.ownerHandle, part.ownerHandle), eq(t.appSlug, part.appSlug), eq(t.dbName, part.dbName), restrict))
8
21
  .groupBy(t.docId)
9
22
  .as("heads");
10
23
  return vctx.sql.db
11
24
  .select({ docId: t.docId, seq: t.seq, data: t.data })
12
25
  .from(t)
13
26
  .innerJoin(heads, and(eq(t.docId, heads.docId), eq(t.seq, heads.headSeq)))
14
- .where(and(eq(t.ownerHandle, part.ownerHandle), eq(t.appSlug, part.appSlug), eq(t.dbName, part.dbName), eq(t.deleted, 0)))
27
+ .where(and(eq(t.ownerHandle, part.ownerHandle), eq(t.appSlug, part.appSlug), eq(t.dbName, part.dbName), eq(t.deleted, 0), restrict))
15
28
  .orderBy(t.docId);
16
29
  }
17
30
  //# sourceMappingURL=app-documents-head-query.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"app-documents-head-query.js","sourceRoot":"","sources":["../../jsr/public/app-documents-head-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAqC3C,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAoB,EACpB,IAA8D;IAE9D,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC;IAGvC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE;SACtB,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;SAC7D,IAAI,CAAC,CAAC,CAAC;SACP,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;SACvG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;SAChB,EAAE,CAAC,OAAO,CAAC,CAAC;IACf,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE;SACf,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;SACpD,IAAI,CAAC,CAAC,CAAC;SACP,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;SACzE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;SACzH,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"app-documents-head-query.js","sourceRoot":"","sources":["../../jsr/public/app-documents-head-query.ts"],"names":[],"mappings":"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"}