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

@plasius/offline-cache

v0.1.9

Published

Browser offline cache helpers for Plasius progressive public sites and demo asset packs.

Readme

@plasius/offline-cache

npm version Build Status coverage License Code of Conduct Security Policy Changelog

Browser-side offline cache helpers for Plasius progressive public sites and demo asset packs.

The package stores responses in the browser CacheStorage API. It does not keep large model, buffer, texture, or route responses in JavaScript memory after warming completes.

Install

npm install @plasius/offline-cache

Usage

import {
  registerOfflineCacheWorker,
  warmAssetPack,
} from "@plasius/offline-cache";

await registerOfflineCacheWorker({
  workerUrl: "/offline-cache-worker.js",
  buildId: import.meta.env.VITE_GIT_COMMIT_SHA,
});

await warmAssetPack({
  id: "product-studio-eames",
  revision: "2026-06-29",
  urls: [
    "/api/gpu-demo/assets/product-studio/eames/Eames_Lounge_Chair_Ottoman.gltf",
  ],
  estimatedBytes: 12_000_000,
});

Cache Policy

Use classifyOfflineCacheRequest in service workers to keep cache decisions explicit. The default policy caches public GET requests only and rejects authenticated, mutating, or sensitive API paths.

Requests or responses containing the RFC 9111 Cache-Control: no-store directive are never stored or reused. The generated worker also removes legacy entries carrying that directive before serving them.

Runtime rollout inherits governance.rfc-compliance-remediation.enabled. Enabled consumers use the corrected worker; rollback disables the flag and restores the prior worker registration. No-store responses have no permissive fallback because retaining them would violate the origin's storage directive.

Validation

npm test
npm run typecheck
npm run build
npm run pack:check

Release integrity

CI keeps the administrative contributor registry outside Git and npm package artifacts using exact, case-normalised path checks. CI runs only for canonical repository branch pushes on Public CI - Quarantined with literal [self-hosted, Linux, X64] labels. Pull-request and manual triggers are absent. Both jobs check the repository and event, have bounded timeouts, persist no checkout credentials and disable package-manager caching. There is no hosted CI fallback or caller-selected runner. Clean installation, lint, types, runtime audit, build, 80% line coverage and final package-manifest checks remain required. Publication uses the GitHub-hosted production job with Node 24 and a pinned npm 11.6.2 client. It is token-free and proceeds only while the prepared SHA is the exact main head after successful push-triggered CI. Do not dispatch CD until the npm trusted-publisher binding is verified.

An authorised runner-group operator must review each source branch before adding only Plasius-LTD/offline-cache/.github/workflows/ci.yml@refs/heads/<branch> to the existing workflow allowlist. Preserve repository selection, public access policy and unrelated refs. Keep the existing main admission. Review the release-preparation App's exact metadata diff before admitting its branch. Run metadata CI and required reviews/checks before merge where repository policy holds the PR open. Existing preparation can auto-merge under a policy without required checks; record that accurately and verify successful metadata and exact-main CI before publication. If the App deleted the branch, restore only its reviewed, unchanged PR-head SHA to the same absent branch by an ordinary non-force push so its queued CI can execute. Remove temporary admissions and branches after successful checks. Missing access is a blocker; never widen admission with wildcards or change production/protection settings to pass.

The remote platform.public-artifact-integrity.enabled flag controls restoration of public distribution. Mandatory integrity checks remain unconditional when it is enabled, disabled or rolled back. Rollback disables the affected workflow or distribution channel and removes temporary admissions; it never restores the administrative path or hosted CI. No capability is introduced.

Consent-aware workers

Set requireConsent: true when generating a worker for optional caching. It starts without permission and accepts only same-origin window messages of type plasius-offline-consent-v1 with allowedUntil (epoch milliseconds). Grants last at most 60 seconds and must be renewed by a host that still has valid consent and remote permission. A worker restart starts denied; host permission must be renewed. Send allowedUntil: 0 on withdrawal with a MessageChannel to receive the matching { type, disabled: true } acknowledgement after scoped cache deletion. Pending responses cannot repopulate discarded caches. Unregister the worker afterwards. Unregistration alone does not stop an already-controlling worker. Legacy workers without this protocol must be replaced or detached through navigation before the host can claim immediate revocation. Offline availability is limited to a current permission lease; exhausted leases fail closed. Existing generation behaviour is unchanged when requireConsent is omitted.

Use immutableAssetPathPatterns for exact content-addressed asset paths. Denied paths always win; host and generated worker preserve regex source and flags.

warmAssetPack propagates its signal to downloads and rejects with the abort reason before further cache access after cancellation, including late responses. Hosts should treat consent cancellation as a normal stop, not a renderer failure.