@vibes.diy/api-svc 2.2.9 → 2.2.11

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 (73) hide show
  1. package/asset-grant.d.ts +16 -0
  2. package/asset-grant.js +52 -0
  3. package/asset-grant.js.map +1 -0
  4. package/asset-session.d.ts +22 -0
  5. package/asset-session.js +41 -0
  6. package/asset-session.js.map +1 -0
  7. package/create-handler.js +12 -0
  8. package/create-handler.js.map +1 -1
  9. package/hkdf-key.d.ts +7 -0
  10. package/hkdf-key.js +18 -0
  11. package/hkdf-key.js.map +1 -0
  12. package/index.d.ts +4 -0
  13. package/index.js +4 -0
  14. package/index.js.map +1 -1
  15. package/intern/bump-app-recency.d.ts +7 -0
  16. package/intern/bump-app-recency.js +12 -0
  17. package/intern/bump-app-recency.js.map +1 -0
  18. package/intern/ensure-chat-id.js +8 -2
  19. package/intern/ensure-chat-id.js.map +1 -1
  20. package/intern/ensure-slug-binding.js +22 -6
  21. package/intern/ensure-slug-binding.js.map +1 -1
  22. package/intern/get-model-defaults.d.ts +1 -0
  23. package/intern/get-model-defaults.js +6 -2
  24. package/intern/get-model-defaults.js.map +1 -1
  25. package/intern/grouped-vibe-import-map.d.ts +1 -1
  26. package/intern/grouped-vibe-import-map.js +1 -1
  27. package/intern/grouped-vibe-import-map.js.map +1 -1
  28. package/intern/pre-allocate.d.ts +1 -0
  29. package/intern/pre-allocate.js +60 -47
  30. package/intern/pre-allocate.js.map +1 -1
  31. package/models.json +3 -2
  32. package/package.json +10 -10
  33. package/public/app-documents.js +53 -3
  34. package/public/app-documents.js.map +1 -1
  35. package/public/asset-session.d.ts +15 -0
  36. package/public/asset-session.js +150 -0
  37. package/public/asset-session.js.map +1 -0
  38. package/public/asset-upload-grant.d.ts +3 -0
  39. package/public/asset-upload-grant.js +59 -0
  40. package/public/asset-upload-grant.js.map +1 -0
  41. package/public/convert-image-evt.d.ts +11 -0
  42. package/public/convert-image-evt.js +74 -0
  43. package/public/convert-image-evt.js.map +1 -0
  44. package/public/ensure-app-settings.js +10 -1
  45. package/public/ensure-app-settings.js.map +1 -1
  46. package/public/files-asset.d.ts +13 -0
  47. package/public/files-asset.js +201 -0
  48. package/public/files-asset.js.map +1 -0
  49. package/public/files-url-mint.d.ts +18 -0
  50. package/public/files-url-mint.js +38 -0
  51. package/public/files-url-mint.js.map +1 -0
  52. package/public/fork-app.js +5 -0
  53. package/public/fork-app.js.map +1 -1
  54. package/public/list-models.d.ts +2 -2
  55. package/public/list-recent-vibes.d.ts +3 -0
  56. package/public/list-recent-vibes.js +128 -0
  57. package/public/list-recent-vibes.js.map +1 -0
  58. package/public/prompt-chat-section.js +55 -37
  59. package/public/prompt-chat-section.js.map +1 -1
  60. package/public/put-asset.d.ts +8 -0
  61. package/public/put-asset.js +80 -0
  62. package/public/put-asset.js.map +1 -0
  63. package/public/store-and-audit-asset.d.ts +18 -0
  64. package/public/store-and-audit-asset.js +64 -0
  65. package/public/store-and-audit-asset.js.map +1 -0
  66. package/svc-http-send-provider.js +11 -9
  67. package/svc-http-send-provider.js.map +1 -1
  68. package/types.d.ts +4 -0
  69. package/types.js.map +1 -1
  70. package/vibes-msg-evento.js +3 -1
  71. package/vibes-msg-evento.js.map +1 -1
  72. package/vibes-req-res-evento.js +5 -2
  73. package/vibes-req-res-evento.js.map +1 -1
