npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@zuku/zwf

v0.1.1

Published

ZWF HTML5 game package specification, compiler and inspector for ZUKU Jump

Readme

ZWF2: HTML5 게임 패키지

@zuku/zwf는 HTML·JavaScript·CSS·WebAssembly와 로컬 자산이 담긴 ZIP을 ZUKU Jump용 .zwf 파일로 컴파일하고 검사합니다. 이 저장소의 코드는 실제로 동작하며, 파일 형식과 플레이어의 필수 실행 경계는 SPEC.md가 기준입니다.

배포 상태: npm 레지스트리에는 게시되지 않았습니다. 저장소를 내려받아 사용하세요. Node.js 22 이상이 필요합니다.

5분 시작하기

git clone https://github.com/zukuapp/zwf.git
cd zwf
npm ci
npm test

저장소의 작은 HTML 예제로 ZIP을 만들고 컴파일·검사할 수 있습니다. ZIP 안의 index.html은 최상위 경로에 놓입니다.

node --input-type=module -e "import { zipSync } from 'fflate'; import { readFileSync, writeFileSync } from 'node:fs'; writeFileSync('hello.zip', zipSync({ 'index.html': readFileSync('examples/hello/index.html') }))"
node src/cli.mjs compile hello.zip -o hello.zwf --title "Hello ZWF2"
node src/cli.mjs inspect hello.zwf

컴파일 명령은 기존 출력 파일을 덮어쓰지 않습니다. 다시 실행하려면 새 출력 경로를 지정하세요.

자신의 게임 패키징

  1. 브라우저에서 실행할 파일을 빌드합니다. Vite를 쓴다면 상대 경로로 자산을 찾도록 base: './'을 설정합니다.
  2. index.html과 필요한 스크립트·글꼴·이미지·미디어·데이터를 ZIP에 함께 넣습니다. 진입점은 ZIP 루트 또는 한 단계의 래퍼 디렉터리에 있어야 합니다.
  3. compile한 뒤 inspect로 매니페스트와 파일 목록을 확인합니다.
node src/cli.mjs compile game.zip -o game.zwf --title "My game"
node src/cli.mjs inspect game.zwf

JavaScript API도 제공합니다.

import { readFile } from 'node:fs/promises';
import { compileZip, inspectZwf } from '@zuku/zwf';

const zipBytes = await readFile('game.zip');
const { bytes, manifest } = await compileZip(zipBytes, { title: 'My game' });
const verified = await inspectZwf(bytes);
console.log(manifest.profile, verified.manifest.files.length);

위 패키지 이름으로 가져오려면 이 저장소를 로컬 패키지로 설치해야 합니다. src/format.mjs에서 직접 가져와도 됩니다. compileZip은 ZIP의 경로·파일 종류·크기·무결성을 검사하며, 업로드된 게임 코드를 서버에서 실행하지 않습니다.

형식과 실행 경계

이 컴파일러는 ZWF2만 출력합니다. 파일은 16바이트 ZWF2 헤더, JSON 매니페스트, ZIP으로 구성되며 profile: "html5-sandbox/2"를 사용합니다. 파일별 SHA-256은 손상을 탐지하지만 제작자 신원을 증명하지는 않습니다. 정확한 필드·한도·거부 조건은 형식 명세를 확인하세요.

.zwf는 자체 실행 파일이 아닙니다. 호환 플레이어는 사용 전에 파일을 검증하고, 게임을 불투명 출처의 제한된 iframe에 넣고, 응답 헤더 CSP와 브라우저 권한 제한을 적용해야 합니다. 이 경계는 CPU·GPU·메모리 사용량의 결정적 제한이나 완전한 네트워크 차단을 뜻하지 않습니다. 플레이어를 구현한다면 필수 동작을 그대로 따르세요.

ZUKBOX의 이전 ZWF1 바이너리도 .zwf 확장자를 사용하지만 다른 형식입니다. ZWF1의 파서와 초안 명세는 zukbox-runtime에 있습니다.

기여와 문서

변경 전후에 npm test를 실행하고, 파일 형식 또는 실행 경계를 바꾼다면 SPEC.md와 관련 테스트를 함께 갱신해 주세요. ZUKU 공개 개발 문서의 시작점은 조직 개발자 허브입니다.

이 저장소의 라이선스는 MIT입니다.