@encode42/nbs.js v5.0.2
NBS.js
A versatile API for reading, manipulating, and writing OpenNBS files, inspired by NBSEditor and NBS4j.
It's cleanroom, too! No required dependencies!
š§ Including
!TIP When using
jsdelivr
links, it's recommended to use versioned links! (e.g.@encode42/nbs.js@3.0.0
)!WARNING
3.0.0 is not the latest version of NBS.js! The above is just an example.
š Browser
<script src="https://cdn.jsdelivr.net/npm/@encode42/nbs.js"></script>
Minified: https://cdn.jsdelivr.net/npm/@encode42/nbs.js/dist/umd.min.js
š¦ Module & Deno
import { Song } from "https://cdn.jsdelivr.net/npm/@encode42/nbs.js/dist/esm.js";
Minified: https://cdn.jsdelivr.net/npm/@encode42/nbs.js/dist/esm.min.js
š¢ Node.js
Add the @encode42/nbs.js
package from NPM using the package manager of your choice.
import { Song } from "@encode42/nbs.js"; // ESM (TypeScript, Vite, etc.)
const { Song } = require("@encode42/nbs.js"); // CJS (vanilla Node.js)
ā FAQ
Install NBS.js for your platform, then refer to the documentation and examples below.
<input type="file" id="file-input">
<script src="https://cdn.jsdelivr.net/npm/@encode42/nbs.js"></script> <!-- Import NBS.js -->
<script>
window.addEventListener("load", () => {
const input = document.getElementById("file-input");
// Initialize file input
input.addEventListener("change", () => {
const songFile = input.files[0]; // Read the selected NBS file
songFile.arrayBuffer().then(buffer => { // Convert it into an ArrayBuffer
const song = NBSjs.fromArrayBuffer(buffer); // Parse the buffer
console.dir(song);
});
});
});
</script>
<input type="file" id="file-input">
<script src="index.js" type="module">
import { fromArrayBuffer } from "https://cdn.jsdelivr.net/npm/@encode42/nbs.js/dist/esm.js"
window.addEventListener("load", () => {
const input = document.getElementById("file-input");
// Initialize file input
input.addEventListener("change", () => {
const songFile = input.files[0]; // Read the selected NBS file
songFile.arrayBuffer().then(buffer => { // Convert it into an ArrayBuffer
const song = fromArrayBuffer(buffer); // Parse the buffer
console.dir(song);
});
});
});
// ESM (TypeScript, Vite, etc.)
import { readFileSync } from "node:fs";
import { fromArrayBuffer } from "@encode42/nbs.js";
// CJS (vanilla Node.js)
const { readFileSync } = require("fs");
const { fromArrayBuffer } = require("@encode42/nbs.js");
const songFile = readFileSync("song.nbs"); // Read the selected NBS file
const buffer = new Uint8Array(songFile).buffer; // Convert it into an ArrayBuffer
const song = fromArrayBuffer(buffer); // Parse the buffer
console.dir(song);
import { fromArrayBuffer } from "https://cdn.jsdelivr.net/npm/@encode42/nbs.js/dist/esm.js";
const songFile = await Deno.readFile("song.nbs"); // Read the selected NBS file
const buffer = new Uint8Array(songFile).buffer; // Convert it into an ArrayBuffer
const song = fromArrayBuffer(buffer); // Parse the buffer
console.dir(song);
Yes! A demo site is located here. It serves as an example of how to read NBS files, allows you to edit the song structure, and plays the result through the browser.
This repository also contains tests that could be used as examples.
I don't create GitHub releases, but I do keep a changelog here!
šØ Building
Ensure PNPM and Node.js are installed.
- Enter the directory containing the NBS.js source code in your terminal.
- Install the build dependencies via
pnpm install
. - Run
pnpm run build
to generate the Node.js and browser modules.
Generated files:
dist/cjs.js
: CommonJS bundle, used by Node.js.dist/esm.js
: ES module for browser script modules.dist/umd.js
: UMD bundle for browser scripts.dist/*.min.js
: Minified bundle.build/
: Built ES2021 files.
11 months ago
11 months ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago