IKHSAN
EN Read in EnglishID

snapme

Publik
Branch
master
Commit terakhir
130fdb828 Oktober 2026

copy-mediapipe-wasm.mjs

Buka raw
import { copyFileSync, existsSync, mkdirSync, readdirSync, statSync } from "node:fs"
import path from "node:path"
import { fileURLToPath } from "node:url"

/* ARCHITECTURE §4 dan §8: Gesture Snap di-host sendiri, tanpa CDN. Berkas
   wasm-nya disalin dari paket yang versinya dikunci lockfile, bukan disimpan di
   git: enam berkas `node_modules/@mediapipe/tasks-vision/wasm/` (dua `.js` dan
   empat `.wasm`, sekitar 39 MB) tidak berubah antar versi paket, jadi
   menaruhnya di repo hanya menggandakan bobot klon tanpa menambah apa pun.

   Model gesture (`public/models/gesture_recognizer.task`) tetap di-commit: ia
   diunduh dari dokumentasi resmi Google dan tidak bisa dibuat ulang dari
   paket, jadi klon bersih harus tetap bisa menjalankan Gesture Snap luring.

   Idempoten: berkas tujuan yang ukurannya sama dengan sumber tidak disalin
   ulang, jadi `npm install` berulang tidak menyentuh mtime. Gagal dengan
   peringatan, bukan galat, bila paket MediaPipe tidak ada: tanpa paket itu,
   yang hilang hanyalah aset wasm, bukan seluruh pemasangan. */

const root = fileURLToPath(new URL("..", import.meta.url))
const sumber = path.join(root, "node_modules", "@mediapipe", "tasks-vision", "wasm")
const tujuan = path.join(root, "public", "mediapipe", "wasm")

if (!existsSync(sumber)) {
  console.warn(
    "copy-mediapipe-wasm: node_modules/@mediapipe/tasks-vision/wasm tidak ada, aset dilewati"
  )
  process.exit(0)
}

mkdirSync(tujuan, { recursive: true })

let disalin = 0
let dilewati = 0
for (const nama of readdirSync(sumber)) {
  const asal = path.join(sumber, nama)
  const akhir = path.join(tujuan, nama)
  if (!statSync(asal).isFile()) continue
  if (existsSync(akhir) && statSync(akhir).size === statSync(asal).size) {
    dilewati += 1
    continue
  }
  copyFileSync(asal, akhir)
  disalin += 1
}

console.log(
  `copy-mediapipe-wasm: ${disalin} berkas disalin, ${dilewati} sudah ada di public/mediapipe/wasm`
)
byte
1.939
baris
50
Jenis
mjs
Commit terakhir
28 Oktober 2026