@vibes.diy/api-svc 2.2.6 → 2.2.8

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.
Files changed (46) hide show
  1. package/cf-serve.d.ts +3 -1
  2. package/cf-serve.js +6 -2
  3. package/cf-serve.js.map +1 -1
  4. package/create-handler.d.ts +6 -2
  5. package/create-handler.js +4 -1
  6. package/create-handler.js.map +1 -1
  7. package/default-llm-request.d.ts +4 -0
  8. package/default-llm-request.js +2 -1
  9. package/default-llm-request.js.map +1 -1
  10. package/index.d.ts +2 -0
  11. package/index.js +2 -0
  12. package/index.js.map +1 -1
  13. package/intern/ensure-app-metadata.d.ts +13 -0
  14. package/intern/ensure-app-metadata.js +94 -0
  15. package/intern/ensure-app-metadata.js.map +1 -0
  16. package/intern/ensure-chat-id.js +21 -2
  17. package/intern/ensure-chat-id.js.map +1 -1
  18. package/intern/pre-allocate.d.ts +1 -0
  19. package/intern/pre-allocate.js +1 -0
  20. package/intern/pre-allocate.js.map +1 -1
  21. package/intern/recovery.d.ts +37 -0
  22. package/intern/recovery.js +101 -0
  23. package/intern/recovery.js.map +1 -0
  24. package/package.json +13 -13
  25. package/peers/r2-to-s3api.d.ts +20 -8
  26. package/peers/r2-to-s3api.js +312 -23
  27. package/peers/r2-to-s3api.js.map +1 -1
  28. package/peers/s3.d.ts +9 -4
  29. package/peers/s3.js +17 -23
  30. package/peers/s3.js.map +1 -1
  31. package/public/app-documents.js +3 -3
  32. package/public/app-documents.js.map +1 -1
  33. package/public/ensure-app-settings.js +52 -1
  34. package/public/ensure-app-settings.js.map +1 -1
  35. package/public/ensure-app-slug-item.d.ts +5 -2
  36. package/public/ensure-app-slug-item.js +36 -4
  37. package/public/ensure-app-slug-item.js.map +1 -1
  38. package/public/prompt-chat-section.d.ts +41 -2
  39. package/public/prompt-chat-section.js +394 -60
  40. package/public/prompt-chat-section.js.map +1 -1
  41. package/svc-ws-send-provider.d.ts +1 -0
  42. package/svc-ws-send-provider.js +1 -0
  43. package/svc-ws-send-provider.js.map +1 -1
  44. package/types.d.ts +3 -1
  45. package/usage-report/r2-affected-apps.sh +60 -0
  46. package/usage-report/r2-validate.sh +160 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recovery.js","sourceRoot":"","sources":["../../jsr/intern/recovery.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": "2.2.6",
3
+ "version": "2.2.8",
4
4
  "type": "module",
5
5
  "main": "./index.js",
