@devultur/convex 1.4.2 → 1.5.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.
Files changed (65) hide show
  1. package/README.md +100 -5
  2. package/dist/{chunk-JZYKPLI4.js → chunk-RDVBE3G3.js} +20 -1
  3. package/dist/component/_generated/api.d.ts +0 -1
  4. package/dist/component/_generated/api.js.map +1 -1
  5. package/dist/component/_generated/component.d.ts +0 -1
  6. package/dist/component/_generated/component.js.map +1 -1
  7. package/dist/component/_generated/dataModel.d.ts +0 -1
  8. package/dist/component/_generated/dataModel.js.map +1 -1
  9. package/dist/component/_generated/server.d.ts +0 -1
  10. package/dist/component/_generated/server.js.map +1 -1
  11. package/dist/component/convex.config.d.ts +0 -1
  12. package/dist/component/convex.config.js.map +1 -1
  13. package/dist/component/http.d.ts +0 -1
  14. package/dist/component/http.js.map +1 -1
  15. package/dist/component/library.d.ts +0 -1
  16. package/dist/component/library.js.map +1 -1
  17. package/dist/component/lock.d.ts +0 -1
  18. package/dist/component/lock.js.map +1 -1
  19. package/dist/component/lockValidators.d.ts +0 -1
  20. package/dist/component/lockValidators.js.map +1 -1
  21. package/dist/component/mediaClient.d.ts +0 -1
  22. package/dist/component/mediaClient.js.map +1 -1
  23. package/dist/component/mediaMeta.d.ts +0 -1
  24. package/dist/component/mediaMeta.js.map +1 -1
  25. package/dist/component/metadata.d.ts +0 -1
  26. package/dist/component/metadata.js.map +1 -1
  27. package/dist/component/public.d.ts +0 -1
  28. package/dist/component/public.js.map +1 -1
  29. package/dist/component/schema.d.ts +0 -1
  30. package/dist/component/schema.js.map +1 -1
  31. package/dist/component/uploadKeys.d.ts +0 -1
  32. package/dist/component/uploadKeys.js.map +1 -1
  33. package/dist/component/uploads.d.ts +0 -1
  34. package/dist/component/uploads.js.map +1 -1
  35. package/dist/component/workerErrors.d.ts +0 -1
  36. package/dist/component/workerErrors.js.map +1 -1
  37. package/dist/index.d.ts +33 -12
  38. package/dist/index.js +22 -4
  39. package/dist/locales/es-formal.d.ts +7 -3
  40. package/dist/locales/es-formal.js +6 -3
  41. package/dist/locales/es.d.ts +7 -3
  42. package/dist/locales/es.js +5 -3
  43. package/dist/{preview-labels-B-2mra1h.d.ts → preview-labels-C2nUUY_f.d.ts} +1 -1
  44. package/dist/react.d.ts +133 -92
  45. package/dist/react.js +310 -235
  46. package/dist/types-C0ruHUcu.d.ts +196 -0
  47. package/package.json +4 -3
  48. package/dist/component/_generated/api.d.ts.map +0 -1
  49. package/dist/component/_generated/component.d.ts.map +0 -1
  50. package/dist/component/_generated/dataModel.d.ts.map +0 -1
  51. package/dist/component/_generated/server.d.ts.map +0 -1
  52. package/dist/component/convex.config.d.ts.map +0 -1
  53. package/dist/component/http.d.ts.map +0 -1
  54. package/dist/component/library.d.ts.map +0 -1
  55. package/dist/component/lock.d.ts.map +0 -1
  56. package/dist/component/lockValidators.d.ts.map +0 -1
  57. package/dist/component/mediaClient.d.ts.map +0 -1
  58. package/dist/component/mediaMeta.d.ts.map +0 -1
  59. package/dist/component/metadata.d.ts.map +0 -1
  60. package/dist/component/public.d.ts.map +0 -1
  61. package/dist/component/schema.d.ts.map +0 -1
  62. package/dist/component/uploadKeys.d.ts.map +0 -1
  63. package/dist/component/uploads.d.ts.map +0 -1
  64. package/dist/component/workerErrors.d.ts.map +0 -1
  65. package/dist/types-LrusGVDf.d.ts +0 -62