@@ -0,0 +1,80 @@
1
+ import { Result, Option, EventoResult, URI, } from "@adviser/cement";
2
+ import { storeAndAuditAsset } from "./store-and-audit-asset.js";
3
+ const GRANT_HEADER = "X-Asset-Grant";
4
+ export const putAsset = {
5
+ hash: "put-asset",
6
+ validate: (ctx) => {
7
+ const { request: req } = ctx;
8
+ if (!req || req.method !== "POST")
9
+ return Promise.resolve(Result.Ok(Option.None()));
10
+ const url = URI.from(req.url);
11
+ if (url.pathname !== "/assets")
12
+ return Promise.resolve(Result.Ok(Option.None()));
13
+ const grant = req.headers.get(GRANT_HEADER) ?? req.headers.get(GRANT_HEADER.toLowerCase());
14
+ if (!grant) {
15
+ return Promise.resolve(Result.Ok(Option.Some({
16
+ grant: "",
17
+ contentType: req.headers.get("Content-Type") ?? undefined,
18
+ body: req.body,
19
+ })));
20
+ }
21
+ return Promise.resolve(Result.Ok(Option.Some({
22
+ grant,
23
+ contentType: req.headers.get("Content-Type") ?? undefined,
24
+ body: req.body,
25
+ })));
26
+ },
27
+ handle: async (ctx) => {
28
+ const vctx = ctx.ctx.getOrThrow("vibesApiCtx");
29
+ const { grant, contentType, body } = ctx.validated;
30
+ if (!grant) {
31
+ return sendErr(ctx, 401, `missing ${GRANT_HEADER} header`);
32
+ }
33
+ const rClaims = await vctx.assetGrantSigner.verify(grant);
34
+ if (rClaims.isErr()) {
35
+ const errMsg = rClaims.Err().message ?? "";
36
+ const status = /JWTExpired|ERR_JWT_EXPIRED|exp" claim timestamp/.test(errMsg) ? 410 : 401;
37
+ return sendErr(ctx, status, status === 410 ? "grant expired" : "invalid grant");
38
+ }
39
+ const claims = rClaims.Ok();
40
+ if (claims.mimeType && contentType && contentType !== "application/octet-stream" && contentType !== claims.mimeType) {
41
+ vctx.logger.Warn().Str("expected", claims.mimeType).Str("got", contentType).Msg("put-asset Content-Type mismatch");
42
+ }
43
+ if (!body) {
44
+ return sendErr(ctx, 400, "request body required");
45
+ }
46
+ const rStored = await storeAndAuditAsset(vctx, {
47
+ bytes: body,
48
+ userId: claims.userId,
49
+ userSlug: claims.userSlug,
50
+ appSlug: claims.appSlug,
51
+ mimeType: claims.mimeType,
52
+ uploadId: claims.jti,
53
+ });
54
+ if (rStored.isErr()) {
55
+ return sendErr(ctx, 500, rStored.Err().message);
56
+ }
57
+ const stored = rStored.Ok();
58
+ await ctx.send.send(ctx, {
59
+ type: "http.Response.JSON",
60
+ status: 200,
61
+ json: {
62
+ type: "vibes.diy.res-put-asset",
63
+ cid: stored.cid,
64
+ getURL: stored.assetURI,
65
+ size: stored.size,
66
+ uploadId: stored.uploadId,
67
+ },
68
+ });
69
+ return Result.Ok(EventoResult.Stop);
70
+ },
71
+ };
72
+ function sendErr(ctx, status, message) {
73
+ ctx.send.send(ctx, {
74
+ type: "http.Response.JSON",
75
+ status,
76
+ json: { type: "error", message },
77
+ });
78
+ return Result.Ok(EventoResult.Stop);
79
+ }
80
+ //# sourceMappingURL=put-asset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"put-asset.js","sourceRoot":"","sources":["../../jsr/public/put-asset.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { Result } from "@adviser/cement";
2
+ import { VibesApiSQLCtx } from "../types.js";
3
+ export interface StoreAndAuditAssetParams {
4
+ readonly bytes: ReadableStream<Uint8Array> | Uint8Array;
5
+ readonly userId: string;
6
+ readonly userSlug: string;
7
+ readonly appSlug: string;
8
+ readonly mimeType?: string | null;
9
+ readonly uploadId?: string;
10
+ }
11
+ export interface StoreAndAuditAssetResult {
12
+ readonly uploadId: string;
13
+ readonly cid: string;
14
+ readonly assetURI: string;
15
+ readonly size: number;
16
+ readonly mimeType: string | null;
17
+ }
18
+ export declare function storeAndAuditAsset(vctx: VibesApiSQLCtx, params: StoreAndAuditAssetParams): Promise<Result<StoreAndAuditAssetResult>>;
@@ -0,0 +1,64 @@
1
+ import { Result, exception2Result, uint8array2stream } from "@adviser/cement";
2
+ import { eq } from "drizzle-orm/sql/expressions";
3
+ export async function storeAndAuditAsset(vctx, params) {
4
+ const stream = params.bytes instanceof Uint8Array ? uint8array2stream(params.bytes) : params.bytes;
5
+ const rEnsure = await exception2Result(() => vctx.storage.ensure(stream));
6
+ if (rEnsure.isErr()) {
7
+ return Result.Err(`storage.ensure failed: ${rEnsure.Err().message}`);
8
+ }
9
+ const results = rEnsure.Ok();
10
+ if (results.length === 0 || results[0].isErr()) {
11
+ return Result.Err(`storage.ensure failed: ${results[0]?.Err()?.message ?? "no result"}`);
12
+ }
13
+ const stored = results[0].Ok();
14
+ const uploadId = params.uploadId ?? vctx.sthis.nextId(16).str;
15
+ const mimeType = params.mimeType ?? null;
16
+ const uploadsTable = vctx.sql.tables.assetUploads;
17
+ const rInsert = await exception2Result(() => vctx.sql.db.insert(uploadsTable).values({
18
+ uploadId,
19
+ userId: params.userId,
20
+ userSlug: params.userSlug,
21
+ appSlug: params.appSlug,
22
+ cid: stored.cid,
23
+ assetURI: stored.getURL,
24
+ size: stored.size,
25
+ mimeType,
26
+ created: new Date().toISOString(),
27
+ }));
28
+ if (rInsert.isErr()) {
29
+ return Result.Err(`audit insert failed: ${rInsert.Err().message}`);
30
+ }
31
+ const rFetch = await exception2Result(() => vctx.storage.fetch(stored.getURL));
32
+ if (rFetch.isErr()) {
33
+ return Result.Err(`asset readback failed: ${rFetch.Err().message}`);
34
+ }
35
+ const fetched = rFetch.Ok();
36
+ if (fetched.type !== "fetch.ok") {
37
+ return Result.Err(`asset readback returned ${fetched.type} for ${stored.getURL}`);
38
+ }
39
+ if (fetched.data) {
40
+ const reader = fetched.data.getReader();
41
+ while (true) {
42
+ const r = await reader.read();
43
+ if (r.done)
44
+ break;
45
+ }
46
+ }
47
+ const rAudit = await exception2Result(() => vctx.sql.db
48
+ .select({ uploadId: uploadsTable.uploadId })
49
+ .from(uploadsTable)
50
+ .where(eq(uploadsTable.uploadId, uploadId))
51
+ .limit(1)
52
+ .then((rows) => rows[0]));
53
+ if (rAudit.isErr() || !rAudit.Ok()) {
54
+ return Result.Err(`audit readback failed for uploadId ${uploadId}`);
55
+ }
56
+ return Result.Ok({
57
+ uploadId,
58
+ cid: stored.cid,
59
+ assetURI: stored.getURL,
60
+ size: stored.size,
61
+ mimeType,
62
+ });
63
+ }
64
+ //# sourceMappingURL=store-and-audit-asset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store-and-audit-asset.js","sourceRoot":"","sources":["../../jsr/public/store-and-audit-asset.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import { type } from "arktype";
4
4
  const defaultHttpHeaders = Lazy(() => HttpHeader.from({
5
5
  "Access-Control-Allow-Origin": "*",
6
6
  "Access-Control-Allow-Methods": "GET,POST,OPTIONS,PUT,DELETE",
7
- "Access-Control-Allow-Headers": "Origin, Content-Type, Accept",
7
+ "Access-Control-Allow-Headers": "Origin, Content-Type, Accept, X-Asset-Grant",
8
8
  "Access-Control-Max-Age": "86400",
9
9
  }));
