Merge pull request #667 from automatisch/refactor/user-args-for-actions
refactor: Specify only the arguments for trigger definitions
This commit is contained in:
@@ -6,16 +6,6 @@ export default defineTrigger({
|
||||
pollInterval: 15,
|
||||
key: 'new-albums',
|
||||
description: 'Triggers when you create a new album.',
|
||||
substeps: [
|
||||
{
|
||||
key: 'chooseConnection',
|
||||
name: 'Choose connection',
|
||||
},
|
||||
{
|
||||
key: 'testStep',
|
||||
name: 'Test trigger',
|
||||
},
|
||||
],
|
||||
|
||||
async run($) {
|
||||
await newAlbums($);
|
||||
|
@@ -6,16 +6,6 @@ export default defineTrigger({
|
||||
pollInterval: 15,
|
||||
key: 'newFavoritePhotos',
|
||||
description: 'Triggers when you favorite a photo.',
|
||||
substeps: [
|
||||
{
|
||||
key: 'chooseConnection',
|
||||
name: 'Choose connection',
|
||||
},
|
||||
{
|
||||
key: 'testStep',
|
||||
name: 'Test trigger',
|
||||
},
|
||||
],
|
||||
|
||||
async run($) {
|
||||
await newFavoritePhotos($);
|
||||
|
@@ -6,14 +6,6 @@ export default defineTrigger({
|
||||
pollInterval: 15,
|
||||
key: 'newPhotosInAlbum',
|
||||
description: 'Triggers when you add a new photo in an album.',
|
||||
substeps: [
|
||||
{
|
||||
key: 'chooseConnection',
|
||||
name: 'Choose connection',
|
||||
},
|
||||
{
|
||||
key: 'chooseTrigger',
|
||||
name: 'Set up a trigger',
|
||||
arguments: [
|
||||
{
|
||||
label: 'Album',
|
||||
@@ -33,12 +25,6 @@ export default defineTrigger({
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 'testStep',
|
||||
name: 'Test trigger',
|
||||
},
|
||||
],
|
||||
|
||||
async run($) {
|
||||
await newPhotosInAlbum($);
|
||||
|
@@ -6,16 +6,6 @@ export default defineTrigger({
|
||||
pollInterval: 15,
|
||||
key: 'newPhotos',
|
||||
description: 'Triggers when you add a new photo.',
|
||||
substeps: [
|
||||
{
|
||||
key: 'chooseConnection',
|
||||
name: 'Choose connection',
|
||||
},
|
||||
{
|
||||
key: 'testStep',
|
||||
name: 'Test trigger',
|
||||
},
|
||||
],
|
||||
|
||||
async run($) {
|
||||
await newPhotos($);
|
||||
|
@@ -6,14 +6,6 @@ export default defineTrigger({
|
||||
key: 'newIssues',
|
||||
pollInterval: 15,
|
||||
description: 'Triggers when a new issue is created',
|
||||
substeps: [
|
||||
{
|
||||
key: 'chooseConnection',
|
||||
name: 'Choose connection',
|
||||
},
|
||||
{
|
||||
key: 'chooseTrigger',
|
||||
name: 'Set up a trigger',
|
||||
arguments: [
|
||||
{
|
||||
label: 'Repo',
|
||||
@@ -87,12 +79,6 @@ export default defineTrigger({
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 'testStep',
|
||||
name: 'Test trigger',
|
||||
},
|
||||
],
|
||||
|
||||
async run($) {
|
||||
await newIssues($);
|
||||
|
@@ -6,14 +6,6 @@ export default defineTrigger({
|
||||
key: 'newPullRequests',
|
||||
pollInterval: 15,
|
||||
description: 'Triggers when a new pull request is created',
|
||||
substeps: [
|
||||
{
|
||||
key: 'chooseConnection',
|
||||
name: 'Choose connection',
|
||||
},
|
||||
{
|
||||
key: 'chooseTrigger',
|
||||
name: 'Set up a trigger',
|
||||
arguments: [
|
||||
{
|
||||
label: 'Repo',
|
||||
@@ -33,12 +25,6 @@ export default defineTrigger({
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 'testStep',
|
||||
name: 'Test trigger',
|
||||
},
|
||||
],
|
||||
|
||||
async run($) {
|
||||
await newPullRequests($);
|
||||
|
@@ -6,14 +6,6 @@ export default defineTrigger({
|
||||
key: 'newStargazers',
|
||||
pollInterval: 15,
|
||||
description: 'Triggers when a user stars a repository',
|
||||
substeps: [
|
||||
{
|
||||
key: 'chooseConnection',
|
||||
name: 'Choose connection',
|
||||
},
|
||||
{
|
||||
key: 'chooseTrigger',
|
||||
name: 'Set up a trigger',
|
||||
arguments: [
|
||||
{
|
||||
label: 'Repo',
|
||||
@@ -33,12 +25,6 @@ export default defineTrigger({
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 'testStep',
|
||||
name: 'Test trigger',
|
||||
},
|
||||
],
|
||||
|
||||
async run($) {
|
||||
await newStargazers($);
|
||||
|
@@ -6,14 +6,6 @@ export default defineTrigger({
|
||||
key: 'newWatchers',
|
||||
pollInterval: 15,
|
||||
description: 'Triggers when a user watches a repository',
|
||||
substeps: [
|
||||
{
|
||||
key: 'chooseConnection',
|
||||
name: 'Choose connection',
|
||||
},
|
||||
{
|
||||
key: 'chooseTrigger',
|
||||
name: 'Set up a trigger',
|
||||
arguments: [
|
||||
{
|
||||
label: 'Repo',
|
||||
@@ -33,12 +25,6 @@ export default defineTrigger({
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 'testStep',
|
||||
name: 'Test trigger',
|
||||
},
|
||||
],
|
||||
|
||||
async run($) {
|
||||
await newWatchers($);
|
||||
|
@@ -6,10 +6,6 @@ export default defineTrigger({
|
||||
key: 'newItemsInFeed',
|
||||
description: 'Triggers on new RSS feed items.',
|
||||
pollInterval: 15,
|
||||
substeps: [
|
||||
{
|
||||
key: 'chooseTrigger',
|
||||
name: 'Set up trigger',
|
||||
arguments: [
|
||||
{
|
||||
label: 'Feed URL',
|
||||
@@ -20,12 +16,6 @@ export default defineTrigger({
|
||||
variables: false,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 'testStep',
|
||||
name: 'Test trigger',
|
||||
},
|
||||
],
|
||||
|
||||
async run($) {
|
||||
await newItemsInFeed($);
|
||||
|
@@ -9,10 +9,6 @@ export default defineTrigger({
|
||||
name: 'Every day',
|
||||
key: 'everyDay',
|
||||
description: 'Triggers every day.',
|
||||
substeps: [
|
||||
{
|
||||
key: 'chooseTrigger',
|
||||
name: 'Set up a trigger',
|
||||
arguments: [
|
||||
{
|
||||
label: 'Trigger on weekends?',
|
||||
@@ -140,12 +136,6 @@ export default defineTrigger({
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 'testStep',
|
||||
name: 'Test trigger',
|
||||
},
|
||||
],
|
||||
|
||||
getInterval(parameters: IGlobalVariable['step']['parameters']) {
|
||||
if (parameters.triggersOnWeekend as boolean) {
|
||||
|
@@ -9,10 +9,6 @@ export default defineTrigger({
|
||||
name: 'Every hour',
|
||||
key: 'everyHour',
|
||||
description: 'Triggers every hour.',
|
||||
substeps: [
|
||||
{
|
||||
key: 'chooseTrigger',
|
||||
name: 'Set up a trigger',
|
||||
arguments: [
|
||||
{
|
||||
label: 'Trigger on weekends?',
|
||||
@@ -34,12 +30,6 @@ export default defineTrigger({
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 'testStep',
|
||||
name: 'Test trigger',
|
||||
},
|
||||
],
|
||||
|
||||
getInterval(parameters: IGlobalVariable['step']['parameters']) {
|
||||
if (parameters.triggersOnWeekend) {
|
||||
|
@@ -9,10 +9,6 @@ export default defineTrigger({
|
||||
name: 'Every month',
|
||||
key: 'everyMonth',
|
||||
description: 'Triggers every month.',
|
||||
substeps: [
|
||||
{
|
||||
key: 'chooseTrigger',
|
||||
name: 'Set up a trigger',
|
||||
arguments: [
|
||||
{
|
||||
label: 'Day of the month',
|
||||
@@ -255,12 +251,6 @@ export default defineTrigger({
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 'testStep',
|
||||
name: 'Test trigger',
|
||||
},
|
||||
],
|
||||
|
||||
getInterval(parameters: IGlobalVariable['step']['parameters']) {
|
||||
const interval = cronTimes.everyMonthOnAndAt(
|
||||
|
@@ -1,5 +1,5 @@
|
||||
import { DateTime } from 'luxon';
|
||||
import { IGlobalVariable, IJSONValue } from '@automatisch/types';
|
||||
import { IGlobalVariable } from '@automatisch/types';
|
||||
import defineTrigger from '../../../../helpers/define-trigger';
|
||||
import cronTimes from '../../common/cron-times';
|
||||
import getNextCronDateTime from '../../common/get-next-cron-date-time';
|
||||
@@ -9,10 +9,6 @@ export default defineTrigger({
|
||||
name: 'Every week',
|
||||
key: 'everyWeek',
|
||||
description: 'Triggers every week.',
|
||||
substeps: [
|
||||
{
|
||||
key: 'chooseTrigger',
|
||||
name: 'Set up a trigger',
|
||||
arguments: [
|
||||
{
|
||||
label: 'Day of the week',
|
||||
@@ -159,12 +155,6 @@ export default defineTrigger({
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 'testStep',
|
||||
name: 'Test trigger',
|
||||
},
|
||||
],
|
||||
|
||||
getInterval(parameters: IGlobalVariable['step']['parameters']) {
|
||||
const interval = cronTimes.everyWeekOnAndAt(
|
||||
|
@@ -6,14 +6,6 @@ export default defineTrigger({
|
||||
key: 'receiveSms',
|
||||
pollInterval: 15,
|
||||
description: 'Will be triggered when a new SMS is received.',
|
||||
substeps: [
|
||||
{
|
||||
key: 'chooseConnection',
|
||||
name: 'Choose connection',
|
||||
},
|
||||
{
|
||||
key: 'chooseTrigger',
|
||||
name: 'Set up a trigger',
|
||||
arguments: [
|
||||
{
|
||||
label: 'To Number',
|
||||
@@ -24,12 +16,6 @@ export default defineTrigger({
|
||||
'The number to receive the SMS on. It should be a Twilio number.',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 'testStep',
|
||||
name: 'Test trigger',
|
||||
},
|
||||
],
|
||||
|
||||
async run($) {
|
||||
await fetchMessages($);
|
||||
|
@@ -6,16 +6,6 @@ export default defineTrigger({
|
||||
key: 'myTweets',
|
||||
pollInterval: 15,
|
||||
description: 'Will be triggered when you tweet something new.',
|
||||
substeps: [
|
||||
{
|
||||
key: 'chooseConnection',
|
||||
name: 'Choose connection',
|
||||
},
|
||||
{
|
||||
key: 'testStep',
|
||||
name: 'Test trigger',
|
||||
},
|
||||
],
|
||||
|
||||
async run($) {
|
||||
await getUserTweets($, { currentUser: true });
|
||||
|
@@ -6,16 +6,6 @@ export default defineTrigger({
|
||||
key: 'myFollowers',
|
||||
pollInterval: 15,
|
||||
description: 'Will be triggered when you have a new follower.',
|
||||
substeps: [
|
||||
{
|
||||
key: 'chooseConnection',
|
||||
name: 'Choose connection',
|
||||
},
|
||||
{
|
||||
key: 'testStep',
|
||||
name: 'Test trigger',
|
||||
},
|
||||
],
|
||||
|
||||
async run($) {
|
||||
await myFollowers($);
|
||||
|
@@ -7,14 +7,6 @@ export default defineTrigger({
|
||||
pollInterval: 15,
|
||||
description:
|
||||
'Will be triggered when any user tweet something containing a specific keyword, phrase, username or hashtag.',
|
||||
substeps: [
|
||||
{
|
||||
key: 'chooseConnection',
|
||||
name: 'Choose connection',
|
||||
},
|
||||
{
|
||||
key: 'chooseTrigger',
|
||||
name: 'Set up a trigger',
|
||||
arguments: [
|
||||
{
|
||||
label: 'Search Term',
|
||||
@@ -23,12 +15,6 @@ export default defineTrigger({
|
||||
required: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 'testStep',
|
||||
name: 'Test trigger',
|
||||
},
|
||||
],
|
||||
|
||||
async run($) {
|
||||
await searchTweets($);
|
||||
|
@@ -6,14 +6,6 @@ export default defineTrigger({
|
||||
key: 'userTweets',
|
||||
pollInterval: 15,
|
||||
description: 'Will be triggered when a specific user tweet something new.',
|
||||
substeps: [
|
||||
{
|
||||
key: 'chooseConnection',
|
||||
name: 'Choose connection',
|
||||
},
|
||||
{
|
||||
key: 'chooseTrigger',
|
||||
name: 'Set up a trigger',
|
||||
arguments: [
|
||||
{
|
||||
label: 'Username',
|
||||
@@ -22,12 +14,6 @@ export default defineTrigger({
|
||||
required: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 'testStep',
|
||||
name: 'Test trigger',
|
||||
},
|
||||
],
|
||||
|
||||
async run($) {
|
||||
await getUserTweets($, { currentUser: false });
|
||||
|
@@ -1,5 +1,7 @@
|
||||
import { ITrigger } from '@automatisch/types';
|
||||
import { IRawTrigger } from '@automatisch/types';
|
||||
|
||||
export default function defineTrigger(triggerDefinition: ITrigger): ITrigger {
|
||||
export default function defineTrigger(
|
||||
triggerDefinition: IRawTrigger
|
||||
): IRawTrigger {
|
||||
return triggerDefinition;
|
||||
}
|
||||
|
@@ -1,4 +1,5 @@
|
||||
import { IApp } from '@automatisch/types';
|
||||
import { IApp, IRawTrigger, ITrigger } from '@automatisch/types';
|
||||
import { omit, cloneDeep } from 'lodash';
|
||||
|
||||
async function getDefaultExport(path: string) {
|
||||
return (await import(path)).default;
|
||||
@@ -8,8 +9,40 @@ function stripFunctions<C>(data: C): C {
|
||||
return JSON.parse(JSON.stringify(data));
|
||||
}
|
||||
|
||||
const chooseConnectionStep = {
|
||||
key: 'chooseConnection',
|
||||
name: 'Choose connection',
|
||||
};
|
||||
|
||||
const testStep = {
|
||||
key: 'testStep',
|
||||
name: 'Test trigger',
|
||||
};
|
||||
|
||||
const getApp = async (appKey: string, stripFuncs = true) => {
|
||||
const appData: IApp = await getDefaultExport(`../apps/${appKey}`);
|
||||
const appData: IApp = cloneDeep(await getDefaultExport(`../apps/${appKey}`));
|
||||
|
||||
appData.triggers = appData?.triggers?.map((trigger: IRawTrigger) => {
|
||||
const computedTrigger: ITrigger = omit(trigger, ['arguments']);
|
||||
|
||||
computedTrigger.substeps = [];
|
||||
|
||||
if (appData.supportsConnections) {
|
||||
computedTrigger.substeps.push(chooseConnectionStep);
|
||||
}
|
||||
|
||||
if (trigger.arguments) {
|
||||
computedTrigger.substeps.push({
|
||||
key: 'chooseTrigger',
|
||||
name: 'Set up a trigger',
|
||||
arguments: trigger.arguments,
|
||||
});
|
||||
}
|
||||
|
||||
computedTrigger.substeps.push(testStep);
|
||||
|
||||
return computedTrigger;
|
||||
});
|
||||
|
||||
if (stripFuncs) {
|
||||
return stripFunctions(appData);
|
||||
|
11
packages/types/index.d.ts
vendored
11
packages/types/index.d.ts
vendored
@@ -205,17 +205,24 @@ export interface ITriggerItem {
|
||||
};
|
||||
}
|
||||
|
||||
export interface ITrigger {
|
||||
export interface IBaseTrigger {
|
||||
name: string;
|
||||
key: string;
|
||||
pollInterval?: number;
|
||||
description: string;
|
||||
substeps: ISubstep[];
|
||||
getInterval?(parameters: IStep['parameters']): string;
|
||||
run($: IGlobalVariable): Promise<void>;
|
||||
sort?(item: ITriggerItem, nextItem: ITriggerItem): number;
|
||||
}
|
||||
|
||||
export interface IRawTrigger extends IBaseTrigger {
|
||||
arguments?: IField[];
|
||||
}
|
||||
|
||||
export interface ITrigger extends IBaseTrigger {
|
||||
substeps?: ISubstep[];
|
||||
}
|
||||
|
||||
export interface IActionOutput {
|
||||
data: IActionItem;
|
||||
error?: IJSONObject;
|
||||
|
Reference in New Issue
Block a user