|
6 | 6 | ## Project context |
7 | 7 |
|
8 | 8 | This is a public pnpm monorepo (https://github.com/privaloops/hevc.js) shipping |
9 | | -two npm packages under the `@hevcjs` scope: |
| 9 | +npm packages under the `@hevcjs` scope: |
10 | 10 |
|
11 | 11 | - `packages/core/` → `@hevcjs/core` — HEVC WASM decoder + MSE intercept + |
12 | | - HEVC → H.264 transcode pipeline |
| 12 | + HEVC → H.264 transcode pipeline (single- and two-track fMP4 muxing) |
13 | 13 | - `packages/dashjs-plugin/` → `@hevcjs/dashjs-plugin` — dash.js plugin |
14 | | - consuming `@hevcjs/core` to play HEVC streams in browsers without native |
15 | | - HEVC support |
| 14 | +- `packages/shaka-plugin/` → `@hevcjs/shaka-plugin` — Shaka Player plugin |
| 15 | + (registers a `Transmuxer` for `hev1`/`hvc1`) |
| 16 | +- `packages/hlsjs-plugin/` → `@hevcjs/hlsjs-plugin` — hls.js plugin |
16 | 17 |
|
17 | | -The HEVC decoder lives in `src/` (C++ compiled to WASM via Emscripten); the |
18 | | -JS packages are TypeScript bundled with tsup. |
| 18 | +Each plugin consumes `@hevcjs/core` to play HEVC streams in browsers without |
| 19 | +native HEVC support. The HEVC decoder lives in `src/` (C++ compiled to WASM |
| 20 | +via Emscripten); the JS packages are TypeScript bundled with tsup. |
19 | 21 |
|
20 | 22 | Every commit, PR, tag, release, and npm publish is publicly visible. Treat |
21 | 23 | each git action accordingly. |
@@ -75,11 +77,16 @@ manage versioning and publishing. |
75 | 77 | - Any new pure JS/TS utility added to `packages/*/src/` SHOULD ship with |
76 | 78 | tests in a colocated `*.test.ts` file. Vitest setup lives in |
77 | 79 | `packages/core/`. |
78 | | -- C++ decoder changes MUST keep `pnpm test` green (102+ unit tests + |
| 80 | +- Run `pnpm -r typecheck` before pushing, not just a source-only build: |
| 81 | + CI runs `tsc --noEmit` over sources **and** `*.test.ts` files, and |
| 82 | + `vitest run` does not typecheck. The TS target is ES2020 (no |
| 83 | + `Array.prototype.at`, etc.). |
| 84 | +- C++ decoder changes MUST keep `pnpm test` green (146+ unit tests + |
79 | 85 | pixel-perfect oracle suite). Do not skip oracle tests. |
80 | 86 | - E2E (`pnpm test:e2e`) is not in CI yet. Run it locally before merging |
81 | | - any change touching `mse-intercept.ts`, `segment-transcoder.ts`, or the |
82 | | - `dashjs-plugin` glue code. |
| 87 | + any change touching `mse-intercept.ts`, `segment-transcoder.ts`, |
| 88 | + `fmp4-muxer.ts`, `fmp4-demuxer.ts`, or the `dashjs-plugin` / |
| 89 | + `shaka-plugin` / `hlsjs-plugin` glue code. |
83 | 90 |
|
84 | 91 | ## Security |
85 | 92 |
|
|
0 commit comments