10
10
  export function DefaultHttpHeaders(...h) {
@@ -60,14 +60,16 @@ export class HTTPSendProvider {
60
60
  return Result.Ok(json);
61
61
  }
62
62
  if (!(body instanceof type.errors)) {
63
- this.response = new Response(body.body, {
64
- status: body.status,
65
- headers: DefaultHttpHeaders({
66
- "Content-Type": body.headers?.["Content-Type"] ?? "application/octet-stream",
67
- "Server-Timing": `total;dur=${(ctx.stats.request.doneTime.getTime() - ctx.stats.request.startTime.getTime()).toFixed(2)}`,
68
- ...body.headers,
69
- }),
70
- });
63
+ const headers = new Headers(DefaultHttpHeaders({
64
+ "Content-Type": body.headers?.["Content-Type"] ?? "application/octet-stream",
65
+ "Server-Timing": `total;dur=${(ctx.stats.request.doneTime.getTime() - ctx.stats.request.startTime.getTime()).toFixed(2)}`,
66
+ }));
67
+ if (body.headers) {
68
+ for (const [k, v] of Object.entries(body.headers)) {
69
+ headers.set(k, v);
70
+ }
71
+ }
72
+ this.response = new Response(body.body, { status: body.status, headers });
71
73
  ctx.send.send(ctx, this.response);
72
74
  return Result.Ok(body);
73
75
  }
@@ -1 +1 @@
1
- {"version":3,"file":"svc-http-send-provider.js","sourceRoot":"","sources":["../jsr/svc-http-send-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"svc-http-send-provider.js","sourceRoot":"","sources":["../jsr/svc-http-send-provider.ts"],"names":[],"mappings":"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"}
package/types.d.ts CHANGED
@@ -7,6 +7,8 @@ import { LLMRequest } from "@vibes.diy/call-ai-v2";
7
7
  import { LLMHeaders, MsgBase, VibesAssetStorage, VibesFPApiParameters } from "@vibes.diy/api-types";
8
8
  import { VibesApiTables, VibesSqlite } from "@vibes.diy/api-sql";
9
9
  import { type } from "arktype";
10
+ import type { AssetGrantSigner } from "./asset-grant.js";
11
+ import type { AssetSessionSigner } from "./asset-session.js";
10
12
  export type { VibesApiTables };
11
13
  export interface CfCacheIf {
12
14
  delete(request: RequestInfo | URL, options?: CacheQueryOptions): Promise<boolean>;
@@ -41,6 +43,8 @@ export interface VibesApiSQLCtx {
41
43
  }>>;
42
44
  fetchAsset(url: string): Promise<Result<ReadableStream<Uint8Array>>>;
43
45
  storage: VibesAssetStorage;
46
+ assetGrantSigner: AssetGrantSigner;
47
+ assetSessionSigner: AssetSessionSigner;
44
48
  llmRequest(prompt: LLMRequest & {
45
49
  headers: LLMHeaders;
46
50
  }, opts?: {
package/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../jsr/types.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AA6C/B,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;IAClC,IAAI,EAAE,+BAA+B;IACrC,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,QAAQ;IAClB,MAAM,EAAE,QAAQ;CACjB,CAAC,CAAC;AAGH,MAAM,UAAU,iBAAiB,CAAC,GAAY;IAC5C,OAAO,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;IACjC,IAAI,EAAE,8BAA8B;IACpC,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,QAAQ;IACjB,MAAM,EAAE,QAAQ;CACjB,CAAC,CAAC;AAGH,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,OAAO,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;IACrC,IAAI,EAAE,mCAAmC;IACzC,QAAQ,EAAE,eAAe;IACzB,OAAO,EAAE,cAAc;CACxB,CAAC,CAAC;AAGH,MAAM,UAAU,oBAAoB,CAAC,GAAY;IAC/C,OAAO,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3D,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../jsr/types.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAiD/B,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;IAClC,IAAI,EAAE,+BAA+B;IACrC,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,QAAQ;IAClB,MAAM,EAAE,QAAQ;CACjB,CAAC,CAAC;AAGH,MAAM,UAAU,iBAAiB,CAAC,GAAY;IAC5C,OAAO,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;IACjC,IAAI,EAAE,8BAA8B;IACpC,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,QAAQ;IACjB,MAAM,EAAE,QAAQ;CACjB,CAAC,CAAC;AAGH,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,OAAO,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;IACrC,IAAI,EAAE,mCAAmC;IACzC,QAAQ,EAAE,eAAe;IACzB,OAAO,EAAE,cAAc;CACxB,CAAC,CAAC;AAGH,MAAM,UAAU,oBAAoB,CAAC,GAAY;IAC/C,OAAO,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3D,CAAC"}
@@ -4,6 +4,7 @@ import { ensureAppSlugItemEvento } from "./public/ensure-app-slug-item.js";
4
4
  import { openChat } from "./public/open-chat.js";
5
5
  import { promptChatSection } from "./public/prompt-chat-section.js";
6
6
  import { listUserSlugAppSlugEvento } from "./public/list-user-slug-app-slug.js";
7
+ import { listRecentVibesEvento } from "./public/list-recent-vibes.js";
7
8
  import { getChatDetailsEvento } from "./public/get-chat-details.js";
8
9
  import { getAppByFsIdEvento } from "./public/get-app-by-fsid.js";
9
10
  import { ensureUserSettingsEvento } from "./public/ensure-user-settings.js";
@@ -19,9 +20,10 @@ import { listRequestGrantsEvento, requestAccessEvento, approveRequestEvento, req
19
20
  import { listModelsEvento } from "./public/list-models.js";
20
21
  import { putDocEvento, getDocEvento, queryDocsEvento, deleteDocEvento, subscribeDocsEvento, listDbNamesEvento, } from "./public/app-documents.js";
21
22
  import { listMembersEvento } from "./public/list-members.js";
23
+ import { assetUploadGrantEvento } from "./public/asset-upload-grant.js";
22
24
  export const vibesMsgEvento = Lazy(() => {
23
25
  const evento = new Evento(new W3CWebSocketEventEventoEnDecoder());
24
- evento.push(ensureAppSlugItemEvento, getFPCloudTokenEvento, listUserSlugAppSlugEvento, getChatDetailsEvento, getAppByFsIdEvento, openChat, promptChatSection, createInviteEvento, revokeInviteEvento, redeemInviteEvento, hasAccessInviteEvento, inviteSetRoleEvento, listInviteGrantsEvento, requestAccessEvento, hasAccessRequestEvento, approveRequestEvento, requestSetRoleEvento, revokeRequestEvento, listRequestGrantsEvento, getCertFromCsrEvento, listModelsEvento, ensureAppSettingsEvento, setModeFsIdEvento, forkAppEvento, ensureUserSettingsEvento, listApplicationChats, listUserSlugBindingsEvento, createUserSlugBindingEvento, deleteUserSlugBindingEvento, putDocEvento, getDocEvento, queryDocsEvento, deleteDocEvento, subscribeDocsEvento, listDbNamesEvento, listMembersEvento, {
26
+ evento.push(ensureAppSlugItemEvento, getFPCloudTokenEvento, listUserSlugAppSlugEvento, listRecentVibesEvento, getChatDetailsEvento, getAppByFsIdEvento, openChat, promptChatSection, createInviteEvento, revokeInviteEvento, redeemInviteEvento, hasAccessInviteEvento, inviteSetRoleEvento, listInviteGrantsEvento, requestAccessEvento, hasAccessRequestEvento, approveRequestEvento, requestSetRoleEvento, revokeRequestEvento, listRequestGrantsEvento, getCertFromCsrEvento, listModelsEvento, ensureAppSettingsEvento, setModeFsIdEvento, forkAppEvento, ensureUserSettingsEvento, listApplicationChats, listUserSlugBindingsEvento, createUserSlugBindingEvento, deleteUserSlugBindingEvento, putDocEvento, getDocEvento, queryDocsEvento, deleteDocEvento, subscribeDocsEvento, listDbNamesEvento, listMembersEvento, assetUploadGrantEvento, {
25
27
  type: EventoType.WildCard,
26
28
  hash: "not-msg-implemented-handler",
27
29
  handle: async (ctx) => {
@@ -1 +1 @@
1
- {"version":3,"file":"vibes-msg-evento.js","sourceRoot":"","sources":["../jsr/vibes-msg-evento.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vibes-msg-evento.js","sourceRoot":"","sources":["../jsr/vibes-msg-evento.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,12 @@ import { Lazy, Evento, EventoResult, EventoType, Result, Option, } from "@advise
2
2
  import { ReqResEventoEnDecoder } from "@vibes.diy/api-pkg";
3
3
  import { servEntryPoint } from "./public/serv-entry-point.js";
4
4
  import { cidAsset } from "./public/cid-asset.js";
5
+ import { filesAsset } from "./public/files-asset.js";
6
+ import { putAsset } from "./public/put-asset.js";
7
+ import { authSession, authLogout, authBridgePreflight } from "./public/asset-session.js";
5
8
  export const vibesReqResEvento = Lazy(() => {
6
9
  const evento = new Evento(new ReqResEventoEnDecoder());
7
- evento.push({
10
+ evento.push(authBridgePreflight, {
8
11
  hash: "cors-preflight",
9
12
  validate: (ctx) => {
10
13
  const { request: req } = ctx;
@@ -21,7 +24,7 @@ export const vibesReqResEvento = Lazy(() => {
21
24
  });
22
25
  return Result.Ok(EventoResult.Stop);
23
26
  },
24
- }, cidAsset, servEntryPoint, {
27
+ }, cidAsset, filesAsset, putAsset, authSession, authLogout, servEntryPoint, {
25
28
  type: EventoType.WildCard,
26
29
  hash: "not-implemented-handler",
27
30
  handle: async (ctx) => {
@@ -1 +1 @@
1
- {"version":3,"file":"vibes-req-res-evento.js","sourceRoot":"","sources":["../jsr/vibes-req-res-evento.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,MAAM,EACN,YAAY,EACZ,UAAU,EAGV,MAAM,EACN,MAAM,GAEP,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,EAAE;IACzC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC;IACvD,MAAM,CAAC,IAAI,CACT;QACE,IAAI,EAAE,gBAAgB;QACtB,QAAQ,EAAE,CAAC,GAAkD,EAAE,EAAE;YAC/D,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;YAC7B,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACpC,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC;YACjF,CAAC;YACD,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACnD,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,GAA+C,EAAqC,EAAE;YACnG,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBACvB,IAAI,EAAE,oBAAoB;gBAC1B,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB,EAAE;aACjB,CAAC,CAAC;YAClC,OAAO,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;KACF,EACD,QAAQ,EACR,cAAc,EACd;QACE,IAAI,EAAE,UAAU,CAAC,QAAQ;QACzB,IAAI,EAAE,yBAAyB;QAC/B,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YACpB,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBACvB,IAAI,EAAE,oBAAoB;gBAC1B,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE;oBACJ,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,oCAAoC;oBAC7C,GAAG,EAAE,GAAG,CAAC,SAAS;iBACnB;aAC6B,CAAC,CAAC;YAClC,OAAO,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;KACF,EACD;QACE,IAAI,EAAE,UAAU,CAAC,KAAK;QACtB,IAAI,EAAE,eAAe;QACrB,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YACpB,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBACvB,IAAI,EAAE,oBAAoB;gBAC1B,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE;oBACJ,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,uBAAuB;oBAChC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE;iBAC7B;aAC6B,CAAC,CAAC;YAClC,OAAO,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;KACF,CACF,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"vibes-req-res-evento.js","sourceRoot":"","sources":["../jsr/vibes-req-res-evento.ts"],"names":[],"mappings":"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"}