Engine Examples
These examples show a practical way to configure and run an instance with built-in type initialisers and custom entity storage.
Engine
import { Engine } from '@twin.org/engine';
import type { IEngineConfig } from '@twin.org/engine-types';
const config: IEngineConfig = {
debug: true,
silent: false,
types: {}
};
const engine = new Engine({ config, skipBootstrap: true });
engine.addContextIdKey('tenant', ['tenant']);
engine.addContextId('tenant', 'tenant-a');
engine.addTypeInitialiser('loggingConnector', '@twin.org/engine-types', 'initLoggingConnector');
console.log(engine.getContextIdKeys()); // ["tenant"]
console.log(engine.getContextIds()); // { tenant: "tenant-a" }
console.log(engine.isStarted()); // false
await engine.start(true);
console.log(engine.isStarted()); // true
await engine.stop();
console.log(engine.isStarted()); // false
EngineConfigHelper
import { EngineConfigHelper } from '@twin.org/engine';
import type { IEngineConfig } from '@twin.org/engine-types';
import type { IEntitySchema } from '@twin.org/entity';
interface Product {
id: string;
name: string;
}
const config: IEngineConfig = {
debug: false,
silent: true,
types: {}
};
const productSchema = {
type: 'Product',
properties: {
id: { type: 'string', isPrimary: true },
name: { type: 'string' }
}
} as IEntitySchema<Product>;
EngineConfigHelper.addCustomEntityStorage(config, 'product', productSchema, '/products', [
'node',
'tenant'
]);
console.log(config.types.entityStorageComponent?.length ?? 0); // 1
console.log(config.types.entityStorageComponent?.[0].restPath); // "/products"