Skip to content

PluginProjectDefinition

Элементы расширения проекта

Свойства

НаименованиеТипОбязательное
macrosRecord<string, Function>Нет
tasksRecord<string, Constructor>Нет
actionsRecord<string, Function>Нет
triggersRecord<string, Constructor>Нет
validationSchemaProjectSchemaExtensionНет

Описание свойств

macros

Тип: Record<string, (...params: string[]) => string>

Обязательное: Нет

Макросы, применяемые к проекту. Коллекция пользовательских макросов, которые могут быть использованы в конфигурации проекта для динамического вычисления значений.

Пример:

typescript
{
  macros: {
    someMacro: () => "some macro value"
  }
}
json
{
  "value": "$someMacro()"
}

tasks

Тип: Record<string, RuniumTaskConstructor>

Обязательное: Нет

Задачи, зарегистрированные в проекте. Ключ — тип задачи, значение — конструктор класса задачи.

Пример:

typescript
{
  tasks: {
    "some-task1": SomeTaskClass,
    "some-task2": SomeOtherTaskClass
  }
}

actions

Тип: Record<string, (options: unknown) => void>

Обязательное: Нет

Действия, зарегистрированные в проекте. Ключ — тип действия, значение — функция-обработчик.

Пример:

typescript
{
  actions: {
    "some-action1": (options) => {
      console.log('Action 1:', options);
    },
    "some-action2": (options) => {
      console.log('Action 2:', options);
    }
  }
}

triggers

Тип: Record<string, RuniumTriggerConstructor<RuniumTriggerParams>>

Обязательное: Нет

Триггеры, зарегистрированные в проекте. Ключ — тип триггера, значение — конструктор класса триггера.

Пример:

typescript
{
  triggers: {
    "file-watcher": FileWatcherTrigger,
    "http-webhook": HttpWebhookTrigger
  }
}

validationSchema

Тип: ProjectSchemaExtension

Обязательное: Нет

Расширение схемы валидации для проекта. Позволяет плагинам добавлять:

  • пользовательские поля в корневую конфигурацию проекта
  • новые типы задач с их параметрами
  • новые типы действий с их параметрами
  • новые типы триггеров с их параметрами
  • дополнительные определения схемы (definitions)

Пример:

typescript
{
  validationSchema: {
    project: {
      properties: {
        customField: { type: "string" }
      },
      required: ["customField"]
    },
    tasks: {
      "SomePlugin_SomeTask": {
        type: "some-task",
        options: {
          type: "object",
          properties: {
            url: { type: "string" }
          },
          required: ["url"]
        }
      }
    }
  }
}
}