refactor: Specify only the arguments for trigger definitions

This commit is contained in:
Faruk AYDIN
2022-10-31 18:12:12 +01:00
parent 571bf6bfa7
commit b3f216209a
21 changed files with 691 additions and 861 deletions

View File

@@ -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($);

View File

@@ -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($);

View File

@@ -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($);

View File

@@ -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($);

View File

@@ -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($);

View File

@@ -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($);

View File

@@ -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($);

View File

@@ -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($);

View File

@@ -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($);

View File

@@ -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) {

View File

@@ -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) {

View File

@@ -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(

View File

@@ -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(

View File

@@ -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($);

View File

@@ -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 });

View File

@@ -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($);

View File

@@ -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($);

View File

@@ -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 });

View File

@@ -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;
}

View File

@@ -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);

View File

@@ -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;