@editframe/api 0.14.0-beta.2 → 0.15.0-beta.1

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.
@@ -41,8 +41,8 @@ class BaseEventIterator {
41
41
  if (!item) {
42
42
  throw new Error("Queue is corrupted");
43
43
  }
44
- yield item;
45
44
  this.index++;
45
+ yield item;
46
46
  }
47
47
  }
48
48
  } finally {
@@ -94,6 +94,9 @@ class CompletionIterator extends BaseEventIterator {
94
94
  progress: this.currentProgress / this.totalSize
95
95
  }
96
96
  });
97
+ if (this.currentProgress >= this.totalSize) {
98
+ this.isComplete = true;
99
+ }
97
100
  });
98
101
  this.eventSource.on("complete", (event) => {
99
102
  this.isComplete = true;
@@ -4,6 +4,7 @@ export type StreamEventSourceEventMap = {
4
4
  complete: CompleteEvent;
5
5
  size: SizeEvent;
6
6
  completion: CompletionEvent;
7
+ heartbeat: HeartbeatEvent;
7
8
  message: {
8
9
  id: string | undefined;
9
10
  data: string;
@@ -36,6 +37,12 @@ export type CompletionEvent = {
36
37
  count: number;
37
38
  };
38
39
  };
40
+ export type HeartbeatEvent = {
41
+ type: "heartbeat";
42
+ data: {
43
+ timestamp: string;
44
+ };
45
+ };
39
46
  export declare class StreamEventSource {
40
47
  private stream;
41
48
  private activeReader;
@@ -19,6 +19,12 @@ class StreamEventSource {
19
19
  onEvent: (event) => {
20
20
  if (event.event) {
21
21
  switch (event.event) {
22
+ case "heartbeat":
23
+ this.emit("heartbeat", {
24
+ type: "heartbeat",
25
+ data: JSON.parse(event.data)
26
+ });
27
+ break;
22
28
  case "size":
23
29
  this.emit("size", {
24
30
  type: "size",
package/dist/index.d.ts CHANGED
@@ -2,7 +2,7 @@ export { createCaptionFile, CreateCaptionFilePayload, type CreateCaptionFileResu
2
2
  export { createImageFile, CreateImageFilePayload, type CreateImageFileResult, uploadImageFile, type LookupImageFileByMd5Result, lookupImageFileByMd5, } from './resources/image-file.js';
3
3
  export { createISOBMFFFile, CreateISOBMFFFilePayload, type CreateISOBMFFFileResult, uploadFragmentIndex, type LookupISOBMFFFileByMd5Result, lookupISOBMFFFileByMd5, type GetISOBMFFFileTranscriptionResult, getISOBMFFFileTranscription, type TranscribeISOBMFFFileResult, transcribeISOBMFFFile, TranscribeISOBMFFFilePayload, } from './resources/isobmff-file.js';
4
4
  export { createISOBMFFTrack, CreateISOBMFFTrackPayload, type CreateISOBMFFTrackResult, uploadISOBMFFTrack, AudioTrackPayload, type AudioStreamSchema, VideoTrackPayload, type VideoStreamSchema, } from './resources/isobmff-track.js';
5
- export { createRender, CreateRenderPayload, type CreateRenderResult, uploadRender, type LookupRenderByMd5Result, lookupRenderByMd5, getRenderProgress, getRenderInfo, } from './resources/renders.js';
5
+ export { createRender, CreateRenderPayload, type CreateRenderResult, uploadRender, type LookupRenderByMd5Result, lookupRenderByMd5, getRenderProgress, getRenderInfo, downloadRender, } from './resources/renders.js';
6
6
  export { createTranscription, CreateTranscriptionPayload, type CreateTranscriptionResult, getTranscriptionInfo, getTranscriptionProgress, type TranscriptionInfoResult, } from './resources/transcriptions.js';
7
7
  export { createURLToken, type URLTokenResult, } from './resources/url-token.js';
8
8
  export { createUnprocessedFile, CreateUnprocessedFilePayload, type CreateUnprocessedFileResult, uploadUnprocessedReadableStream, type LookupUnprocessedFileByMd5Result, lookupUnprocessedFileByMd5, processIsobmffFile, type ProcessIsobmffFileResult, type UnprocessedFileUploadDetails, type UnprocessedFile, } from './resources/unprocessed-file.js';
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@ import { CreateCaptionFilePayload, createCaptionFile, lookupCaptionFileByMd5, up
2
2
  import { CreateImageFilePayload, createImageFile, lookupImageFileByMd5, uploadImageFile } from "./resources/image-file.js";
3
3
  import { CreateISOBMFFFilePayload, TranscribeISOBMFFFilePayload, createISOBMFFFile, getISOBMFFFileTranscription, lookupISOBMFFFileByMd5, transcribeISOBMFFFile, uploadFragmentIndex } from "./resources/isobmff-file.js";
4
4
  import { AudioTrackPayload, CreateISOBMFFTrackPayload, VideoTrackPayload, createISOBMFFTrack, uploadISOBMFFTrack } from "./resources/isobmff-track.js";
5
- import { CreateRenderPayload, createRender, getRenderInfo, getRenderProgress, lookupRenderByMd5, uploadRender } from "./resources/renders.js";
5
+ import { CreateRenderPayload, createRender, downloadRender, getRenderInfo, getRenderProgress, lookupRenderByMd5, uploadRender } from "./resources/renders.js";
6
6
  import { CreateTranscriptionPayload, createTranscription, getTranscriptionInfo, getTranscriptionProgress } from "./resources/transcriptions.js";
7
7
  import { createURLToken } from "./resources/url-token.js";
8
8
  import { CreateUnprocessedFilePayload, createUnprocessedFile, lookupUnprocessedFileByMd5, processIsobmffFile, uploadUnprocessedReadableStream } from "./resources/unprocessed-file.js";
@@ -28,6 +28,7 @@ export {
28
28
  createTranscription,
29
29
  createURLToken,
30
30
  createUnprocessedFile,
31
+ downloadRender,
31
32
  getISOBMFFFileTranscription,
32
33
  getIsobmffProcessInfo,
33
34
  getIsobmffProcessProgress,
package/dist/node.js CHANGED
@@ -10,7 +10,7 @@ import { createReadableStreamFromReadable } from "./utils/createReadableStreamFr
10
10
  import { CreateCaptionFilePayload, createCaptionFile, lookupCaptionFileByMd5, uploadCaptionFile } from "./resources/caption-file.js";
11
11
  import { CreateISOBMFFFilePayload, TranscribeISOBMFFFilePayload, createISOBMFFFile, getISOBMFFFileTranscription, lookupISOBMFFFileByMd5, transcribeISOBMFFFile, uploadFragmentIndex } from "./resources/isobmff-file.js";
12
12
  import { AudioTrackPayload, CreateISOBMFFTrackPayload, VideoTrackPayload, createISOBMFFTrack, uploadISOBMFFTrack } from "./resources/isobmff-track.js";
13
- import { CreateRenderPayload, createRender, getRenderInfo, getRenderProgress, lookupRenderByMd5, uploadRender } from "./resources/renders.js";
13
+ import { CreateRenderPayload, createRender, downloadRender, getRenderInfo, getRenderProgress, lookupRenderByMd5, uploadRender } from "./resources/renders.js";
14
14
  import { CreateTranscriptionPayload, createTranscription, getTranscriptionInfo, getTranscriptionProgress } from "./resources/transcriptions.js";
15
15
  import { createURLToken } from "./resources/url-token.js";
16
16
  import { getIsobmffProcessInfo, getIsobmffProcessProgress } from "./resources/process-isobmff.js";
@@ -74,6 +74,7 @@ export {
74
74
  createURLToken,
75
75
  createUnprocessedFile,
76
76
  createUnprocessedFileFromPath,
77
+ downloadRender,
77
78
  getISOBMFFFileTranscription,
78
79
  getIsobmffProcessInfo,
79
80
  getIsobmffProcessProgress,
@@ -50,3 +50,4 @@ export declare const uploadRender: (client: Client, renderId: string, fileStream
50
50
  export declare const getRenderInfo: (client: Client, id: string) => Promise<LookupRenderByMd5Result>;
51
51
  export declare const lookupRenderByMd5: (client: Client, md5: string) => Promise<LookupRenderByMd5Result | null>;
52
52
  export declare const getRenderProgress: (client: Client, id: string) => Promise<CompletionIterator>;
53
+ export declare const downloadRender: (client: Client, id: string) => Promise<Response>;
@@ -71,9 +71,19 @@ const getRenderProgress = async (client, id) => {
71
71
  );
72
72
  return new CompletionIterator(eventSource);
73
73
  };
74
+ const downloadRender = async (client, id) => {
75
+ const response = await client.authenticatedFetch(`/api/v1/renders/${id}.mp4`);
76
+ if (response.ok) {
77
+ return response;
78
+ }
79
+ throw new Error(
80
+ `Failed to download render ${id} ${response.status} ${response.statusText}`
81
+ );
82
+ };
74
83
  export {
75
84
  CreateRenderPayload,
76
85
  createRender,
86
+ downloadRender,
77
87
  getRenderInfo,
78
88
  getRenderProgress,
79
89
  lookupRenderByMd5,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@editframe/api",
3
- "version": "0.14.0-beta.2",
3
+ "version": "0.15.0-beta.1",
4
4
  "description": "API functions for EditFrame",
5
5
  "exports": {
6
6
  ".": {
@@ -39,7 +39,7 @@
39
39
  "vite-plugin-dts": "^4.0.3"
40
40
  },
41
41
  "dependencies": {
42
- "@editframe/assets": "0.14.0-beta.2",
42
+ "@editframe/assets": "0.15.0-beta.1",
43
43
  "@vitejs/plugin-react": "^4.3.4",
44
44
  "vite-tsconfig-paths": "^4.3.2",
45
45
  "vite": "^5.4.11",
@@ -134,3 +134,15 @@ export const getRenderProgress = async (client: Client, id: string) => {
134
134
 
135
135
  return new CompletionIterator(eventSource);
136
136
  };
137
+
138
+ export const downloadRender = async (client: Client, id: string) => {
139
+ const response = await client.authenticatedFetch(`/api/v1/renders/${id}.mp4`);
140
+
141
+ if (response.ok) {
142
+ return response;
143
+ }
144
+
145
+ throw new Error(
146
+ `Failed to download render ${id} ${response.status} ${response.statusText}`,
147
+ );
148
+ };