jassub 1.8.6 → 2.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.
@@ -0,0 +1,215 @@
1
+ /* eslint-disable camelcase */
2
+ import { finalizer } from 'abslink';
3
+ import { expose } from 'abslink/w3c';
4
+ import WASM from '../wasm/jassub-worker.js';
5
+ import { libassYCbCrMap, read_, readAsync, _applyKeys } from './util';
6
+ import { colorMatrixConversionMap, WebGPURenderer } from './webgpu-renderer';
7
+ export class ASSRenderer {
8
+ _offCanvas;
9
+ _wasm;
10
+ _subtitleColorSpace;
11
+ _videoColorSpace;
12
+ _malloc;
13
+ _gpurender = new WebGPURenderer();
14
+ debug = false;
15
+ useLocalFonts = false;
16
+ _availableFonts = {};
17
+ _fontMap = {};
18
+ _fontId = 0;
19
+ _ready;
20
+ _getFont;
21
+ constructor(data, getFont) {
22
+ this._availableFonts = data.availableFonts;
23
+ this.debug = data.debug;
24
+ this.useLocalFonts = data.useLocalFonts;
25
+ this._getFont = getFont;
26
+ // hack, we want custom WASM URLs
27
+ const _fetch = globalThis.fetch;
28
+ globalThis.fetch = _ => _fetch(data.wasmUrl);
29
+ // TODO: abslink doesnt support transferables yet
30
+ const handleMessage = ({ data }) => {
31
+ if (data.name === 'offscreenCanvas') {
32
+ this._offCanvas = data.ctrl;
33
+ this._gpurender.setCanvas(this._offCanvas, this._offCanvas.width, this._offCanvas.height);
34
+ removeEventListener('message', handleMessage);
35
+ }
36
+ };
37
+ addEventListener('message', handleMessage);
38
+ this._ready = WASM().then(Module => {
39
+ // eslint-disable-next-line @typescript-eslint/unbound-method
40
+ this._malloc = Module._malloc;
41
+ const fallbackFont = data.fallbackFont.toLowerCase();
42
+ this._wasm = new Module.JASSUB(data.width, data.height, fallbackFont);
43
+ this._wasm.setThreads(Math.min(Math.max(1, navigator.hardwareConcurrency - 2), 8));
44
+ if (fallbackFont)
45
+ this._findAvailableFonts(fallbackFont);
46
+ const subContent = data.subContent ?? read_(data.subUrl);
47
+ for (const font of data.fonts)
48
+ this._asyncWrite(font);
49
+ this._wasm.createTrackMem(subContent);
50
+ this._processAvailableFonts(subContent);
51
+ this._subtitleColorSpace = libassYCbCrMap[this._wasm.trackColorSpace];
52
+ if (data.libassMemoryLimit > 0 || data.libassGlyphLimit > 0) {
53
+ this._wasm.setMemoryLimits(data.libassGlyphLimit || 0, data.libassMemoryLimit || 0);
54
+ }
55
+ this._checkColorSpace();
56
+ });
57
+ }
58
+ ready() {
59
+ return this._ready;
60
+ }
61
+ addFont(fontOrURL) {
62
+ this._asyncWrite(fontOrURL);
63
+ }
64
+ createEvent(event) {
65
+ _applyKeys(event, this._wasm.getEvent(this._wasm.allocEvent()));
66
+ }
67
+ getEvents() {
68
+ const events = [];
69
+ for (let i = 0; i < this._wasm.getEventCount(); i++) {
70
+ const { Start, Duration, ReadOrder, Layer, Style, MarginL, MarginR, MarginV, Name, Text, Effect } = this._wasm.getEvent(i);
71
+ events.push({ Start, Duration, ReadOrder, Layer, Style, MarginL, MarginR, MarginV, Name, Text, Effect });
72
+ }
73
+ return events;
74
+ }
75
+ setEvent(event, index) {
76
+ _applyKeys(event, this._wasm.getEvent(index));
77
+ }
78
+ removeEvent(index) {
79
+ this._wasm.removeEvent(index);
80
+ }
81
+ createStyle(style) {
82
+ const alloc = this._wasm.getStyle(this._wasm.allocStyle());
83
+ _applyKeys(style, alloc);
84
+ return alloc;
85
+ }
86
+ getStyles() {
87
+ const styles = [];
88
+ for (let i = 0; i < this._wasm.getStyleCount(); i++) {
89
+ // eslint-disable-next-line @typescript-eslint/naming-convention
90
+ const { Name, FontName, FontSize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding, treat_fontname_as_pattern, Blur, Justify } = this._wasm.getStyle(i);
91
+ styles.push({ Name, FontName, FontSize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding, treat_fontname_as_pattern, Blur, Justify });
92
+ }
93
+ return styles;
94
+ }
95
+ setStyle(style, index) {
96
+ _applyKeys(style, this._wasm.getStyle(index));
97
+ }
98
+ removeStyle(index) {
99
+ this._wasm.removeStyle(index);
100
+ }
101
+ styleOverride(style) {
102
+ this._wasm.styleOverride(this.createStyle(style));
103
+ }
104
+ disableStyleOverride() {
105
+ this._wasm.disableStyleOverride();
106
+ }
107
+ setDefaultFont(fontName) {
108
+ this._wasm.setDefaultFont(fontName);
109
+ }
110
+ setTrack(content) {
111
+ this._wasm.createTrackMem(content);
112
+ this._processAvailableFonts(content);
113
+ this._subtitleColorSpace = libassYCbCrMap[this._wasm.trackColorSpace];
114
+ }
115
+ freeTrack() {
116
+ this._wasm.removeTrack();
117
+ }
118
+ setTrackByUrl(url) {
119
+ this.setTrack(read_(url));
120
+ }
121
+ _checkColorSpace() {
122
+ if (!this._subtitleColorSpace || !this._videoColorSpace)
123
+ return;
124
+ this._gpurender.setColorMatrix(colorMatrixConversionMap[this._subtitleColorSpace][this._videoColorSpace]);
125
+ }
126
+ _findAvailableFonts(font) {
127
+ font = font.trim().toLowerCase();
128
+ if (font[0] === '@')
129
+ font = font.substring(1);
130
+ if (this._fontMap[font])
131
+ return;
132
+ this._fontMap[font] = true;
133
+ if (!this._availableFonts[font]) {
134
+ if (this.useLocalFonts)
135
+ this._getFont(font);
136
+ }
137
+ else {
138
+ this._asyncWrite(this._availableFonts[font]);
139
+ }
140
+ }
141
+ _asyncWrite(font) {
142
+ if (typeof font === 'string') {
143
+ readAsync(font, fontData => {
144
+ this._allocFont(new Uint8Array(fontData));
145
+ }, console.error);
146
+ }
147
+ else {
148
+ this._allocFont(font);
149
+ }
150
+ }
151
+ // TODO: this should re-draw last frame!
152
+ _allocFont(uint8) {
153
+ const ptr = this._malloc(uint8.byteLength);
154
+ self.HEAPU8RAW.set(uint8, ptr);
155
+ this._wasm.addFont('font-' + (this._fontId++), ptr, uint8.byteLength);
156
+ this._wasm.reloadFonts();
157
+ }
158
+ _processAvailableFonts(content) {
159
+ if (!this._availableFonts)
160
+ return;
161
+ for (const { FontName } of this.getStyles()) {
162
+ this._findAvailableFonts(FontName);
163
+ }
164
+ const regex = /\\fn([^\\}]*?)[\\}]/g;
165
+ let matches;
166
+ while ((matches = regex.exec(content)) !== null) {
167
+ this._findAvailableFonts(matches[1]);
168
+ }
169
+ }
170
+ _canvas(width, height, videoWidth, videoHeight) {
171
+ if (this._offCanvas)
172
+ this._gpurender.setCanvas(this._offCanvas, width, height);
173
+ this._wasm.resizeCanvas(width, height, videoWidth, videoHeight);
174
+ }
175
+ [finalizer]() {
176
+ this._wasm.quitLibrary();
177
+ this._gpurender.destroy();
178
+ // @ts-expect-error force GC
179
+ this._wasm = null;
180
+ // @ts-expect-error force GC
181
+ this._gpurender = null;
182
+ this._availableFonts = {};
183
+ }
184
+ _draw(time, force = false) {
185
+ if (!this._offCanvas)
186
+ return;
187
+ const result = this._wasm.rawRender(time, Number(force));
188
+ if (this._wasm.changed === 0 && !force)
189
+ return;
190
+ const bitmaps = [];
191
+ for (let image = result, i = 0; i < this._wasm.count; image = image.next, ++i) {
192
+ // @ts-expect-error internal emsc types
193
+ bitmaps.push({
194
+ bitmap: image.bitmap,
195
+ color: image.color,
196
+ dst_x: image.dst_x,
197
+ dst_y: image.dst_y,
198
+ h: image.h,
199
+ stride: image.stride,
200
+ w: image.w
201
+ });
202
+ }
203
+ this._gpurender.render(bitmaps, self.HEAPU8RAW);
204
+ }
205
+ _setColorSpace(videoColorSpace) {
206
+ if (videoColorSpace === 'RGB')
207
+ return;
208
+ this._videoColorSpace = videoColorSpace;
209
+ this._checkColorSpace();
210
+ }
211
+ }
212
+ if (self.name === 'jassub-worker') {
213
+ expose(ASSRenderer);
214
+ }
215
+ //# sourceMappingURL=worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/worker/worker.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,IAAI,MAAM,0BAA0B,CAAA;AAE3C,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACrE,OAAO,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAwB5E,MAAM,OAAO,WAAW;IACtB,UAAU,CAAkB;IAC5B,KAAK,CAAS;IACd,mBAAmB,CAAiD;IACpE,gBAAgB,CAAoB;IACpC,OAAO,CAA2B;IAClC,UAAU,GAAG,IAAI,cAAc,EAAE,CAAA;IAEjC,KAAK,GAAG,KAAK,CAAA;IACb,aAAa,GAAG,KAAK,CAAA;IACrB,eAAe,GAAwC,EAAE,CAAA;IACzD,QAAQ,GAA4B,EAAE,CAAA;IACtC,OAAO,GAAG,CAAC,CAAA;IAEX,MAAM,CAAA;IACN,QAAQ,CAAA;IAER,YAAa,IAAU,EAAE,OAAwC;QAC/D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAA;QAC1C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACvB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAA;QACvC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;QAEvB,iCAAiC;QACjC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAA;QAC/B,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAE5C,iDAAiD;QACjD,MAAM,aAAa,GAAG,CAAC,EAAE,IAAI,EAAgB,EAAE,EAAE;YAC/C,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;gBACpC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAA;gBAC3B,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,UAAW,EAAE,IAAI,CAAC,UAAW,CAAC,KAAK,EAAE,IAAI,CAAC,UAAW,CAAC,MAAM,CAAC,CAAA;gBAC5F,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;YAC/C,CAAC;QACH,CAAC,CAAA;QACD,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;QAE1C,IAAI,CAAC,MAAM,GAAI,IAAI,EAA0B,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAC1D,6DAA6D;YAC7D,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAA;YAE7B,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAA;YACpD,IAAI,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;YACrE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,mBAAmB,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YAElF,IAAI,YAAY;gBAAE,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAA;YAExD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,IAAI,CAAC,MAAO,CAAC,CAAA;YAEzD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK;gBAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;YAErD,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAA;YACrC,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAA;YAEvC,IAAI,CAAC,mBAAmB,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;YAErE,IAAI,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC;gBAC5D,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,EAAE,IAAI,CAAC,iBAAiB,IAAI,CAAC,CAAC,CAAA;YACrF,CAAC;YACD,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACzB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,OAAO,CAAE,SAA8B;QACrC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;IAC7B,CAAC;IAED,WAAW,CAAE,KAAgB;QAC3B,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAE,CAAC,CAAA;IAClE,CAAC;IAED,SAAS;QACP,MAAM,MAAM,GAA8B,EAAE,CAAA;QAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YACpD,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAA;YAC3H,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;QAC1G,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,QAAQ,CAAE,KAAgB,EAAE,KAAa;QACvC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAE,CAAC,CAAA;IAChD,CAAC;IAED,WAAW,CAAE,KAAa;QACxB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;IAC/B,CAAC;IAED,WAAW,CAAE,KAAgB;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAE,CAAA;QAC3D,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QACxB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,SAAS;QACP,MAAM,MAAM,GAA8B,EAAE,CAAA;QAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YACtD,gEAAgE;YAC9D,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,yBAAyB,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAA;YAEnT,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,yBAAyB,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;QAClS,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,QAAQ,CAAE,KAAgB,EAAE,KAAa;QACvC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAE,CAAC,CAAA;IAChD,CAAC;IAED,WAAW,CAAE,KAAa;QACxB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;IAC/B,CAAC;IAED,aAAa,CAAE,KAAgB;QAC7B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAA;IACnD,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAA;IACnC,CAAC;IAED,cAAc,CAAE,QAAgB;QAC9B,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;IACrC,CAAC;IAED,QAAQ,CAAE,OAAe;QACvB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;QAClC,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAA;QAEpC,IAAI,CAAC,mBAAmB,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAE,CAAA;IACxE,CAAC;IAED,SAAS;QACP,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAA;IAC1B,CAAC;IAED,aAAa,CAAE,GAAW;QACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;IAC3B,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,gBAAgB;YAAE,OAAM;QAC/D,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,wBAAwB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAA;IAC3G,CAAC;IAED,mBAAmB,CAAE,IAAY;QAC/B,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAEhC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;YAAE,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QAE7C,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAM;QAE/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;QAE1B,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,IAAI,IAAI,CAAC,aAAa;gBAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAC7C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAE,CAAC,CAAA;QAC/C,CAAC;IACH,CAAC;IAED,WAAW,CAAE,IAAyB;QACpC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE;gBACzB,IAAI,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAA;YAC3C,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;QACnB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACvB,CAAC;IACH,CAAC;IAED,wCAAwC;IACxC,UAAU,CAAE,KAAiB;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;QAC1C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;QACrE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAA;IAC1B,CAAC;IAED,sBAAsB,CAAE,OAAe;QACrC,IAAI,CAAC,IAAI,CAAC,eAAe;YAAE,OAAM;QAEjC,KAAK,MAAM,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;YAC5C,IAAI,CAAC,mBAAmB,CAAC,QAAS,CAAC,CAAA;QACrC,CAAC;QAED,MAAM,KAAK,GAAG,sBAAsB,CAAA;QACpC,IAAI,OAAO,CAAA;QACX,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAChD,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,CAAA;QACvC,CAAC;IACH,CAAC;IAED,OAAO,CAAE,KAAa,EAAE,MAAc,EAAE,UAAkB,EAAE,WAAmB;QAC7E,IAAI,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;QAE9E,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA;IACjE,CAAC;IAED,CAAC,SAAS,CAAC;QACT,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAA;QACxB,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAA;QACzB,4BAA4B;QAC5B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACjB,4BAA4B;QAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;QACtB,IAAI,CAAC,eAAe,GAAG,EAAE,CAAA;IAC3B,CAAC;IAED,KAAK,CAAE,IAAY,EAAE,KAAK,GAAG,KAAK;QAChC,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAM;QAE5B,MAAM,MAAM,GAAc,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAE,CAAA;QACpE,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK;YAAE,OAAM;QAE9C,MAAM,OAAO,GAAgB,EAAE,CAAA;QAE/B,KAAK,IAAI,KAAK,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,IAAK,EAAE,EAAE,CAAC,EAAE,CAAC;YAC/E,uCAAuC;YACvC,OAAO,CAAC,IAAI,CAAC;gBACX,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,CAAC,EAAE,KAAK,CAAC,CAAC;gBACV,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,CAAC,EAAE,KAAK,CAAC,CAAC;aACX,CAAC,CAAA;QACJ,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;IACjD,CAAC;IAED,cAAc,CAAE,eAA0C;QACxD,IAAI,eAAe,KAAK,KAAK;YAAE,OAAM;QACrC,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAA;QACvC,IAAI,CAAC,gBAAgB,EAAE,CAAA;IACzB,CAAC;CACF;AAED,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;IAClC,MAAM,CAAC,WAAW,CAAC,CAAA;AACrB,CAAC"}
package/package.json CHANGED
@@ -1,14 +1,15 @@
1
1
  {
2
2
  "name": "jassub",
3
- "version": "1.8.6",
4
- "description": "libass Subtitle Renderer and Parser library for browsers",
5
- "main": "src/jassub.js",
3
+ "version": "2.0.0",
4
+ "description": "libass subtitle renderer for modern browsers",
5
+ "main": "dist/jassub.js",
6
6
  "type": "module",
7
7
  "files": [
8
- "dist/COPYRIGHT",
9
- "dist/default.woff2",
10
- "dist/jassub*",
11
- "src/jassub.js",
8
+ "dist/wasm/*",
9
+ "dist/worker/*",
10
+ "dist/jassub.*",
11
+ "README.md",
12
+ "LICENSE",
12
13
  "index.d.ts"
13
14
  ],
14
15
  "repository": {
@@ -19,28 +20,32 @@
19
20
  "libass",
20
21
  "subtitle",
21
22
  "wasm",
22
- "emscripten"
23
+ "emscripten",
24
+ "ASS",
25
+ "WebAssembly",
26
+ "subtitles",
27
+ "webgpu",
28
+ "typescript"
23
29
  ],
24
30
  "author": "ThaUnknown",
25
- "contributors": [
26
- "SubtitlesOctopus Contributors"
27
- ],
28
31
  "license": "LGPL-2.1-or-later AND (FTL OR GPL-2.0-or-later) AND MIT AND MIT-Modern-Variant AND ISC AND NTP AND Zlib AND BSL-1.0",
29
32
  "bugs": {
30
33
  "url": "https://github.com/ThaUnknown/jassub/issues"
31
34
  },
32
35
  "homepage": "https://github.com/ThaUnknown/jassub",
33
36
  "dependencies": {
37
+ "abslink": "^1.1.6",
34
38
  "rvfc-polyfill": "^1.0.7"
35
39
  },
36
40
  "devDependencies": {
37
- "@types/emscripten": "^1.39.7",
38
- "terser": "^5.19.4",
39
- "vite": "^4.4.9",
40
- "vite-plugin-static-copy": "^0.17.0"
41
+ "@webgpu/types": "^0.1.68",
42
+ "eslint-config-standard-universal": "^1.0.9",
43
+ "typescript": "^5.2.2",
44
+ "vite": "^7.3.0"
41
45
  },
42
46
  "scripts": {
43
- "build": "node vite.build.js",
47
+ "build": "tsc --noCheck",
48
+ "dev": "vite",
44
49
  "docker:build": "docker build -t thaunknown/jassub-build .",
45
50
  "docker:run": "docker run -it --rm -v ${PWD}:/code --name thaunknown_jassub-build thaunknown/jassub-build:latest"
46
51
  }