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
@@ -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(),
@@ -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,
@@ -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;
@@ -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;
@@ -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());
@@ -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(' @ ');
@@ -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}`;
@@ -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;
@@ -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;
@@ -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');
@@ -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],
};
@@ -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;
@@ -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;
@@ -0,0 +1,3 @@
import listProjects from './list-projects/index.js';
export default [listProjects];
@@ -1,3 +0,0 @@
import listProjects from './list-projects';
export default [listProjects];
@@ -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,
-1
View File
@@ -1 +0,0 @@
@@ -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',
@@ -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)',
@@ -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)',
@@ -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)',
@@ -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)',
@@ -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,
];
@@ -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,
];
@@ -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)',
@@ -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',
@@ -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}`
);
};
@@ -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}`
);
};
@@ -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)',
@@ -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)',
@@ -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)',
@@ -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',
@@ -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',
@@ -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)',
@@ -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',
};
@@ -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;
};
@@ -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)',