@soga/node-types 1.0.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.
package/README.md ADDED
@@ -0,0 +1,3 @@
1
+ - StageType -> UploadFileStage
2
+ - UploadItem -> UploadFileItem
3
+ - UploadControlData -> UploadControlConfig
@@ -0,0 +1,348 @@
1
+ import { CacheInfo, HostType, UploadProgressData, ManifestAudioItem, ManifestVideoItem, ManifestThumbnailInfo, ManifestCoverInfo, ManifestMetaInfo, ManifestSourceInfo, ManifestImgInfo, ManifestTxtInfo, UploadProgress } from '@soga/types';
2
+ export { UploadProgress } from '@soga/types';
3
+ import { M3U8Manifest } from '@soga/m3u8';
4
+
5
+ type WorkerError = {
6
+ id: number;
7
+ type: 'error';
8
+ data: {
9
+ code: number;
10
+ message: string;
11
+ cause?: string;
12
+ stack?: string;
13
+ };
14
+ };
15
+
16
+ type MapInfo = {
17
+ id?: string;
18
+ file: string;
19
+ start: number;
20
+ end: number;
21
+ };
22
+ type PartItem = {
23
+ start: number;
24
+ end: number;
25
+ size: number;
26
+ file: string;
27
+ path: string;
28
+ index?: number;
29
+ md4?: string;
30
+ md5?: string;
31
+ sha1?: string;
32
+ };
33
+
34
+ type ImgMeta = {
35
+ size: number;
36
+ width: number;
37
+ height: number;
38
+ t_width: number;
39
+ t_height: number;
40
+ t_size: number;
41
+ };
42
+ type ImgHost = {
43
+ img: {
44
+ preview: CacheInfo[];
45
+ };
46
+ cache: CacheInfo;
47
+ parts: PartItem[];
48
+ };
49
+ type ImgResult = {
50
+ meta: ImgMeta;
51
+ data: Record<HostType, ImgHost>;
52
+ };
53
+
54
+ type GrouperFileInfo = {
55
+ id: string;
56
+ file: string;
57
+ size: number;
58
+ start: number;
59
+ end: number;
60
+ hash?: string;
61
+ };
62
+ type GrouperVideoItem = {
63
+ label: string;
64
+ average_band: number;
65
+ band: number;
66
+ codec: string;
67
+ codec_name: string;
68
+ framerate: number;
69
+ bitdepth: number;
70
+ width: number;
71
+ height: number;
72
+ } & GrouperFileInfo;
73
+ type GrouperQualityAudioItem = {
74
+ average_band: number;
75
+ band: number;
76
+ channels: number;
77
+ codec: string;
78
+ codec_name: string;
79
+ language: string;
80
+ order: number;
81
+ } & GrouperFileInfo;
82
+ type GrouperAudioItem = GrouperQualityAudioItem & {
83
+ average_band: number;
84
+ band: number;
85
+ channels: number;
86
+ codec: string;
87
+ codec_name: string;
88
+ language: string;
89
+ order: number;
90
+ high?: GrouperQualityAudioItem;
91
+ };
92
+ type GrouperThumbnailInfo = {
93
+ row: number;
94
+ col: number;
95
+ width: number;
96
+ height: number;
97
+ } & GrouperFileInfo;
98
+ type GrouperCoverInfo = {
99
+ id: string;
100
+ width: number;
101
+ height: number;
102
+ } & GrouperFileInfo;
103
+ type GrouperPartItem = PartItem;
104
+ type GrouperSubtitleItem = {
105
+ uuid: string;
106
+ builtin: boolean;
107
+ end: number;
108
+ file: string;
109
+ lang: string;
110
+ size: number;
111
+ source?: {
112
+ end: number;
113
+ file: string;
114
+ size: number;
115
+ start: number;
116
+ ext: string;
117
+ };
118
+ start: number;
119
+ name: string;
120
+ title: string;
121
+ };
122
+ type GrouperHostResult = {
123
+ subtitles: GrouperSubtitleItem[];
124
+ audios: GrouperAudioItem[];
125
+ videos: GrouperVideoItem[];
126
+ thumbnail: GrouperThumbnailInfo;
127
+ cover: GrouperCoverInfo;
128
+ parts: GrouperPartItem[];
129
+ cache: CacheInfo;
130
+ };
131
+ type GrouperAudioMeta = {
132
+ channels: number;
133
+ codec: string;
134
+ codec_name: string;
135
+ duration: number;
136
+ lossless: boolean;
137
+ high?: {
138
+ channels: number;
139
+ codec: string;
140
+ codec_name: string;
141
+ lossless: boolean;
142
+ };
143
+ };
144
+ type GrouperVideoMeta = {
145
+ bitdepth: number;
146
+ codec: string;
147
+ codec_name: string;
148
+ duration: number;
149
+ framerate: number;
150
+ height: number;
151
+ label: string;
152
+ width: number;
153
+ };
154
+ type GrouperMeta = {
155
+ audios: GrouperAudioMeta[];
156
+ videos: GrouperVideoMeta[];
157
+ };
158
+ type GrouperResult = {
159
+ meta: GrouperMeta;
160
+ data: Record<HostType, GrouperHostResult>;
161
+ };
162
+
163
+ type CoverInfo = {
164
+ file: string;
165
+ path: string;
166
+ size: number;
167
+ width: number;
168
+ height: number;
169
+ };
170
+ type SubtitleTrackInfo = {
171
+ file: string;
172
+ file_path: string;
173
+ size: number;
174
+ lang: string;
175
+ name: string;
176
+ title: string;
177
+ builtin: boolean;
178
+ source: {
179
+ file: string;
180
+ file_path: string;
181
+ size: number;
182
+ ext: string;
183
+ } | null;
184
+ };
185
+ type VideoTrackInfo = {
186
+ codec: string;
187
+ codec_name: string;
188
+ width: number;
189
+ height: number;
190
+ bandwidth: number;
191
+ average_bandwidth: number;
192
+ bitdepth?: number;
193
+ bitrate?: number;
194
+ framerate?: number;
195
+ label: string;
196
+ m3u8: M3U8Manifest;
197
+ m3u8_path: string;
198
+ };
199
+ type VideoThumbnailInfo = {
200
+ row: number;
201
+ col: number;
202
+ width: number;
203
+ height: number;
204
+ tile_list: {
205
+ file: string;
206
+ file_path: string;
207
+ size: number;
208
+ }[];
209
+ sprite_list: {
210
+ file: string;
211
+ st: number;
212
+ et: number;
213
+ x: number;
214
+ y: number;
215
+ w: number;
216
+ h: number;
217
+ }[];
218
+ };
219
+ type AudioTrackQualityConfig = {
220
+ need: boolean;
221
+ codec: string;
222
+ channels: number;
223
+ };
224
+ type AudioTrackConfig = {
225
+ adapt: AudioTrackQualityConfig;
226
+ high: AudioTrackQualityConfig;
227
+ };
228
+ type AudioTrackQualityInfo = {
229
+ codec: string;
230
+ codec_name: string;
231
+ lossless: boolean;
232
+ channels: number;
233
+ language: string;
234
+ order: number;
235
+ size: number;
236
+ m3u8: M3U8Manifest;
237
+ m3u8_path: string;
238
+ bandwidth: number;
239
+ average_bandwidth: number;
240
+ };
241
+ type AudioTrackInfo = {
242
+ high?: AudioTrackQualityInfo;
243
+ adapt: AudioTrackQualityInfo;
244
+ };
245
+ type AudioCoverInfo = {
246
+ file: string;
247
+ path: string;
248
+ size: number;
249
+ width: number;
250
+ height: number;
251
+ };
252
+
253
+ type EncodePrepareResult = UploadProgressData;
254
+
255
+ type SourceMeta = {
256
+ head: string;
257
+ };
258
+ type SourceHost = {
259
+ download: Required<MapInfo>;
260
+ parts: PartItem[];
261
+ };
262
+ type SourceResult = {
263
+ meta: SourceMeta;
264
+ data: Record<HostType, SourceHost>;
265
+ };
266
+
267
+ type TxtMeta = {
268
+ pad: number;
269
+ pages: number;
270
+ };
271
+ type TxtHost = {
272
+ cache: MapInfo;
273
+ entrance: MapInfo;
274
+ parts: PartItem[];
275
+ };
276
+ type TxtResult = {
277
+ meta: TxtMeta;
278
+ data: Record<HostType, TxtHost>;
279
+ };
280
+
281
+ type EncodeManifestMediaItem = {
282
+ audios: ManifestAudioItem[];
283
+ videos: ManifestVideoItem[];
284
+ thumbnail: ManifestThumbnailInfo;
285
+ cover: ManifestCoverInfo;
286
+ subtitles: {
287
+ uuid: string;
288
+ builtin: boolean;
289
+ end: number;
290
+ file: string;
291
+ lang: string;
292
+ size: number;
293
+ source?: {
294
+ end: number;
295
+ file: string;
296
+ size: number;
297
+ start: number;
298
+ ext: string;
299
+ };
300
+ start: number;
301
+ name: string;
302
+ title: string;
303
+ }[];
304
+ };
305
+ type EncodeResult = {
306
+ meta: ManifestMetaInfo;
307
+ } & Record<HostType, {
308
+ max_size: number;
309
+ cache?: CacheInfo;
310
+ source?: ManifestSourceInfo;
311
+ media?: EncodeManifestMediaItem;
312
+ img?: ManifestImgInfo;
313
+ txt?: ManifestTxtInfo;
314
+ parts: (PartItem & {
315
+ source: boolean;
316
+ preview: boolean;
317
+ })[];
318
+ }>;
319
+ type EncodeWorkerPercent = {
320
+ id: number;
321
+ type: 'percent';
322
+ data: {
323
+ step: UploadProgress;
324
+ percent: number;
325
+ };
326
+ };
327
+ type EncodeWorkerMessage = EncodeWorkerPercent | WorkerError;
328
+
329
+ type UploadInputItem = {
330
+ filename: string;
331
+ filepath: string;
332
+ filesize: number;
333
+ local_btime: number;
334
+ local_ctime: number;
335
+ local_mtime: number;
336
+ };
337
+ type UploadWorkerPercent = {
338
+ id: number;
339
+ type: 'percent';
340
+ data: {
341
+ part_id: number;
342
+ host_type: HostType;
343
+ percent: number;
344
+ };
345
+ };
346
+ type UploadWorkerMessage = UploadWorkerPercent | WorkerError;
347
+
348
+ export type { AudioCoverInfo, AudioTrackConfig, AudioTrackInfo, AudioTrackQualityConfig, AudioTrackQualityInfo, CoverInfo, EncodeManifestMediaItem, EncodePrepareResult, EncodeResult, EncodeWorkerMessage, EncodeWorkerPercent, GrouperAudioItem, GrouperAudioMeta, GrouperCoverInfo, GrouperHostResult, GrouperMeta, GrouperPartItem, GrouperQualityAudioItem, GrouperResult, GrouperSubtitleItem, GrouperThumbnailInfo, GrouperVideoItem, GrouperVideoMeta, ImgHost, ImgMeta, ImgResult, MapInfo, PartItem, SourceHost, SourceMeta, SourceResult, SubtitleTrackInfo, TxtHost, TxtMeta, TxtResult, UploadInputItem, UploadWorkerMessage, UploadWorkerPercent, VideoThumbnailInfo, VideoTrackInfo, WorkerError };
@@ -0,0 +1,348 @@
1
+ import { CacheInfo, HostType, UploadProgressData, ManifestAudioItem, ManifestVideoItem, ManifestThumbnailInfo, ManifestCoverInfo, ManifestMetaInfo, ManifestSourceInfo, ManifestImgInfo, ManifestTxtInfo, UploadProgress } from '@soga/types';
2
+ export { UploadProgress } from '@soga/types';
3
+ import { M3U8Manifest } from '@soga/m3u8';
4
+
5
+ type WorkerError = {
6
+ id: number;
7
+ type: 'error';
8
+ data: {
9
+ code: number;
10
+ message: string;
11
+ cause?: string;
12
+ stack?: string;
13
+ };
14
+ };
15
+
16
+ type MapInfo = {
17
+ id?: string;
18
+ file: string;
19
+ start: number;
20
+ end: number;
21
+ };
22
+ type PartItem = {
23
+ start: number;
24
+ end: number;
25
+ size: number;
26
+ file: string;
27
+ path: string;
28
+ index?: number;
29
+ md4?: string;
30
+ md5?: string;
31
+ sha1?: string;
32
+ };
33
+
34
+ type ImgMeta = {
35
+ size: number;
36
+ width: number;
37
+ height: number;
38
+ t_width: number;
39
+ t_height: number;
40
+ t_size: number;
41
+ };
42
+ type ImgHost = {
43
+ img: {
44
+ preview: CacheInfo[];
45
+ };
46
+ cache: CacheInfo;
47
+ parts: PartItem[];
48
+ };
49
+ type ImgResult = {
50
+ meta: ImgMeta;
51
+ data: Record<HostType, ImgHost>;
52
+ };
53
+
54
+ type GrouperFileInfo = {
55
+ id: string;
56
+ file: string;
57
+ size: number;
58
+ start: number;
59
+ end: number;
60
+ hash?: string;
61
+ };
62
+ type GrouperVideoItem = {
63
+ label: string;
64
+ average_band: number;
65
+ band: number;
66
+ codec: string;
67
+ codec_name: string;
68
+ framerate: number;
69
+ bitdepth: number;
70
+ width: number;
71
+ height: number;
72
+ } & GrouperFileInfo;
73
+ type GrouperQualityAudioItem = {
74
+ average_band: number;
75
+ band: number;
76
+ channels: number;
77
+ codec: string;
78
+ codec_name: string;
79
+ language: string;
80
+ order: number;
81
+ } & GrouperFileInfo;
82
+ type GrouperAudioItem = GrouperQualityAudioItem & {
83
+ average_band: number;
84
+ band: number;
85
+ channels: number;
86
+ codec: string;
87
+ codec_name: string;
88
+ language: string;
89
+ order: number;
90
+ high?: GrouperQualityAudioItem;
91
+ };
92
+ type GrouperThumbnailInfo = {
93
+ row: number;
94
+ col: number;
95
+ width: number;
96
+ height: number;
97
+ } & GrouperFileInfo;
98
+ type GrouperCoverInfo = {
99
+ id: string;
100
+ width: number;
101
+ height: number;
102
+ } & GrouperFileInfo;
103
+ type GrouperPartItem = PartItem;
104
+ type GrouperSubtitleItem = {
105
+ uuid: string;
106
+ builtin: boolean;
107
+ end: number;
108
+ file: string;
109
+ lang: string;
110
+ size: number;
111
+ source?: {
112
+ end: number;
113
+ file: string;
114
+ size: number;
115
+ start: number;
116
+ ext: string;
117
+ };
118
+ start: number;
119
+ name: string;
120
+ title: string;
121
+ };
122
+ type GrouperHostResult = {
123
+ subtitles: GrouperSubtitleItem[];
124
+ audios: GrouperAudioItem[];
125
+ videos: GrouperVideoItem[];
126
+ thumbnail: GrouperThumbnailInfo;
127
+ cover: GrouperCoverInfo;
128
+ parts: GrouperPartItem[];
129
+ cache: CacheInfo;
130
+ };
131
+ type GrouperAudioMeta = {
132
+ channels: number;
133
+ codec: string;
134
+ codec_name: string;
135
+ duration: number;
136
+ lossless: boolean;
137
+ high?: {
138
+ channels: number;
139
+ codec: string;
140
+ codec_name: string;
141
+ lossless: boolean;
142
+ };
143
+ };
144
+ type GrouperVideoMeta = {
145
+ bitdepth: number;
146
+ codec: string;
147
+ codec_name: string;
148
+ duration: number;
149
+ framerate: number;
150
+ height: number;
151
+ label: string;
152
+ width: number;
153
+ };
154
+ type GrouperMeta = {
155
+ audios: GrouperAudioMeta[];
156
+ videos: GrouperVideoMeta[];
157
+ };
158
+ type GrouperResult = {
159
+ meta: GrouperMeta;
160
+ data: Record<HostType, GrouperHostResult>;
161
+ };
162
+
163
+ type CoverInfo = {
164
+ file: string;
165
+ path: string;
166
+ size: number;
167
+ width: number;
168
+ height: number;
169
+ };
170
+ type SubtitleTrackInfo = {
171
+ file: string;
172
+ file_path: string;
173
+ size: number;
174
+ lang: string;
175
+ name: string;
176
+ title: string;
177
+ builtin: boolean;
178
+ source: {
179
+ file: string;
180
+ file_path: string;
181
+ size: number;
182
+ ext: string;
183
+ } | null;
184
+ };
185
+ type VideoTrackInfo = {
186
+ codec: string;
187
+ codec_name: string;
188
+ width: number;
189
+ height: number;
190
+ bandwidth: number;
191
+ average_bandwidth: number;
192
+ bitdepth?: number;
193
+ bitrate?: number;
194
+ framerate?: number;
195
+ label: string;
196
+ m3u8: M3U8Manifest;
197
+ m3u8_path: string;
198
+ };
199
+ type VideoThumbnailInfo = {
200
+ row: number;
201
+ col: number;
202
+ width: number;
203
+ height: number;
204
+ tile_list: {
205
+ file: string;
206
+ file_path: string;
207
+ size: number;
208
+ }[];
209
+ sprite_list: {
210
+ file: string;
211
+ st: number;
212
+ et: number;
213
+ x: number;
214
+ y: number;
215
+ w: number;
216
+ h: number;
217
+ }[];
218
+ };
219
+ type AudioTrackQualityConfig = {
220
+ need: boolean;
221
+ codec: string;
222
+ channels: number;
223
+ };
224
+ type AudioTrackConfig = {
225
+ adapt: AudioTrackQualityConfig;
226
+ high: AudioTrackQualityConfig;
227
+ };
228
+ type AudioTrackQualityInfo = {
229
+ codec: string;
230
+ codec_name: string;
231
+ lossless: boolean;
232
+ channels: number;
233
+ language: string;
234
+ order: number;
235
+ size: number;
236
+ m3u8: M3U8Manifest;
237
+ m3u8_path: string;
238
+ bandwidth: number;
239
+ average_bandwidth: number;
240
+ };
241
+ type AudioTrackInfo = {
242
+ high?: AudioTrackQualityInfo;
243
+ adapt: AudioTrackQualityInfo;
244
+ };
245
+ type AudioCoverInfo = {
246
+ file: string;
247
+ path: string;
248
+ size: number;
249
+ width: number;
250
+ height: number;
251
+ };
252
+
253
+ type EncodePrepareResult = UploadProgressData;
254
+
255
+ type SourceMeta = {
256
+ head: string;
257
+ };
258
+ type SourceHost = {
259
+ download: Required<MapInfo>;
260
+ parts: PartItem[];
261
+ };
262
+ type SourceResult = {
263
+ meta: SourceMeta;
264
+ data: Record<HostType, SourceHost>;
265
+ };
266
+
267
+ type TxtMeta = {
268
+ pad: number;
269
+ pages: number;
270
+ };
271
+ type TxtHost = {
272
+ cache: MapInfo;
273
+ entrance: MapInfo;
274
+ parts: PartItem[];
275
+ };
276
+ type TxtResult = {
277
+ meta: TxtMeta;
278
+ data: Record<HostType, TxtHost>;
279
+ };
280
+
281
+ type EncodeManifestMediaItem = {
282
+ audios: ManifestAudioItem[];
283
+ videos: ManifestVideoItem[];
284
+ thumbnail: ManifestThumbnailInfo;
285
+ cover: ManifestCoverInfo;
286
+ subtitles: {
287
+ uuid: string;
288
+ builtin: boolean;
289
+ end: number;
290
+ file: string;
291
+ lang: string;
292
+ size: number;
293
+ source?: {
294
+ end: number;
295
+ file: string;
296
+ size: number;
297
+ start: number;
298
+ ext: string;
299
+ };
300
+ start: number;
301
+ name: string;
302
+ title: string;
303
+ }[];
304
+ };
305
+ type EncodeResult = {
306
+ meta: ManifestMetaInfo;
307
+ } & Record<HostType, {
308
+ max_size: number;
309
+ cache?: CacheInfo;
310
+ source?: ManifestSourceInfo;
311
+ media?: EncodeManifestMediaItem;
312
+ img?: ManifestImgInfo;
313
+ txt?: ManifestTxtInfo;
314
+ parts: (PartItem & {
315
+ source: boolean;
316
+ preview: boolean;
317
+ })[];
318
+ }>;
319
+ type EncodeWorkerPercent = {
320
+ id: number;
321
+ type: 'percent';
322
+ data: {
323
+ step: UploadProgress;
324
+ percent: number;
325
+ };
326
+ };
327
+ type EncodeWorkerMessage = EncodeWorkerPercent | WorkerError;
328
+
329
+ type UploadInputItem = {
330
+ filename: string;
331
+ filepath: string;
332
+ filesize: number;
333
+ local_btime: number;
334
+ local_ctime: number;
335
+ local_mtime: number;
336
+ };
337
+ type UploadWorkerPercent = {
338
+ id: number;
339
+ type: 'percent';
340
+ data: {
341
+ part_id: number;
342
+ host_type: HostType;
343
+ percent: number;
344
+ };
345
+ };
346
+ type UploadWorkerMessage = UploadWorkerPercent | WorkerError;
347
+
348
+ export type { AudioCoverInfo, AudioTrackConfig, AudioTrackInfo, AudioTrackQualityConfig, AudioTrackQualityInfo, CoverInfo, EncodeManifestMediaItem, EncodePrepareResult, EncodeResult, EncodeWorkerMessage, EncodeWorkerPercent, GrouperAudioItem, GrouperAudioMeta, GrouperCoverInfo, GrouperHostResult, GrouperMeta, GrouperPartItem, GrouperQualityAudioItem, GrouperResult, GrouperSubtitleItem, GrouperThumbnailInfo, GrouperVideoItem, GrouperVideoMeta, ImgHost, ImgMeta, ImgResult, MapInfo, PartItem, SourceHost, SourceMeta, SourceResult, SubtitleTrackInfo, TxtHost, TxtMeta, TxtResult, UploadInputItem, UploadWorkerMessage, UploadWorkerPercent, VideoThumbnailInfo, VideoTrackInfo, WorkerError };
package/dist/index.js ADDED
@@ -0,0 +1 @@
1
+ var e,r=Object.defineProperty,t=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,a=Object.prototype.hasOwnProperty,p={};((e,t)=>{for(var o in t)r(e,o,{get:t[o],enumerable:!0})})(p,{UploadProgress:()=>l.UploadProgress}),module.exports=(e=p,((e,p,l,n)=>{if(p&&"object"==typeof p||"function"==typeof p)for(let s of o(p))a.call(e,s)||s===l||r(e,s,{get:()=>p[s],enumerable:!(n=t(p,s))||n.enumerable});return e})(r({},"__esModule",{value:!0}),e));var l=require("@soga/types");
package/dist/index.mjs ADDED
@@ -0,0 +1 @@
1
+ import{UploadProgress as o}from"@soga/types";export{o as UploadProgress};
package/package.json ADDED
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "@soga/node-types",
3
+ "version": "1.0.0",
4
+ "publishConfig": {
5
+ "access": "public"
6
+ },
7
+ "description": "",
8
+ "main": "dist/index.js",
9
+ "types": "dist/index.d.ts",
10
+ "module": "./dist/index.mjs",
11
+ "files": [
12
+ "dist"
13
+ ],
14
+ "scripts": {
15
+ "build": "rimraf dist && tsup src/index.ts --format cjs,esm --dts --minify terser",
16
+ "prepublishOnly": "npm run build"
17
+ },
18
+ "keywords": [],
19
+ "author": "",
20
+ "license": "ISC",
21
+ "devDependencies": {
22
+ "@soga/typescript-config": "latest",
23
+ "rimraf": "^6.0.1",
24
+ "terser": "^5.43.1",
25
+ "tsup": "^8.5.0",
26
+ "typescript": "^5.8.3"
27
+ },
28
+ "dependencies": {
29
+ "@soga/types": "latest",
30
+ "@soga/m3u8": "latest"
31
+ }
32
+ }