Skip to content

benallfree/pocketbase-jsvm

Repository files navigation

TypeScript Typings for PocketBase JSVM

This package provides TypeScript typings for the PocketBase JavaScript Virtual Machine (JSVM), based on Goja and Goja-Node.

Usage

Install the package:

npm install pocketbase-jsvm

For PocketBase version matching the package version:

In your tsconfig.json:

{
  "compilerOptions": {
    "types": ["pocketbase-jsvm"],
    "moduleResolution": "node"
  }
}

For Legacy PocketBase Versions or Specific Versions

For older PocketBase versions, use triple-slash directives instead of the types field:

/// <reference path="./node_modules/pocketbase-jsvm/index-v22.d.ts" />  // For v0.22

Important Notes

  • Limited APIs: The JSVM supports most of ECMAScript 2020 and includes some custom PocketBase bindings and Goja-Node features like require() and process.env. It does not include Web/Browser APIs, most Node.js APIs, or anything related to the event loop such as async, Promise, or setTimeout.

  • Version Matching: Package versions follow PocketBase versions. Since the JSVM API isn't stable yet, use the exact package version that matches your PocketBase version.

  • Avoid Unavailable Typings: Do not use @types/node or include typings for unavailable APIs. Be cautious with typeRoots in your TypeScript configuration.

  • Independent Typings: This package lets you reference JSVM types without relying on PocketBase's jsvm.d.ts in pb_hooks.

Example

// Using Goja-Node bindings
const myModule = require('myModule')
const apiKey = process.env.API_KEY

// ECMAScript 2020 features are supported
const myFunc = () => {
  // Your code here
}

Versioning Strategy

pocketbase-ejs uses Upstream Anchoring.

  • Our Version = Upstream MAJOR.MINOR.(Upstream PATCH × 10000 + Our Revision Number)

Example:

  • Upstream Version: 0.22.22
  • Our First Revision: 0.22.220001

This keeps our fork aligned with upstream releases and allows us to manage our own revisions effectively.

Updating this fork

git fetch --all
git checkout main

Then, copy the latest jsvm.d.ts and update the version number using the Upstream Anchoring technique described above.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published