@vibes.diy/api-svc 2.0.0-dev-cli-d → 2.0.0-dev-cli-i
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/cf-serve.d.ts +1 -4
- package/cf-serve.js +10 -15
- package/cf-serve.js.map +1 -1
- package/check-auth.js +13 -3
- package/check-auth.js.map +1 -1
- package/create-handler.d.ts +5 -6
- package/create-handler.js +6 -32
- package/create-handler.js.map +1 -1
- package/index.d.ts +0 -1
- package/index.js +0 -1
- package/index.js.map +1 -1
- package/intern/ensure-application-chat-id.js +5 -5
- package/intern/ensure-application-chat-id.js.map +1 -1
- package/intern/ensure-chat-id.js +45 -33
- package/intern/ensure-chat-id.js.map +1 -1
- package/intern/ensure-slug-binding.d.ts +12 -26
- package/intern/ensure-slug-binding.js +125 -29
- package/intern/ensure-slug-binding.js.map +1 -1
- package/intern/get-model-defaults.d.ts +12 -0
- package/intern/get-model-defaults.js +90 -0
- package/intern/get-model-defaults.js.map +1 -0
- package/intern/get-slug-binding.d.ts +2 -3
- package/intern/get-slug-binding.js +13 -4
- package/intern/get-slug-binding.js.map +1 -1
- package/intern/grouped-vibe-import-map.d.ts +2 -0
- package/intern/grouped-vibe-import-map.js +2 -0
- package/intern/grouped-vibe-import-map.js.map +1 -1
- package/intern/render-vibe.d.ts +2 -2
- package/intern/render-vibe.js.map +1 -1
- package/intern/resend-prev-msg.js +5 -13
- package/intern/resend-prev-msg.js.map +1 -1
- package/intern/write-apps.d.ts +4 -5
- package/intern/write-apps.js +27 -18
- package/intern/write-apps.js.map +1 -1
- package/models.json +179 -0
- package/package.json +19 -16
- package/peers/s3.d.ts +1 -1
- package/public/ensure-app-settings.js +39 -12
- package/public/ensure-app-settings.js.map +1 -1
- package/public/ensure-app-slug-item.js +23 -47
- package/public/ensure-app-slug-item.js.map +1 -1
- package/public/ensure-user-settings.js +9 -8
- package/public/ensure-user-settings.js.map +1 -1
- package/public/get-chat-details.js +7 -5
- package/public/get-chat-details.js.map +1 -1
- package/public/invite-flow.js +59 -36
- package/public/invite-flow.js.map +1 -1
- package/public/list-models.d.ts +14 -0
- package/public/list-models.js +41 -0
- package/public/list-models.js.map +1 -0
- package/public/open-chat.js +2 -2
- package/public/open-chat.js.map +1 -1
- package/public/prompt-chat-section.d.ts +1 -1
- package/public/prompt-chat-section.js +40 -15
- package/public/prompt-chat-section.js.map +1 -1
- package/public/request-flow.js +65 -53
- package/public/request-flow.js.map +1 -1
- package/public/user-slug-bindings.d.ts +5 -0
- package/public/user-slug-bindings.js +144 -0
- package/public/user-slug-bindings.js.map +1 -0
- package/types.d.ts +37 -18
- package/types.js +27 -1
- package/types.js.map +1 -1
- package/usage-report/README.md +27 -0
- package/usage-report/inspect-db-report-template.d.ts +29 -0
- package/usage-report/inspect-db-report-template.js +379 -0
- package/usage-report/inspect-db-report-template.js.map +1 -0
- package/usage-report/inspect-db-report.d.ts +1 -0
- package/usage-report/inspect-db-report.js +264 -0
- package/usage-report/inspect-db-report.js.map +1 -0
- package/usage-report/inspect-db.d.ts +1 -0
- package/usage-report/inspect-db.js +226 -0
- package/usage-report/inspect-db.js.map +1 -0
- package/vibes-msg-evento.js +3 -1
- package/vibes-msg-evento.js.map +1 -1
- package/intern/ensure-storage.d.ts +0 -26
- package/intern/ensure-storage.js +0 -86
- package/intern/ensure-storage.js.map +0 -1
- package/intern/send-email.d.ts +0 -4
- package/intern/send-email.js +0 -55
- package/intern/send-email.js.map +0 -1
- package/intern/store-screenshot.d.ts +0 -17
- package/intern/store-screenshot.js +0 -36
- package/intern/store-screenshot.js.map +0 -1
- package/peers/sql.d.ts +0 -22
- package/peers/sql.js +0 -102
- package/peers/sql.js.map +0 -1
- package/sql/tables.d.ts +0 -1536
- package/sql/tables.js +0 -38
- package/sql/tables.js.map +0 -1
- package/sql/vibes-diy-api-schema-pg.d.ts +0 -1418
- package/sql/vibes-diy-api-schema-pg.js +0 -141
- package/sql/vibes-diy-api-schema-pg.js.map +0 -1
- package/sql/vibes-diy-api-schema-sqlite.d.ts +0 -1536
- package/sql/vibes-diy-api-schema-sqlite.js +0 -131
- package/sql/vibes-diy-api-schema-sqlite.js.map +0 -1
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import * as fs from "node:fs";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { Pool } from "@neondatabase/serverless";
|
|
5
|
+
import { Result, exception2Result } from "@adviser/cement";
|
|
6
|
+
function printUsage() {
|
|
7
|
+
console.log(`
|
|
8
|
+
Usage:
|
|
9
|
+
pnpm --dir vibes.diy/api/svc run inspect:db info
|
|
10
|
+
pnpm --dir vibes.diy/api/svc run inspect:db tables
|
|
11
|
+
pnpm --dir vibes.diy/api/svc run inspect:db table UserSettings --limit 20
|
|
12
|
+
pnpm --dir vibes.diy/api/svc run inspect:db sql "select * from \\"UserSettings\\" limit 5"
|
|
13
|
+
|
|
14
|
+
Environment:
|
|
15
|
+
NEON_DATABASE_URL or DATABASE_URL must be set.
|
|
16
|
+
|
|
17
|
+
Examples:
|
|
18
|
+
NEON_DATABASE_URL="$(pbpaste)" pnpm --dir vibes.diy/api/svc run inspect:db info
|
|
19
|
+
NEON_DATABASE_URL="$(pbpaste)" pnpm --dir vibes.diy/api/svc run inspect:db tables
|
|
20
|
+
NEON_DATABASE_URL="$(pbpaste)" pnpm --dir vibes.diy/api/svc run inspect:db table UserSettings --limit 5
|
|
21
|
+
NEON_DATABASE_URL="$(pbpaste)" pnpm --dir vibes.diy/api/svc run inspect:db sql "select userId, updated from \\"UserSettings\\" order by updated desc limit 5"
|
|
22
|
+
`.trim());
|
|
23
|
+
}
|
|
24
|
+
function quoteIdentifier(value) {
|
|
25
|
+
return `"${value.replaceAll('"', '""')}"`;
|
|
26
|
+
}
|
|
27
|
+
async function listTables(pool) {
|
|
28
|
+
const result = await pool.query(`
|
|
29
|
+
select table_schema, table_name
|
|
30
|
+
from information_schema.tables
|
|
31
|
+
where table_type = 'BASE TABLE'
|
|
32
|
+
and table_schema not in ('pg_catalog', 'information_schema')
|
|
33
|
+
order by table_schema, table_name
|
|
34
|
+
`);
|
|
35
|
+
return result.rows;
|
|
36
|
+
}
|
|
37
|
+
async function getConnectionInfo(pool) {
|
|
38
|
+
const [{ rows: currentRows }, { rows: schemaRows }] = await Promise.all([
|
|
39
|
+
pool.query(`
|
|
40
|
+
select
|
|
41
|
+
current_database() as database,
|
|
42
|
+
current_schema() as current_schema,
|
|
43
|
+
current_user as current_user,
|
|
44
|
+
inet_server_addr()::text as server_addr,
|
|
45
|
+
inet_server_port() as server_port
|
|
46
|
+
`),
|
|
47
|
+
pool.query(`
|
|
48
|
+
select schema_name
|
|
49
|
+
from information_schema.schemata
|
|
50
|
+
where schema_name not in ('pg_catalog', 'information_schema')
|
|
51
|
+
order by schema_name
|
|
52
|
+
`),
|
|
53
|
+
]);
|
|
54
|
+
return {
|
|
55
|
+
...(currentRows[0] ?? {}),
|
|
56
|
+
schemas: schemaRows.map((row) => row.schema_name),
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
async function resolveTable(pool, requestedName) {
|
|
60
|
+
const tables = await listTables(pool);
|
|
61
|
+
const normalizedRequest = requestedName.trim();
|
|
62
|
+
const dottedRequest = normalizedRequest.includes(".") ? normalizedRequest : `public.${normalizedRequest}`;
|
|
63
|
+
const exact = tables.find((table) => table.table_name === normalizedRequest || `${table.table_schema}.${table.table_name}` === normalizedRequest);
|
|
64
|
+
if (exact !== undefined) {
|
|
65
|
+
return Result.Ok(exact);
|
|
66
|
+
}
|
|
67
|
+
const folded = normalizedRequest.toLowerCase();
|
|
68
|
+
const foldedDotted = dottedRequest.toLowerCase();
|
|
69
|
+
const caseInsensitive = tables.find((table) => table.table_name.toLowerCase() === folded || `${table.table_schema}.${table.table_name}`.toLowerCase() === foldedDotted);
|
|
70
|
+
if (caseInsensitive !== undefined) {
|
|
71
|
+
return Result.Ok(caseInsensitive);
|
|
72
|
+
}
|
|
73
|
+
return Result.Err(`unknown table: ${requestedName}. Run 'pnpm --dir vibes.diy/api/svc run inspect:db tables' to see actual tables in this database`);
|
|
74
|
+
}
|
|
75
|
+
function loadDevVars() {
|
|
76
|
+
const scriptDir = path.dirname(fileURLToPath(import.meta.url));
|
|
77
|
+
const candidatePaths = [path.join(scriptDir, "..", ".dev.vars"), path.join(process.cwd(), ".dev.vars")];
|
|
78
|
+
for (const candidatePath of candidatePaths) {
|
|
79
|
+
if (!fs.existsSync(candidatePath)) {
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
const content = fs.readFileSync(candidatePath, "utf8");
|
|
83
|
+
for (const rawLine of content.split(/\r?\n/)) {
|
|
84
|
+
const line = rawLine.trim();
|
|
85
|
+
if (line === "" || line.startsWith("#")) {
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
const separator = line.indexOf("=");
|
|
89
|
+
if (separator <= 0) {
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
const key = line.slice(0, separator).trim();
|
|
93
|
+
let value = line.slice(separator + 1).trim();
|
|
94
|
+
if ((value.startsWith('"') && value.endsWith('"')) || (value.startsWith("'") && value.endsWith("'"))) {
|
|
95
|
+
value = value.slice(1, -1);
|
|
96
|
+
}
|
|
97
|
+
if (!(key in process.env)) {
|
|
98
|
+
process.env[key] = value;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
function parseArgs(argv) {
|
|
104
|
+
const args = [...argv];
|
|
105
|
+
const command = args.shift();
|
|
106
|
+
let limit = 20;
|
|
107
|
+
while (args.length > 0) {
|
|
108
|
+
const idx = args.findIndex((arg) => arg === "--limit");
|
|
109
|
+
if (idx === -1)
|
|
110
|
+
break;
|
|
111
|
+
const raw = args[idx + 1];
|
|
112
|
+
if (raw === undefined) {
|
|
113
|
+
return Result.Err("--limit requires a number");
|
|
114
|
+
}
|
|
115
|
+
const parsed = Number.parseInt(raw, 10);
|
|
116
|
+
if (!Number.isFinite(parsed) || parsed <= 0) {
|
|
117
|
+
return Result.Err(`invalid --limit value: ${raw}`);
|
|
118
|
+
}
|
|
119
|
+
limit = parsed;
|
|
120
|
+
args.splice(idx, 2);
|
|
121
|
+
}
|
|
122
|
+
return Result.Ok({ command, args, limit });
|
|
123
|
+
}
|
|
124
|
+
function assertReadonlySql(sql) {
|
|
125
|
+
const normalized = sql.trim().replace(/;+$/, "").toLowerCase();
|
|
126
|
+
if (normalized === "") {
|
|
127
|
+
return Result.Err("SQL is empty");
|
|
128
|
+
}
|
|
129
|
+
if (!(normalized.startsWith("select ") ||
|
|
130
|
+
normalized.startsWith("with ") ||
|
|
131
|
+
normalized.startsWith("show ") ||
|
|
132
|
+
normalized.startsWith("explain "))) {
|
|
133
|
+
return Result.Err("Only read-only SELECT/WITH/SHOW/EXPLAIN statements are allowed");
|
|
134
|
+
}
|
|
135
|
+
return Result.Ok(sql);
|
|
136
|
+
}
|
|
137
|
+
async function run() {
|
|
138
|
+
loadDevVars();
|
|
139
|
+
const rParsed = parseArgs(process.argv.slice(2));
|
|
140
|
+
if (rParsed.isErr()) {
|
|
141
|
+
return Result.Err(rParsed);
|
|
142
|
+
}
|
|
143
|
+
const { command, args, limit } = rParsed.Ok();
|
|
144
|
+
if (command === undefined || command === "help" || command === "--help" || command === "-h") {
|
|
145
|
+
printUsage();
|
|
146
|
+
return Result.Ok(undefined);
|
|
147
|
+
}
|
|
148
|
+
const connectionString = process.env["NEON_DATABASE_URL"] ?? process.env["DATABASE_URL"];
|
|
149
|
+
if (connectionString === undefined) {
|
|
150
|
+
printUsage();
|
|
151
|
+
return Result.Err("NEON_DATABASE_URL or DATABASE_URL is required");
|
|
152
|
+
}
|
|
153
|
+
const pool = new Pool({ connectionString });
|
|
154
|
+
const result = await exception2Result(async () => {
|
|
155
|
+
if (command === "info") {
|
|
156
|
+
const info = await getConnectionInfo(pool);
|
|
157
|
+
console.log(JSON.stringify(info, null, 2));
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
if (command === "tables") {
|
|
161
|
+
const [info, tables] = await Promise.all([getConnectionInfo(pool), listTables(pool)]);
|
|
162
|
+
console.log(JSON.stringify({ ...info, tables }, null, 2));
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
if (command === "table") {
|
|
166
|
+
const requestedTableName = args[0];
|
|
167
|
+
if (requestedTableName === undefined) {
|
|
168
|
+
throw new Error("table name is required");
|
|
169
|
+
}
|
|
170
|
+
const rTable = await resolveTable(pool, requestedTableName);
|
|
171
|
+
if (rTable.isErr()) {
|
|
172
|
+
throw new Error(rTable.Err().message);
|
|
173
|
+
}
|
|
174
|
+
const table = rTable.Ok();
|
|
175
|
+
const sql = `select * from ${quoteIdentifier(table.table_schema)}.${quoteIdentifier(table.table_name)} order by 1 desc limit $1`;
|
|
176
|
+
const queryResult = await pool.query(sql, [limit]);
|
|
177
|
+
console.log(JSON.stringify({
|
|
178
|
+
table: `${table.table_schema}.${table.table_name}`,
|
|
179
|
+
rowCount: queryResult.rowCount,
|
|
180
|
+
rows: queryResult.rows,
|
|
181
|
+
}, null, 2));
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
if (command === "sql") {
|
|
185
|
+
const sql = args.join(" ").trim();
|
|
186
|
+
const rSql = assertReadonlySql(sql);
|
|
187
|
+
if (rSql.isErr()) {
|
|
188
|
+
throw new Error(rSql.Err().message);
|
|
189
|
+
}
|
|
190
|
+
const queryResult = await pool.query(sql);
|
|
191
|
+
console.log(JSON.stringify({
|
|
192
|
+
rowCount: queryResult.rowCount,
|
|
193
|
+
rows: queryResult.rows,
|
|
194
|
+
}, null, 2));
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
throw new Error(`unknown command: ${command}`);
|
|
198
|
+
});
|
|
199
|
+
await pool.end();
|
|
200
|
+
return result;
|
|
201
|
+
}
|
|
202
|
+
function formatError(error) {
|
|
203
|
+
if (typeof error === "string")
|
|
204
|
+
return error;
|
|
205
|
+
if (typeof error === "object" && error !== null) {
|
|
206
|
+
const obj = error;
|
|
207
|
+
if (typeof obj["message"] === "string" && obj["message"] !== "") {
|
|
208
|
+
return obj["message"];
|
|
209
|
+
}
|
|
210
|
+
const nested = obj["error"];
|
|
211
|
+
if (typeof nested === "object" && nested !== null) {
|
|
212
|
+
const nestedObj = nested;
|
|
213
|
+
if (typeof nestedObj["message"] === "string" && nestedObj["message"] !== "") {
|
|
214
|
+
return nestedObj["message"];
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
return String(error);
|
|
219
|
+
}
|
|
220
|
+
run().then((result) => {
|
|
221
|
+
if (result.isErr()) {
|
|
222
|
+
console.error(formatError(result.Err()));
|
|
223
|
+
process.exitCode = 1;
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
//# sourceMappingURL=inspect-db.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspect-db.js","sourceRoot":"","sources":["../../jsr/usage-report/inspect-db.ts"],"names":[],"mappings":"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"}
|
package/vibes-msg-evento.js
CHANGED
|
@@ -14,10 +14,12 @@ import { getCertFromCsrEvento } from "./public/get-cert-from-csr.js";
|
|
|
14
14
|
import { getFPCloudTokenEvento } from "./public/get-fp-cloud-token.js";
|
|
15
15
|
import { promptChatAddFS } from "./public/prompt-chat-add-fs.js";
|
|
16
16
|
import { createInviteEvento, revokeInviteEvento, redeemInviteEvento, hasAccessInviteEvento, inviteSetRoleEvento, listInviteGrantsEvento, } from "./public/invite-flow.js";
|
|
17
|
+
import { listUserSlugBindingsEvento, createUserSlugBindingEvento, deleteUserSlugBindingEvento, } from "./public/user-slug-bindings.js";
|
|
17
18
|
import { listRequestGrantsEvento, requestAccessEvento, approveRequestEvento, requestSetRoleEvento, revokeRequestEvento, hasAccessRequestEvento, } from "./public/request-flow.js";
|
|
19
|
+
import { listModelsEvento } from "./public/list-models.js";
|
|
18
20
|
export const vibesMsgEvento = Lazy(() => {
|
|
19
21
|
const evento = new Evento(new W3CWebSocketEventEventoEnDecoder());
|
|
20
|
-
evento.push(ensureAppSlugItemEvento, getFPCloudTokenEvento, listUserSlugAppSlugEvento, getChatDetailsEvento, getAppByFsIdEvento, openChat, promptChatSection, promptChatAddFS, createInviteEvento, revokeInviteEvento, redeemInviteEvento, hasAccessInviteEvento, inviteSetRoleEvento, listInviteGrantsEvento, requestAccessEvento, hasAccessRequestEvento, approveRequestEvento, requestSetRoleEvento, revokeRequestEvento, listRequestGrantsEvento, getCertFromCsrEvento, ensureAppSettingsEvento, setModeFsIdEvento, ensureUserSettingsEvento, listApplicationChats, {
|
|
22
|
+
evento.push(ensureAppSlugItemEvento, getFPCloudTokenEvento, listUserSlugAppSlugEvento, getChatDetailsEvento, getAppByFsIdEvento, openChat, promptChatSection, promptChatAddFS, createInviteEvento, revokeInviteEvento, redeemInviteEvento, hasAccessInviteEvento, inviteSetRoleEvento, listInviteGrantsEvento, requestAccessEvento, hasAccessRequestEvento, approveRequestEvento, requestSetRoleEvento, revokeRequestEvento, listRequestGrantsEvento, getCertFromCsrEvento, listModelsEvento, ensureAppSettingsEvento, setModeFsIdEvento, ensureUserSettingsEvento, listApplicationChats, listUserSlugBindingsEvento, createUserSlugBindingEvento, deleteUserSlugBindingEvento, {
|
|
21
23
|
type: EventoType.WildCard,
|
|
22
24
|
hash: "not-msg-implemented-handler",
|
|
23
25
|
handle: async (ctx) => {
|
package/vibes-msg-evento.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vibes-msg-evento.js","sourceRoot":"","sources":["../jsr/vibes-msg-evento.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAC;AAEtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"vibes-msg-evento.js","sourceRoot":"","sources":["../jsr/vibes-msg-evento.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { Result, PeerStream, Peer } from "@adviser/cement";
|
|
2
|
-
import { Storage, VibesApiTables } from "../types.js";
|
|
3
|
-
import { VibesSqlite } from "../create-handler.js";
|
|
4
|
-
import { sha256 } from "@noble/hashes/sha2.js";
|
|
5
|
-
import { S3Api } from "@vibes.diy/api-types";
|
|
6
|
-
import { DBFlavour } from "../sql/tables.js";
|
|
7
|
-
export interface CalcCidResult {
|
|
8
|
-
cid: string;
|
|
9
|
-
size: number;
|
|
10
|
-
}
|
|
11
|
-
export type PeerStreamWithCommit = PeerStream & {
|
|
12
|
-
commit: (iname?: string) => Promise<Result<{
|
|
13
|
-
url: string;
|
|
14
|
-
}>>;
|
|
15
|
-
};
|
|
16
|
-
export interface PeerWithCommit extends Peer {
|
|
17
|
-
begin: () => Promise<Result<PeerStreamWithCommit>>;
|
|
18
|
-
}
|
|
19
|
-
export declare class Cider {
|
|
20
|
-
readonly h: ReturnType<typeof sha256.create>;
|
|
21
|
-
size: number;
|
|
22
|
-
readonly processStreamPromise: Promise<void>;
|
|
23
|
-
constructor(inStream: ReadableStream<Uint8Array>);
|
|
24
|
-
readonly getCID: () => Promise<CalcCidResult>;
|
|
25
|
-
}
|
|
26
|
-
export declare function ensureStorage(flavour: DBFlavour, db: VibesSqlite, assets: VibesApiTables["assets"], s3: S3Api): Storage;
|
package/intern/ensure-storage.js
DELETED
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import { Result, URI, teeWriter, processStream, Lazy, coerceStreamUint8 } from "@adviser/cement";
|
|
2
|
-
import { sha256 } from "@noble/hashes/sha2.js";
|
|
3
|
-
import { base58btc } from "multiformats/bases/base58";
|
|
4
|
-
import { S3PeerFetch } from "../peers/s3.js";
|
|
5
|
-
import { SQLPeer, SQLPeerFetch } from "../peers/sql.js";
|
|
6
|
-
export class Cider {
|
|
7
|
-
h;
|
|
8
|
-
size = 0;
|
|
9
|
-
processStreamPromise;
|
|
10
|
-
constructor(inStream) {
|
|
11
|
-
this.h = sha256.create();
|
|
12
|
-
this.processStreamPromise = processStream(inStream, (chunk) => {
|
|
13
|
-
this.h.update(chunk);
|
|
14
|
-
this.size += chunk.length;
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
getCID = Lazy(() => {
|
|
18
|
-
return this.processStreamPromise.then(() => {
|
|
19
|
-
const cid = base58btc.encode(this.h.digest());
|
|
20
|
-
return {
|
|
21
|
-
cid,
|
|
22
|
-
size: this.size,
|
|
23
|
-
};
|
|
24
|
-
});
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
export function ensureStorage(flavour, db, assets, s3) {
|
|
28
|
-
return {
|
|
29
|
-
fetch: async (iurl) => {
|
|
30
|
-
const peers = [new SQLPeerFetch(flavour, db, assets), new S3PeerFetch(s3)];
|
|
31
|
-
const url = URI.from(iurl);
|
|
32
|
-
for (const peer of peers) {
|
|
33
|
-
const res = await peer.fetch(url);
|
|
34
|
-
if (res.IsSome()) {
|
|
35
|
-
return res.unwrap();
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
return {
|
|
39
|
-
type: "fetch.notfound",
|
|
40
|
-
url: url.toString(),
|
|
41
|
-
};
|
|
42
|
-
},
|
|
43
|
-
ensure: async (...items) => {
|
|
44
|
-
const tees = await Promise.allSettled(items.map((item) => {
|
|
45
|
-
const [lag1, lag2] = coerceStreamUint8(item).tee();
|
|
46
|
-
const cider = new Cider(lag1);
|
|
47
|
-
const peers = [new SQLPeer(flavour, db, assets, cider, 10 * 1024 * 1024)];
|
|
48
|
-
return teeWriter(peers, lag2).then(async (rTee) => {
|
|
49
|
-
if (rTee.isErr()) {
|
|
50
|
-
return Result.Err(rTee);
|
|
51
|
-
}
|
|
52
|
-
return cider.getCID().then(({ cid, size }) => {
|
|
53
|
-
const tok = rTee.Ok().peer;
|
|
54
|
-
return tok.commit(cid).then((r) => {
|
|
55
|
-
if (r.isErr()) {
|
|
56
|
-
return Result.Err(r);
|
|
57
|
-
}
|
|
58
|
-
return Result.Ok({
|
|
59
|
-
cid,
|
|
60
|
-
url: r.Ok().url,
|
|
61
|
-
size,
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
});
|
|
66
|
-
}));
|
|
67
|
-
return tees.map((res) => {
|
|
68
|
-
if (res.status !== "fulfilled") {
|
|
69
|
-
return Result.Err(new Error(`Failed to process item: ${res.reason}`));
|
|
70
|
-
}
|
|
71
|
-
if (res.value.isErr()) {
|
|
72
|
-
return Result.Err(new Error(`Failed to write to peer: ${res.value.Err()}`));
|
|
73
|
-
}
|
|
74
|
-
const { cid, url, size } = res.value.Ok();
|
|
75
|
-
return Result.Ok({
|
|
76
|
-
cid,
|
|
77
|
-
getURL: url,
|
|
78
|
-
mode: "created",
|
|
79
|
-
created: new Date(),
|
|
80
|
-
size,
|
|
81
|
-
});
|
|
82
|
-
});
|
|
83
|
-
},
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
//# sourceMappingURL=ensure-storage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ensure-storage.js","sourceRoot":"","sources":["../../jsr/intern/ensure-storage.ts"],"names":[],"mappings":"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"}
|
package/intern/send-email.d.ts
DELETED
package/intern/send-email.js
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { BuildURI, Result } from "@adviser/cement";
|
|
2
|
-
import { isEmailOpsInvite } from "@vibes.diy/api-types";
|
|
3
|
-
export function sendEmailOpts(vctx, ops) {
|
|
4
|
-
return Promise.all(ops.map((op) => {
|
|
5
|
-
let raw;
|
|
6
|
-
const buri = BuildURI.from(vctx.params.vibes.env.VIBES_DIY_PUBLIC_BASE_URL)
|
|
7
|
-
.appendRelative("vibe")
|
|
8
|
-
.appendRelative(op.userSlug)
|
|
9
|
-
.appendRelative(op.appSlug);
|
|
10
|
-
if (isEmailOpsInvite(op)) {
|
|
11
|
-
buri.setParam("token", op.token);
|
|
12
|
-
}
|
|
13
|
-
switch (op.action) {
|
|
14
|
-
case "invite":
|
|
15
|
-
raw = {
|
|
16
|
-
to: op.dst,
|
|
17
|
-
subject: `You've been invited as ${op.role} a Vibe App from ${op.userSlug}`,
|
|
18
|
-
text: [
|
|
19
|
-
"Hello,",
|
|
20
|
-
`You have been invited as ${op.role} to the app "${op.appSlug}" on Vibes DIY by ${op.userSlug}.`,
|
|
21
|
-
"To accept the invitation and start collaborating, please click the link below:",
|
|
22
|
-
`${buri.toString()}`,
|
|
23
|
-
].join("\n"),
|
|
24
|
-
};
|
|
25
|
-
break;
|
|
26
|
-
case "req-accepted":
|
|
27
|
-
raw = {
|
|
28
|
-
to: op.dst,
|
|
29
|
-
subject: `Your request to join "${op.appSlug}" has been approved`,
|
|
30
|
-
text: [
|
|
31
|
-
"Hello,",
|
|
32
|
-
`Great news — ${op.userSlug} has approved your request to access the app "${op.appSlug}" on Vibes DIY as ${op.role}.`,
|
|
33
|
-
"You can open the app here:",
|
|
34
|
-
`${buri.toString()}`,
|
|
35
|
-
].join("\n\n"),
|
|
36
|
-
};
|
|
37
|
-
break;
|
|
38
|
-
case "req-rejected":
|
|
39
|
-
raw = {
|
|
40
|
-
to: op.dst,
|
|
41
|
-
subject: `Your request to join "${op.appSlug}" was not approved`,
|
|
42
|
-
text: [
|
|
43
|
-
"Hello,",
|
|
44
|
-
`Unfortunately, your request to access the app "${op.appSlug}" on Vibes DIY was not approved by ${op.userSlug}.`,
|
|
45
|
-
"If you think this was a mistake, you can reach out to the app owner directly.",
|
|
46
|
-
].join("\n\n"),
|
|
47
|
-
};
|
|
48
|
-
break;
|
|
49
|
-
default:
|
|
50
|
-
return Result.Err(new Error(`unsupported email action: ${JSON.stringify(op)}`));
|
|
51
|
-
}
|
|
52
|
-
return vctx.sendEmail(raw);
|
|
53
|
-
}));
|
|
54
|
-
}
|
|
55
|
-
//# sourceMappingURL=send-email.js.map
|
package/intern/send-email.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"send-email.js","sourceRoot":"","sources":["../../jsr/intern/send-email.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAY,gBAAgB,EAAuB,MAAM,sBAAsB,CAAC;AAGvF,MAAM,UAAU,aAAa,CAAC,IAAoB,EAAE,GAAe;IACjE,OAAO,OAAO,CAAC,GAAG,CAChB,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QACb,IAAI,GAAyB,CAAC;QAE9B,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC;aACxE,cAAc,CAAC,MAAM,CAAC;aACtB,cAAc,CAAC,EAAE,CAAC,QAAQ,CAAC;aAC3B,cAAc,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QAE9B,IAAI,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QAED,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC;YAClB,KAAK,QAAQ;gBACX,GAAG,GAAG;oBACJ,EAAE,EAAE,EAAE,CAAC,GAAG;oBACV,OAAO,EAAE,0BAA0B,EAAE,CAAC,IAAI,oBAAoB,EAAE,CAAC,QAAQ,EAAE;oBAC3E,IAAI,EAAE;wBACJ,QAAQ;wBAER,4BAA4B,EAAE,CAAC,IAAI,gBAAgB,EAAE,CAAC,OAAO,qBAAqB,EAAE,CAAC,QAAQ,GAAG;wBAEhG,gFAAgF;wBAChF,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE;qBACrB,CAAC,IAAI,CAAC,IAAI,CAAC;iBACb,CAAC;gBACF,MAAM;YACR,KAAK,cAAc;gBACjB,GAAG,GAAG;oBACJ,EAAE,EAAE,EAAE,CAAC,GAAG;oBACV,OAAO,EAAE,yBAAyB,EAAE,CAAC,OAAO,qBAAqB;oBACjE,IAAI,EAAE;wBACJ,QAAQ;wBAER,gBAAgB,EAAE,CAAC,QAAQ,iDAAiD,EAAE,CAAC,OAAO,qBAAqB,EAAE,CAAC,IAAI,GAAG;wBAErH,4BAA4B;wBAC5B,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE;qBACrB,CAAC,IAAI,CAAC,MAAM,CAAC;iBACf,CAAC;gBACF,MAAM;YACR,KAAK,cAAc;gBACjB,GAAG,GAAG;oBACJ,EAAE,EAAE,EAAE,CAAC,GAAG;oBACV,OAAO,EAAE,yBAAyB,EAAE,CAAC,OAAO,oBAAoB;oBAChE,IAAI,EAAE;wBACJ,QAAQ;wBAER,kDAAkD,EAAE,CAAC,OAAO,sCAAsC,EAAE,CAAC,QAAQ,GAAG;wBAEhH,+EAA+E;qBAChF,CAAC,IAAI,CAAC,MAAM,CAAC;iBACf,CAAC;gBACF,MAAM;YACR;gBACE,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,6BAA6B,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACpF,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { Result } from "@adviser/cement";
|
|
2
|
-
import { VibesSqlite } from "../create-handler.js";
|
|
3
|
-
import type { VibesApiTables } from "../types.js";
|
|
4
|
-
import { S3Api } from "@vibes.diy/api-types";
|
|
5
|
-
import { DBFlavour } from "../sql/tables.js";
|
|
6
|
-
export interface StoreScreenshotResult {
|
|
7
|
-
readonly fsId: string;
|
|
8
|
-
readonly assetUrl: string;
|
|
9
|
-
}
|
|
10
|
-
export declare function storeScreenshot({ sql, s3Api }: {
|
|
11
|
-
s3Api: S3Api;
|
|
12
|
-
sql: {
|
|
13
|
-
dbFlavour: DBFlavour;
|
|
14
|
-
db: VibesSqlite;
|
|
15
|
-
tables: Pick<VibesApiTables, "apps" | "assets">;
|
|
16
|
-
};
|
|
17
|
-
}, fsId: string, screenshotData: Uint8Array): Promise<Result<StoreScreenshotResult>>;
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { Result, uint8array2stream } from "@adviser/cement";
|
|
2
|
-
import { eq } from "drizzle-orm/sql/expressions";
|
|
3
|
-
import { type } from "arktype";
|
|
4
|
-
import { isMetaScreenShot, MetaItem } from "@vibes.diy/api-types";
|
|
5
|
-
import { ensureStorage } from "./ensure-storage.js";
|
|
6
|
-
export async function storeScreenshot({ sql, s3Api, }, fsId, screenshotData) {
|
|
7
|
-
const { db, tables } = sql;
|
|
8
|
-
const found = await db.select().from(tables.apps).where(eq(tables.apps.fsId, fsId)).limit(1);
|
|
9
|
-
if (found.length === 0) {
|
|
10
|
-
return Result.Err(`App with fsId ${fsId} not found`);
|
|
11
|
-
}
|
|
12
|
-
const app = found[0];
|
|
13
|
-
const meta = MetaItem.array()(app.meta);
|
|
14
|
-
if (meta instanceof type.errors) {
|
|
15
|
-
return Result.Err(`Invalid meta format: ${meta.summary}`);
|
|
16
|
-
}
|
|
17
|
-
const [storageResult] = await ensureStorage(sql.dbFlavour, db, tables.assets, s3Api).ensure(uint8array2stream(screenshotData));
|
|
18
|
-
if (!storageResult || storageResult.isErr()) {
|
|
19
|
-
return Result.Err(`Failed to store screenshot: ${storageResult?.Err()}`);
|
|
20
|
-
}
|
|
21
|
-
const existingIdx = meta.findIndex((item) => isMetaScreenShot(item));
|
|
22
|
-
if (existingIdx >= 0) {
|
|
23
|
-
meta.splice(existingIdx, 1);
|
|
24
|
-
}
|
|
25
|
-
meta.push({
|
|
26
|
-
type: "screen-shot-ref",
|
|
27
|
-
mime: "image/jpeg",
|
|
28
|
-
assetUrl: storageResult.Ok().getURL,
|
|
29
|
-
});
|
|
30
|
-
await db.update(tables.apps).set({ meta }).where(eq(tables.apps.fsId, fsId));
|
|
31
|
-
return Result.Ok({
|
|
32
|
-
fsId,
|
|
33
|
-
assetUrl: storageResult.Ok().getURL,
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
//# sourceMappingURL=store-screenshot.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"store-screenshot.js","sourceRoot":"","sources":["../../jsr/intern/store-screenshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,EAAE,EAAE,MAAM,6BAA6B,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAG/B,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAS,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAgBpD,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,EACE,GAAG,EACH,KAAK,GAIN,EACD,IAAY,EACZ,cAA0B;IAE1B,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAE3B,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE7F,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC,GAAG,CAAC,iBAAiB,IAAI,YAAY,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAGrB,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,IAAI,YAAY,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,OAAO,MAAM,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5D,CAAC;IAMD,MAAM,CAAC,aAAa,CAAC,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAAC;IAC/H,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,KAAK,EAAE,EAAE,CAAC;QAC5C,OAAO,MAAM,CAAC,GAAG,CAAC,+BAA+B,aAAa,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;IACrE,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC9B,CAAC;IAGD,IAAI,CAAC,IAAI,CAAC;QACR,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,YAAY;QAClB,QAAQ,EAAE,aAAa,CAAC,EAAE,EAAE,CAAC,MAAM;KACpC,CAAC,CAAC;IAGH,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAE7E,OAAO,MAAM,CAAC,EAAE,CAAC;QACf,IAAI;QACJ,QAAQ,EAAE,aAAa,CAAC,EAAE,EAAE,CAAC,MAAM;KACpC,CAAC,CAAC;AACL,CAAC"}
|
package/peers/sql.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { Option, URI, Result } from "@adviser/cement";
|
|
2
|
-
import { VibesSqlite } from "../create-handler.js";
|
|
3
|
-
import type { VibesApiTables } from "../types.js";
|
|
4
|
-
import { Cider, PeerStreamWithCommit, PeerWithCommit } from "../intern/ensure-storage.js";
|
|
5
|
-
import { FetchResult } from "@vibes.diy/api-types";
|
|
6
|
-
import { DBFlavour } from "../sql/tables.js";
|
|
7
|
-
export declare class SQLPeer implements PeerWithCommit {
|
|
8
|
-
readonly db: VibesSqlite;
|
|
9
|
-
readonly assets: VibesApiTables["assets"];
|
|
10
|
-
readonly cider: Cider;
|
|
11
|
-
readonly cutoffSize: number;
|
|
12
|
-
readonly flavour: DBFlavour;
|
|
13
|
-
constructor(flavour: DBFlavour, db: VibesSqlite, assets: VibesApiTables["assets"], cider: Cider, cutoffSize: number);
|
|
14
|
-
begin(): Promise<Result<PeerStreamWithCommit>>;
|
|
15
|
-
}
|
|
16
|
-
export declare class SQLPeerFetch {
|
|
17
|
-
readonly db: VibesSqlite;
|
|
18
|
-
readonly assets: VibesApiTables["assets"];
|
|
19
|
-
readonly flavour: DBFlavour;
|
|
20
|
-
constructor(flavour: DBFlavour, db: VibesSqlite, assets: VibesApiTables["assets"]);
|
|
21
|
-
fetch(url: URI): Promise<Option<FetchResult>>;
|
|
22
|
-
}
|
package/peers/sql.js
DELETED
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import { Option, uint8array2stream, exception2Result, concatUint8, Result } from "@adviser/cement";
|
|
2
|
-
import { eq } from "drizzle-orm/sql/expressions";
|
|
3
|
-
class SQLPeerStream {
|
|
4
|
-
owner;
|
|
5
|
-
chunks = [];
|
|
6
|
-
constructor(owner) {
|
|
7
|
-
this.owner = owner;
|
|
8
|
-
}
|
|
9
|
-
write(chunk) {
|
|
10
|
-
this.chunks.push(chunk);
|
|
11
|
-
if (this.chunks.reduce((acc, curr) => acc + curr.length, 0) > this.owner.cutoffSize) {
|
|
12
|
-
return Promise.reject(new Error("SQLitePeerStream: max size exceeded (4KB)"));
|
|
13
|
-
}
|
|
14
|
-
return Promise.resolve();
|
|
15
|
-
}
|
|
16
|
-
async cancel() {
|
|
17
|
-
}
|
|
18
|
-
async close() {
|
|
19
|
-
}
|
|
20
|
-
async commit() {
|
|
21
|
-
const now = new Date();
|
|
22
|
-
const created = now.toISOString();
|
|
23
|
-
const { cid: assetID } = await this.owner.cider.getCID();
|
|
24
|
-
const res = await exception2Result(() => this.owner.db
|
|
25
|
-
.insert(this.owner.assets)
|
|
26
|
-
.values({
|
|
27
|
-
assetId: assetID,
|
|
28
|
-
content: concatUint8(...this.chunks),
|
|
29
|
-
created,
|
|
30
|
-
})
|
|
31
|
-
.onConflictDoNothing());
|
|
32
|
-
if (res.isErr()) {
|
|
33
|
-
return Result.Err(res);
|
|
34
|
-
}
|
|
35
|
-
return Result.Ok({
|
|
36
|
-
url: `${this.owner.flavour}://Assets/${assetID}`,
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
export class SQLPeer {
|
|
41
|
-
db;
|
|
42
|
-
assets;
|
|
43
|
-
cider;
|
|
44
|
-
cutoffSize;
|
|
45
|
-
flavour;
|
|
46
|
-
constructor(flavour, db, assets, cider, cutoffSize) {
|
|
47
|
-
this.flavour = flavour;
|
|
48
|
-
this.db = db;
|
|
49
|
-
this.assets = assets;
|
|
50
|
-
this.cider = cider;
|
|
51
|
-
this.cutoffSize = cutoffSize;
|
|
52
|
-
}
|
|
53
|
-
begin() {
|
|
54
|
-
return Promise.resolve(Result.Ok(new SQLPeerStream(this)));
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
export class SQLPeerFetch {
|
|
58
|
-
db;
|
|
59
|
-
assets;
|
|
60
|
-
flavour;
|
|
61
|
-
constructor(flavour, db, assets) {
|
|
62
|
-
this.flavour = flavour;
|
|
63
|
-
this.db = db;
|
|
64
|
-
this.assets = assets;
|
|
65
|
-
}
|
|
66
|
-
async fetch(url) {
|
|
67
|
-
let compatProtocol = url.protocol;
|
|
68
|
-
if (compatProtocol === "sql:") {
|
|
69
|
-
compatProtocol = this.flavour + ":";
|
|
70
|
-
}
|
|
71
|
-
if (compatProtocol !== `${this.flavour}:`) {
|
|
72
|
-
return Promise.resolve(Option.None());
|
|
73
|
-
}
|
|
74
|
-
const assetId = url.pathname.slice("Assets/".length);
|
|
75
|
-
const rAsset = await exception2Result(() => this.db
|
|
76
|
-
.select()
|
|
77
|
-
.from(this.assets)
|
|
78
|
-
.where(eq(this.assets.assetId, assetId))
|
|
79
|
-
.limit(1)
|
|
80
|
-
.then((r) => r[0]));
|
|
81
|
-
if (rAsset.isErr()) {
|
|
82
|
-
return Option.Some({
|
|
83
|
-
type: "fetch.err",
|
|
84
|
-
url: url.toString(),
|
|
85
|
-
error: rAsset.Err(),
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
const asset = rAsset.Ok();
|
|
89
|
-
if (!asset) {
|
|
90
|
-
return Option.Some({
|
|
91
|
-
type: "fetch.notfound",
|
|
92
|
-
url: url.toString(),
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
return Option.Some({
|
|
96
|
-
type: "fetch.ok",
|
|
97
|
-
url: url.toString(),
|
|
98
|
-
data: uint8array2stream(asset.content),
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
//# sourceMappingURL=sql.js.map
|