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

@filefn/swift-bridge

v0.0.1

Published

WKWebView bridge primitives for native-backed FileFn clients

Readme

@filefn/swift-bridge

JavaScript bridge package for WKWebView apps that want FileFn to stay native-owned.

What it does

@filefn/swift-bridge gives a WebView-rendered app a thin, versioned bridge to the native Swift runtime in filefn/swift.

  • The protocol version is filefn-bridge/v1.
  • A handshake() is required before any native-backed request.
  • The bridge exposes FileFn reads, capability routes, health checks, and native-owned uploads.
  • Native-backed mode is explicit and fail-fast. If the bridge is unavailable, requests fail with stable bridge errors instead of falling back to browser-owned behavior.

Handshake

Create a native-backed client and complete the handshake before making requests:

import { createNativeBackedFileFnClient } from "@filefn/swift-bridge";

const client = createNativeBackedFileFnClient({
  clientId: "ios-webview-shell",
  mode: "native-backed",
  baseURL: "https://api.example.com/filefn",
});

await client.handshake();

The handshake confirms that upload ownership and auth ownership are both native, and it returns the preview scheme plus the mounted bridge capabilities.

Upload semantics

Uploads are asset-handle based, not raw-byte based.

  • Native code imports or captures the asset first.
  • Swift registers that asset in FileFnNativeAssetRegistry and returns an opaque assetHandle.
  • JavaScript calls upload.start({ assetHandle, policy, ... }).
  • Swift owns session creation, anonymous upload tokens, multipart/proxy transfer, completion, and recovery.

This package does not bridge browser-owned Blob, File, or raw upload bytes through WKScriptMessageHandler. Large binary payloads stay native.

Events

The bridge exposes a stable event stream:

  • bridge.ready
  • bridge.closed
  • upload.progress
  • upload.completed
  • upload.failed
  • upload.cancelled
  • health.changed

Events are redacted before leaving Swift, so auth headers, signed query strings, upload session tokens, and absolute filesystem paths are not exposed to JavaScript.

Native previews

Pending local previews use opaque bridge URLs of the form filefn-bridge://asset/{handle}/preview. Web content never receives a direct filesystem path.

Contract artifact

The HTTP routes behind the native client are documented in filefn/server/contracts/filefn-client-v1.openapi.json. The native-backed bridge intentionally sits above that HTTP contract and below the WebView UI layer.

Local verification

npm --workspace filefn/swift-bridge test
swift test --package-path filefn/swift --filter FileFnWebViewBridgeHostTests
npm test -- --run filefn/server/tests/client-contract.test.ts