Compare commits
37 Commits
disable-ca
...
dependabot
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5650bed28f | ||
|
|
73c99818fa | ||
|
|
a36a4a1841 | ||
|
|
b2ba2d1cf1 | ||
|
|
7eb8838df5 | ||
|
|
74b954cc9a | ||
|
|
58094ce2e5 | ||
|
|
0b3d008aa1 | ||
|
|
571ab0acb1 | ||
|
|
0466fdb2df | ||
|
|
9969923e63 | ||
|
|
cfbd8bcab6 | ||
|
|
979eefad2e | ||
|
|
3e403ea10b | ||
|
|
7828722ad9 | ||
|
|
5e81fb4d38 | ||
|
|
4058614a41 | ||
|
|
2d6d19c412 | ||
|
|
cf37545eb1 | ||
|
|
40a1d2e467 | ||
|
|
9fbef7d5ad | ||
|
|
246155d65e | ||
|
|
231c29c85a | ||
|
|
35d7b9b3eb | ||
|
|
f61f363162 | ||
|
|
d8174322fd | ||
|
|
c429bcc06a | ||
|
|
6ad687a369 | ||
|
|
a4a172f3cb | ||
|
|
bd8bf2ca91 | ||
|
|
b11e4aa54f | ||
|
|
8915c01d82 | ||
|
|
0c5df74fad | ||
|
|
994a677b3e | ||
|
|
b4c404769c | ||
|
|
a5c6769fa7 | ||
|
|
10212ac293 |
@@ -12,6 +12,9 @@ trim_trailing_whitespace = true
|
|||||||
indent_style = space
|
indent_style = space
|
||||||
indent_size = 2
|
indent_size = 2
|
||||||
|
|
||||||
|
[*.md]
|
||||||
|
trim_trailing_whitespace = false
|
||||||
|
|
||||||
[*.yml]
|
[*.yml]
|
||||||
indent_style = space
|
indent_style = space
|
||||||
indent_size = 2
|
indent_size = 2
|
||||||
|
|||||||
17
.eslintrc.js
17
.eslintrc.js
@@ -1,3 +1,6 @@
|
|||||||
|
/**
|
||||||
|
* @type {import('@types/eslint').ESLint.ConfigData}
|
||||||
|
*/
|
||||||
module.exports = {
|
module.exports = {
|
||||||
root: true,
|
root: true,
|
||||||
|
|
||||||
@@ -8,23 +11,23 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
parser: '@typescript-eslint/parser',
|
parser: '@typescript-eslint/parser',
|
||||||
|
|
||||||
parserOptions: {
|
parserOptions: {
|
||||||
project: ['./tsconfig.json'],
|
project: ['./tsconfig.json'],
|
||||||
sourceType: 'module',
|
sourceType: 'module',
|
||||||
extraFileExtensions: ['.json'],
|
extraFileExtensions: ['.json'],
|
||||||
},
|
},
|
||||||
ignorePatterns: [
|
|
||||||
'.eslintrc.js',
|
ignorePatterns: ['.eslintrc.js', '**/*.js', '**/node_modules/**', '**/dist/**'],
|
||||||
'**/*.js',
|
|
||||||
'**/node_modules/**',
|
|
||||||
'**/dist/**',
|
|
||||||
],
|
|
||||||
|
|
||||||
overrides: [
|
overrides: [
|
||||||
{
|
{
|
||||||
files: ['package.json'],
|
files: ['package.json'],
|
||||||
plugins: ['eslint-plugin-n8n-nodes-base'],
|
plugins: ['eslint-plugin-n8n-nodes-base'],
|
||||||
extends: ['plugin:n8n-nodes-base/community'],
|
extends: ['plugin:n8n-nodes-base/community'],
|
||||||
|
rules: {
|
||||||
|
'n8n-nodes-base/community-package-json-name-still-default': 'off',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
files: ['./credentials/**/*.ts'],
|
files: ['./credentials/**/*.ts'],
|
||||||
@@ -43,8 +46,6 @@ module.exports = {
|
|||||||
'n8n-nodes-base/node-execute-block-missing-continue-on-fail': 'off',
|
'n8n-nodes-base/node-execute-block-missing-continue-on-fail': 'off',
|
||||||
'n8n-nodes-base/node-resource-description-filename-against-convention': 'off',
|
'n8n-nodes-base/node-resource-description-filename-against-convention': 'off',
|
||||||
'n8n-nodes-base/node-param-fixed-collection-type-unsorted-items': 'off',
|
'n8n-nodes-base/node-param-fixed-collection-type-unsorted-items': 'off',
|
||||||
'n8n-nodes-base/node-execute-block-operation-missing-singular-pairing': 'off',
|
|
||||||
'n8n-nodes-base/node-execute-block-operation-missing-plural-pairing': 'off',
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|||||||
16
.eslintrc.prepublish.js
Normal file
16
.eslintrc.prepublish.js
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
/**
|
||||||
|
* @type {import('@types/eslint').ESLint.ConfigData}
|
||||||
|
*/
|
||||||
|
module.exports = {
|
||||||
|
extends: "./.eslintrc.js",
|
||||||
|
|
||||||
|
overrides: [
|
||||||
|
{
|
||||||
|
files: ['package.json'],
|
||||||
|
plugins: ['eslint-plugin-n8n-nodes-base'],
|
||||||
|
rules: {
|
||||||
|
'n8n-nodes-base/community-package-json-name-still-default': 'error',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
2
.npmignore
Normal file
2
.npmignore
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
.DS_Store
|
||||||
|
*.tsbuildinfo
|
||||||
76
CODE_OF_CONDUCT.md
Normal file
76
CODE_OF_CONDUCT.md
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
# Contributor Covenant Code of Conduct
|
||||||
|
|
||||||
|
## Our Pledge
|
||||||
|
|
||||||
|
In the interest of fostering an open and welcoming environment, we as
|
||||||
|
contributors and maintainers pledge to making participation in our project and
|
||||||
|
our community a harassment-free experience for everyone, regardless of age, body
|
||||||
|
size, disability, ethnicity, sex characteristics, gender identity and expression,
|
||||||
|
level of experience, education, socio-economic status, nationality, personal
|
||||||
|
appearance, race, religion, or sexual identity and orientation.
|
||||||
|
|
||||||
|
## Our Standards
|
||||||
|
|
||||||
|
Examples of behavior that contributes to creating a positive environment
|
||||||
|
include:
|
||||||
|
|
||||||
|
* Using welcoming and inclusive language
|
||||||
|
* Being respectful of differing viewpoints and experiences
|
||||||
|
* Gracefully accepting constructive criticism
|
||||||
|
* Focusing on what is best for the community
|
||||||
|
* Showing empathy towards other community members
|
||||||
|
|
||||||
|
Examples of unacceptable behavior by participants include:
|
||||||
|
|
||||||
|
* The use of sexualized language or imagery and unwelcome sexual attention or
|
||||||
|
advances
|
||||||
|
* Trolling, insulting/derogatory comments, and personal or political attacks
|
||||||
|
* Public or private harassment
|
||||||
|
* Publishing others' private information, such as a physical or electronic
|
||||||
|
address, without explicit permission
|
||||||
|
* Other conduct which could reasonably be considered inappropriate in a
|
||||||
|
professional setting
|
||||||
|
|
||||||
|
## Our Responsibilities
|
||||||
|
|
||||||
|
Project maintainers are responsible for clarifying the standards of acceptable
|
||||||
|
behavior and are expected to take appropriate and fair corrective action in
|
||||||
|
response to any instances of unacceptable behavior.
|
||||||
|
|
||||||
|
Project maintainers have the right and responsibility to remove, edit, or
|
||||||
|
reject comments, commits, code, wiki edits, issues, and other contributions
|
||||||
|
that are not aligned to this Code of Conduct, or to ban temporarily or
|
||||||
|
permanently any contributor for other behaviors that they deem inappropriate,
|
||||||
|
threatening, offensive, or harmful.
|
||||||
|
|
||||||
|
## Scope
|
||||||
|
|
||||||
|
This Code of Conduct applies both within project spaces and in public spaces
|
||||||
|
when an individual is representing the project or its community. Examples of
|
||||||
|
representing a project or community include using an official project e-mail
|
||||||
|
address, posting via an official social media account, or acting as an appointed
|
||||||
|
representative at an online or offline event. Representation of a project may be
|
||||||
|
further defined and clarified by project maintainers.
|
||||||
|
|
||||||
|
## Enforcement
|
||||||
|
|
||||||
|
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||||
|
reported by contacting the project team at jan@n8n.io. All
|
||||||
|
complaints will be reviewed and investigated and will result in a response that
|
||||||
|
is deemed necessary and appropriate to the circumstances. The project team is
|
||||||
|
obligated to maintain confidentiality with regard to the reporter of an incident.
|
||||||
|
Further details of specific enforcement policies may be posted separately.
|
||||||
|
|
||||||
|
Project maintainers who do not follow or enforce the Code of Conduct in good
|
||||||
|
faith may face temporary or permanent repercussions as determined by other
|
||||||
|
members of the project's leadership.
|
||||||
|
|
||||||
|
## Attribution
|
||||||
|
|
||||||
|
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
||||||
|
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
|
||||||
|
|
||||||
|
[homepage]: https://www.contributor-covenant.org
|
||||||
|
|
||||||
|
For answers to common questions about this code of conduct, see
|
||||||
|
https://www.contributor-covenant.org/faq
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
Copyright <YEAR> <COPYRIGHT HOLDER>
|
Copyright 2022 n8n
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
this software and associated documentation files (the "Software"), to deal in
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
|
|||||||
48
README.md
48
README.md
@@ -1,21 +1,45 @@
|
|||||||
|

|
||||||
|
|
||||||
# n8n-nodes-starter
|
# n8n-nodes-starter
|
||||||
|
|
||||||
This repo contains example nodes to help you get started building your own custom integrations for n8n.
|
This repo contains example nodes to help you get started building your own custom integrations for [n8n](n8n.io). It includes the node linter and other dependencies.
|
||||||
|
|
||||||
All nodes are npm packages. To make your custom node available to the community, you must create it as an npm package, and [submit it to the npm registry](https://docs.npmjs.com/packages-and-modules/contributing-packages-to-the-registry).
|
To make your custom node available to the community, you must create it as an npm package, and [submit it to the npm registry](https://docs.npmjs.com/packages-and-modules/contributing-packages-to-the-registry).
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
You need the following installed on your development machine:
|
||||||
|
|
||||||
|
* [git](https://git-scm.com/downloads)
|
||||||
|
* Node.js and pnpm. Minimum version Node 18. You can find instructions on how to install both using nvm (Node Version Manager) for Linux, Mac, and WSL [here](https://github.com/nvm-sh/nvm). For Windows users, refer to Microsoft's guide to [Install NodeJS on Windows](https://docs.microsoft.com/en-us/windows/dev-environment/javascript/nodejs-on-windows).
|
||||||
|
* Install n8n with:
|
||||||
|
```
|
||||||
|
pnpm install n8n -g
|
||||||
|
```
|
||||||
|
* Recommended: follow n8n's guide to [set up your development environment](https://docs.n8n.io/integrations/creating-nodes/build/node-development-environment/).
|
||||||
|
|
||||||
## Using this starter
|
## Using this starter
|
||||||
|
|
||||||
1. Clone the repo:
|
These are the basic steps for working with the starter. For detailed guidance on creating and publishing nodes, refer to the [documentation](https://docs.n8n.io/integrations/creating-nodes/).
|
||||||
```
|
|
||||||
git clone https://github.com/n8n-io/n8n-nodes-starter.git
|
1. [Generate a new repository](https://github.com/n8n-io/n8n-nodes-starter/generate) from this template repository.
|
||||||
```
|
2. Clone your new repo:
|
||||||
2. Refer to our [documentation on creating nodes](https://docs.n8n.io/integrations/creating-nodes/).
|
```
|
||||||
3. Open the project in your editor.
|
git clone https://github.com/<your organization>/<your-repo-name>.git
|
||||||
4. Browse the examples in `/nodes`. Modify the examples, or replace them with your own nodes.
|
```
|
||||||
5. Update the `package.json` to match your details.
|
3. Run `pnpm i` to install dependencies.
|
||||||
6. Run `npm run lint` to check for errors or `npm run lintfix` to automatically fix errors when possible.
|
4. Open the project in your editor.
|
||||||
7. Publish your package to npm. More information on the links below.
|
5. Browse the examples in `/nodes` and `/credentials`. Modify the examples, or replace them with your own nodes.
|
||||||
|
6. Update the `package.json` to match your details.
|
||||||
|
7. Run `pnpm lint` to check for errors or `pnpm lintfix` to automatically fix errors when possible.
|
||||||
|
8. Test your node locally. Refer to [Run your node locally](https://docs.n8n.io/integrations/creating-nodes/test/run-node-locally/) for guidance.
|
||||||
|
9. Replace this README with documentation for your node. Use the [README_TEMPLATE](README_TEMPLATE.md) to get started.
|
||||||
|
10. Update the LICENSE file to use your details.
|
||||||
|
11. [Publish](https://docs.npmjs.com/packages-and-modules/contributing-packages-to-the-registry) your package to npm.
|
||||||
|
|
||||||
|
## More information
|
||||||
|
|
||||||
|
Refer to our [documentation on creating nodes](https://docs.n8n.io/integrations/creating-nodes/) for detailed information on building your own nodes.
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
|
|||||||
48
README_TEMPLATE.md
Normal file
48
README_TEMPLATE.md
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
# n8n-nodes-_node-name_
|
||||||
|
|
||||||
|
This is an n8n community node. It lets you use _app/service name_ in your n8n workflows.
|
||||||
|
|
||||||
|
_App/service name_ is _one or two sentences describing the service this node integrates with_.
|
||||||
|
|
||||||
|
[n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.
|
||||||
|
|
||||||
|
[Installation](#installation)
|
||||||
|
[Operations](#operations)
|
||||||
|
[Credentials](#credentials) <!-- delete if no auth needed -->
|
||||||
|
[Compatibility](#compatibility)
|
||||||
|
[Usage](#usage) <!-- delete if not using this section -->
|
||||||
|
[Resources](#resources)
|
||||||
|
[Version history](#version-history) <!-- delete if not using this section -->
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.
|
||||||
|
|
||||||
|
## Operations
|
||||||
|
|
||||||
|
_List the operations supported by your node._
|
||||||
|
|
||||||
|
## Credentials
|
||||||
|
|
||||||
|
_If users need to authenticate with the app/service, provide details here. You should include prerequisites (such as signing up with the service), available authentication methods, and how to set them up._
|
||||||
|
|
||||||
|
## Compatibility
|
||||||
|
|
||||||
|
_State the minimum n8n version, as well as which versions you test against. You can also include any known version incompatibility issues._
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
_This is an optional section. Use it to help users with any difficult or confusing aspects of the node._
|
||||||
|
|
||||||
|
_By the time users are looking for community nodes, they probably already know n8n basics. But if you expect new users, you can link to the [Try it out](https://docs.n8n.io/try-it-out/) documentation to help them get started._
|
||||||
|
|
||||||
|
## Resources
|
||||||
|
|
||||||
|
* [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
|
||||||
|
* _Link to app/service documentation._
|
||||||
|
|
||||||
|
## Version history
|
||||||
|
|
||||||
|
_This is another optional section. If your node has multiple versions, include a short description of available versions and what changed, as well as any compatibility impact._
|
||||||
|
|
||||||
|
|
||||||
@@ -15,6 +15,9 @@ export class HttpBinApi implements ICredentialType {
|
|||||||
name: 'token',
|
name: 'token',
|
||||||
type: 'string',
|
type: 'string',
|
||||||
default: '',
|
default: '',
|
||||||
|
typeOptions: {
|
||||||
|
password: true,
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
displayName: 'Domain',
|
displayName: 'Domain',
|
||||||
@@ -28,14 +31,14 @@ export class HttpBinApi implements ICredentialType {
|
|||||||
// stating how this credential is injected as part of the request
|
// stating how this credential is injected as part of the request
|
||||||
// An example is the Http Request node that can make generic calls
|
// An example is the Http Request node that can make generic calls
|
||||||
// reusing this credential
|
// reusing this credential
|
||||||
authenticate = {
|
authenticate: IAuthenticateGeneric = {
|
||||||
type: 'generic',
|
type: 'generic',
|
||||||
properties: {
|
properties: {
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: '={{"Bearer " + $credentials.token}}',
|
Authorization: '={{"Bearer " + $credentials.token}}',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
} as IAuthenticateGeneric;
|
};
|
||||||
|
|
||||||
// The block below tells how this credential can be tested
|
// The block below tells how this credential can be tested
|
||||||
test: ICredentialTestRequest = {
|
test: ICredentialTestRequest = {
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import { IExecuteFunctions } from 'n8n-core';
|
import type {
|
||||||
import {
|
IExecuteFunctions,
|
||||||
INodeExecutionData,
|
INodeExecutionData,
|
||||||
INodeType,
|
INodeType,
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
NodeOperationError,
|
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
import { NodeConnectionType, NodeOperationError } from 'n8n-workflow';
|
||||||
|
|
||||||
export class ExampleNode implements INodeType {
|
export class ExampleNode implements INodeType {
|
||||||
description: INodeTypeDescription = {
|
description: INodeTypeDescription = {
|
||||||
@@ -16,8 +16,8 @@ export class ExampleNode implements INodeType {
|
|||||||
defaults: {
|
defaults: {
|
||||||
name: 'Example Node',
|
name: 'Example Node',
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: [NodeConnectionType.Main],
|
||||||
outputs: ['main'],
|
outputs: [NodeConnectionType.Main],
|
||||||
properties: [
|
properties: [
|
||||||
// Node properties which the user gets displayed and
|
// Node properties which the user gets displayed and
|
||||||
// can change on the node.
|
// can change on the node.
|
||||||
@@ -50,7 +50,7 @@ export class ExampleNode implements INodeType {
|
|||||||
myString = this.getNodeParameter('myString', itemIndex, '') as string;
|
myString = this.getNodeParameter('myString', itemIndex, '') as string;
|
||||||
item = items[itemIndex];
|
item = items[itemIndex];
|
||||||
|
|
||||||
item.json['myString'] = myString;
|
item.json.myString = myString;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
// This node should never fail but we want to showcase how
|
// This node should never fail but we want to showcase how
|
||||||
// to handle errors.
|
// to handle errors.
|
||||||
@@ -71,6 +71,6 @@ export class ExampleNode implements INodeType {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.prepareOutputData(items);
|
return [items];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ export class HttpBin implements INodeType {
|
|||||||
description: 'Interact with HttpBin API',
|
description: 'Interact with HttpBin API',
|
||||||
defaults: {
|
defaults: {
|
||||||
name: 'HttpBin',
|
name: 'HttpBin',
|
||||||
color: '#3b4151',
|
|
||||||
},
|
},
|
||||||
inputs: ['main'],
|
inputs: ['main'],
|
||||||
outputs: ['main'],
|
outputs: ['main'],
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ export const httpVerbOperations: INodeProperties[] = [
|
|||||||
{
|
{
|
||||||
name: 'GET',
|
name: 'GET',
|
||||||
value: 'get',
|
value: 'get',
|
||||||
action: 'Perform a GET request',
|
description: 'Perform a GET request',
|
||||||
routing: {
|
routing: {
|
||||||
request: {
|
request: {
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
@@ -28,7 +28,7 @@ export const httpVerbOperations: INodeProperties[] = [
|
|||||||
{
|
{
|
||||||
name: 'DELETE',
|
name: 'DELETE',
|
||||||
value: 'delete',
|
value: 'delete',
|
||||||
action: 'Perform a DELETE request',
|
description: 'Perform a DELETE request',
|
||||||
routing: {
|
routing: {
|
||||||
request: {
|
request: {
|
||||||
method: 'DELETE',
|
method: 'DELETE',
|
||||||
@@ -45,10 +45,10 @@ export const httpVerbOperations: INodeProperties[] = [
|
|||||||
// We do that by adding `operation: ["get"]` to `displayOptions.show`
|
// We do that by adding `operation: ["get"]` to `displayOptions.show`
|
||||||
const getOperation: INodeProperties[] = [
|
const getOperation: INodeProperties[] = [
|
||||||
{
|
{
|
||||||
|
displayName: 'Type of Data',
|
||||||
name: 'typeofData',
|
name: 'typeofData',
|
||||||
default: 'queryParameter',
|
default: 'queryParameter',
|
||||||
description: 'Select type of data to send [Query Parameters]',
|
description: 'Select type of data to send [Query Parameters]',
|
||||||
displayName: 'Type of Data',
|
|
||||||
displayOptions: {
|
displayOptions: {
|
||||||
show: {
|
show: {
|
||||||
resource: ['httpVerb'],
|
resource: ['httpVerb'],
|
||||||
@@ -65,10 +65,10 @@ const getOperation: INodeProperties[] = [
|
|||||||
required: true,
|
required: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
displayName: 'Query Parameters',
|
||||||
name: 'arguments',
|
name: 'arguments',
|
||||||
default: {},
|
default: {},
|
||||||
description: "The request's query parameters",
|
description: "The request's query parameters",
|
||||||
displayName: 'Query Parameters',
|
|
||||||
displayOptions: {
|
displayOptions: {
|
||||||
show: {
|
show: {
|
||||||
resource: ['httpVerb'],
|
resource: ['httpVerb'],
|
||||||
@@ -116,10 +116,10 @@ const getOperation: INodeProperties[] = [
|
|||||||
// We do that by adding `operation: ["delete"]` to `displayOptions.show`
|
// We do that by adding `operation: ["delete"]` to `displayOptions.show`
|
||||||
const deleteOperation: INodeProperties[] = [
|
const deleteOperation: INodeProperties[] = [
|
||||||
{
|
{
|
||||||
|
displayName: 'Type of Data',
|
||||||
name: 'typeofData',
|
name: 'typeofData',
|
||||||
default: 'queryParameter',
|
default: 'queryParameter',
|
||||||
description: 'Select type of data to send [Query Parameter Arguments, JSON-Body]',
|
description: 'Select type of data to send [Query Parameter Arguments, JSON-Body]',
|
||||||
displayName: 'Type of Data',
|
|
||||||
displayOptions: {
|
displayOptions: {
|
||||||
show: {
|
show: {
|
||||||
resource: ['httpVerb'],
|
resource: ['httpVerb'],
|
||||||
@@ -140,10 +140,10 @@ const deleteOperation: INodeProperties[] = [
|
|||||||
type: 'options',
|
type: 'options',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
displayName: 'Query Parameters',
|
||||||
name: 'arguments',
|
name: 'arguments',
|
||||||
default: {},
|
default: {},
|
||||||
description: "The request's query parameters",
|
description: "The request's query parameters",
|
||||||
displayName: 'Query Parameters',
|
|
||||||
displayOptions: {
|
displayOptions: {
|
||||||
show: {
|
show: {
|
||||||
resource: ['httpVerb'],
|
resource: ['httpVerb'],
|
||||||
@@ -187,10 +187,10 @@ const deleteOperation: INodeProperties[] = [
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
displayName: 'JSON Object',
|
||||||
name: 'arguments',
|
name: 'arguments',
|
||||||
default: {},
|
default: {},
|
||||||
description: "The request's JSON properties",
|
description: "The request's JSON properties",
|
||||||
displayName: 'JSON Object',
|
|
||||||
displayOptions: {
|
displayOptions: {
|
||||||
show: {
|
show: {
|
||||||
resource: ['httpVerb'],
|
resource: ['httpVerb'],
|
||||||
|
|||||||
5563
package-lock.json
generated
5563
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
43
package.json
43
package.json
@@ -1,28 +1,34 @@
|
|||||||
{
|
{
|
||||||
"name": "n8n-nodes-starter",
|
"name": "n8n-nodes-<...>",
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"description": "Example starter module for custom n8n nodes.",
|
"description": "",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"n8n-community-node-package"
|
"n8n-community-node-package"
|
||||||
],
|
],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"homepage": "https://n8n.io",
|
"homepage": "",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Jan Oberhauser",
|
"name": "",
|
||||||
"email": "jan@n8n.io"
|
"email": ""
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git+https://github.com/n8n-io/n8n-nodes-starter.git"
|
"url": "https://github.com/<...>/n8n-nodes-<...>.git"
|
||||||
},
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18.10",
|
||||||
|
"pnpm": ">=9.1"
|
||||||
|
},
|
||||||
|
"packageManager": "pnpm@9.1.4",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
"preinstall": "npx only-allow pnpm",
|
||||||
"build": "tsc && gulp build:icons",
|
"build": "tsc && gulp build:icons",
|
||||||
"dev": "tsc --watch",
|
"dev": "tsc --watch",
|
||||||
"format": "prettier nodes credentials --write",
|
"format": "prettier nodes credentials --write",
|
||||||
"lint": "tslint -p tsconfig.json -c tslint.json; eslint nodes credentials package.json",
|
"lint": "eslint nodes credentials package.json",
|
||||||
"lintfix": "tslint --fix -p tsconfig.json -c tslint.json; eslint nodes credentials package.json --fix",
|
"lintfix": "eslint nodes credentials package.json --fix",
|
||||||
"prepare": "npm run build && npm run lint"
|
"prepublishOnly": "pnpm build && pnpm lint -c .eslintrc.prepublish.js nodes credentials package.json"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
"dist"
|
"dist"
|
||||||
@@ -30,7 +36,7 @@
|
|||||||
"n8n": {
|
"n8n": {
|
||||||
"n8nNodesApiVersion": 1,
|
"n8nNodesApiVersion": 1,
|
||||||
"credentials": [
|
"credentials": [
|
||||||
"dist/credentials/ExampleCredentials.credentials.js",
|
"dist/credentials/ExampleCredentialsApi.credentials.js",
|
||||||
"dist/credentials/HttpBinApi.credentials.js"
|
"dist/credentials/HttpBinApi.credentials.js"
|
||||||
],
|
],
|
||||||
"nodes": [
|
"nodes": [
|
||||||
@@ -39,15 +45,14 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/express": "^4.17.6",
|
"@typescript-eslint/parser": "^7.15.0",
|
||||||
"@types/request-promise-native": "~1.0.15",
|
"eslint": "^8.56.0",
|
||||||
"@typescript-eslint/parser": "^5.29.0",
|
"eslint-plugin-n8n-nodes-base": "^1.16.1",
|
||||||
"eslint-plugin-n8n-nodes-base": "^1.5.1",
|
|
||||||
"gulp": "^4.0.2",
|
"gulp": "^4.0.2",
|
||||||
"n8n-core": "^0.125.0",
|
"prettier": "^3.3.2",
|
||||||
"n8n-workflow": "^0.107.0",
|
"typescript": "^5.5.3"
|
||||||
"prettier": "^2.7.1",
|
},
|
||||||
"tslint": "^6.1.2",
|
"peerDependencies": {
|
||||||
"typescript": "~4.6.0"
|
"n8n-workflow": "*"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
4286
pnpm-lock.yaml
generated
Normal file
4286
pnpm-lock.yaml
generated
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,25 +1,25 @@
|
|||||||
{
|
{
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"lib": [
|
|
||||||
"es2017",
|
|
||||||
"es2019"
|
|
||||||
],
|
|
||||||
"types": [
|
|
||||||
"node",
|
|
||||||
],
|
|
||||||
"module": "commonjs",
|
|
||||||
"noImplicitAny": true,
|
|
||||||
"removeComments": true,
|
|
||||||
"strictNullChecks": true,
|
|
||||||
"strict": true,
|
"strict": true,
|
||||||
"preserveConstEnums": true,
|
"module": "commonjs",
|
||||||
"resolveJsonModule": true,
|
"moduleResolution": "node",
|
||||||
"declaration": true,
|
|
||||||
"outDir": "./dist/",
|
|
||||||
"target": "es2019",
|
"target": "es2019",
|
||||||
"sourceMap": true,
|
"lib": ["es2019", "es2020", "es2022.error"],
|
||||||
"esModuleInterop": true,
|
"removeComments": true,
|
||||||
"useUnknownInCatchVariables": false,
|
"useUnknownInCatchVariables": false,
|
||||||
|
"forceConsistentCasingInFileNames": true,
|
||||||
|
"noImplicitAny": true,
|
||||||
|
"noImplicitReturns": true,
|
||||||
|
"noUnusedLocals": true,
|
||||||
|
"strictNullChecks": true,
|
||||||
|
"preserveConstEnums": true,
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"resolveJsonModule": true,
|
||||||
|
"incremental": true,
|
||||||
|
"declaration": true,
|
||||||
|
"sourceMap": true,
|
||||||
|
"skipLibCheck": true,
|
||||||
|
"outDir": "./dist/",
|
||||||
},
|
},
|
||||||
"include": [
|
"include": [
|
||||||
"credentials/**/*",
|
"credentials/**/*",
|
||||||
|
|||||||
127
tslint.json
127
tslint.json
@@ -1,127 +0,0 @@
|
|||||||
{
|
|
||||||
"linterOptions": {
|
|
||||||
"exclude": [
|
|
||||||
"node_modules/**/*"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"defaultSeverity": "error",
|
|
||||||
"jsRules": {},
|
|
||||||
"rules": {
|
|
||||||
"array-type": [
|
|
||||||
true,
|
|
||||||
"array-simple"
|
|
||||||
],
|
|
||||||
"arrow-return-shorthand": true,
|
|
||||||
"ban": [
|
|
||||||
true,
|
|
||||||
{
|
|
||||||
"name": "Array",
|
|
||||||
"message": "tsstyle#array-constructor"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"ban-types": [
|
|
||||||
true,
|
|
||||||
[
|
|
||||||
"Object",
|
|
||||||
"Use {} instead."
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"String",
|
|
||||||
"Use 'string' instead."
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Number",
|
|
||||||
"Use 'number' instead."
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Boolean",
|
|
||||||
"Use 'boolean' instead."
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"class-name": true,
|
|
||||||
"curly": [
|
|
||||||
true,
|
|
||||||
"ignore-same-line"
|
|
||||||
],
|
|
||||||
"forin": true,
|
|
||||||
"jsdoc-format": true,
|
|
||||||
"label-position": true,
|
|
||||||
"indent": [
|
|
||||||
true,
|
|
||||||
"tabs",
|
|
||||||
2
|
|
||||||
],
|
|
||||||
"member-access": [
|
|
||||||
true,
|
|
||||||
"no-public"
|
|
||||||
],
|
|
||||||
"new-parens": true,
|
|
||||||
"no-angle-bracket-type-assertion": true,
|
|
||||||
"no-any": true,
|
|
||||||
"no-arg": true,
|
|
||||||
"no-conditional-assignment": true,
|
|
||||||
"no-construct": true,
|
|
||||||
"no-debugger": true,
|
|
||||||
"no-default-export": true,
|
|
||||||
"no-duplicate-variable": true,
|
|
||||||
"no-inferrable-types": true,
|
|
||||||
"ordered-imports": [
|
|
||||||
true,
|
|
||||||
{
|
|
||||||
"import-sources-order": "any",
|
|
||||||
"named-imports-order": "case-insensitive"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"no-namespace": [
|
|
||||||
true,
|
|
||||||
"allow-declarations"
|
|
||||||
],
|
|
||||||
"no-reference": true,
|
|
||||||
"no-string-throw": true,
|
|
||||||
"no-unused-expression": true,
|
|
||||||
"no-var-keyword": true,
|
|
||||||
"object-literal-shorthand": true,
|
|
||||||
"only-arrow-functions": [
|
|
||||||
true,
|
|
||||||
"allow-declarations",
|
|
||||||
"allow-named-functions"
|
|
||||||
],
|
|
||||||
"prefer-const": true,
|
|
||||||
"radix": true,
|
|
||||||
"semicolon": [
|
|
||||||
true,
|
|
||||||
"always",
|
|
||||||
"ignore-bound-class-methods"
|
|
||||||
],
|
|
||||||
"switch-default": true,
|
|
||||||
"trailing-comma": [
|
|
||||||
true,
|
|
||||||
{
|
|
||||||
"multiline": {
|
|
||||||
"objects": "always",
|
|
||||||
"arrays": "always",
|
|
||||||
"functions": "always",
|
|
||||||
"typeLiterals": "ignore"
|
|
||||||
},
|
|
||||||
"esSpecCompliant": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"triple-equals": [
|
|
||||||
true,
|
|
||||||
"allow-null-check"
|
|
||||||
],
|
|
||||||
"use-isnan": true,
|
|
||||||
"quotes": [
|
|
||||||
"error",
|
|
||||||
"single"
|
|
||||||
],
|
|
||||||
"variable-name": [
|
|
||||||
true,
|
|
||||||
"check-format",
|
|
||||||
"ban-keywords",
|
|
||||||
"allow-leading-underscore",
|
|
||||||
"allow-trailing-underscore"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"rulesDirectory": []
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user