6
6
  "scripts": {
@@ -14,7 +14,7 @@
14
14
  "dependencies": {
15
15
  "@adviser/cement": "~0.5.34",
16
16
  "@adviser/scopey": "~0.0.4",
17
- "@cloudflare/workers-types": "~4.20260418.1",
17
+ "@cloudflare/workers-types": "~4.20260402.1",
18
18
  "@fireproof/core-device-id": "~0.24.19",
19
19
  "@fireproof/core-protocols-dashboard": "~0.24.19",
20
20
  "@fireproof/core-runtime": "~0.24.19",
@@ -23,19 +23,19 @@
23
23
  "@fireproof/core-types-protocols-cloud": "~0.24.19",
24
24
  "@fireproof/core-types-protocols-dashboard": "~0.24.19",
25
25
  "@libsql/client": "~0.17.2",
26
- "@neondatabase/serverless": "~1.0.2",
27
- "@noble/hashes": "~2.0.1",
28
- "@vibes.diy/api-impl": "2.2.6",
29
- "@vibes.diy/api-pkg": "2.2.6",
30
- "@vibes.diy/api-sql": "2.2.6",
31
- "@vibes.diy/api-types": "2.2.6",
32
- "@vibes.diy/call-ai-v2": "2.2.6",
33
- "@vibes.diy/prompts": "2.2.6",
34
- "@vibes.diy/use-vibes-base": "2.2.6",
35
- "@vibes.diy/vibe-db-explorer": "2.2.6",
26
+ "@neondatabase/serverless": "~1.1.0",
27
+ "@noble/hashes": "~2.2.0",
28
+ "@vibes.diy/api-impl": "2.2.8",
29
+ "@vibes.diy/api-pkg": "2.2.8",
30
+ "@vibes.diy/api-sql": "2.2.8",
31
+ "@vibes.diy/api-types": "2.2.8",
32
+ "@vibes.diy/call-ai-v2": "2.2.8",
33
+ "@vibes.diy/prompts": "2.2.8",
34
+ "@vibes.diy/use-vibes-base": "2.2.8",
35
+ "@vibes.diy/vibe-db-explorer": "2.2.8",
36
36
  "acorn": "~8.16.0",
37
37
  "arktype": "~2.2.0",
38
- "call-ai": "2.2.6",
38
+ "call-ai": "2.2.8",
39
39
  "cookie": "~1.1.1",
40
40
  "drizzle-orm": "~0.45.2",
41
41
  "jose": "~6.2.2",
@@ -1,16 +1,28 @@
1
1
  import { Result } from "@adviser/cement";
2
- import { R2Bucket } from "@cloudflare/workers-types";
3
- import { SuperThis } from "@fireproof/core-types-base";
4
- import { FetchResult, S3Api } from "@vibes.diy/api-types";
2
+ import type { R2GetOptions, R2MultipartUpload, R2Object, R2ObjectBody } from "@cloudflare/workers-types";
3
+ import type { SuperThis } from "@fireproof/core-types-base";
4
+ import type { FetchResult, S3Api, S3PutOptions, S3RenameOptions } from "@vibes.diy/api-types";
5
+ export interface R2BucketSubset {
6
+ get(key: string, options?: R2GetOptions): Promise<R2ObjectBody | null>;
7
+ head(key: string): Promise<R2Object | null>;
8
+ put(key: string, value: Uint8Array): Promise<R2Object>;
9
+ delete(key: string): Promise<void>;
10
+ createMultipartUpload(key: string): Promise<R2MultipartUpload>;
11
+ }
5
12
  export declare class R2ToS3Api implements S3Api {
6
- private r2;
7
- private smThis;
8
- constructor(r2: R2Bucket, smThis: {
13
+ private readonly r2;
14
+ private readonly smThis;
15
+ private readonly pendingPuts;
16
+ constructor(r2: R2BucketSubset, smThis: {
9
17
  nextId: SuperThis["nextId"];
10
18
  });
11
19
  genId(): string;
12
20
  private toKey;
13
21
  get(iurl: string): Promise<FetchResult>;
14
- put(iurl: string): Promise<WritableStream<Uint8Array>>;
15
- rename(fromUrl: string, toUrl: string): Promise<Result<void>>;
22
+ put(iurl: string, opts?: S3PutOptions): Promise<WritableStream<Uint8Array>>;
23
+ awaitPut(iurl: string): Promise<void>;
24
+ rename(fromUrl: string, toUrl: string, opts?: S3RenameOptions): Promise<Result<void>>;
25
+ private copySmallObject;
26
+ private copyLargeObjectStreaming;
27
+ private abortQuiet;
16
28
  }
@@ -1,7 +1,18 @@
1
- import { Result, URI } from "@adviser/cement";
1
+ import { exception2Result, Result, URI } from "@adviser/cement";
2
+ const PART_SIZE = 5 * 1024 * 1024;
3
+ function concatChunks(chunks, total) {
4
+ const merged = new Uint8Array(total);
5
+ let off = 0;
6
+ for (const c of chunks) {
7
+ merged.set(c, off);
8
+ off += c.length;
9
+ }
10
+ return merged;
11
+ }
2
12
  export class R2ToS3Api {
3
13
  r2;
4
14
  smThis;
15
+ pendingPuts = new Map();
5
16
  constructor(r2, smThis) {
6
17
  this.r2 = r2;
7
18
  this.smThis = smThis;
@@ -10,38 +21,316 @@ export class R2ToS3Api {
10
21
  return this.smThis.nextId(12).str;
11
22
  }
12
23
  toKey(iurl) {
13
- return URI.from(iurl).pathname.replace(/.*\//, "");
24
+ return URI.from(iurl).pathname.replace(/^\/+/, "");
14
25
  }
15
26
  async get(iurl) {
16
- try {
17
- const obj = await this.r2.get(this.toKey(iurl));
18
- if (obj === null) {
19
- return { type: "fetch.notfound", url: iurl };
27
+ const r = await exception2Result(() => this.r2.get(this.toKey(iurl)));
28
+ if (r.isErr()) {
29
+ const err = r.Err();
30
+ console.error(`R2ToS3Api.get(${iurl}) failed:`, err);
31
+ return { type: "fetch.err", url: iurl, error: err };
32
+ }
33
+ const obj = r.Ok();
34
+ if (obj === null) {
35
+ return { type: "fetch.notfound", url: iurl };
36
+ }
37
+ return { type: "fetch.ok", url: iurl, data: obj.body };
38
+ }
39
+ async put(iurl, opts) {
40
+ const key = this.toKey(iurl);
41
+ const r2 = this.r2;
42
+ const pendingPuts = this.pendingPuts;
43
+ const onProgress = opts?.onProgress;
44
+ let chunks = [];
45
+ let bufferedBytes = 0;
46
+ let multipartPromise = undefined;
47
+ let nextPartNumber = 1;
48
+ const inFlightParts = [];
49
+ let totalBytesUploaded = 0;
50
+ let resolveDone;
51
+ let rejectDone;
52
+ const donePromise = new Promise((resolve, reject) => {
53
+ resolveDone = resolve;
54
+ rejectDone = reject;
55
+ });
56
+ const settled = donePromise.then(() => {
57
+ pendingPuts.delete(key);
58
+ }, () => {
59
+ pendingPuts.delete(key);
60
+ });
61
+ pendingPuts.set(key, settled);
62
+ const ensureMultipart = () => {
63
+ if (multipartPromise === undefined) {
64
+ multipartPromise = exception2Result(() => r2.createMultipartUpload(key));
65
+ }
66
+ return multipartPromise;
67
+ };
68
+ const flushPartBackground = () => {
69
+ const merged = concatChunks(chunks, bufferedBytes);
70
+ chunks = [];
71
+ bufferedBytes = 0;
72
+ const myPartNumber = nextPartNumber++;
73
+ const partBytes = merged.byteLength;
74
+ return (async () => {
75
+ const mpResult = await ensureMultipart();
76
+ if (mpResult.isErr())
77
+ return Result.Err(mpResult.Err());
78
+ const mp = mpResult.Ok();
79
+ const r = await exception2Result(() => mp.uploadPart(myPartNumber, merged));
80
+ if (r.isOk() && onProgress) {
81
+ totalBytesUploaded += partBytes;
82
+ onProgress({ stage: "uploading-part", partNumber: myPartNumber, bytes: totalBytesUploaded });
83
+ }
84
+ return r;
85
+ })();
86
+ };
87
+ const finalize = async () => {
88
+ const partResults = await Promise.all(inFlightParts);
89
+ const firstErr = partResults.find((r) => r.isErr());
90
+ if (firstErr !== undefined) {
91
+ const mpResult = multipartPromise === undefined ? undefined : await multipartPromise;
92
+ if (mpResult !== undefined && mpResult.isOk()) {
93
+ const mp = mpResult.Ok();
94
+ const ar = await exception2Result(() => mp.abort());
95
+ if (ar.isErr())
96
+ console.error(`R2ToS3Api.put(${key}) abort after part failure also failed:`, ar.Err());
97
+ }
98
+ return Result.Err(firstErr.Err());
99
+ }
100
+ if (multipartPromise === undefined) {
101
+ const small = concatChunks(chunks, bufferedBytes);
102
+ const rPut = await exception2Result(() => r2.put(key, small).then(() => undefined));
103
+ if (rPut.isOk() && onProgress) {
104
+ onProgress({ stage: "asset-stored", bytes: small.byteLength });
105
+ }
106
+ return rPut;
107
+ }
108
+ if (chunks.length > 0) {
109
+ const finalR = await flushPartBackground();
110
+ if (finalR.isErr()) {
111
+ const mpResult = await multipartPromise;
112
+ if (mpResult.isOk()) {
113
+ const mp = mpResult.Ok();
114
+ const ar = await exception2Result(() => mp.abort());
115
+ if (ar.isErr())
116
+ console.error(`R2ToS3Api.put(${key}) abort after final-part failure also failed:`, ar.Err());
117
+ }
118
+ return Result.Err(finalR.Err());
119
+ }
120
+ partResults.push(finalR);
121
+ }
122
+ const completed = partResults.flatMap((r) => (r.isOk() ? [r.Ok()] : []));
123
+ const mpResult = await multipartPromise;
124
+ if (mpResult.isErr())
125
+ return Result.Err(mpResult.Err());
126
+ const mp = mpResult.Ok();
127
+ const completeR = await exception2Result(() => mp.complete(completed).then(() => undefined));
128
+ if (completeR.isErr()) {
129
+ const ar = await exception2Result(() => mp.abort());
130
+ if (ar.isErr())
131
+ console.error(`R2ToS3Api.put(${key}) abort after complete failure also failed:`, ar.Err());
132
+ }
133
+ else if (onProgress) {
134
+ onProgress({ stage: "asset-stored", bytes: totalBytesUploaded });
135
+ }
136
+ return completeR;
137
+ };
138
+ const finalizeInBackground = () => {
139
+ finalize().then((r) => {
140
+ if (r.isErr()) {
141
+ const err = r.Err();
142
+ console.error(`R2ToS3Api.put(${key}) finalize failed:`, err);
143
+ rejectDone(err);
144
+ }
145
+ else {
146
+ resolveDone();
147
+ }
148
+ }, (e) => {
149
+ const err = e instanceof Error ? e : new Error(String(e));
150
+ console.error(`R2ToS3Api.put(${key}) finalize threw:`, err);
151
+ rejectDone(err);
152
+ });
153
+ };
154
+ return new WritableStream({
155
+ write(chunk) {
156
+ chunks.push(chunk);
157
+ bufferedBytes += chunk.byteLength;
158
+ if (bufferedBytes > PART_SIZE) {
159
+ inFlightParts.push(flushPartBackground());
160
+ }
161
+ },
162
+ close() {
163
+ finalizeInBackground();
164
+ },
165
+ async abort(reason) {
166
+ const err = reason instanceof Error ? reason : new Error(String(reason));
167
+ if (multipartPromise !== undefined) {
168
+ const mpResult = await multipartPromise;
169
+ if (mpResult.isOk()) {
170
+ const mp = mpResult.Ok();
171
+ const ar = await exception2Result(() => mp.abort());
172
+ if (ar.isErr())
173
+ console.error(`R2ToS3Api.put(${key}) abort failed:`, ar.Err());
174
+ }
175
+ }
176
+ rejectDone(err);
177
+ },
178
+ });
179
+ }
180
+ async awaitPut(iurl) {
181
+ const pending = this.pendingPuts.get(this.toKey(iurl));
182
+ if (pending !== undefined) {
183
+ await pending;
184
+ }
185
+ }
186
+ async rename(fromUrl, toUrl, opts) {
187
+ const fromKey = this.toKey(fromUrl);
188
+ const toKey = this.toKey(toUrl);
189
+ const onProgress = opts?.onProgress;
190
+ await this.awaitPut(fromUrl);
191
+ const rHead = await exception2Result(() => this.r2.head(fromKey));
192
+ if (rHead.isErr()) {
193
+ const err = rHead.Err();
194
+ console.error(`R2ToS3Api.rename(${fromUrl}) head failed:`, err);
195
+ return Result.Err(err);
196
+ }
197
+ const srcMeta = rHead.Ok();
198
+ if (srcMeta === null) {
199
+ const err = new Error(`Object not found: ${fromUrl}`);
200
+ console.error(`R2ToS3Api.rename: ${err.message}`);
201
+ return Result.Err(err);
202
+ }
203
+ const sourceSize = srcMeta.size;
204
+ if (sourceSize <= PART_SIZE) {
205
+ const rCopy = await this.copySmallObject(fromKey, toKey);
206
+ if (rCopy.isErr())
207
+ return rCopy;
208
+ if (onProgress) {
209
+ onProgress({ stage: "asset-renamed", bytes: sourceSize });
20
210
  }
21
- return { type: "fetch.ok", url: iurl, data: obj.body };
22
211
  }
23
- catch (e) {
24
- return { type: "fetch.err", url: iurl, error: e instanceof Error ? e : new Error(String(e)) };
212
+ else {
213
+ const rCopy = await this.copyLargeObjectStreaming(fromKey, toKey, sourceSize, onProgress);
214
+ if (rCopy.isErr())
215
+ return rCopy;
25
216
  }
217
+ const rDestHead = await exception2Result(() => this.r2.head(toKey));
218
+ if (rDestHead.isErr()) {
219
+ const err = rDestHead.Err();
220
+ console.error(`R2ToS3Api.rename(${toUrl}) destination head failed:`, err);
221
+ return Result.Err(err);
222
+ }
223
+ const dest = rDestHead.Ok();
224
+ if (dest === null) {
225
+ const err = new Error(`Destination put failed: ${toUrl}`);
226
+ console.error(`R2ToS3Api.rename: ${err.message}`);
227
+ return Result.Err(err);
228
+ }
229
+ if (dest.size !== sourceSize) {
230
+ const err = new Error(`Destination size mismatch: from=${sourceSize} to=${dest.size}`);
231
+ console.error(`R2ToS3Api.rename: ${err.message}`);
232
+ return Result.Err(err);
233
+ }
234
+ const rDel = await exception2Result(() => this.r2.delete(fromKey));
235
+ if (rDel.isErr()) {
236
+ const err = rDel.Err();
237
+ console.error(`R2ToS3Api.rename(${fromUrl}) delete failed:`, err);
238
+ return Result.Err(err);
239
+ }
240
+ return Result.Ok(undefined);
26
241
  }
27
- async put(iurl) {
28
- const { readable, writable } = new TransformStream();
29
- void this.r2.put(this.toKey(iurl), readable);
30
- return writable;
242
+ async copySmallObject(fromKey, toKey) {
243
+ const rGet = await exception2Result(() => this.r2.get(fromKey));
244
+ if (rGet.isErr()) {
245
+ const err = rGet.Err();
246
+ console.error(`R2ToS3Api.rename get(${fromKey}) failed:`, err);
247
+ return Result.Err(err);
248
+ }
249
+ const src = rGet.Ok();
250
+ if (src === null) {
251
+ const err = new Error(`Object disappeared during rename: ${fromKey}`);
252
+ console.error(`R2ToS3Api.rename: ${err.message}`);
253
+ return Result.Err(err);
254
+ }
255
+ const rBytes = await exception2Result(() => src.arrayBuffer());
256
+ if (rBytes.isErr()) {
257
+ const err = rBytes.Err();
258
+ console.error(`R2ToS3Api.rename arrayBuffer(${fromKey}) failed:`, err);
259
+ return Result.Err(err);
260
+ }
261
+ const rPut = await exception2Result(() => this.r2.put(toKey, new Uint8Array(rBytes.Ok())));
262
+ if (rPut.isErr()) {
263
+ const err = rPut.Err();
264
+ console.error(`R2ToS3Api.rename put(${toKey}) failed:`, err);
265
+ return Result.Err(err);
266
+ }
267
+ return Result.Ok(undefined);
31
268
  }
32
- async rename(fromUrl, toUrl) {
33
- try {
34
- const obj = await this.r2.get(this.toKey(fromUrl));
35
- if (obj === null) {
36
- return Result.Err(`Object not found: ${fromUrl}`);
269
+ async copyLargeObjectStreaming(fromKey, toKey, sourceSize, onProgress) {
270
+ const rMp = await exception2Result(() => this.r2.createMultipartUpload(toKey));
271
+ if (rMp.isErr()) {
272
+ const err = rMp.Err();
273
+ console.error(`R2ToS3Api.rename createMultipartUpload(${toKey}) failed:`, err);
274
+ return Result.Err(err);
275
+ }
276
+ const mp = rMp.Ok();
277
+ const completedParts = [];
278
+ let partNumber = 1;
279
+ let totalCopied = 0;
280
+ for (let offset = 0; offset < sourceSize; offset += PART_SIZE) {
281
+ const length = Math.min(PART_SIZE, sourceSize - offset);
282
+ const rGet = await exception2Result(() => this.r2.get(fromKey, { range: { offset, length } }));
283
+ if (rGet.isErr()) {
284
+ const err = rGet.Err();
285
+ console.error(`R2ToS3Api.rename range-get(${fromKey}, offset=${offset}) failed:`, err);
286
+ await this.abortQuiet(mp, toKey);
287
+ return Result.Err(err);
288
+ }
289
+ const part = rGet.Ok();
290
+ if (part === null) {
291
+ const err = new Error(`Range get returned null on ${fromKey} at offset=${offset}`);
292
+ console.error(`R2ToS3Api.rename: ${err.message}`);
293
+ await this.abortQuiet(mp, toKey);
294
+ return Result.Err(err);
295
+ }
296
+ const rBytes = await exception2Result(() => part.arrayBuffer());
297
+ if (rBytes.isErr()) {
298
+ const err = rBytes.Err();
299
+ console.error(`R2ToS3Api.rename arrayBuffer(${fromKey}, offset=${offset}) failed:`, err);
300
+ await this.abortQuiet(mp, toKey);
301
+ return Result.Err(err);
302
+ }
303
+ const bytes = new Uint8Array(rBytes.Ok());
304
+ const rUpload = await exception2Result(() => mp.uploadPart(partNumber, bytes));
305
+ if (rUpload.isErr()) {
306
+ const err = rUpload.Err();
307
+ console.error(`R2ToS3Api.rename uploadPart(${toKey}, part=${partNumber}) failed:`, err);
308
+ await this.abortQuiet(mp, toKey);
309
+ return Result.Err(err);
37
310
  }
38
- await this.r2.put(this.toKey(toUrl), obj.body);
39
- await this.r2.delete(this.toKey(fromUrl));
40
- return Result.Ok(undefined);
311
+ completedParts.push(rUpload.Ok());
312
+ totalCopied += bytes.byteLength;
313
+ if (onProgress) {
314
+ onProgress({ stage: "rename-part", partNumber, bytes: totalCopied });
315
+ }
316
+ partNumber += 1;
317
+ }
318
+ const rComplete = await exception2Result(() => mp.complete(completedParts).then(() => undefined));
319
+ if (rComplete.isErr()) {
320
+ const err = rComplete.Err();
321
+ console.error(`R2ToS3Api.rename complete(${toKey}) failed:`, err);
322
+ await this.abortQuiet(mp, toKey);
323
+ return Result.Err(err);
41
324
  }
42
- catch (e) {
43
- return Result.Err(e);
325
+ if (onProgress) {
326
+ onProgress({ stage: "asset-renamed", bytes: totalCopied });
44
327
  }
328
+ return Result.Ok(undefined);
329
+ }
330
+ async abortQuiet(mp, key) {
331
+ const ar = await exception2Result(() => mp.abort());
332
+ if (ar.isErr())
333
+ console.error(`R2ToS3Api.rename abort(${key}) failed:`, ar.Err());
45
334
  }
46
335
  }
47
336
  //# sourceMappingURL=r2-to-s3api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"r2-to-s3api.js","sourceRoot":"","sources":["../../jsr/peers/r2-to-s3api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAK9C,MAAM,OAAO,SAAS;IACZ,EAAE,CAAW;IACb,MAAM,CAAkC;IAChD,YAAY,EAAY,EAAE,MAAuC;QAC/D,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IACD,KAAK;QACH,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC;IACpC,CAAC;IACO,KAAK,CAAC,IAAY;QACxB,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,KAAK,CAAC,GAAG,CAAC,IAAY;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAChD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBACjB,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;YAC/C,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAA6C,EAAE,CAAC;QAClG,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChG,CAAC;IACH,CAAC;IACD,KAAK,CAAC,GAAG,CAAC,IAAY;QACpB,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,eAAe,EAA0B,CAAC;QAE7E,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,QAAuC,CAAC,CAAC;QAC5E,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,OAAe,EAAE,KAAa;QACzC,IAAI,CAAC;YAEH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YACnD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBACjB,OAAO,MAAM,CAAC,GAAG,CAAC,qBAAqB,OAAO,EAAE,CAAC,CAAC;YACpD,CAAC;YACD,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,IAAmC,CAAC,CAAC;YAC9E,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAC1C,OAAO,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,MAAM,CAAC,GAAG,CAAC,CAAU,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"r2-to-s3api.js","sourceRoot":"","sources":["../../jsr/peers/r2-to-s3api.ts"],"names":[],"mappings":"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"}
package/peers/s3.d.ts CHANGED
@@ -1,14 +1,19 @@
1
1
  import { Option, URI, Result } from "@adviser/cement";
2
- import { Cider, PeerStreamWithCommit, PeerWithCommit } from "@vibes.diy/api-pkg";
3
- import { FetchResult, S3Api } from "@vibes.diy/api-types";
2
+ import { Cider, PeerFetch, PeerStreamWithCommit, PeerWithCommit, StoragePeer } from "@vibes.diy/api-pkg";
3
+ import type { FetchResult, S3Api, StorageProgressFn } from "@vibes.diy/api-types";
4
4
  export declare class S3Peer implements PeerWithCommit {
5
5
  readonly s3: S3Api;
6
6
  readonly cider: Cider;
7
- constructor(s3: S3Api, cider: Cider);
7
+ readonly onProgress?: StorageProgressFn;
8
+ constructor(s3: S3Api, cider: Cider, onProgress?: StorageProgressFn);
8
9
  begin(): Promise<Result<PeerStreamWithCommit>>;
9
10
  }
10
- export declare class S3PeerFetch {
11
+ export declare class S3PeerFetch implements PeerFetch {
11
12
  readonly s3: S3Api;
12
13
  constructor(s3: S3Api);
13
14
  fetch(url: URI): Promise<Option<FetchResult>>;
14
15
  }
16
+ export interface CreateS3PeerParams {
17
+ s3: S3Api;
18
+ }
19
+ export declare function createS3Peer(params: CreateS3PeerParams): StoragePeer;
package/peers/s3.js CHANGED
@@ -1,58 +1,47 @@
1
1
  import { Option, Result, exception2Result } from "@adviser/cement";
2
2
  const S3_PEER_PROTOCOL = "s3:";
3
+ const S3_PEER_HOST = "r2";
3
4
  class S3PeerStream {
4
5
  owner;
5
6
  tmpUrl;
6
7
  writer;
7
8
  constructor(owner, tmpUrl, writer) {
8
- console.log("S3PeerStream constructor called, tmpUrl:", tmpUrl);
9
9
  this.owner = owner;
10
10
  this.writer = writer;
11
11
  this.tmpUrl = tmpUrl;
12
12
  }
13
13
  write(chunk) {
14
- console.log("S3PeerStream write called, chunk size:", chunk.length);
15
14
  return this.writer.write(chunk);
16
15
  }
17
16
  async cancel() {
18
- console.log("S3PeerStream cancel called");
19
17
  return this.writer.abort();
20
18
  }
21
19
  async close() {
22
- console.log("S3PeerStream close called");
23
- return this.writer.close();
20
+ await this.writer.close();
24
21
  }
25
22
  async commit() {
26
- console.log("S3PeerStream commit called, tmpUrl:", this.tmpUrl);
27
23
  const { cid: assetID } = await this.owner.cider.getCID();
28
- console.log("S3PeerStream commit called, got assetID from cider:", assetID);
29
- const url = `${S3_PEER_PROTOCOL}://-/${assetID}`;
30
- const res = await this.owner.s3.rename(this.tmpUrl, url);
31
- console.log("S3PeerStream commit called, rename result:", assetID, res);
24
+ const url = `${S3_PEER_PROTOCOL}//${S3_PEER_HOST}/${assetID}`;
25
+ const res = await this.owner.s3.rename(this.tmpUrl, url, { onProgress: this.owner.onProgress });
32
26
  if (res.isErr()) {
33
27
  return Result.Err(res);
34
28
  }
35
- console.log("S3PeerStream commit result:", url);
36
- return Result.Ok({
37
- url,
38
- });
29
+ return Result.Ok({ url });
39
30
  }
40
31
  }
41
32
  export class S3Peer {
42
33
  s3;
43
34
  cider;
44
- constructor(s3, cider) {
45
- console.log("S3Peer constructor called");
35
+ onProgress;
36
+ constructor(s3, cider, onProgress) {
46
37
  this.s3 = s3;
47
38
  this.cider = cider;
39
+ this.onProgress = onProgress;
48
40
  }
49
41
  async begin() {
50
- console.log("S3Peer begin called, generated tmpUrl pre genId:");
51
- const tmpUrl = `s3://temp/${this.s3.genId()}.tmp`;
52
- console.log("S3Peer begin called, generated tmpUrl:", tmpUrl);
53
- const rWriter = await exception2Result(() => this.s3.put(tmpUrl).then((stream) => stream.getWriter()));
42
+ const tmpUrl = `${S3_PEER_PROTOCOL}//${S3_PEER_HOST}/temp/${this.s3.genId()}.tmp`;
43
+ const rWriter = await exception2Result(() => this.s3.put(tmpUrl, { onProgress: this.onProgress }).then((stream) => stream.getWriter()));
54
44
  if (rWriter.isErr()) {
55
- console.log("S3Peer begin error getting writer for tmpUrl:", tmpUrl, "error:", rWriter.Err());
56
45
  return Result.Err(rWriter.Err());
57
46
  }
58
47
  return Result.Ok(new S3PeerStream(this, tmpUrl, rWriter.Ok()));
@@ -67,8 +56,13 @@ export class S3PeerFetch {
67
56
  if (url.protocol !== S3_PEER_PROTOCOL) {
68
57
  return Promise.resolve(Option.None());
69
58
  }
70
- const assetId = url.pathname.slice("-/".length);
71
- return Option.Some(await this.s3.get(assetId));
59
+ return Option.Some(await this.s3.get(url.toString()));
72
60
  }
73
61
  }
62
+ export function createS3Peer(params) {
63
+ return {
64
+ fetch: new S3PeerFetch(params.s3),
65
+ factory: (cider, fopts) => new S3Peer(params.s3, cider, fopts?.onProgress),
66
+ };
67
+ }
74
68
  //# sourceMappingURL=s3.js.map
package/peers/s3.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"s3.js","sourceRoot":"","sources":["../../jsr/peers/s3.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAO,MAAM,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAIxE,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAE/B,MAAM,YAAY;IACP,KAAK,CAAS;IACd,MAAM,CAAS;IACf,MAAM,CAA0C;IACzD,YAAY,KAAa,EAAE,MAAc,EAAE,MAA+C;QACxF,OAAO,CAAC,GAAG,CAAC,0CAA0C,EAAE,MAAM,CAAC,CAAC;QAChE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,KAAiB;QACrB,OAAO,CAAC,GAAG,CAAC,wCAAwC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACpE,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IACD,KAAK,CAAC,MAAM;QACV,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IACD,KAAK,CAAC,KAAK;QACT,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IACD,KAAK,CAAC,MAAM;QACV,OAAO,CAAC,GAAG,CAAC,qCAAqC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAChE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,qDAAqD,EAAE,OAAO,CAAC,CAAC;QAC5E,MAAM,GAAG,GAAG,GAAG,gBAAgB,QAAQ,OAAO,EAAE,CAAC;QACjD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,4CAA4C,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QACxE,IAAI,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC;YAChB,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;QAChD,OAAO,MAAM,CAAC,EAAE,CAAC;YACf,GAAG;SACJ,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,MAAM;IACR,EAAE,CAAQ;IACV,KAAK,CAAQ;IACtB,YAAY,EAAS,EAAE,KAAY;QACjC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACzC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IACD,KAAK,CAAC,KAAK;QACT,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,aAAa,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,wCAAwC,EAAE,MAAM,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QACvG,IAAI,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,+CAA+C,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YAC9F,OAAO,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,MAAM,CAAC,EAAE,CAAC,IAAI,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACjE,CAAC;CACF;AAED,MAAM,OAAO,WAAW;IACb,EAAE,CAAQ;IACnB,YAAY,EAAS;QACnB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IACD,KAAK,CAAC,KAAK,CAAC,GAAQ;QAClB,IAAI,GAAG,CAAC,QAAQ,KAAK,gBAAgB,EAAE,CAAC;YACtC,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IACjD,CAAC;CACF"}
1
+ {"version":3,"file":"s3.js","sourceRoot":"","sources":["../../jsr/peers/s3.ts"],"names":[],"mappings":"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"}
@@ -42,7 +42,7 @@ export const putDocEvento = {
42
42
  return Result.Ok(EventoResult.Continue);
43
43
  }
44
44
  const now = new Date().toISOString();
45
- const docId = req.docId ?? vctx.sthis.nextId().str;
45
+ const docId = req.docId ?? vctx.sthis.timeOrderedNextId().str;
46
46
  const dbName = req.dbName;
47
47
  const t = vctx.sql.tables.appDocuments;
48
48
  const maxSeqResult = await vctx.sql.db
@@ -81,7 +81,7 @@ export const putDocEvento = {
81
81
  }
82
82
  if (vctx.notifyDocChanged) {
83
83
  vctx
84
- .notifyDocChanged({ userSlug: req.userSlug, appSlug: req.appSlug, dbName, docId })
84
+ .notifyDocChanged({ userSlug: req.userSlug, appSlug: req.appSlug, dbName, docId }, clientWsSend(ctx).connId)
85
85
  .catch((e) => console.error("DocNotify error:", e));
86
86
  }
87
87
  await ctx.send.send(ctx, {
@@ -231,7 +231,7 @@ export const deleteDocEvento = {
231
231
  });
232
232
  if (vctx.notifyDocChanged) {
233
233
  vctx
234
- .notifyDocChanged({ userSlug: req.userSlug, appSlug: req.appSlug, dbName, docId: req.docId })
234
+ .notifyDocChanged({ userSlug: req.userSlug, appSlug: req.appSlug, dbName, docId: req.docId }, clientWsSend(ctx).connId)
235
235
  .catch((e) => console.error("DocNotify error:", e));
236
236
  }
237
237
  await ctx.send.send(ctx, {