feat: Convert all app files to JS

This commit is contained in:
Faruk AYDIN
2024-01-05 17:44:21 +01:00
parent b95478b635
commit 43dba351c3
1030 changed files with 5114 additions and 6436 deletions

View File

@@ -1,15 +1,14 @@
import { IGlobalVariable } from '@automatisch/types';
import { URL, URLSearchParams } from 'url';
import getBaseUrl from '../common/get-base-url';
import getBaseUrl from '../common/get-base-url.js';
export default async function generateAuthUrl($: IGlobalVariable) {
export default async function generateAuthUrl($) {
// ref: https://docs.gitlab.com/ee/api/oauth2.html#authorization-code-flow
const scopes = ['api', 'read_user'];
const searchParams = new URLSearchParams({
client_id: $.auth.data.clientId as string,
redirect_uri: $.auth.data.oAuthRedirectUrl as string,
client_id: $.auth.data.clientId,
redirect_uri: $.auth.data.oAuthRedirectUrl,
scope: scopes.join(' '),
response_type: 'code',
state: Date.now().toString(),

View File

@@ -1,14 +1,14 @@
import generateAuthUrl from './generate-auth-url';
import verifyCredentials from './verify-credentials';
import isStillVerified from './is-still-verified';
import refreshToken from './refresh-token';
import generateAuthUrl from './generate-auth-url.js';
import verifyCredentials from './verify-credentials.js';
import isStillVerified from './is-still-verified.js';
import refreshToken from './refresh-token.js';
export default {
fields: [
{
key: 'oAuthRedirectUrl',
label: 'OAuth Redirect URL',
type: 'string' as const,
type: 'string',
required: true,
readOnly: true,
value: '{WEB_APP_URL}/app/gitlab/connections/add',
@@ -21,7 +21,7 @@ export default {
{
key: 'instanceUrl',
label: 'Gitlab instance URL',
type: 'string' as const,
type: 'string',
required: false,
readOnly: false,
value: 'https://gitlab.com',
@@ -33,7 +33,7 @@ export default {
{
key: 'clientId',
label: 'Client ID',
type: 'string' as const,
type: 'string',
required: true,
readOnly: false,
value: null,
@@ -45,7 +45,7 @@ export default {
{
key: 'clientSecret',
label: 'Client Secret',
type: 'string' as const,
type: 'string',
required: true,
readOnly: false,
value: null,

View File

@@ -0,0 +1,8 @@
import getCurrentUser from '../common/get-current-user.js';
const isStillVerified = async ($) => {
const user = await getCurrentUser($);
return !!user.id;
};
export default isStillVerified;

View File

@@ -1,9 +0,0 @@
import { IGlobalVariable } from '@automatisch/types';
import getCurrentUser from '../common/get-current-user';
const isStillVerified = async ($: IGlobalVariable) => {
const user = await getCurrentUser($);
return !!user.id;
};
export default isStillVerified;

View File

@@ -1,14 +1,13 @@
import { IGlobalVariable } from '@automatisch/types';
import { URLSearchParams } from 'url';
const refreshToken = async ($: IGlobalVariable) => {
const refreshToken = async ($) => {
// ref: https://docs.gitlab.com/ee/api/oauth2.html#authorization-code-flow
const params = new URLSearchParams({
grant_type: 'refresh_token',
client_id: $.auth.data.clientId as string,
client_secret: $.auth.data.clientSecret as string,
refresh_token: $.auth.data.refreshToken as string,
client_id: $.auth.data.clientId,
client_secret: $.auth.data.clientSecret,
refresh_token: $.auth.data.refreshToken,
});
const { data } = await $.http.post('/oauth/token', params.toString());

View File

@@ -1,7 +1,6 @@
import { IGlobalVariable } from '@automatisch/types';
import getCurrentUser from '../common/get-current-user';
import getCurrentUser from '../common/get-current-user.js';
const verifyCredentials = async ($: IGlobalVariable) => {
const verifyCredentials = async ($) => {
// ref: https://docs.gitlab.com/ee/api/oauth2.html#authorization-code-flow
const response = await $.http.post(
@@ -25,10 +24,7 @@ const verifyCredentials = async ($: IGlobalVariable) => {
$.auth.data.accessToken = data.access_token;
const currentUser = await getCurrentUser($);
const screenName = [
currentUser.username,
$.auth.data.instanceUrl,
]
const screenName = [currentUser.username, $.auth.data.instanceUrl]
.filter(Boolean)
.join(' @ ');

View File

@@ -1,6 +1,4 @@
import { TBeforeRequest } from '@automatisch/types';
const addAuthHeader: TBeforeRequest = ($, requestConfig) => {
const addAuthHeader = ($, requestConfig) => {
if ($.auth.data?.accessToken) {
requestConfig.headers = requestConfig.headers || {};
requestConfig.headers.Authorization = `Bearer ${$.auth.data.accessToken}`;

View File

@@ -0,0 +1,13 @@
const getBaseUrl = ($) => {
if ($.auth.data.instanceUrl) {
return $.auth.data.instanceUrl;
}
if ($.app.apiBaseUrl) {
return $.app.apiBaseUrl;
}
return $.app.baseUrl;
};
export default getBaseUrl;

View File

@@ -1,15 +0,0 @@
import { IGlobalVariable } from '@automatisch/types';
const getBaseUrl = ($: IGlobalVariable): string => {
if ($.auth.data.instanceUrl) {
return $.auth.data.instanceUrl as string;
}
if ($.app.apiBaseUrl) {
return $.app.apiBaseUrl;
}
return $.app.baseUrl;
};
export default getBaseUrl;

View File

@@ -1,6 +1,4 @@
import { IGlobalVariable, IJSONObject } from '@automatisch/types';
const getCurrentUser = async ($: IGlobalVariable): Promise<IJSONObject> => {
const getCurrentUser = async ($) => {
// ref: https://docs.gitlab.com/ee/api/users.html#list-current-user
const response = await $.http.get('/api/v4/user');

View File

@@ -1,19 +1,9 @@
import { IGlobalVariable, IJSONObject } from '@automatisch/types';
import type { AxiosResponse } from 'axios';
import parseLinkHeader from '../../../helpers/parse-header-link';
import parseLinkHeader from '../../../helpers/parse-header-link.js';
type TResponse = {
data: IJSONObject[];
error?: IJSONObject;
};
export default async function paginateAll(
$: IGlobalVariable,
request: Promise<AxiosResponse>
) {
export default async function paginateAll($, request) {
const response = await request;
const aggregatedResponse: TResponse = {
const aggregatedResponse = {
data: [...response.data],
};

View File

@@ -0,0 +1,11 @@
const setBaseUrl = ($, requestConfig) => {
if ($.auth.data.instanceUrl) {
requestConfig.baseURL = $.auth.data.instanceUrl;
} else if ($.app.apiBaseUrl) {
requestConfig.baseURL = $.app.apiBaseUrl;
}
return requestConfig;
};
export default setBaseUrl;

View File

@@ -1,13 +0,0 @@
import { TBeforeRequest } from '@automatisch/types';
const setBaseUrl: TBeforeRequest = ($, requestConfig) => {
if ($.auth.data.instanceUrl) {
requestConfig.baseURL = $.auth.data.instanceUrl as string;
} else if ($.app.apiBaseUrl) {
requestConfig.baseURL = $.app.apiBaseUrl as string;
}
return requestConfig;
};
export default setBaseUrl;

View File

@@ -0,0 +1,3 @@
import listProjects from './list-projects/index.js';
export default [listProjects];

View File

@@ -1,3 +0,0 @@
import listProjects from './list-projects';
export default [listProjects];

View File

@@ -1,11 +1,10 @@
import { IGlobalVariable } from '@automatisch/types';
import paginateAll from '../../common/paginate-all';
import paginateAll from '../../common/paginate-all.js';
export default {
name: 'List projects',
key: 'listProjects',
async run($: IGlobalVariable) {
async run($) {
// ref:
// - https://docs.gitlab.com/ee/api/projects.html#list-all-projects
// - https://docs.gitlab.com/ee/api/rest/index.html#keyset-based-pagination
@@ -21,7 +20,7 @@ export default {
const response = await paginateAll($, firstPageRequest);
response.data = response.data.map((repo: { name: string; id: number }) => {
response.data = response.data.map((repo) => {
return {
value: repo.id,
name: repo.name,

View File

@@ -1 +0,0 @@

View File

@@ -1,9 +1,9 @@
import defineApp from '../../helpers/define-app';
import addAuthHeader from './common/add-auth-header';
import setBaseUrl from './common/set-base-url';
import auth from './auth';
import triggers from './triggers';
import dynamicData from './dynamic-data';
import defineApp from '../../helpers/define-app.js';
import addAuthHeader from './common/add-auth-header.js';
import setBaseUrl from './common/set-base-url.js';
import auth from './auth/index.js';
import triggers from './triggers/index.js';
import dynamicData from './dynamic-data/index.js';
export default defineApp({
name: 'GitLab',

View File

@@ -1,18 +1,17 @@
import { IRawTrigger } from '@automatisch/types';
import defineTrigger from '../../../../helpers/define-trigger';
import { GITLAB_EVENT_TYPE } from '../types';
import defineTrigger from '../../../../helpers/define-trigger.js';
import { GITLAB_EVENT_TYPE } from '../types.js';
import {
getRegisterHookFn,
getRunFn,
getTestRunFn,
projectArgumentDescriptor,
unregisterHook,
} from '../lib';
} from '../lib.js';
// confidential_issues_events has the same event data as issues_events
import data from './issue_event';
import data from './issue_event.js';
export const triggerDescriptor: IRawTrigger = {
export const triggerDescriptor = {
name: 'Confidential issue event',
description:
'Confidential issue event (triggered when a new confidential issue is created or an existing issue is updated, closed, or reopened)',

View File

@@ -1,18 +1,17 @@
import { IRawTrigger } from '@automatisch/types';
import defineTrigger from '../../../../helpers/define-trigger';
import { GITLAB_EVENT_TYPE } from '../types';
import defineTrigger from '../../../../helpers/define-trigger.js';
import { GITLAB_EVENT_TYPE } from '../types.js';
import {
getRegisterHookFn,
getRunFn,
getTestRunFn,
projectArgumentDescriptor,
unregisterHook,
} from '../lib';
} from '../lib.js';
// confidential_note_events has the same event data as note_events
import data from './note_event';
import data from './note_event.js';
export const triggerDescriptor: IRawTrigger = {
export const triggerDescriptor = {
name: 'Confidential comment event',
description:
'Confidential comment event (triggered when a new confidential comment is made on commits, merge requests, issues, and code snippets)',

View File

@@ -1,17 +1,16 @@
import { IRawTrigger } from '@automatisch/types';
import defineTrigger from '../../../../helpers/define-trigger';
import { GITLAB_EVENT_TYPE } from '../types';
import defineTrigger from '../../../../helpers/define-trigger.js';
import { GITLAB_EVENT_TYPE } from '../types.js';
import {
getRegisterHookFn,
getRunFn,
getTestRunFn,
projectArgumentDescriptor,
unregisterHook,
} from '../lib';
} from '../lib.js';
import data from './deployment_event';
import data from './deployment_event.js';
export const triggerDescriptor: IRawTrigger = {
export const triggerDescriptor = {
name: 'Deployment event',
description:
'Deployment event (triggered when a deployment starts, succeeds, fails or is canceled)',

View File

@@ -1,17 +1,16 @@
import { IRawTrigger } from '@automatisch/types';
import defineTrigger from '../../../../helpers/define-trigger';
import { GITLAB_EVENT_TYPE } from '../types';
import defineTrigger from '../../../../helpers/define-trigger.js';
import { GITLAB_EVENT_TYPE } from '../types.js';
import {
getRegisterHookFn,
getRunFn,
getTestRunFn,
projectArgumentDescriptor,
unregisterHook,
} from '../lib';
} from '../lib.js';
import data from './feature_flag_event';
import data from './feature_flag_event.js';
export const triggerDescriptor: IRawTrigger = {
export const triggerDescriptor = {
name: 'Feature flag event',
description:
'Feature flag event (triggered when a feature flag is turned on or off)',

View File

@@ -0,0 +1,29 @@
import confidentialIssueEvent from './confidential-issue-event/index.js';
import confidentialNoteEvent from './confidential-note-event/index.js';
import deploymentEvent from './deployment-event/index.js';
import featureFlagEvent from './feature-flag-event/index.js';
import issueEvent from './issue-event/index.js';
import jobEvent from './job-event/index.js';
import mergeRequestEvent from './merge-request-event/index.js';
import noteEvent from './note-event/index.js';
import pipelineEvent from './pipeline-event/index.js';
import pushEvent from './push-event/index.js';
import releaseEvent from './release-event/index.js';
import tagPushEvent from './tag-push-event/index.js';
import wikiPageEvent from './wiki-page-event/index.js';
export default [
confidentialIssueEvent,
confidentialNoteEvent,
deploymentEvent,
featureFlagEvent,
issueEvent,
jobEvent,
mergeRequestEvent,
noteEvent,
pipelineEvent,
pushEvent,
releaseEvent,
tagPushEvent,
wikiPageEvent,
];

View File

@@ -1,29 +0,0 @@
import confidentialIssueEvent from './confidential-issue-event';
import confidentialNoteEvent from './confidential-note-event';
import deploymentEvent from './deployment-event';
import featureFlagEvent from './feature-flag-event';
import issueEvent from './issue-event';
import jobEvent from './job-event';
import mergeRequestEvent from './merge-request-event';
import noteEvent from './note-event';
import pipelineEvent from './pipeline-event';
import pushEvent from './push-event';
import releaseEvent from './release-event';
import tagPushEvent from './tag-push-event';
import wikiPageEvent from './wiki-page-event';
export default [
confidentialIssueEvent,
confidentialNoteEvent,
deploymentEvent,
featureFlagEvent,
issueEvent,
jobEvent,
mergeRequestEvent,
noteEvent,
pipelineEvent,
pushEvent,
releaseEvent,
tagPushEvent,
wikiPageEvent,
];

View File

@@ -1,17 +1,16 @@
import { IRawTrigger } from '@automatisch/types';
import defineTrigger from '../../../../helpers/define-trigger';
import { GITLAB_EVENT_TYPE } from '../types';
import defineTrigger from '../../../../helpers/define-trigger.js';
import { GITLAB_EVENT_TYPE } from '../types.js';
import {
getRegisterHookFn,
getRunFn,
getTestRunFn,
projectArgumentDescriptor,
unregisterHook,
} from '../lib';
} from '../lib.js';
import data from './issue_event';
import data from './issue_event.js';
export const triggerDescriptor: IRawTrigger = {
export const triggerDescriptor = {
name: 'Issue event',
description:
'Issue event (triggered when a new issue is created or an existing issue is updated, closed, or reopened)',

View File

@@ -1,17 +1,16 @@
import { IRawTrigger } from '@automatisch/types';
import defineTrigger from '../../../../helpers/define-trigger';
import { GITLAB_EVENT_TYPE } from '../types';
import defineTrigger from '../../../../helpers/define-trigger.js';
import { GITLAB_EVENT_TYPE } from '../types.js';
import {
getRegisterHookFn,
getRunFn,
getTestRunFn,
projectArgumentDescriptor,
unregisterHook,
} from '../lib';
} from '../lib.js';
import data from './job_event';
import data from './job_event.js';
export const triggerDescriptor: IRawTrigger = {
export const triggerDescriptor = {
name: 'Job event',
description: 'Job event (triggered when the status of a job changes)',
// info: 'https://docs.gitlab.com/ee/user/project/integrations/webhook_events.html#job-events',

View File

@@ -0,0 +1,94 @@
import Crypto from 'crypto';
import appConfig from '../../../config/app.js';
export const projectArgumentDescriptor = {
label: 'Project',
key: 'projectId',
type: 'dropdown',
required: true,
description: 'Pick a project to receive events from',
variables: false,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listProjects',
},
],
},
};
export const getRunFn = async ($) => {
const dataItem = {
raw: $.request.body,
meta: {
internalId: Crypto.randomUUID(),
},
};
$.pushTriggerItem(dataItem);
};
export const getTestRunFn = (eventData) => ($) => {
/*
Not fetching actual events from gitlab and using static event data from documentation
as there is no way to filter out events of one category using gitlab event types,
filtering is very limited and uses different grouping than what is applicable when creating a webhook.
ref:
- https://docs.gitlab.com/ee/api/events.html#target-types
- https://docs.gitlab.com/ee/api/projects.html#add-project-hook
*/
if (!eventData) {
return;
}
const dataItem = {
raw: eventData,
meta: {
// there is no distinct id on gitlab event object thus creating it
internalId: Crypto.randomUUID(),
},
};
$.pushTriggerItem(dataItem);
return Promise.resolve();
};
export const getRegisterHookFn = (eventType) => async ($) => {
// ref: https://docs.gitlab.com/ee/api/projects.html#add-project-hook
const subscriptionPayload = {
url: $.webhookUrl,
token: appConfig.webhookSecretKey,
enable_ssl_verification: true,
[eventType]: true,
};
if (
['wildcard', 'regex'].includes($.step.parameters.branch_filter_strategy)
) {
subscriptionPayload.branch_filter_strategy =
$.step.parameters.branch_filter_strategy;
subscriptionPayload.push_events_branch_filter =
$.step.parameters.push_events_branch_filter;
}
const { data } = await $.http.post(
`/api/v4/projects/${$.step.parameters.projectId}/hooks`,
subscriptionPayload
);
await $.flow.setRemoteWebhookId(data.id.toString());
};
export const unregisterHook = async ($) => {
// ref: https://docs.gitlab.com/ee/api/projects.html#delete-project-hook
await $.http.delete(
`/api/v4/projects/${$.step.parameters.projectId}/hooks/${$.flow.remoteWebhookId}`
);
};

View File

@@ -1,100 +0,0 @@
import { IGlobalVariable, IJSONObject } from '@automatisch/types';
import Crypto from 'crypto';
import { GITLAB_EVENT_TYPE } from './types';
import appConfig from '../../../config/app';
export const projectArgumentDescriptor = {
label: 'Project',
key: 'projectId',
type: 'dropdown' as const,
required: true,
description: 'Pick a project to receive events from',
variables: false,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listProjects',
},
],
},
};
export const getRunFn = async ($: IGlobalVariable) => {
const dataItem = {
raw: $.request.body,
meta: {
internalId: Crypto.randomUUID(),
},
};
$.pushTriggerItem(dataItem);
};
export const getTestRunFn =
(eventData: IJSONObject) => ($: IGlobalVariable) => {
/*
Not fetching actual events from gitlab and using static event data from documentation
as there is no way to filter out events of one category using gitlab event types,
filtering is very limited and uses different grouping than what is applicable when creating a webhook.
ref:
- https://docs.gitlab.com/ee/api/events.html#target-types
- https://docs.gitlab.com/ee/api/projects.html#add-project-hook
*/
if (!eventData) {
return;
}
const dataItem = {
raw: eventData,
meta: {
// there is no distinct id on gitlab event object thus creating it
internalId: Crypto.randomUUID(),
},
};
$.pushTriggerItem(dataItem);
return Promise.resolve();
};
export const getRegisterHookFn =
(eventType: GITLAB_EVENT_TYPE) => async ($: IGlobalVariable) => {
// ref: https://docs.gitlab.com/ee/api/projects.html#add-project-hook
const subscriptionPayload = {
url: $.webhookUrl,
token: appConfig.webhookSecretKey,
enable_ssl_verification: true,
[eventType]: true,
};
if (
['wildcard', 'regex'].includes(
$.step.parameters.branch_filter_strategy as string
)
) {
subscriptionPayload.branch_filter_strategy = $.step.parameters
.branch_filter_strategy as string;
subscriptionPayload.push_events_branch_filter = $.step.parameters
.push_events_branch_filter as string;
}
const { data } = await $.http.post(
`/api/v4/projects/${$.step.parameters.projectId}/hooks`,
subscriptionPayload
);
await $.flow.setRemoteWebhookId(data.id.toString());
};
export const unregisterHook = async ($: IGlobalVariable) => {
// ref: https://docs.gitlab.com/ee/api/projects.html#delete-project-hook
await $.http.delete(
`/api/v4/projects/${$.step.parameters.projectId}/hooks/${$.flow.remoteWebhookId}`
);
};

View File

@@ -1,17 +1,16 @@
import { IRawTrigger } from '@automatisch/types';
import defineTrigger from '../../../../helpers/define-trigger';
import { GITLAB_EVENT_TYPE } from '../types';
import defineTrigger from '../../../../helpers/define-trigger.js';
import { GITLAB_EVENT_TYPE } from '../types.js';
import {
getRegisterHookFn,
getRunFn,
getTestRunFn,
projectArgumentDescriptor,
unregisterHook,
} from '../lib';
} from '../lib.js';
import data from './merge_request_event';
import data from './merge_request_event.js';
export const triggerDescriptor: IRawTrigger = {
export const triggerDescriptor = {
name: 'Merge request event',
description:
'Merge request event (triggered when merge request is created, updated, or closed)',

View File

@@ -1,17 +1,16 @@
import { IRawTrigger } from '@automatisch/types';
import defineTrigger from '../../../../helpers/define-trigger';
import { GITLAB_EVENT_TYPE } from '../types';
import defineTrigger from '../../../../helpers/define-trigger.js';
import { GITLAB_EVENT_TYPE } from '../types.js';
import {
getRegisterHookFn,
getRunFn,
getTestRunFn,
projectArgumentDescriptor,
unregisterHook,
} from '../lib';
} from '../lib.js';
import data from './note_event';
import data from './note_event.js';
export const triggerDescriptor: IRawTrigger = {
export const triggerDescriptor = {
name: 'Comment event',
description:
'Comment event (triggered when a new comment is made on commits, merge requests, issues, and code snippets)',

View File

@@ -1,17 +1,16 @@
import { IRawTrigger } from '@automatisch/types';
import defineTrigger from '../../../../helpers/define-trigger';
import { GITLAB_EVENT_TYPE } from '../types';
import defineTrigger from '../../../../helpers/define-trigger.js';
import { GITLAB_EVENT_TYPE } from '../types.js';
import {
getRegisterHookFn,
getRunFn,
getTestRunFn,
projectArgumentDescriptor,
unregisterHook,
} from '../lib';
} from '../lib.js';
import data from './pipeline_event';
import data from './pipeline_event.js';
export const triggerDescriptor: IRawTrigger = {
export const triggerDescriptor = {
name: 'Pipeline event',
description:
'Pipeline event (triggered when the status of a pipeline changes)',

View File

@@ -1,20 +1,19 @@
import { IRawTrigger } from '@automatisch/types';
import defineTrigger from '../../../../helpers/define-trigger';
import { GITLAB_EVENT_TYPE } from '../types';
import defineTrigger from '../../../../helpers/define-trigger.js';
import { GITLAB_EVENT_TYPE } from '../types.js';
import {
getRegisterHookFn,
getRunFn,
getTestRunFn,
projectArgumentDescriptor,
unregisterHook,
} from '../lib';
} from '../lib.js';
import data from './push_event';
import data from './push_event.js';
export const branchFilterStrategyArgumentDescriptor = {
label: 'What type of filter to use?',
key: 'branch_filter_strategy',
type: 'dropdown' as const,
type: 'dropdown',
description: 'Defaults to including all branches',
required: true,
variables: false,
@@ -39,12 +38,12 @@ export const pushEventsBranchFilterArgumentDescriptor = {
label: 'Filter value',
key: 'push_events_branch_filter',
description: 'Leave empty when using "all branches"',
type: 'string' as const,
type: 'string',
required: false,
variables: false,
};
export const triggerDescriptor: IRawTrigger = {
export const triggerDescriptor = {
name: 'Push event',
description: 'Push event (triggered when you push to the repository)',
// info: 'https://docs.gitlab.com/ee/user/project/integrations/webhook_events.html#push-events',

View File

@@ -1,17 +1,16 @@
import { IRawTrigger } from '@automatisch/types';
import defineTrigger from '../../../../helpers/define-trigger';
import { GITLAB_EVENT_TYPE } from '../types';
import defineTrigger from '../../../../helpers/define-trigger.js';
import { GITLAB_EVENT_TYPE } from '../types.js';
import {
getRegisterHookFn,
getRunFn,
getTestRunFn,
projectArgumentDescriptor,
unregisterHook,
} from '../lib';
} from '../lib.js';
import data from './release_event';
import data from './release_event.js';
export const triggerDescriptor: IRawTrigger = {
export const triggerDescriptor = {
name: 'Release event',
description: 'Release event (triggered when a release is created or updated)',
// info: 'https://docs.gitlab.com/ee/user/project/integrations/webhook_events.html#release-events',

View File

@@ -1,17 +1,16 @@
import { IRawTrigger } from '@automatisch/types';
import defineTrigger from '../../../../helpers/define-trigger';
import { GITLAB_EVENT_TYPE } from '../types';
import defineTrigger from '../../../../helpers/define-trigger.js';
import { GITLAB_EVENT_TYPE } from '../types.js';
import {
getRegisterHookFn,
getRunFn,
getTestRunFn,
projectArgumentDescriptor,
unregisterHook,
} from '../lib';
} from '../lib.js';
import data from './tag_push_event';
import data from './tag_push_event.js';
export const triggerDescriptor: IRawTrigger = {
export const triggerDescriptor = {
name: 'Tag event',
description:
'Tag event (triggered when you create or delete tags in the repository)',

View File

@@ -0,0 +1,15 @@
export const GITLAB_EVENT_TYPE = {
confidential_issues_events: 'confidential_issues_events',
confidential_note_events: 'confidential_note_events',
deployment_events: 'deployment_events',
feature_flag_events: 'feature_flag_events',
issues_events: 'issues_events',
job_events: 'job_events',
merge_requests_events: 'merge_requests_events',
note_events: 'note_events',
pipeline_events: 'pipeline_events',
push_events: 'push_events',
releases_events: 'releases_events',
tag_push_events: 'tag_push_events',
wiki_page_events: 'wiki_page_events',
};

View File

@@ -1,24 +0,0 @@
export enum GITLAB_EVENT_TYPE {
// ref: https://docs.gitlab.com/ee/api/projects.html#add-project-hook
confidential_issues_events = 'confidential_issues_events',
confidential_note_events = 'confidential_note_events',
deployment_events = 'deployment_events',
feature_flag_events = 'feature_flag_events',
issues_events = 'issues_events',
job_events = 'job_events',
merge_requests_events = 'merge_requests_events',
note_events = 'note_events',
pipeline_events = 'pipeline_events',
push_events = 'push_events',
releases_events = 'releases_events',
tag_push_events = 'tag_push_events',
wiki_page_events = 'wiki_page_events',
}
export type EventDescriptor = {
name: string;
description: string;
info?: string;
type: GITLAB_EVENT_TYPE;
data: any;
};

View File

@@ -1,17 +1,16 @@
import { IRawTrigger } from '@automatisch/types';
import defineTrigger from '../../../../helpers/define-trigger';
import { GITLAB_EVENT_TYPE } from '../types';
import defineTrigger from '../../../../helpers/define-trigger.js';
import { GITLAB_EVENT_TYPE } from '../types.js';
import {
getRegisterHookFn,
getRunFn,
getTestRunFn,
projectArgumentDescriptor,
unregisterHook,
} from '../lib';
} from '../lib.js';
import data from './wiki_page_event';
import data from './wiki_page_event.js';
export const triggerDescriptor: IRawTrigger = {
export const triggerDescriptor = {
name: 'Wiki page event',
description:
'Wiki page event (triggered when a wiki page is created, updated, or deleted)',