@@ -1 +1 @@
1
- {"version":3,"file":"public.js","sourceRoot":"","sources":["../../src/component/public.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"public.js","sourceRoot":"","sources":["../../src/component/public.ts"],"names":[],"mappings":"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","sourcesContent":["import type { WorkerClient } from \"@devultur/core\";\nimport { DEFAULT_TOKEN_EXPIRY_SECONDS, extractId, MediaEventName, MediaStatus } from \"@devultur/core\";\nimport { paginationOptsValidator } from \"convex/server\";\nimport { v } from \"convex/values\";\nimport { api, internal } from \"./_generated/api\";\nimport type { MutationCtx, QueryCtx } from \"./_generated/server\";\nimport { internalMutation, mutation, query } from \"./_generated/server\";\nimport { listNewestFirst } from \"./library\";\nimport { objectLockValidator } from \"./lockValidators\";\nimport { getMediaClient } from \"./mediaClient\";\nimport { missingSearchText, searchTextOf } from \"./mediaMeta\";\nimport { transcodeOutputFields } from \"./schema\";\nimport { UPLOAD_CONFIRM_BACKSTOP_MS } from \"./uploads\";\nimport { workerAction } from \"./workerErrors\";\n\n// Webhook path RELATIVE to the component. Convex gives the component a `CONVEX_SITE_URL` that ALREADY\n// includes its mount prefix (e.g. `${site}/devultur`), so `${CONVEX_SITE_URL}/webhook` resolves to the\n// mounted route (`${site}/devultur/webhook`) without duplicating the prefix. Do NOT add `/devultur/` here\n// (that duplicates it).\nconst WEBHOOK_PATH = \"/webhook\";\n// Accept-timeout (fail-fast): the machine emits the \"downloading\" heartbeat seconds after booting.\n// If it's still \"queued\" at 90s, it never started → FAILED capacity/retriable (fast, not an opaque 5 min).\nconst ACCEPT_TIMEOUT_MS = 90 * 1000;\n// Stuck-timeout (long encode): backstop in case the job hangs mid-processing.\nconst STUCK_TIMEOUT_MS = 45 * 60 * 1000;\n\n// Reusable validator for the categorized failure reason (see FailureReason in @devultur/core).\nconst failureReasonValidator = v.union(\n\tv.literal(\"invalid_input\"),\n\tv.literal(\"unsupported_codec\"),\n\tv.literal(\"timeout\"),\n\tv.literal(\"capacity\"),\n\tv.literal(\"internal\"),\n);\n\n// --- Media Actions (call CF Worker) ---\n\nexport const issueViewerToken = workerAction({\n\t// `userId`: the token's subject. Your server sets it (a guard's `userId`, see `defineDevulturFunctions`), never a\n\t// browser: the exposed `issueViewerToken` only takes `sessionSecret`. Omitted → the shared `viewer` subject.\n\targs: { sessionSecret: v.optional(v.string()), userId: v.optional(v.string()) },\n\thandler: async (_ctx, args) => {\n\t\tconst media = getMediaClient();\n\t\tconst { token, expiresIn } = await media.issueToken(args.userId ?? \"viewer\", {\n\t\t\texpiresIn: DEFAULT_TOKEN_EXPIRY_SECONDS,\n\t\t\tsessionSecret: args.sessionSecret,\n\t\t});\n\t\treturn { token, expiresIn };\n\t},\n});\n\nexport const createUploadUrl = workerAction({\n\targs: {\n\t\tfilename: v.string(),\n\t\tcontentType: v.string(),\n\t\tvisibility: v.optional(v.union(v.literal(\"public\"), v.literal(\"private\"))),\n\t\t/** Lock of the new file (retention and/or hold), written with its bytes. */\n\t\tlock: v.optional(objectLockValidator),\n\t\thold: v.optional(v.boolean()),\n\t},\n\thandler: async (ctx, args) => {\n\t\tconst media = getMediaClient();\n\t\t// Returns { url, key, id, kind, visibility } → the client assembles the DevulturMedia after the PUT.\n\t\tconst upload = await media.createUploadUrl(args);\n\t\t// Backstop for a client that never confirms: records the upload later if its bytes were stored (uploads.ts).\n\t\tawait ctx.scheduler.runAfter(UPLOAD_CONFIRM_BACKSTOP_MS, internal.uploads.confirmUploadLater, {\n\t\t\tkey: upload.key,\n\t\t\tfilename: args.filename,\n\t\t});\n\t\treturn upload;\n\t},\n});\n\nexport const deleteMediaAction = workerAction({\n\targs: { key: v.string() },\n\thandler: async (ctx, args) => {\n\t\tconst media = getMediaClient();\n\t\tawait media.delete(args.key);\n\t\t// Only once the Worker deleted it: a refused delete (a lock) keeps the file in the library.\n\t\tawait ctx.runMutation(internal.uploads.forgetUpload, { key: args.key });\n\t},\n});\n\nexport const deleteVideo = workerAction({\n\targs: { videoId: v.string(), visibility: v.optional(v.union(v.literal(\"public\"), v.literal(\"private\"))) },\n\thandler: async (ctx, args) => {\n\t\tconst media = getMediaClient();\n\t\tconst result = await media.deleteVideo(args.videoId, args.visibility);\n\t\t// The worker purges R2; here we clean up the component's records so a successful delete doesn't\n\t\t// leave a ghost `media` row (playlist/thumbnail giving 404s) or orphaned captions behind.\n\t\tawait ctx.runMutation(internal.public.cleanupVideoRecords, { videoId: args.videoId });\n\t\treturn result;\n\t},\n});\n\n// Cascade cleanup of the component's tables when a video is deleted (after the R2 purge in the worker):\n// the `media` row (key = videoId) and its `captions` (by_media index). `progress` (watch history)\n// is left orphaned but harmless — cascading it would require a `by_video` index.\nexport const cleanupVideoRecords = internalMutation({\n\targs: { videoId: v.string() },\n\thandler: async (ctx, args) => {\n\t\tconst record = await ctx.db\n\t\t\t.query(\"media\")\n\t\t\t.withIndex(\"by_key\", (q) => q.eq(\"key\", args.videoId))\n\t\t\t.first();\n\t\tif (record) await ctx.db.delete(record._id);\n\n\t\tconst captions = await ctx.db\n\t\t\t.query(\"captions\")\n\t\t\t.withIndex(\"by_media\", (q) => q.eq(\"mediaKey\", args.videoId))\n\t\t\t.collect();\n\t\tawait Promise.all(captions.map((caption) => ctx.db.delete(caption._id)));\n\t},\n});\n\nexport const processVideo = workerAction({\n\targs: {\n\t\tkey: v.string(),\n\t\tpreset: v.optional(v.string()),\n\t\tlocales: v.optional(v.array(v.string())),\n\t\tcallbackUrl: v.optional(v.string()),\n\t},\n\thandler: async (ctx, args) => {\n\t\tconst videoId = extractId(args.key);\n\t\tconst mediaKey = videoId;\n\n\t\tconst existing = await ctx.runQuery(api.public.getMediaByKey, { key: mediaKey });\n\t\tif (!existing) {\n\t\t\tconst filename = args.key.split(\"/\").pop() ?? args.key;\n\t\t\tawait ctx.runMutation(api.public.createMedia, {\n\t\t\t\tkey: mediaKey,\n\t\t\t\ttype: \"video\" as const,\n\t\t\t\tfilename,\n\t\t\t\tcontentType: \"video/mp4\",\n\t\t\t\tsizeBytes: 0,\n\t\t\t});\n\t\t}\n\n\t\tconst media = getMediaClient();\n\t\t// No preset → the config's default (or the usual HLS ladder if there is none).\n\t\tconst preset = args.preset;\n\t\tconst callbackUrl = args.callbackUrl ?? `${process.env.CONVEX_SITE_URL}${WEBHOOK_PATH}`;\n\n\t\tconst hasCaptionLocales = (args.locales?.length ?? 0) > 0;\n\n\t\t// \"queued\" state BEFORE firing (feedback \"requesting transcode…\").\n\t\t// The transcode.started webhook will move it to \"transcoding\"; this order avoids a race.\n\t\t// `captionsPending` is set here too, before any webhook can land: `transcode.complete` reads it to choose\n\t\t// between \"captioning\" (captions still on their way) and \"ready\".\n\t\tawait ctx.runMutation(api.public.updateMedia, {\n\t\t\tkey: mediaKey,\n\t\t\ttranscodeStatus: MediaStatus.QUEUED,\n\t\t\tcaptionsPending: hasCaptionLocales,\n\t\t});\n\n\t\tlet result: Awaited<ReturnType<WorkerClient[\"transcode\"]>>;\n\t\ttry {\n\t\t\tresult = await media.transcode(args.key, { preset, callbackUrl });\n\t\t} catch (error) {\n\t\t\t// Fail-loud: the worker didn't accept the transcode (token/suspend/error) → don't leave it hanging.\n\t\t\tconst message = error instanceof Error ? error.message : \"Could not start the transcode\";\n\t\t\tawait ctx.runMutation(api.public.updateMedia, {\n\t\t\t\tkey: mediaKey,\n\t\t\t\ttranscodeStatus: MediaStatus.FAILED,\n\t\t\t\ttranscodeError: message,\n\t\t\t\tfailureReason: \"internal\",\n\t\t\t\tretriable: true,\n\t\t\t});\n\t\t\tthrow error;\n\t\t}\n\n\t\t// Captions is best-effort: its failure shouldn't mark the video as failed, nor leave it waiting for\n\t\t// captions that will never arrive.\n\t\tif (args.locales && hasCaptionLocales) {\n\t\t\ttry {\n\t\t\t\tawait media.requestCaptions(args.key, args.locales, { callbackUrl });\n\t\t\t} catch {\n\t\t\t\tawait ctx.runMutation(internal.public.skipCaptions, { key: mediaKey });\n\t\t\t}\n\t\t}\n\n\t\t// Accept-timeout (fast): if the machine never emitted the \"downloading\" heartbeat it's still \"queued\".\n\t\t// Stuck-timeout (long): backstop if the job hangs mid-processing.\n\t\tawait ctx.scheduler.runAfter(ACCEPT_TIMEOUT_MS, internal.public.checkTranscodeAccepted, { key: mediaKey });\n\t\tawait ctx.scheduler.runAfter(STUCK_TIMEOUT_MS, internal.public.checkTranscodeStuck, { key: mediaKey });\n\n\t\treturn result;\n\t},\n});\n\n// The captions request failed: stop waiting for them. A video whose transcode already completed (and is\n// waiting in \"captioning\") becomes ready.\nexport const skipCaptions = internalMutation({\n\targs: { key: v.string() },\n\thandler: async (ctx, args) => {\n\t\tconst record = await ctx.db\n\t\t\t.query(\"media\")\n\t\t\t.withIndex(\"by_key\", (q) => q.eq(\"key\", args.key))\n\t\t\t.first();\n\t\tif (!record) return;\n\n\t\tconst isWaitingForCaptions = record.transcodeStatus === MediaStatus.CAPTIONING;\n\t\tawait ctx.db.patch(record._id, {\n\t\t\t...missingSearchText(record),\n\t\t\tcaptionsPending: false,\n\t\t\t...(isWaitingForCaptions ? { transcodeStatus: MediaStatus.READY } : {}),\n\t\t});\n\t},\n});\n\n// Fail-fast: if the video is still \"queued\" at 90s (the machine never started), mark it FAILED with\n// reason `capacity` and retriable — a transient startup failure, not an invalid input.\nexport const checkTranscodeAccepted = internalMutation({\n\targs: { key: v.string() },\n\thandler: async (ctx, args) => {\n\t\tconst record = await ctx.db\n\t\t\t.query(\"media\")\n\t\t\t.withIndex(\"by_key\", (q) => q.eq(\"key\", args.key))\n\t\t\t.first();\n\t\tif (!record || record.transcodeStatus !== MediaStatus.QUEUED) return;\n\n\t\tawait ctx.db.patch(record._id, {\n\t\t\t...missingSearchText(record),\n\t\t\ttranscodeStatus: MediaStatus.FAILED,\n\t\t\ttranscodeError: \"The transcode didn't start in time. Retry.\",\n\t\t\tfailureReason: \"capacity\",\n\t\t\tretriable: true,\n\t\t\ttranscodeProgress: undefined,\n\t\t});\n\t},\n});\n\n// Long-encode backstop: if the video hasn't reached ready/failed after the max time, it got stuck\n// mid-way → FAILED with reason `timeout` and retriable.\nexport const checkTranscodeStuck = internalMutation({\n\targs: { key: v.string() },\n\thandler: async (ctx, args) => {\n\t\tconst record = await ctx.db\n\t\t\t.query(\"media\")\n\t\t\t.withIndex(\"by_key\", (q) => q.eq(\"key\", args.key))\n\t\t\t.first();\n\t\tif (!record) return;\n\t\tif (record.transcodeStatus === MediaStatus.READY || record.transcodeStatus === MediaStatus.FAILED) return;\n\n\t\tawait ctx.db.patch(record._id, {\n\t\t\t...missingSearchText(record),\n\t\t\ttranscodeStatus: MediaStatus.FAILED,\n\t\t\ttranscodeError: \"The transcode didn't finish in time. Retry.\",\n\t\t\tfailureReason: \"timeout\",\n\t\t\tretriable: true,\n\t\t\ttranscodeProgress: undefined,\n\t\t});\n\t},\n});\n\n// --- Media Mutations (component tables) ---\n\nexport const createMedia = mutation({\n\targs: {\n\t\tkey: v.string(),\n\t\ttype: v.union(v.literal(\"video\"), v.literal(\"image\"), v.literal(\"file\")),\n\t\tfilename: v.string(),\n\t\tcontentType: v.string(),\n\t\tsizeBytes: v.number(),\n\t},\n\thandler: async (ctx, args) => {\n\t\t// One record per key: `processVideo` and a confirmed upload can both get here first.\n\t\tconst existing = await ctx.db\n\t\t\t.query(\"media\")\n\t\t\t.withIndex(\"by_key\", (q) => q.eq(\"key\", args.key))\n\t\t\t.first();\n\t\tif (existing) return existing._id;\n\t\treturn ctx.db.insert(\"media\", {\n\t\t\t...args,\n\t\t\tsearchText: searchTextOf(undefined, args.filename),\n\t\t\tcreatedAt: Date.now(),\n\t\t});\n\t},\n});\n\nexport const updateMedia = mutation({\n\targs: {\n\t\tkey: v.string(),\n\t\ttranscodeStatus: v.optional(\n\t\t\tv.union(\n\t\t\t\tv.literal(\"queued\"),\n\t\t\t\tv.literal(\"transcoding\"),\n\t\t\t\tv.literal(\"captioning\"),\n\t\t\t\tv.literal(\"ready\"),\n\t\t\t\tv.literal(\"failed\"),\n\t\t\t),\n\t\t),\n\t\ttranscodeProgress: v.optional(v.object({ current: v.number(), total: v.number() })),\n\t\ttranscodeError: v.optional(v.string()),\n\t\tfailureReason: v.optional(failureReasonValidator),\n\t\tretriable: v.optional(v.boolean()),\n\t\tplaylistUrl: v.optional(v.string()),\n\t\tthumbnailKey: v.optional(v.string()),\n\t\tcaptionLocales: v.optional(v.array(v.string())),\n\t\tcaptionsPending: v.optional(v.boolean()),\n\t\tduration: v.optional(v.number()),\n\t},\n\thandler: async (ctx, args) => {\n\t\tconst record = await ctx.db\n\t\t\t.query(\"media\")\n\t\t\t.withIndex(\"by_key\", (q) => q.eq(\"key\", args.key))\n\t\t\t.first();\n\t\tif (!record) return;\n\n\t\tconst { key: _mediaKey, ...fields } = args;\n\t\t// Any write to a record from before 1.4.0 also gives it its `searchText`.\n\t\tconst patch: Record<string, unknown> = { ...missingSearchText(record) };\n\t\tfor (const [fieldName, fieldValue] of Object.entries(fields)) {\n\t\t\tif (fieldValue !== undefined) patch[fieldName] = fieldValue;\n\t\t}\n\t\tif (Object.keys(patch).length > 0) {\n\t\t\tawait ctx.db.patch(record._id, patch);\n\t\t}\n\t},\n});\n\n// --- Media Queries ---\n\nexport const getMediaByKey = query({\n\targs: { key: v.string() },\n\thandler: async (ctx, args) => {\n\t\treturn ctx.db\n\t\t\t.query(\"media\")\n\t\t\t.withIndex(\"by_key\", (q) => q.eq(\"key\", args.key))\n\t\t\t.first();\n\t},\n});\n\n// Every record at once: fine for a handful, unbounded for a library. A library pages with `listMediaPage`.\nexport const listMedia = query({\n\targs: { type: v.optional(v.union(v.literal(\"video\"), v.literal(\"image\"), v.literal(\"file\"))) },\n\thandler: async (ctx, args) => {\n\t\tconst mediaQuery = ctx.db.query(\"media\");\n\t\tif (args.type) {\n\t\t\treturn mediaQuery.filter((q) => q.eq(q.field(\"type\"), args.type)).collect();\n\t\t}\n\t\treturn mediaQuery.collect();\n\t},\n});\n\n/** One page of the media library, newest first, optionally of one type (`by_type` index). */\nexport const listMediaPage = query({\n\targs: {\n\t\ttype: v.optional(v.union(v.literal(\"video\"), v.literal(\"image\"), v.literal(\"file\"))),\n\t\tpaginationOpts: paginationOptsValidator,\n\t},\n\thandler: async (ctx, args) => listNewestFirst(ctx, args.type, args.paginationOpts),\n});\n\n// --- Captions ---\n\nexport const upsertCaption = mutation({\n\targs: {\n\t\tmediaKey: v.string(),\n\t\tlocale: v.string(),\n\t\tvttUrl: v.string(),\n\t\tsrtUrl: v.optional(v.string()),\n\t},\n\thandler: async (ctx, args) => {\n\t\tconst existing = await ctx.db\n\t\t\t.query(\"captions\")\n\t\t\t.withIndex(\"by_media_locale\", (q) => q.eq(\"mediaKey\", args.mediaKey).eq(\"locale\", args.locale))\n\t\t\t.first();\n\n\t\tif (existing) {\n\t\t\tawait ctx.db.patch(existing._id, { vttUrl: args.vttUrl, srtUrl: args.srtUrl });\n\t\t\treturn existing._id;\n\t\t}\n\t\treturn ctx.db.insert(\"captions\", { ...args, createdAt: Date.now() });\n\t},\n});\n\nexport const listCaptionsByMedia = query({\n\targs: { mediaKey: v.string() },\n\thandler: async (ctx, args) => {\n\t\treturn ctx.db\n\t\t\t.query(\"captions\")\n\t\t\t.withIndex(\"by_media\", (q) => q.eq(\"mediaKey\", args.mediaKey))\n\t\t\t.collect();\n\t},\n});\n\n// --- Progress ---\n\nfunction findProgress(ctx: QueryCtx | MutationCtx, userId: string, videoId: string) {\n\treturn ctx.db\n\t\t.query(\"progress\")\n\t\t.withIndex(\"by_user_video\", (q) => q.eq(\"userId\", userId).eq(\"videoId\", videoId))\n\t\t.first();\n}\n\nexport const saveProgress = mutation({\n\targs: { userId: v.string(), videoId: v.string(), position: v.number() },\n\thandler: async (ctx, args) => {\n\t\tconst existing = await findProgress(ctx, args.userId, args.videoId);\n\n\t\tif (existing) {\n\t\t\tawait ctx.db.patch(existing._id, { lastPosition: args.position, updatedAt: Date.now() });\n\t\t\treturn existing._id;\n\t\t}\n\t\treturn ctx.db.insert(\"progress\", {\n\t\t\tuserId: args.userId,\n\t\t\tvideoId: args.videoId,\n\t\t\tlastPosition: args.position,\n\t\t\tupdatedAt: Date.now(),\n\t\t});\n\t},\n});\n\nexport const loadProgress = query({\n\targs: { userId: v.string(), videoId: v.string() },\n\thandler: async (ctx, args) => {\n\t\treturn findProgress(ctx, args.userId, args.videoId);\n\t},\n});\n\nexport const markComplete = mutation({\n\targs: { userId: v.string(), videoId: v.string() },\n\thandler: async (ctx, args) => {\n\t\tconst existing = await findProgress(ctx, args.userId, args.videoId);\n\t\tconst now = Date.now();\n\n\t\tif (existing) {\n\t\t\tawait ctx.db.patch(existing._id, { completedAt: now, watchedPercent: 100, updatedAt: now });\n\t\t\treturn existing._id;\n\t\t}\n\t\treturn ctx.db.insert(\"progress\", {\n\t\t\tuserId: args.userId,\n\t\t\tvideoId: args.videoId,\n\t\t\tlastPosition: 0,\n\t\t\tcompletedAt: now,\n\t\t\twatchedPercent: 100,\n\t\t\tupdatedAt: now,\n\t\t});\n\t},\n});\n\nexport const resetProgress = mutation({\n\targs: { userId: v.string(), videoId: v.string() },\n\thandler: async (ctx, args) => {\n\t\tconst existing = await findProgress(ctx, args.userId, args.videoId);\n\t\tif (existing) {\n\t\t\tawait ctx.db.delete(existing._id);\n\t\t}\n\t},\n});\n\nexport const getCourseProgress = query({\n\targs: { userId: v.string(), videoIds: v.array(v.string()) },\n\thandler: async (ctx, args) => {\n\t\treturn Promise.all(args.videoIds.map((videoId) => findProgress(ctx, args.userId, videoId)));\n\t},\n});\n\n// --- Webhook Handler (updates component's media table) ---\n\nexport const handleWebhookEvent = internalMutation({\n\targs: {\n\t\tevent: v.string(),\n\t\tvideoId: v.string(),\n\t\tcurrentSegment: v.optional(v.number()),\n\t\ttotalSegments: v.optional(v.number()),\n\t\tphase: v.optional(v.string()),\n\t\tduration: v.optional(v.number()),\n\t\tplaylistKey: v.optional(v.string()),\n\t\tthumbnailKey: v.optional(v.string()),\n\t\t// Outputs of a config preset / inline spec (MP4, variants, poster). Absent with the `hls-*` aliases.\n\t\t...transcodeOutputFields,\n\t\tlocales: v.optional(v.array(v.string())),\n\t\terror: v.optional(v.string()),\n\t\treason: v.optional(failureReasonValidator),\n\t\tretriable: v.optional(v.boolean()),\n\t},\n\thandler: async (ctx, args) => {\n\t\tlet record = await ctx.db\n\t\t\t.query(\"media\")\n\t\t\t.withIndex(\"by_key\", (q) => q.eq(\"key\", args.videoId))\n\t\t\t.first();\n\t\tif (!record) {\n\t\t\trecord = await ctx.db\n\t\t\t\t.query(\"media\")\n\t\t\t\t.withIndex(\"by_key\", (q) => q.eq(\"key\", `videos/${args.videoId}`))\n\t\t\t\t.first();\n\t\t}\n\t\tif (!record) return;\n\n\t\tconst searchTextFill = missingSearchText(record);\n\t\tif (searchTextFill.searchText !== undefined) await ctx.db.patch(record._id, searchTextFill);\n\n\t\tswitch (args.event) {\n\t\t\tcase MediaEventName.TRANSCODE_STARTED:\n\t\t\t\tawait ctx.db.patch(record._id, {\n\t\t\t\t\ttranscodeStatus: MediaStatus.TRANSCODING,\n\t\t\t\t\ttranscodeProgress: { current: 0, total: args.totalSegments ?? 0 },\n\t\t\t\t\ttranscodeError: undefined,\n\t\t\t\t\tduration: args.duration,\n\t\t\t\t});\n\t\t\t\tbreak;\n\n\t\t\tcase MediaEventName.TRANSCODE_PROGRESS:\n\t\t\t\t// The \"downloading\" heartbeat is the first progress → moves out of \"queued\" as soon as the machine is alive.\n\t\t\t\tawait ctx.db.patch(record._id, {\n\t\t\t\t\ttranscodeStatus: MediaStatus.TRANSCODING,\n\t\t\t\t\ttranscodeProgress: {\n\t\t\t\t\t\tcurrent: args.currentSegment ?? 0,\n\t\t\t\t\t\ttotal: args.totalSegments ?? 0,\n\t\t\t\t\t\tphase: (args.phase as \"downloading\" | \"encoding\" | \"uploading\" | \"captioning\") ?? \"uploading\",\n\t\t\t\t\t},\n\t\t\t\t\ttranscodeError: undefined,\n\t\t\t\t});\n\t\t\t\tbreak;\n\n\t\t\tcase MediaEventName.TRANSCODE_COMPLETE: {\n\t\t\t\t// Wait in \"captioning\" only for captions that were requested and haven't arrived yet; a video\n\t\t\t\t// transcoded without captions is ready right away.\n\t\t\t\tawait ctx.db.patch(record._id, {\n\t\t\t\t\ttranscodeStatus: record.captionsPending ? MediaStatus.CAPTIONING : MediaStatus.READY,\n\t\t\t\t\ttranscodeProgress: undefined,\n\t\t\t\t\tduration: args.duration,\n\t\t\t\t\tplaylistUrl: args.playlistKey,\n\t\t\t\t\tthumbnailKey: args.thumbnailKey,\n\t\t\t\t\t...(args.renditions ? { renditions: args.renditions } : {}),\n\t\t\t\t\t...(args.posterUrls ? { posterUrls: args.posterUrls } : {}),\n\t\t\t\t\t...(args.hasAudio !== undefined ? { hasAudio: args.hasAudio } : {}),\n\t\t\t\t\t...(args.storyboardKey ? { storyboardKey: args.storyboardKey } : {}),\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase MediaEventName.CAPTIONS_COMPLETE: {\n\t\t\t\t// An MP4-only preset has no playlist: its renditions also count as \"transcode ready\".\n\t\t\t\tconst hasPlaylist = !!record.playlistUrl || (record.renditions?.length ?? 0) > 0;\n\t\t\t\tawait ctx.db.patch(record._id, {\n\t\t\t\t\ttranscodeStatus: hasPlaylist ? MediaStatus.READY : MediaStatus.TRANSCODING,\n\t\t\t\t\tcaptionLocales: args.locales,\n\t\t\t\t\tcaptionsPending: false,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase MediaEventName.TRANSCODE_FAILED:\n\t\t\tcase MediaEventName.CAPTIONS_FAILED:\n\t\t\t\tawait ctx.db.patch(record._id, {\n\t\t\t\t\ttranscodeStatus: MediaStatus.FAILED,\n\t\t\t\t\ttranscodeError: args.error,\n\t\t\t\t\tfailureReason: args.reason ?? \"internal\",\n\t\t\t\t\tretriable: args.retriable ?? true,\n\t\t\t\t\ttranscodeProgress: undefined,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t}\n\t},\n});\n"]}
@@ -192,4 +192,3 @@ declare const _default: import("convex/server").SchemaDefinition<{
192
192
  }, {}, {}>;
