webamp/packages/ani-cursor
Jordan Eldredge 0d53884fde Migrate from yarn to pnpm
This comprehensive migration includes:

### Configuration Updates
- Updated root package.json with pnpm workspace configuration
- Added packageManager field and pnpm overrides for graphql version
- Updated GitHub Actions workflows (.github/workflows/ci.yml, code-size.yml)
- Updated Netlify configuration (netlify.toml)
- Updated deployment script (deploy.sh)

### Documentation Updates
- Updated all README files to use pnpm instead of yarn
- Updated installation and build instructions across packages:
  - packages/webamp/README.md
  - packages/webamp-modern/README.md
  - packages/webamp-docs/README.md
  - packages/ani-cursor/README.md
  - packages/webamp/demo/readme.md

### Lock File Migration
- Removed yarn.lock
- Generated pnpm-lock.yaml preserving exact dependency versions
- Moved resolutions from skin-database package.json to root pnpm overrides
- Created pnpm-workspace.yaml for optimized workspace configuration

### CI/CD Updates
- Updated all yarn commands to use pnpm equivalents
- Changed yarn workspace commands to pnpm --filter syntax
- Updated cache keys to use pnpm-lock.yaml instead of yarn.lock
- Added pnpm/action-setup for GitHub Actions

### Validation
- Tested builds for webamp, webamp-modern, ani-cursor, webamp-docs
- Tested installation and linting for skin-database
- Verified dependency resolution consistency
- Confirmed all scripts work with pnpm

All package versions remain identical to yarn.lock, ensuring no breaking changes.
2025-07-06 13:20:28 -07:00
..
src Avoid blowing the call stack when parsing larg cursor files 2021-01-21 20:10:35 -08:00
.gitignore Pull ani-cursor out into its own package (#1040) 2020-12-09 22:47:50 -08:00
babel.config.js Pull ani-cursor out into its own package (#1040) 2020-12-09 22:47:50 -08:00
CHANGELOG.md Avoid blowing the call stack when parsing larg cursor files 2021-01-21 20:10:35 -08:00
package.json Typescript upgrades 2024-03-02 09:28:36 -08:00
README.md Migrate from yarn to pnpm 2025-07-06 13:20:28 -07:00
tsconfig.json Fix deploy of ani-cursor 2020-12-10 19:30:17 -08:00

ani-cursor

A library for rendering Windows Animated Cursor files (.ani) in the browser by parsing out the individual frames and constructing a CSS animation.

Built to support .ani files in Winamp skins for https://webamp.org.

I wrote a blog post about this library which you can find here.

Install

npm install ani-cursor

Usage Example

import {convertAniBinaryToCSS} from 'ani-cursor';

async function applyCursor(selector, aniUrl) {
    const response = await fetch(aniUrl);
    const data = new Uint8Array(await response.arrayBuffer());

    const style = document.createElement('style');
    style.innerText = convertAniBinaryToCSS(selector, data);

    document.head.appendChild(style);
}

const h1 = document.createElement('h1');
h1.id = 'pizza';
h1.innerText = 'Pizza Time!';
document.body.appendChild(h1);

applyCursor("#pizza", "https://archive.org/cors/tucows_169906_Pizza_cursor/pizza.ani");

Try the Live Demo on CodeSandbox.