mirror of
https://github.com/n8n-io/n8n-nodes-starter.git
synced 2025-10-28 14:12:24 -05:00
Add nodes generated by the Node CLI, update README (#96)
This commit is contained in:
parent
67ee5b8e80
commit
4fb0cd0bc8
41 changed files with 8549 additions and 745 deletions
74
nodes/GithubIssues/resources/issue/create.ts
Normal file
74
nodes/GithubIssues/resources/issue/create.ts
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
import type { INodeProperties } from 'n8n-workflow';
|
||||
|
||||
const showOnlyForIssueCreate = {
|
||||
operation: ['create'],
|
||||
resource: ['issue'],
|
||||
};
|
||||
|
||||
export const issueCreateDescription: INodeProperties[] = [
|
||||
{
|
||||
displayName: 'Title',
|
||||
name: 'title',
|
||||
type: 'string',
|
||||
default: '',
|
||||
required: true,
|
||||
displayOptions: {
|
||||
show: showOnlyForIssueCreate,
|
||||
},
|
||||
description: 'The title of the issue',
|
||||
routing: {
|
||||
send: {
|
||||
type: 'body',
|
||||
property: 'title',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
displayName: 'Body',
|
||||
name: 'body',
|
||||
type: 'string',
|
||||
typeOptions: {
|
||||
rows: 5,
|
||||
},
|
||||
default: '',
|
||||
displayOptions: {
|
||||
show: showOnlyForIssueCreate,
|
||||
},
|
||||
description: 'The body of the issue',
|
||||
routing: {
|
||||
send: {
|
||||
type: 'body',
|
||||
property: 'body',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
displayName: 'Labels',
|
||||
name: 'labels',
|
||||
type: 'collection',
|
||||
typeOptions: {
|
||||
multipleValues: true,
|
||||
multipleValueButtonText: 'Add Label',
|
||||
},
|
||||
displayOptions: {
|
||||
show: showOnlyForIssueCreate,
|
||||
},
|
||||
default: { label: '' },
|
||||
options: [
|
||||
{
|
||||
displayName: 'Label',
|
||||
name: 'label',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'Label to add to issue',
|
||||
},
|
||||
],
|
||||
routing: {
|
||||
send: {
|
||||
type: 'body',
|
||||
property: 'labels',
|
||||
value: '={{$value.map((data) => data.label)}}',
|
||||
},
|
||||
},
|
||||
},
|
||||
];
|
||||
14
nodes/GithubIssues/resources/issue/get.ts
Normal file
14
nodes/GithubIssues/resources/issue/get.ts
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
import type { INodeProperties } from 'n8n-workflow';
|
||||
import { issueSelect } from '../../shared/descriptions';
|
||||
|
||||
const showOnlyForIssueGet = {
|
||||
operation: ['get'],
|
||||
resource: ['issue'],
|
||||
};
|
||||
|
||||
export const issueGetDescription: INodeProperties[] = [
|
||||
{
|
||||
...issueSelect,
|
||||
displayOptions: { show: showOnlyForIssueGet },
|
||||
},
|
||||
];
|
||||
124
nodes/GithubIssues/resources/issue/getAll.ts
Normal file
124
nodes/GithubIssues/resources/issue/getAll.ts
Normal file
|
|
@ -0,0 +1,124 @@
|
|||
import type { INodeProperties } from 'n8n-workflow';
|
||||
import { parseLinkHeader } from '../../shared/utils';
|
||||
|
||||
const showOnlyForIssueGetMany = {
|
||||
operation: ['getAll'],
|
||||
resource: ['issue'],
|
||||
};
|
||||
|
||||
export const issueGetManyDescription: INodeProperties[] = [
|
||||
{
|
||||
displayName: 'Limit',
|
||||
name: 'limit',
|
||||
type: 'number',
|
||||
displayOptions: {
|
||||
show: {
|
||||
...showOnlyForIssueGetMany,
|
||||
returnAll: [false],
|
||||
},
|
||||
},
|
||||
typeOptions: {
|
||||
minValue: 1,
|
||||
maxValue: 100,
|
||||
},
|
||||
default: 50,
|
||||
routing: {
|
||||
send: {
|
||||
type: 'query',
|
||||
property: 'per_page',
|
||||
},
|
||||
output: {
|
||||
maxResults: '={{$value}}',
|
||||
},
|
||||
},
|
||||
description: 'Max number of results to return',
|
||||
},
|
||||
{
|
||||
displayName: 'Return All',
|
||||
name: 'returnAll',
|
||||
type: 'boolean',
|
||||
displayOptions: {
|
||||
show: showOnlyForIssueGetMany,
|
||||
},
|
||||
default: false,
|
||||
description: 'Whether to return all results or only up to a given limit',
|
||||
routing: {
|
||||
send: {
|
||||
paginate: '={{ $value }}',
|
||||
type: 'query',
|
||||
property: 'per_page',
|
||||
value: '100',
|
||||
},
|
||||
operations: {
|
||||
pagination: {
|
||||
type: 'generic',
|
||||
properties: {
|
||||
continue: `={{ !!(${parseLinkHeader.toString()})($response.headers?.link).next }}`,
|
||||
request: {
|
||||
url: `={{ (${parseLinkHeader.toString()})($response.headers?.link)?.next ?? $request.url }}`,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
displayName: 'Filters',
|
||||
name: 'filters',
|
||||
type: 'collection',
|
||||
typeOptions: {
|
||||
multipleValueButtonText: 'Add Filter',
|
||||
},
|
||||
displayOptions: {
|
||||
show: showOnlyForIssueGetMany,
|
||||
},
|
||||
default: {},
|
||||
options: [
|
||||
{
|
||||
displayName: 'Updated Since',
|
||||
name: 'since',
|
||||
type: 'dateTime',
|
||||
default: '',
|
||||
description: 'Return only issues updated at or after this time',
|
||||
routing: {
|
||||
request: {
|
||||
qs: {
|
||||
since: '={{$value}}',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
displayName: 'State',
|
||||
name: 'state',
|
||||
type: 'options',
|
||||
options: [
|
||||
{
|
||||
name: 'All',
|
||||
value: 'all',
|
||||
description: 'Returns issues with any state',
|
||||
},
|
||||
{
|
||||
name: 'Closed',
|
||||
value: 'closed',
|
||||
description: 'Return issues with "closed" state',
|
||||
},
|
||||
{
|
||||
name: 'Open',
|
||||
value: 'open',
|
||||
description: 'Return issues with "open" state',
|
||||
},
|
||||
],
|
||||
default: 'open',
|
||||
description: 'The issue state to filter on',
|
||||
routing: {
|
||||
request: {
|
||||
qs: {
|
||||
state: '={{$value}}',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
75
nodes/GithubIssues/resources/issue/index.ts
Normal file
75
nodes/GithubIssues/resources/issue/index.ts
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
import type { INodeProperties } from 'n8n-workflow';
|
||||
import { repoNameSelect, repoOwnerSelect } from '../../shared/descriptions';
|
||||
import { issueGetManyDescription } from './getAll';
|
||||
import { issueGetDescription } from './get';
|
||||
import { issueCreateDescription } from './create';
|
||||
|
||||
const showOnlyForIssues = {
|
||||
resource: ['issue'],
|
||||
};
|
||||
|
||||
export const issueDescription: INodeProperties[] = [
|
||||
{
|
||||
displayName: 'Operation',
|
||||
name: 'operation',
|
||||
type: 'options',
|
||||
noDataExpression: true,
|
||||
displayOptions: {
|
||||
show: showOnlyForIssues,
|
||||
},
|
||||
options: [
|
||||
{
|
||||
name: 'Get Many',
|
||||
value: 'getAll',
|
||||
action: 'Get issues in a repository',
|
||||
description: 'Get many issues in a repository',
|
||||
routing: {
|
||||
request: {
|
||||
method: 'GET',
|
||||
url: '=/repos/{{$parameter.owner}}/{{$parameter.repository}}/issues',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'Get',
|
||||
value: 'get',
|
||||
action: 'Get an issue',
|
||||
description: 'Get the data of a single issue',
|
||||
routing: {
|
||||
request: {
|
||||
method: 'GET',
|
||||
url: '=/repos/{{$parameter.owner}}/{{$parameter.repository}}/issues/{{$parameter.issue}}',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'Create',
|
||||
value: 'create',
|
||||
action: 'Create a new issue',
|
||||
description: 'Create a new issue',
|
||||
routing: {
|
||||
request: {
|
||||
method: 'POST',
|
||||
url: '=/repos/{{$parameter.owner}}/{{$parameter.repository}}/issues',
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
default: 'getAll',
|
||||
},
|
||||
{
|
||||
...repoOwnerSelect,
|
||||
displayOptions: {
|
||||
show: showOnlyForIssues,
|
||||
},
|
||||
},
|
||||
{
|
||||
...repoNameSelect,
|
||||
displayOptions: {
|
||||
show: showOnlyForIssues,
|
||||
},
|
||||
},
|
||||
...issueGetManyDescription,
|
||||
...issueGetDescription,
|
||||
...issueCreateDescription,
|
||||
];
|
||||
65
nodes/GithubIssues/resources/issueComment/getAll.ts
Normal file
65
nodes/GithubIssues/resources/issueComment/getAll.ts
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
import type { INodeProperties } from 'n8n-workflow';
|
||||
import { parseLinkHeader } from '../../shared/utils';
|
||||
|
||||
const showOnlyForIssueCommentGetMany = {
|
||||
operation: ['getAll'],
|
||||
resource: ['issueComment'],
|
||||
};
|
||||
|
||||
export const issueCommentGetManyDescription: INodeProperties[] = [
|
||||
{
|
||||
displayName: 'Limit',
|
||||
name: 'limit',
|
||||
type: 'number',
|
||||
displayOptions: {
|
||||
show: {
|
||||
...showOnlyForIssueCommentGetMany,
|
||||
returnAll: [false],
|
||||
},
|
||||
},
|
||||
typeOptions: {
|
||||
minValue: 1,
|
||||
maxValue: 100,
|
||||
},
|
||||
default: 50,
|
||||
routing: {
|
||||
send: {
|
||||
type: 'query',
|
||||
property: 'per_page',
|
||||
},
|
||||
output: {
|
||||
maxResults: '={{$value}}',
|
||||
},
|
||||
},
|
||||
description: 'Max number of results to return',
|
||||
},
|
||||
{
|
||||
displayName: 'Return All',
|
||||
name: 'returnAll',
|
||||
type: 'boolean',
|
||||
displayOptions: {
|
||||
show: showOnlyForIssueCommentGetMany,
|
||||
},
|
||||
default: false,
|
||||
description: 'Whether to return all results or only up to a given limit',
|
||||
routing: {
|
||||
send: {
|
||||
paginate: '={{ $value }}',
|
||||
type: 'query',
|
||||
property: 'per_page',
|
||||
value: '100',
|
||||
},
|
||||
operations: {
|
||||
pagination: {
|
||||
type: 'generic',
|
||||
properties: {
|
||||
continue: `={{ !!(${parseLinkHeader.toString()})($response.headers?.link).next }}`,
|
||||
request: {
|
||||
url: `={{ (${parseLinkHeader.toString()})($response.headers?.link)?.next ?? $request.url }}`,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
];
|
||||
47
nodes/GithubIssues/resources/issueComment/index.ts
Normal file
47
nodes/GithubIssues/resources/issueComment/index.ts
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
import type { INodeProperties } from 'n8n-workflow';
|
||||
import { repoNameSelect, repoOwnerSelect } from '../../shared/descriptions';
|
||||
import { issueCommentGetManyDescription } from './getAll';
|
||||
|
||||
const showOnlyForIssueComments = {
|
||||
resource: ['issueComment'],
|
||||
};
|
||||
|
||||
export const issueCommentDescription: INodeProperties[] = [
|
||||
{
|
||||
displayName: 'Operation',
|
||||
name: 'operation',
|
||||
type: 'options',
|
||||
noDataExpression: true,
|
||||
displayOptions: {
|
||||
show: showOnlyForIssueComments,
|
||||
},
|
||||
options: [
|
||||
{
|
||||
name: 'Get Many',
|
||||
value: 'getAll',
|
||||
action: 'Get issue comments',
|
||||
description: 'Get issue comments',
|
||||
routing: {
|
||||
request: {
|
||||
method: 'GET',
|
||||
url: '=/repos/{{$parameter.owner}}/{{$parameter.repository}}/issues/comments',
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
default: 'getAll',
|
||||
},
|
||||
{
|
||||
...repoOwnerSelect,
|
||||
displayOptions: {
|
||||
show: showOnlyForIssueComments,
|
||||
},
|
||||
},
|
||||
{
|
||||
...repoNameSelect,
|
||||
displayOptions: {
|
||||
show: showOnlyForIssueComments,
|
||||
},
|
||||
},
|
||||
...issueCommentGetManyDescription,
|
||||
];
|
||||
Loading…
Add table
Add a link
Reference in a new issue