193
193
  }, true>;
194
194
  export default _default;
195
- //# sourceMappingURL=schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/component/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/component/schema.ts"],"names":[],"mappings":"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","sourcesContent":["import { defineSchema, defineTable } from \"convex/server\";\nimport { v } from \"convex/values\";\n\n// Outputs of a preset transcode (carried by `transcode.complete`): each MP4/ladder with its stable URL, the\n// poster (JPG + AVIF per transform), and whether the video ended up with audio.\nexport const transcodeOutputFields = {\n\trenditions: v.optional(\n\t\tv.array(\n\t\t\tv.object({\n\t\t\t\tvariant: v.string(),\n\t\t\t\tkind: v.union(v.literal(\"hls\"), v.literal(\"mp4\")),\n\t\t\t\trung: v.string(),\n\t\t\t\tkey: v.string(),\n\t\t\t\twidth: v.optional(v.number()),\n\t\t\t\theight: v.optional(v.number()),\n\t\t\t\turl: v.string(),\n\t\t\t}),\n\t\t),\n\t),\n\tposterUrls: v.optional(v.object({ jpg: v.optional(v.string()), avif: v.optional(v.string()) })),\n\thasAudio: v.optional(v.boolean()),\n\t// Key of the storyboard VTT (scrub-bar previews). URL: `buildStoryboardUrl` / `buildMediaUrl` from core.\n\tstoryboardKey: v.optional(v.string()),\n};\n\nexport default defineSchema({\n\tmedia: defineTable({\n\t\tkey: v.string(),\n\t\ttype: v.union(v.literal(\"video\"), v.literal(\"image\"), v.literal(\"file\")),\n\t\tfilename: v.string(),\n\t\tcontentType: v.string(),\n\t\tsizeBytes: v.number(),\n\t\t// Set by a confirmed upload (see uploads.ts). Unset on records from before 1.1.0 and on videos recorded only by\n\t\t// `processVideo`. The record's `key` is the media id for every kind; `objectKey` is the stored object's key.\n\t\tvisibility: v.optional(v.union(v.literal(\"public\"), v.literal(\"private\"))),\n\t\tobjectKey: v.optional(v.string()),\n\t\t// An image's intrinsic size: read by the Worker from the bytes when it can, else the uploading client's hint.\n\t\twidth: v.optional(v.number()),\n\t\theight: v.optional(v.number()),\n\t\t// A PDF's page count, as the uploading client reported it (a hint, see `confirmUpload`).\n\t\tpageCount: v.optional(v.number()),\n\t\t// Set by the app (`updateMediaMeta`).\n\t\ttitle: v.optional(v.string()),\n\t\talt: v.optional(v.string()),\n\t\ttags: v.optional(v.array(v.string())),\n\t\t// `title + \" \" + filename`, lowercased, kept in step on every write. Unset on records from before 1.4.0.\n\t\tsearchText: v.optional(v.string()),\n\t\ttranscodeStatus: v.optional(\n\t\t\tv.union(\n\t\t\t\tv.literal(\"queued\"),\n\t\t\t\tv.literal(\"transcoding\"),\n\t\t\t\tv.literal(\"captioning\"),\n\t\t\t\tv.literal(\"ready\"),\n\t\t\t\tv.literal(\"failed\"),\n\t\t\t),\n\t\t),\n\t\ttranscodeProgress: v.optional(\n\t\t\tv.object({\n\t\t\t\tcurrent: v.number(),\n\t\t\t\ttotal: v.number(),\n\t\t\t\tphase: v.optional(\n\t\t\t\t\tv.union(v.literal(\"downloading\"), v.literal(\"encoding\"), v.literal(\"uploading\"), v.literal(\"captioning\")),\n\t\t\t\t),\n\t\t\t}),\n\t\t),\n\t\ttranscodeError: v.optional(v.string()),\n\t\t// Categorized failure + whether it's retriable (webhook / accept-timeout). See FailureReason in core.\n\t\tfailureReason: v.optional(\n\t\t\tv.union(\n\t\t\t\tv.literal(\"invalid_input\"),\n\t\t\t\tv.literal(\"unsupported_codec\"),\n\t\t\t\tv.literal(\"timeout\"),\n\t\t\t\tv.literal(\"capacity\"),\n\t\t\t\tv.literal(\"internal\"),\n\t\t\t),\n\t\t),\n\t\tretriable: v.optional(v.boolean()),\n\t\tplaylistUrl: v.optional(v.string()),\n\t\tthumbnailKey: v.optional(v.string()),\n\t\t// Outputs of a preset transcode: each MP4/ladder with its stable URL, poster, and whether it has audio.\n\t\t...transcodeOutputFields,\n\t\tcaptionLocales: v.optional(v.array(v.string())),\n\t\t// True while requested captions haven't arrived: `transcode.complete` then waits in \"captioning\" instead\n\t\t// of going straight to \"ready\". Unset (records from before this field) means no captions were requested.\n\t\tcaptionsPending: v.optional(v.boolean()),\n\t\t// A video's duration in seconds, from the transcode's webhook.\n\t\tduration: v.optional(v.number()),\n\t\tcreatedAt: v.number(),\n\t})\n\t\t.index(\"by_key\", [\"key\"])\n\t\t// The media library by kind (`listMediaPage`), newest first.\n\t\t.index(\"by_type\", [\"type\"])\n\t\t// Full-text search over the title and filename, optionally of one kind.\n\t\t.searchIndex(\"search_text\", { searchField: \"searchText\", filterFields: [\"type\"] }),\n\n\tcaptions: defineTable({\n\t\tmediaKey: v.string(),\n\t\tlocale: v.string(),\n\t\tvttUrl: v.string(),\n\t\tsrtUrl: v.optional(v.string()),\n\t\tcreatedAt: v.number(),\n\t})\n\t\t.index(\"by_media\", [\"mediaKey\"])\n\t\t.index(\"by_media_locale\", [\"mediaKey\", \"locale\"]),\n\n\tprogress: defineTable({\n\t\tuserId: v.string(),\n\t\tvideoId: v.string(),\n\t\tlastPosition: v.number(),\n\t\tcompletedAt: v.optional(v.number()),\n\t\twatchedPercent: v.optional(v.number()),\n\t\tupdatedAt: v.number(),\n\t}).index(\"by_user_video\", [\"userId\", \"videoId\"]),\n});\n"]}
@@ -11,4 +11,3 @@ export interface UploadKey {
11
11
  * `null` for any other key (derivatives, assets, exports): those are never library items.
12
12
  */
13
13
  export declare function parseUploadKey(key: string): UploadKey | null;
14
- //# sourceMappingURL=uploadKeys.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"uploadKeys.js","sourceRoot":"","sources":["../../src/component/uploadKeys.ts"],"names":[],"mappings":"AAGA,MAAM,KAAK,GAA4B,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAUlE;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACzC,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC;IACxC,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACrE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAoB,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IAE9D,MAAM,YAAY,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,IAAI,QAAQ,CAAC,MAAM,KAAK,YAAY;QAAE,OAAO,IAAI,CAAC;IAClD,IAAI,IAAI,KAAK,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAE3D,MAAM,UAAU,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAC7B,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,IAAoB,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC;AACnE,CAAC"}
1
+ {"version":3,"file":"uploadKeys.js","sourceRoot":"","sources":["../../src/component/uploadKeys.ts"],"names":[],"mappings":"AAGA,MAAM,KAAK,GAA4B,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAUlE;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACzC,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC;IACxC,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACrE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAoB,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IAE9D,MAAM,YAAY,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,IAAI,QAAQ,CAAC,MAAM,KAAK,YAAY;QAAE,OAAO,IAAI,CAAC;IAClD,IAAI,IAAI,KAAK,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAE3D,MAAM,UAAU,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAC7B,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,IAAoB,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC;AACnE,CAAC","sourcesContent":["// Keys of uploaded objects, as the Worker lays them out. Dependency-free so any module can parse them.\nimport type { DevulturKind, Visibility } from \"@devultur/core\";\n\nconst KINDS: readonly DevulturKind[] = [\"video\", \"image\", \"file\"];\n\nexport interface UploadKey {\n\tvisibility: Visibility;\n\tkind: DevulturKind;\n\tid: string;\n\t/** The (sanitized) filename in the key. */\n\tstoredName: string;\n}\n\n/**\n * The parts of an upload key: `{visibility}/{image|file}/{id}/{name}` or `{visibility}/video/{id}/raw/{name}`.\n * `null` for any other key (derivatives, assets, exports): those are never library items.\n */\nexport function parseUploadKey(key: string): UploadKey | null {\n\tconst segments = key.split(\"/\");\n\tconst [visibility, kind, id] = segments;\n\tif (visibility !== \"public\" && visibility !== \"private\") return null;\n\tif (!KINDS.includes(kind as DevulturKind) || !id) return null;\n\n\tconst nameSegments = kind === \"video\" ? 5 : 4;\n\tif (segments.length !== nameSegments) return null;\n\tif (kind === \"video\" && segments[3] !== \"raw\") return null;\n\n\tconst storedName = segments.at(-1);\n\tif (!storedName) return null;\n\treturn { visibility, kind: kind as DevulturKind, id, storedName };\n}\n"]}
@@ -129,4 +129,3 @@ export declare const recordUpload: import("convex/server").RegisteredMutation<"i
129
129
  export declare const forgetUpload: import("convex/server").RegisteredMutation<"internal", {
130
130
  key: string;
131
131
  }, Promise<void>>;
132
- //# sourceMappingURL=uploads.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"uploads.js","sourceRoot":"","sources":["../../src/component/uploads.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAoB,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAkB,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,uHAAuH;AACvH,0CAA0C;AAC1C,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAE9D,kGAAkG;AAClG,SAAS,WAAW,CAAC,SAAoB,EAAE,QAA4B;IACtE,IAAI,QAAQ,IAAI,gBAAgB,CAAC,QAAQ,CAAC,KAAK,SAAS,CAAC,UAAU;QAAE,OAAO,QAAQ,CAAC;IACrF,OAAO,SAAS,CAAC,UAAU,CAAC;AAC7B,CAAC;AAED,iHAAiH;AACjH,wHAAwH;AACxH,MAAM,WAAW,GAAG;IACnB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,kGAAkG;IAClG,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAChC,uDAAuD;IACvD,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC7B,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC9B,4FAA4F;IAC5F,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CACjC,CAAC;AAOF,sGAAsG;AACtG,SAAS,YAAY,CAAC,IAAc,EAAE,KAAkB;IACvD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IACjF,OAAO;QACN,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/D,CAAC;AACH,CAAC;AAED,uFAAuF;AACvF,qGAAqG;AACrG,KAAK,UAAU,OAAO,CAAC,GAAc,EAAE,IAAiB;IACvD,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,CAAC,SAAS,EAAE,CAAC;QAChB,MAAM,IAAI,WAAW,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,sBAAsB,IAAI,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/G,CAAC;IACD,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAErC,MAAM,IAAI,GAAoB,MAAM,cAAc,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1E,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,KAAK,iBAAiB,CAAC;IACrD,OAAO,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE;QACrD,GAAG,EAAE,SAAS,CAAC,EAAE;QACjB,SAAS,EAAE,IAAI,CAAC,GAAG;QACnB,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,UAAU,EAAE,SAAS,CAAC,UAAU;QAChC,QAAQ,EAAE,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC;QAC/C,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,SAAS,EAAE,IAAI,CAAC,IAAI;QACpB,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC;QAC5B,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjF,CAAC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,YAAY,CAAC;IACzC,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAgC,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC;CAC9E,CAAC,CAAC;AAEH,oHAAoH;AACpH,MAAM,CAAC,MAAM,kBAAkB,GAAG,cAAc,CAAC;IAChD,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC5B,MAAM,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC1B,CAAC;CACD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,gBAAgB,CAAC;IAC5C,IAAI,EAAE;QACL,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;QACf,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACxE,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC9D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;QACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;QACvB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC7B,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC9B,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KACjC;IACD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC5B,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,EAAE;aAC3B,KAAK,CAAC,OAAO,CAAC;aACd,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;aACjD,KAAK,EAAE,CAAC;QACV,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,MAAM,UAAU,GAAG,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC1D,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACxF,OAAO,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC;QAED,+GAA+G;QAC/G,8BAA8B;QAC9B,MAAM,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACvG,OAAO,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;CACD,CAAC,CAAC;AAEH,uHAAuH;AACvH,MAAM,CAAC,MAAM,YAAY,GAAG,gBAAgB,CAAC;IAC5C,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE;IACzB,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC5B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO;QACtC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,EAAE;aACzB,KAAK,CAAC,OAAO,CAAC;aACd,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;aAC5D,KAAK,EAAE,CAAC;QACV,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO;YAAE,OAAO;QAC/C,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC,GAAG;YAAE,OAAO;QAC9D,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;CACD,CAAC,CAAC"}
1
+ {"version":3,"file":"uploads.js","sourceRoot":"","sources":["../../src/component/uploads.ts"],"names":[],"mappings":"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","sourcesContent":["// Upload records: every upload (video, image, file) gets a `media` record once its bytes are stored, so `listMedia` is\n// the app's media library. A record is only written after a HEAD on the Worker finds the object: an abandoned PUT never\n// shows up. The client confirms right after its PUT (`confirmUpload`); `createUploadUrl` also schedules the same check\n// for later (`confirmUploadLater`), so an upload whose client never confirmed is still recorded.\nimport type { FileHead } from \"@devultur/core\";\nimport { extractId, sanitizeFilename } from \"@devultur/core\";\nimport { ConvexError, v } from \"convex/values\";\nimport { internal } from \"./_generated/api\";\nimport type { Doc } from \"./_generated/dataModel\";\nimport type { ActionCtx } from \"./_generated/server\";\nimport { internalAction, internalMutation } from \"./_generated/server\";\nimport { getMediaClient } from \"./mediaClient\";\nimport { searchTextOf, type UploadHints, validUploadHints } from \"./mediaMeta\";\nimport { parseUploadKey, type UploadKey } from \"./uploadKeys\";\nimport { workerAction } from \"./workerErrors\";\n\n// Past the Worker's longest upload window (a multipart upload can run for 24 hours), so the scheduled check never runs\n// while the bytes are still on their way.\nexport const UPLOAD_CONFIRM_BACKSTOP_MS = 25 * 60 * 60 * 1000;\n\n/** The display name to store: the client's when it is the name in the key, else the key's own. */\nfunction displayName(uploadKey: UploadKey, filename: string | undefined): string {\n\tif (filename && sanitizeFilename(filename) === uploadKey.storedName) return filename;\n\treturn uploadKey.storedName;\n}\n\n// The hints are the uploading client's word, not the Worker's: positive integers up to 100,000; another value is\n// dropped (and logged) and the upload recorded without it. An image size the Worker read from the bytes wins over them.\nconst confirmArgs = {\n\tkey: v.string(),\n\t/** The original filename (display and download name). Ignored unless it is the one in the key. */\n\tfilename: v.optional(v.string()),\n\t/** Intrinsic size of an image, read in the browser. */\n\twidth: v.optional(v.number()),\n\theight: v.optional(v.number()),\n\t/** A PDF's page count, counted in the browser (`countPdfPages`). Recorded for PDFs only. */\n\tpageCount: v.optional(v.number()),\n};\n\ninterface ConfirmArgs extends UploadHints {\n\tkey: string;\n\tfilename?: string;\n}\n\n/** The size to record: the Worker's (read from the bytes) when it has one, else the client's hint. */\nfunction recordedSize(head: FileHead, hints: UploadHints): { width?: number; height?: number } {\n\tif (head.width && head.height) return { width: head.width, height: head.height };\n\treturn {\n\t\t...(hints.width !== undefined ? { width: hints.width } : {}),\n\t\t...(hints.height !== undefined ? { height: hints.height } : {}),\n\t};\n}\n\n/** HEADs the object and records it; `null` when no object is stored at `key` (yet). */\n// Annotated: the result of `internal.uploads.*` would otherwise type this module in terms of itself.\nasync function confirm(ctx: ActionCtx, args: ConfirmArgs): Promise<Doc<\"media\"> | null> {\n\tconst uploadKey = parseUploadKey(args.key);\n\tif (!uploadKey) {\n\t\tthrow new ConvexError({ code: \"invalid_upload_key\", message: `Not an upload key: ${args.key}`, status: 400 });\n\t}\n\tconst hints = validUploadHints(args);\n\n\tconst head: FileHead | null = await getMediaClient().files.head(args.key);\n\tif (!head) return null;\n\n\tconst isPdf = head.contentType === \"application/pdf\";\n\treturn ctx.runMutation(internal.uploads.recordUpload, {\n\t\tkey: uploadKey.id,\n\t\tobjectKey: args.key,\n\t\ttype: uploadKey.kind,\n\t\tvisibility: uploadKey.visibility,\n\t\tfilename: displayName(uploadKey, args.filename),\n\t\tcontentType: head.contentType,\n\t\tsizeBytes: head.size,\n\t\t...recordedSize(head, hints),\n\t\t...(isPdf && hints.pageCount !== undefined ? { pageCount: hints.pageCount } : {}),\n\t});\n}\n\n/**\n * Records an upload in the component's `media` table once its bytes are stored (call it after the PUT). Returns the\n * record, or `null` when nothing is stored at `key`. Idempotent: confirming twice updates the same record, and a\n * video's transcode state is left as it is.\n */\nexport const confirmUpload = workerAction({\n\targs: confirmArgs,\n\thandler: async (ctx, args): Promise<Doc<\"media\"> | null> => confirm(ctx, args),\n});\n\n/** The scheduled check `createUploadUrl` leaves behind: records the upload if it was stored and never confirmed. */\nexport const confirmUploadLater = internalAction({\n\targs: confirmArgs,\n\thandler: async (ctx, args) => {\n\t\tawait confirm(ctx, args);\n\t},\n});\n\nexport const recordUpload = internalMutation({\n\targs: {\n\t\tkey: v.string(),\n\t\tobjectKey: v.string(),\n\t\ttype: v.union(v.literal(\"video\"), v.literal(\"image\"), v.literal(\"file\")),\n\t\tvisibility: v.union(v.literal(\"public\"), v.literal(\"private\")),\n\t\tfilename: v.string(),\n\t\tcontentType: v.string(),\n\t\tsizeBytes: v.number(),\n\t\twidth: v.optional(v.number()),\n\t\theight: v.optional(v.number()),\n\t\tpageCount: v.optional(v.number()),\n\t},\n\thandler: async (ctx, args) => {\n\t\tconst existing = await ctx.db\n\t\t\t.query(\"media\")\n\t\t\t.withIndex(\"by_key\", (q) => q.eq(\"key\", args.key))\n\t\t\t.first();\n\t\tif (!existing) {\n\t\t\tconst searchText = searchTextOf(undefined, args.filename);\n\t\t\tconst id = await ctx.db.insert(\"media\", { ...args, searchText, createdAt: Date.now() });\n\t\t\treturn ctx.db.get(id);\n\t\t}\n\n\t\t// A video `processVideo` recorded first: fill in what only the upload knows, keep its transcode state (and any\n\t\t// title the app already set).\n\t\tawait ctx.db.patch(existing._id, { ...args, searchText: searchTextOf(existing.title, args.filename) });\n\t\treturn ctx.db.get(existing._id);\n\t},\n});\n\n/** Drops the record of a deleted image or file. A video's record goes with `deleteVideo`, not with one of its keys. */\nexport const forgetUpload = internalMutation({\n\targs: { key: v.string() },\n\thandler: async (ctx, args) => {\n\t\tif (!parseUploadKey(args.key)) return;\n\t\tconst record = await ctx.db\n\t\t\t.query(\"media\")\n\t\t\t.withIndex(\"by_key\", (q) => q.eq(\"key\", extractId(args.key)))\n\t\t\t.first();\n\t\tif (!record || record.type === \"video\") return;\n\t\tif (record.objectKey && record.objectKey !== args.key) return;\n\t\tawait ctx.db.delete(record._id);\n\t},\n});\n"]}
@@ -14,4 +14,3 @@ export interface DevulturErrorData {
14
14
  export declare function toComponentError(error: unknown): unknown;
15
15
  /** `action` whose handler rethrows Worker refusals as `ConvexError<DevulturErrorData>`. */
16
16
  export declare const workerAction: typeof action;
17
- //# sourceMappingURL=workerErrors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"workerErrors.js","sourceRoot":"","sources":["../../src/component/workerErrors.ts"],"names":[],"mappings":"AAAA,mHAAmH;AACnH,sHAAsH;AACtH,0GAA0G;AAC1G,iGAAiG;AACjG,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAc,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAa7C,SAAS,UAAU,CAAC,KAAc;IACjC,IAAI,KAAK,YAAY,gBAAgB;QAAE,OAAO,IAAI,CAAC;IACnD,sFAAsF;IACtF,OAAO,CACN,KAAK,YAAY,KAAK;QACtB,KAAK,CAAC,IAAI,KAAK,kBAAkB;QACjC,OAAQ,KAA8B,CAAC,MAAM,KAAK,QAAQ,CAC1D,CAAC;AACH,CAAC;AAED,kHAAkH;AAClH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC9C,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACrC,MAAM,IAAI,GAAsB;QAC/B,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,cAAc;QAClC,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,sEAAsE;QACtE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAA0B,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzG,CAAC;IACF,OAAO,IAAI,WAAW,CAAC,IAAwB,CAAC,CAAC;AAClD,CAAC;AAED,2FAA2F;AAC3F,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,UAA0E,EAAE,EAAE,CAC3G,MAAM,CAAC;IACN,GAAG,UAAU;IACb,OAAO,EAAE,KAAK,EAAE,GAAY,EAAE,IAAa,EAAE,EAAE;QAC9C,IAAI,CAAC;YACJ,OAAO,MAAM,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACF,CAAC;CACQ,CAAC,CAA6B,CAAC"}
1
+ {"version":3,"file":"workerErrors.js","sourceRoot":"","sources":["../../src/component/workerErrors.ts"],"names":[],"mappings":"AAAA,mHAAmH;AACnH,sHAAsH;AACtH,0GAA0G;AAC1G,iGAAiG;AACjG,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAc,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAa7C,SAAS,UAAU,CAAC,KAAc;IACjC,IAAI,KAAK,YAAY,gBAAgB;QAAE,OAAO,IAAI,CAAC;IACnD,sFAAsF;IACtF,OAAO,CACN,KAAK,YAAY,KAAK;QACtB,KAAK,CAAC,IAAI,KAAK,kBAAkB;QACjC,OAAQ,KAA8B,CAAC,MAAM,KAAK,QAAQ,CAC1D,CAAC;AACH,CAAC;AAED,kHAAkH;AAClH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC9C,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACrC,MAAM,IAAI,GAAsB;QAC/B,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,cAAc;QAClC,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,sEAAsE;QACtE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAA0B,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzG,CAAC;IACF,OAAO,IAAI,WAAW,CAAC,IAAwB,CAAC,CAAC;AAClD,CAAC;AAED,2FAA2F;AAC3F,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,UAA0E,EAAE,EAAE,CAC3G,MAAM,CAAC;IACN,GAAG,UAAU;IACb,OAAO,EAAE,KAAK,EAAE,GAAY,EAAE,IAAa,EAAE,EAAE;QAC9C,IAAI,CAAC;YACJ,OAAO,MAAM,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACF,CAAC;CACQ,CAAC,CAA6B,CAAC","sourcesContent":["// Worker errors across the component boundary. A plain `Error` thrown in a component function reaches the app as a\n// message only; a `ConvexError` keeps its `data`. Every component action is built with `workerAction`, which rethrows\n// the Worker's `DevulturApiError` as `ConvexError<DevulturErrorData>`, so the app reads `error.data.code`\n// (`retention_active`, `lock_conflict`, `compliance_extend_only`, ...) and `error.data.details`.\nimport { DevulturApiError } from \"@devultur/core\";\nimport { ConvexError, type Value } from \"convex/values\";\nimport { action } from \"./_generated/server\";\n\n/** `data` of the `ConvexError` a component action throws when the Worker refuses a request. */\nexport interface DevulturErrorData {\n\t/** The Worker's stable code (`retention_active`, `file_too_large`, ...), or `worker_error` when it sent none. */\n\tcode: string;\n\tmessage: string;\n\t/** HTTP status of the Worker's answer. */\n\tstatus: number;\n\t/** The rest of the Worker's error body, e.g. `{ key, mode, until, hold }` on `retention_active`. */\n\tdetails?: Record<string, Value>;\n}\n\nfunction isApiError(error: unknown): error is DevulturApiError {\n\tif (error instanceof DevulturApiError) return true;\n\t// A second copy of `@devultur/core` (bundling) fails `instanceof`; its shape doesn't.\n\treturn (\n\t\terror instanceof Error &&\n\t\terror.name === \"DevulturApiError\" &&\n\t\ttypeof (error as { status?: unknown }).status === \"number\"\n\t);\n}\n\n/** The error to rethrow: a Worker refusal becomes a `ConvexError` with its code; anything else passes through. */\nexport function toComponentError(error: unknown): unknown {\n\tif (!isApiError(error)) return error;\n\tconst data: DevulturErrorData = {\n\t\tcode: error.code ?? \"worker_error\",\n\t\tmessage: error.message,\n\t\tstatus: error.status,\n\t\t// JSON from the Worker: valid Convex values once `undefined` is gone.\n\t\t...(error.details ? { details: JSON.parse(JSON.stringify(error.details)) as Record<string, Value> } : {}),\n\t};\n\treturn new ConvexError(data as unknown as Value);\n}\n\n/** `action` whose handler rethrows Worker refusals as `ConvexError<DevulturErrorData>`. */\nexport const workerAction = ((definition: { handler: (ctx: unknown, args: unknown) => Promise<unknown> }) =>\n\taction({\n\t\t...definition,\n\t\thandler: async (ctx: unknown, args: unknown) => {\n\t\t\ttry {\n\t\t\t\treturn await definition.handler(ctx, args);\n\t\t\t} catch (error) {\n\t\t\t\tthrow toComponentError(error);\n\t\t\t}\n\t\t},\n\t} as never)) as unknown as typeof action;\n"]}
package/dist/index.d.ts CHANGED
@@ -2,8 +2,8 @@ import { ObjectLock, LockView, SetLockOptions, HoldPage, DevulturMedia } from '@
2
2
  export { CaptionLocale, DevulturConfig, DevulturKind, DevulturMedia, ImageFit, ImageFormat, SecurityLevel, SpeechProvider, StorageProvider, TranscodePreset, TranscodeProvider, TranslationProvider, VideoModuleConfig, Visibility } from '@devultur/core';
3
3
  import { FunctionReference, FunctionVisibility, DefaultFunctionArgs, GenericQueryCtx, GenericDataModel, GenericMutationCtx, GenericActionCtx, RegisteredQuery, RegisteredMutation, RegisteredAction, PaginationOptions, PaginationResult } from 'convex/server';
4
4
  import { PropertyValidators, Value, ConvexError } from 'convex/values';
5
- import { D as DevulturComponentConfig, M as MediaRecord } from './types-LrusGVDf.js';
6
- export { P as ProgressRecord } from './types-LrusGVDf.js';
5
+ import { D as DevulturComponentConfig, M as MediaRecord } from './types-C0ruHUcu.js';
6
+ export { a as DevulturUploadConfig, P as ProgressRecord } from './types-C0ruHUcu.js';
7
7
  export { a as DEVULTUR_ERROR_CODES, b as DevulturErrorCode, c as DevulturErrorDetails, d as DevulturErrorLabel, D as DevulturErrorLabels, e as describeDevulturError, f as devulturErrorLabels, i as isDevulturErrorCode } from './error-labels-D0Vbp-qA.js';
8
8
  export { dv } from './validators.js';
9
9
 
@@ -290,9 +290,10 @@ type RegisteredFunctions<Visibility extends FunctionVisibility> = {
290
290
  };
291
291
 
292
292
  type DevulturComponent = ComponentApi;
293
- type QueryCtx = GenericQueryCtx<GenericDataModel>;
294
- type MutationCtx = GenericMutationCtx<GenericDataModel>;
295
- type ActionCtx = GenericActionCtx<GenericDataModel>;
293
+ type Runners = GenericActionCtx<GenericDataModel>;
294
+ type QueryCtx = Pick<Runners, "runQuery">;
295
+ type MutationCtx = Pick<Runners, "runMutation">;
296
+ type ActionCtx = Pick<Runners, "runAction">;
296
297
  type UploadUrlArgs = {
297
298
  filename: string;
298
299
  contentType: string;
@@ -421,20 +422,40 @@ type DevulturOperation = {
421
422
  args: ArgsOf<ExposedFunctions[Name]>;
422
423
  };
423
424
  }[ExposedFunctionName];
424
- /** The ctx of the guarded function: a query's, a mutation's or an action's (all of them have `auth`). */
425
- type DevulturGuardCtx = GenericQueryCtx<GenericDataModel> | GenericMutationCtx<GenericDataModel> | GenericActionCtx<GenericDataModel>;
425
+ /**
426
+ * The ctx of the guarded function: a query's, a mutation's or an action's (all of them have `auth`). Of any data
427
+ * model, so a guard typed with the app's own ctx (`QueryCtx | MutationCtx | ActionCtx` from `_generated/server`) fits.
428
+ */
429
+ type DevulturGuardCtx<DataModel extends GenericDataModel = any> = GenericQueryCtx<DataModel> | GenericMutationCtx<DataModel> | GenericActionCtx<DataModel>;
426
430
  /**
427
431
  * Throws to deny the call. May return what it learned about the caller: a `userId` becomes the subject of the token
428
432
  * `issueViewerToken` issues, and the only user the progress functions act for (another `userId` in their arguments is
429
- * refused with `user_mismatch`, unless the guard also returns `canActForOthers: true`).
433
+ * refused with `user_mismatch`, unless the guard also returns `canActForOthers: true`). May also return a `rewrite` of
434
+ * the caller's arguments (see `DevulturArgsRewrite`).
435
+ */
436
+ type DevulturGuard = (ctx: DevulturGuardCtx, operation: DevulturOperation) => DevulturGuardResult | Promise<DevulturGuardResult>;
437
+ /**
438
+ * Arguments a guard rewrites, on your server, before the function runs: each key of `args` replaces the caller's
439
+ * argument of that name. `name` is the operation's, so `args` are typed for it:
440
+ * `{ name: "createUploadUrl", args: { visibility: "private" } }` uploads privately whatever the browser asked for.
441
+ * A rewrite named for another operation than the one being guarded throws. The rewritten arguments aren't validated
442
+ * again.
430
443
  */
431
- type DevulturGuard = (ctx: DevulturGuardCtx, operation: DevulturOperation) => GuardResult | Promise<GuardResult>;
432
- type GuardResult = CallerContext | undefined | void;
444
+ type DevulturArgsRewrite = {
445
+ [Name in ExposedFunctionName]: {
446
+ name: Name;
447
+ args: Partial<ArgsOf<ExposedFunctions[Name]>>;
448
+ };
449
+ }[ExposedFunctionName];
450
+ /** What a guard returns: what it learned about the caller, and the arguments it rewrites. */
451
+ type DevulturGuardResult = (CallerContext & {
452
+ rewrite?: DevulturArgsRewrite;
453
+ }) | undefined | void;
433
454
  interface DevulturFunctionsOptions<Visibility extends FunctionVisibility> {
434
455
  guard: DevulturGuard;
435
456
  /** `"internal"` registers them as internal functions (callable from your server only). Default `"public"`. */
436
457
  visibility?: Visibility;
437
- /** Same as `Devultur.exposeApi`'s: the transcode preset, caption locales and upload lock. */
458
+ /** Same as `Devultur.exposeApi`'s: the transcode preset, caption locales, upload lock and default visibility. */
438
459
  config?: DevulturComponentConfig;
439
460
  }
440
461
  /** `Devultur.exposeApi`'s functions, each calling `options.guard` before it runs. Export the ones your app uses. */
@@ -447,4 +468,4 @@ declare function defineDevulturFunctions<Visibility extends FunctionVisibility =
447
468
  */
448
469
  declare function mediaFromRecord(record: MediaRecord): DevulturMedia | null;
449
470
 
450
- export { type CallerContext, Devultur, DevulturComponentConfig, type DevulturErrorData, type DevulturFunctionsOptions, type DevulturGuard, type DevulturGuardCtx, type DevulturOperation, MediaRecord, type RegisteredFunctions, defineDevulturFunctions, devulturErrorOf, isDevulturError, mediaFromRecord };
471
+ export { type CallerContext, Devultur, type DevulturArgsRewrite, DevulturComponentConfig, type DevulturErrorData, type DevulturFunctionsOptions, type DevulturGuard, type DevulturGuardCtx, type DevulturGuardResult, type DevulturOperation, MediaRecord, type RegisteredFunctions, defineDevulturFunctions, devulturErrorOf, isDevulturError, mediaFromRecord };
package/dist/index.js CHANGED
@@ -53,12 +53,16 @@ function progressArgsFor(args, caller) {
53
53
  });
54
54
  }
