CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-alilc--lowcode-types

Comprehensive TypeScript type definitions for the Alibaba LowCode Engine ecosystem, providing type safety for building low-code development tools and applications.

Pending
Overview
Eval results
Files

plugins.mddocs/

Plugin System

Comprehensive plugin architecture with metadata, registration, and lifecycle management for extending editor functionality.

Capabilities

Plugin Definition

Core plugin interface and metadata.

/**
 * Plugin function interface
 */
interface IPublicTypePlugin {
  /** Plugin initialization function */
  (ctx: IPublicModelPluginContext, options?: any): void;
  /** Plugin name */
  pluginName?: string;
  /** Plugin metadata */
  meta?: IPublicTypePluginMeta;
}

/**
 * Plugin metadata definition
 */
interface IPublicTypePluginMeta {
  /** Plugin dependencies */
  dependencies?: string[];
  /** Compatible engine versions */
  engines?: Record<string, string>;
  /** Preference declarations */
  preferenceDeclaration?: IPublicTypePluginDeclaration;
  /** Event prefix for plugin events */
  eventPrefix?: string;
  /** Command scope for plugin commands */
  commandScope?: string;
}

Plugin Registration

Plugin registration and lifecycle management.

/**
 * Plugin registration options
 */
interface IPublicTypePluginRegisterOptions {
  /** Plugin registration level */
  level?: IPublicEnumPluginRegisterLevel;
  /** Plugin configuration */
  config?: Record<string, any>;
  /** Plugin dependencies override */
  dependencies?: string[];
  /** Auto-start plugin */
  autoStart?: boolean;
}

/**
 * Plugin registration levels
 */
enum IPublicEnumPluginRegisterLevel {
  /** System level plugins */
  System = 1,
  /** Editor level plugins */
  Editor = 2,
  /** Project level plugins */
  Project = 3,
  /** User level plugins */
  User = 4
}

Usage Examples:

import { IPublicTypePlugin, IPublicModelPluginContext } from "@alilc/lowcode-types";

// Simple plugin example
const loggerPlugin: IPublicTypePlugin = (ctx: IPublicModelPluginContext) => {
  ctx.logger.info('Logger plugin initialized');
  
  // Register a command
  ctx.registerCommand({
    name: 'logger.clear',
    handler: () => {
      ctx.logger.info('Log cleared');
    }
  });
  
  // Listen to events
  ctx.event.on('node.add', (node) => {
    ctx.logger.info('Node added:', node.componentName);
  });
};

loggerPlugin.pluginName = 'Logger';
loggerPlugin.meta = {
  dependencies: [],
  engines: {
    lowcode: '^1.0.0'
  }
};

// Complex plugin with skeleton integration
const toolbarPlugin: IPublicTypePlugin = (ctx: IPublicModelPluginContext, options) => {
  const { skeleton } = ctx;
  
  // Add toolbar button
  skeleton.add({
    area: 'toolbar',
    name: 'save-button',
    content: {
      icon: 'save',
      title: 'Save',
      onClick: () => {
        ctx.event.emit('project.save');
      }
    }
  });
  
  // Register hotkey
  ctx.hotkey.bind('cmd+s', () => {
    ctx.event.emit('project.save');
  });
};

toolbarPlugin.pluginName = 'Toolbar';

Plugin Context

Context interface provided to plugins for accessing editor functionality.

/**
 * Plugin context interface
 */
interface IPublicModelPluginContext {
  /** Plugin name */
  name: string;
  /** Editor instance */
  editor: IPublicModelEditor;
  /** Plugin logger */
  logger: IPublicApiLogger;
  /** Plugin preferences */
  preference: IPublicModelPreference;
  /** Event system */
  event: IPublicApiEvent;
  /** Skeleton API */
  skeleton: IPublicApiSkeleton;
  /** Hotkey API */
  hotkey: IPublicApiHotkey;
  /** Material API */
  material: IPublicApiMaterial;
  /** Project API */
  project: IPublicApiProject;
  /** Register command */
  registerCommand(command: IPublicTypeCommand): void;
  /** Unregister command */
  unregisterCommand(name: string): void;
}

Plugin Instance

Runtime plugin instance management.

/**
 * Plugin instance interface
 */
interface IPublicModelPluginInstance {
  /** Plugin name */
  name: string;
  /** Plugin function */
  plugin: IPublicTypePlugin;
  /** Plugin options */
  options?: any;
  /** Plugin context */
  context: IPublicModelPluginContext;
  /** Plugin status */
  status: 'registered' | 'initialized' | 'destroyed';
  /** Initialize plugin */
  init(): void;
  /** Destroy plugin */
  destroy(): void;
  /** Check if plugin is enabled */
  isEnabled(): boolean;
  /** Enable plugin */
  enable(): void;
  /** Disable plugin */
  disable(): void;
}

Install with Tessl CLI

npx tessl i tessl/npm-alilc--lowcode-types

docs

activity-events.md

assets.md

code-generation.md

component-metadata.md

drag-drop.md

editor-config.md

index.md

models.md

plugins.md

schemas.md

shell-api.md

shell-enums.md

value-types.md

tile.json