Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

README.md

@quereus/plugin-loader

Plugin loading system for Quereus. This package provides dynamic module loading capabilities for extending Quereus with custom virtual tables, functions, collations, and types.

Note: This package uses dynamic import() which is not compatible with React Native. For React Native environments, use static imports and manual plugin registration instead.

Installation

npm install @quereus/plugin-loader
# or
yarn add @quereus/plugin-loader

Usage

import { Database } from '@quereus/quereus';
import { loadPlugin, dynamicLoadModule } from '@quereus/plugin-loader';

const db = new Database();

// Load from npm package (Node.js)
await loadPlugin('npm:@acme/quereus-plugin-foo@^1', db, { api_key: '...' });

// Load from URL (Node.js or Browser)
await dynamicLoadModule('https://example.com/plugin.js', db, { timeout: 10000 });

// Browser with CDN (opt-in)
await loadPlugin('npm:@acme/quereus-plugin-foo@^1', db, {}, { allowCdn: true });

React Native

This package is not compatible with React Native due to its use of dynamic import(). For React Native apps:

  1. Exclude this package from your dependencies
  2. Use static imports for plugins
  3. Manually register plugins with the database

Example for React Native:

import { Database } from '@quereus/quereus';
import myPlugin from './plugins/my-plugin';

const db = new Database();

// Manually register the plugin
const registrations = await myPlugin(db, { /* config */ });

// Register vtables
if (registrations.vtables) {
  for (const vtable of registrations.vtables) {
    db.registerModule(vtable.name, vtable.module, vtable.auxData);
  }
}

// Register functions, collations, types similarly...

API

See the Plugin System Documentation for complete details.

License

MIT