55
55
  function mediaIdOf(key) {
56
+ if (typeof key !== "string") {
57
+ throw new ConvexError({ code: "invalid_key", message: "The media key must be a string", status: 400 });
58
+ }
56
59
  return key.includes("/") ? extractId(key) : key;
57
60
  }
58
61
  function exposedFunctions(component, config) {
59
62
  const preset = config?.video?.transcodePreset;
60
63
  const locales = config?.video?.captionLocales ?? [];
61
64
  const uploadLock = config?.upload?.lock;
65
+ const defaultVisibility = config?.upload?.visibility;
62
66
  return {
63
67
  issueViewerToken: exposed(
64
68
  "action",
@@ -68,11 +72,18 @@ function exposedFunctions(component, config) {
68
72
  ...caller.userId ? { userId: caller.userId } : {}
69
73
  })
70
74
  ),
71
- // Optional per-resource visibility; omitted → the component resolves the config's default (secure-by-default).
75
+ // Visibility: the caller's (after the guard's rewrite), else `config.upload.visibility`, else the Worker's default.
72
76
  createUploadUrl: exposed(
73
77
  "action",
74
78
  { filename: v.string(), contentType: v.string(), visibility: visibilityArg },
75
- async (ctx, args) => ctx.runAction(component.public.createUploadUrl, { ...args, ...uploadLock ? { lock: uploadLock } : {} })
79
+ async (ctx, args) => {
80
+ const visibility = args.visibility ?? defaultVisibility;
81
+ return ctx.runAction(component.public.createUploadUrl, {
82
+ ...args,
83
+ ...visibility ? { visibility } : {},
84
+ ...uploadLock ? { lock: uploadLock } : {}
85
+ });
86
+ }
76
87
  ),
77
88
  // Records an upload once its bytes are stored (the Worker HEADs the key): a browser can't list anything
78
89
  // that isn't in your bucket. `useDevultur().upload()` and `useMediaUpload` call it after the PUT.
@@ -263,11 +274,18 @@ function defineDevulturFunctions(devultur, options) {
263
274
  return registerFunctions(exposedFunctions(devultur.component, config), visibility, (name, fn) => {
264
275
  return async (ctx, args) => {
265
276
  const operation = { name, kind: fn.kind, args };
266
- const caller = await guard(ctx, operation) ?? {};
267
- return fn.handler(ctx, args, caller);
277
+ const { rewrite, ...caller } = await guard(ctx, operation) ?? {};
278
+ return fn.handler(ctx, rewrittenArgs(name, args, rewrite), caller);
268
279
  };
269
280
  });
270
281
  }
282
+ function rewrittenArgs(name, args, rewrite) {
283
+ if (!rewrite) return args;
284
+ if (rewrite.name !== name) {
285
+ throw new Error(`The guard rewrote ${rewrite.name}'s arguments while guarding ${name}`);
286
+ }
287
+ return { ...args, ...rewrite.args };
288
+ }
271
289
  export {
272
290
  CaptionLocale,
273
291
  DEVULTUR_ERROR_CODES,
@@ -1,12 +1,16 @@
1
- import { A as AttachmentLabels, M as MediaLibraryLabels, a as MediaPickerLabels, P as PreviewLabels } from '../preview-labels-B-2mra1h.js';
1
+ import { VideoPlayerLabels } from '@devultur/react';
2
+ import { A as AttachmentLabels, M as MediaLibraryLabels, a as MediaPickerLabels, P as PreviewLabels } from '../preview-labels-C2nUUY_f.js';
2
3
  import { D as DevulturErrorLabels } from '../error-labels-D0Vbp-qA.js';
3
- import '../types-LrusGVDf.js';
4
+ import '../types-C0ruHUcu.js';
4
5
  import '@devultur/core';
6
+ import 'convex/values';
7
+ import 'convex/server';
5
8
 
6
9
  declare const devulturErrorLabels: DevulturErrorLabels;
7
10
  declare const attachmentLabels: AttachmentLabels;
8
11
  declare const previewLabels: PreviewLabels;
9
12
  declare const mediaLibraryLabels: MediaLibraryLabels;
10
13
  declare const mediaPickerLabels: MediaPickerLabels;
14
+ declare const videoPlayerLabels: VideoPlayerLabels;
11
15
 
12
- export { attachmentLabels, devulturErrorLabels, mediaLibraryLabels, mediaPickerLabels, previewLabels };
16
+ export { attachmentLabels, devulturErrorLabels, mediaLibraryLabels, mediaPickerLabels, previewLabels, videoPlayerLabels };
@@ -3,8 +3,9 @@ import {
3
3
  devulturErrorLabels,
4
4
  mediaLibraryLabels,
5
5
  mediaPickerLabels,
6
- previewLabels
7
- } from "../chunk-JZYKPLI4.js";
6
+ previewLabels,
7
+ videoPlayerLabels
8
+ } from "../chunk-RDVBE3G3.js";
8
9
  import "../chunk-QBHIZBOQ.js";
9
10
  import {
10
11
  describeDevulturError,
@@ -55,10 +56,12 @@ var mediaPickerLabels2 = {
55
56
  dropHint: (multiple) => multiple ? "o suelte los archivos aqu\xED" : "o suelte un archivo aqu\xED",
56
57
  uploadError: (error) => describeDevulturError(error, devulturErrorLabels2) ?? `La subida fall\xF3. ${TRY_AGAIN}`
57
58
  };
59
+ var videoPlayerLabels2 = videoPlayerLabels;
58
60
  export {
59
61
  attachmentLabels2 as attachmentLabels,
60
62
  devulturErrorLabels2 as devulturErrorLabels,
61
63
  mediaLibraryLabels2 as mediaLibraryLabels,
62
64
  mediaPickerLabels2 as mediaPickerLabels,
63
- previewLabels2 as previewLabels
65
+ previewLabels2 as previewLabels,
66
+ videoPlayerLabels2 as videoPlayerLabels
64
67
  };
@@ -1,12 +1,16 @@
1
- import { A as AttachmentLabels, M as MediaLibraryLabels, a as MediaPickerLabels, P as PreviewLabels } from '../preview-labels-B-2mra1h.js';
1
+ import { VideoPlayerLabels } from '@devultur/react';
2
+ import { A as AttachmentLabels, M as MediaLibraryLabels, a as MediaPickerLabels, P as PreviewLabels } from '../preview-labels-C2nUUY_f.js';
2
3
  import { D as DevulturErrorLabels } from '../error-labels-D0Vbp-qA.js';
3
- import '../types-LrusGVDf.js';
4
+ import '../types-C0ruHUcu.js';
4
5
  import '@devultur/core';
6
+ import 'convex/values';
7
+ import 'convex/server';
5
8
 
6
9
  declare const devulturErrorLabels: DevulturErrorLabels;
7
10
  declare const previewLabels: PreviewLabels;
8
11
  declare const attachmentLabels: AttachmentLabels;
9
12
  declare const mediaLibraryLabels: MediaLibraryLabels;
10
13
  declare const mediaPickerLabels: MediaPickerLabels;
14
+ declare const videoPlayerLabels: VideoPlayerLabels;
11
15
 
12
- export { attachmentLabels, devulturErrorLabels, mediaLibraryLabels, mediaPickerLabels, previewLabels };
16
+ export { attachmentLabels, devulturErrorLabels, mediaLibraryLabels, mediaPickerLabels, previewLabels, videoPlayerLabels };
@@ -3,8 +3,9 @@ import {
3
3
  devulturErrorLabels,
4
4
  mediaLibraryLabels,
5
5
  mediaPickerLabels,
6
- previewLabels
7
- } from "../chunk-JZYKPLI4.js";
6
+ previewLabels,
7
+ videoPlayerLabels
8
+ } from "../chunk-RDVBE3G3.js";
8
9
  import "../chunk-QBHIZBOQ.js";
9
10
  import "../chunk-YYOZ3PDH.js";
10
11
  export {
@@ -12,5 +13,6 @@ export {
12
13
  devulturErrorLabels,
13
14
  mediaLibraryLabels,
14
15
  mediaPickerLabels,
15
- previewLabels
16
+ previewLabels,
17
+ videoPlayerLabels
16
18
  };
@@ -1,4 +1,4 @@
1
- import { M as MediaRecord } from './types-LrusGVDf.js';
1
+ import { M as MediaRecord } from './types-C0ruHUcu.js';
2
2
 
3
3
  /** What an attachment is, for its icon and type label. */
4
4
  type AttachmentKind = "image" | "video" | "pdf" | "audio" | "text" | "file";