@atom8n/n8n-nodes-base 2.4.3 → 2.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/credentials/Imap.credentials.js +0 -0
- package/dist/credentials/OpenCTIApi.credentials.js +0 -0
- package/dist/nodes/Airtop/__schema__/v1.0.0/interaction/type.json +56 -0
- package/dist/nodes/Airtop/actions/file/load.operation.js +0 -0
- package/dist/nodes/Airtop/actions/session/waitForDownload.operation.js +0 -0
- package/dist/nodes/Aws/DynamoDB/__schema__/v1.0.0/item/delete.json +9 -0
- package/dist/nodes/Aws/ELB/AwsElb.node.js +0 -0
- package/dist/nodes/Aws/GenericFunctions.js +0 -0
- package/dist/nodes/Aws/IAM/descriptions/user/create.operation.js +0 -0
- package/dist/nodes/Aws/SES/__schema__/v1.0.0/email/sendTemplate.json +30 -0
- package/dist/nodes/BambooHr/__schema__/v1.0.0/employee/update.json +9 -0
- package/dist/nodes/BambooHr/v1/transport/index.js +0 -0
- package/dist/nodes/Bitly/LinkDescription.js +0 -0
- package/dist/nodes/Calendly/CalendlyTrigger.node.js +0 -0
- package/dist/nodes/DataTable/__schema__/v1.1.0/row/get.json +15 -0
- package/dist/nodes/DataTable/__schema__/v1.1.0/row/insert.json +15 -0
- package/dist/nodes/DateTime/V1/DateTimeV1.node.js +1 -1
- package/dist/nodes/Discourse/UserDescription.js +0 -0
- package/dist/nodes/Dropbox/__schema__/v1.0.0/folder/delete.json +26 -0
- package/dist/nodes/ExecuteWorkflow/ExecuteWorkflowTrigger/ExecuteWorkflowTrigger.node.js +15 -1
- package/dist/nodes/Flow/TaskDescription.js +0 -0
- package/dist/nodes/Git/GenericFunctions.d.ts +8 -0
- package/dist/nodes/Git/GenericFunctions.js +30 -0
- package/dist/nodes/Git/descriptions/ReflogDescription.d.ts +2 -0
- package/dist/nodes/Git/descriptions/ReflogDescription.js +56 -0
- package/dist/nodes/Github/GithubTriggerHelpers.d.ts +13 -0
- package/dist/nodes/Github/GithubTriggerHelpers.js +62 -0
- package/dist/nodes/Github/__schema__/v1.1.0/workflow/dispatchAndWait.json +9 -0
- package/dist/nodes/Github/__schema__/v1.1.0/workflow/get.json +36 -0
- package/dist/nodes/Github/__schema__/v1.1.0/workflow/list.json +47 -0
- package/dist/nodes/Gitlab/__schema__/v1.0.0/file/create.json +12 -0
- package/dist/nodes/Google/Analytics/GoogleAnalytics.node.js +0 -0
- package/dist/nodes/Google/Calendar/GenericFunctions.js +1 -1
- package/dist/nodes/Google/Drive/v2/actions/common.descriptions.js +0 -0
- package/dist/nodes/Google/Firebase/CloudFirestore/GoogleFirebaseCloudFirestore.node.js +0 -0
- package/dist/nodes/Google/GSuiteAdmin/__schema__/v1.0.0/group/create.json +27 -0
- package/dist/nodes/Google/GSuiteAdmin/__schema__/v1.0.0/user/addToGroup.json +9 -0
- package/dist/nodes/Google/Gmail/GenericFunctions.js +1 -1
- package/dist/nodes/Google/Gmail/__schema__/v2.2.0/draft/create.json +26 -0
- package/dist/nodes/Google/Gmail/__schema__/v2.2.0/label/getAll.json +21 -0
- package/dist/nodes/Google/Gmail/__schema__/v2.2.0/message/addLabels.json +18 -0
- package/dist/nodes/Google/Gmail/__schema__/v2.2.0/message/get.json +151 -0
- package/dist/nodes/Google/Gmail/__schema__/v2.2.0/message/getAll.json +55 -0
- package/dist/nodes/Google/Gmail/__schema__/v2.2.0/message/markAsRead.json +18 -0
- package/dist/nodes/Google/Gmail/__schema__/v2.2.0/message/reply.json +18 -0
- package/dist/nodes/Google/Gmail/__schema__/v2.2.0/message/send.json +18 -0
- package/dist/nodes/Google/Gmail/__schema__/v2.2.0/message/sendAndWait.json +14 -0
- package/dist/nodes/Google/Gmail/__schema__/v2.2.0/thread/getAll.json +15 -0
- package/dist/nodes/Google/Gmail/v1/DraftDescription.js +0 -0
- package/dist/nodes/Google/Sheet/v2/actions/sheet/commonDescription.js +0 -0
- package/dist/nodes/HelpScout/CustomerDescription.js +0 -0
- package/dist/nodes/HelpScout/__schema__/v1.0.0/mailbox/getAll.json +53 -0
- package/dist/nodes/HighLevel/v1/GenericFunctions.js +1 -1
- package/dist/nodes/HighLevel/v2/GenericFunctions.d.ts +1 -1
- package/dist/nodes/HighLevel/v2/GenericFunctions.js +1 -1
- package/dist/nodes/Hubspot/__schema__/v2.2.0/company/getAll.json +83 -0
- package/dist/nodes/Hubspot/__schema__/v2.2.0/contactList/add.json +30 -0
- package/dist/nodes/Hubspot/__schema__/v2.2.0/deal/getAll.json +83 -0
- package/dist/nodes/Hubspot/__schema__/v2.2.0/ticket/get.json +81 -0
- package/dist/nodes/Hubspot/__schema__/v2.2.0/ticket/getAll.json +18 -0
- package/dist/nodes/Jira/__schema__/v1.0.0/issue/delete.json +9 -0
- package/dist/nodes/KoBoToolbox/FileDescription.js +0 -0
- package/dist/nodes/Lemlist/Lemlist.node.js +0 -0
- package/dist/nodes/Linear/__schema__/v1.1.0/comment/addComment.json +17 -0
- package/dist/nodes/Linear/__schema__/v1.1.0/issue/create.json +49 -0
- package/dist/nodes/Linear/__schema__/v1.1.0/issue/get.json +43 -0
- package/dist/nodes/Mailcheck/__schema__/v1.0.0/email/check.json +30 -0
- package/dist/nodes/Mattermost/v1/actions/user/getByEmail/execute.js +0 -0
- package/dist/nodes/MessageBird/GenericFunctions.js +0 -0
- package/dist/nodes/Microsoft/AzureCosmosDb/__schema__/v1.0.0/item/get.json +9 -0
- package/dist/nodes/Microsoft/OneDrive/__schema__/v1.0.0/folder/share.json +41 -0
- package/dist/nodes/Microsoft/Outlook/v2/actions/event/create.operation.js +2 -1
- package/dist/nodes/Microsoft/Outlook/v2/actions/event/get.operation.js +0 -0
- package/dist/nodes/Microsoft/Outlook/v2/actions/event/update.operation.js +2 -1
- package/dist/nodes/Microsoft/Storage/__schema__/v1.0.0/container/getAll.json +41 -0
- package/dist/nodes/Microsoft/ToDo/MicrosoftToDo.node.js +0 -0
- package/dist/nodes/Microsoft/ToDo/__schema__/v1.0.0/list/get.json +27 -0
- package/dist/nodes/Misp/descriptions/EventTagDescription.js +0 -0
- package/dist/nodes/MistralAI/__schema__/v1.0.0/document/extractText.json +98 -0
- package/dist/nodes/PayPal/__schema__/v1.0.0/payout/create.json +45 -0
- package/dist/nodes/Peekalink/Peekalink.node.js +0 -0
- package/dist/nodes/Pipedrive/GenericFunctions.js +0 -0
- package/dist/nodes/Pushcut/GenericFunctions.js +0 -0
- package/dist/nodes/QuickBase/__schema__/v1.0.0/record/create.json +9 -0
- package/dist/nodes/QuickBooks/descriptions/Estimate/EstimateDescription.js +0 -0
- package/dist/nodes/S3/__schema__/v1.0.0/bucket/create.json +9 -0
- package/dist/nodes/Salesforce/GenericFunctions.js +1 -1
- package/dist/nodes/Salesforce/__schema__/v1.0.0/account/delete.json +9 -0
- package/dist/nodes/Salesforce/__schema__/v1.0.0/flow/getAll.json +18 -0
- package/dist/nodes/Slack/Slack.node.js +0 -0
- package/dist/nodes/SyncroMSP/v1/actions/rmm/del/execute.js +0 -0
- package/dist/nodes/TheHiveProject/actions/case/update.operation.js +0 -0
- package/dist/nodes/TheHiveProject/methods/resourceMapping.js +0 -0
- package/dist/nodes/Twake/Twake.node.js +0 -0
- package/dist/nodes/Twitter/V1/DirectMessageDescription.js +0 -0
- package/dist/nodes/UnleashedSoftware/UnleashedSoftware.node.js +0 -0
- package/dist/nodes/UptimeRobot/AlertContactDescription.js +0 -0
- package/dist/nodes/Wordpress/PostInterface.js +0 -0
- package/dist/nodes/Zammad/descriptions/TicketDescription.js +0 -0
- package/dist/typecheck.tsbuildinfo +1 -1
- package/dist/types/nodes.json +3 -3
- package/dist/utils/workflowInputsResourceMapping/GenericFunctions.js +4 -0
- package/package.json +9 -9
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "object",
|
|
3
|
+
"properties": {
|
|
4
|
+
"data": {
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"modelResponse": {
|
|
8
|
+
"type": "string"
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"meta": {
|
|
13
|
+
"type": "object",
|
|
14
|
+
"properties": {
|
|
15
|
+
"actionId": {
|
|
16
|
+
"type": "string"
|
|
17
|
+
},
|
|
18
|
+
"requestId": {
|
|
19
|
+
"type": "string"
|
|
20
|
+
},
|
|
21
|
+
"status": {
|
|
22
|
+
"type": "string"
|
|
23
|
+
},
|
|
24
|
+
"usage": {
|
|
25
|
+
"type": "object",
|
|
26
|
+
"properties": {
|
|
27
|
+
"credits": {
|
|
28
|
+
"type": "integer"
|
|
29
|
+
},
|
|
30
|
+
"id": {
|
|
31
|
+
"type": "string"
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"sessionId": {
|
|
38
|
+
"type": "string"
|
|
39
|
+
},
|
|
40
|
+
"warnings": {
|
|
41
|
+
"type": "array",
|
|
42
|
+
"items": {
|
|
43
|
+
"type": "object",
|
|
44
|
+
"properties": {
|
|
45
|
+
"message": {
|
|
46
|
+
"type": "string"
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"windowId": {
|
|
52
|
+
"type": "string"
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
"version": 1
|
|
56
|
+
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "object",
|
|
3
|
+
"properties": {
|
|
4
|
+
"$": {
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"xmlns": {
|
|
8
|
+
"type": "string"
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"ResponseMetadata": {
|
|
13
|
+
"type": "object",
|
|
14
|
+
"properties": {
|
|
15
|
+
"RequestId": {
|
|
16
|
+
"type": "string"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"SendTemplatedEmailResult": {
|
|
21
|
+
"type": "object",
|
|
22
|
+
"properties": {
|
|
23
|
+
"MessageId": {
|
|
24
|
+
"type": "string"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"version": 1
|
|
30
|
+
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -400,7 +400,7 @@ class DateTimeV1 {
|
|
|
400
400
|
const options = this.getNodeParameter('options', i);
|
|
401
401
|
let newDate;
|
|
402
402
|
if (currentDate instanceof luxon_1.DateTime) {
|
|
403
|
-
currentDate = currentDate.toISO();
|
|
403
|
+
currentDate = currentDate.toISO() || '';
|
|
404
404
|
}
|
|
405
405
|
// Check if the input is a number
|
|
406
406
|
if (!Number.isNaN(Number(currentDate))) {
|
|
File without changes
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "object",
|
|
3
|
+
"properties": {
|
|
4
|
+
"metadata": {
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
".tag": {
|
|
8
|
+
"type": "string"
|
|
9
|
+
},
|
|
10
|
+
"id": {
|
|
11
|
+
"type": "string"
|
|
12
|
+
},
|
|
13
|
+
"name": {
|
|
14
|
+
"type": "string"
|
|
15
|
+
},
|
|
16
|
+
"path_display": {
|
|
17
|
+
"type": "string"
|
|
18
|
+
},
|
|
19
|
+
"path_lower": {
|
|
20
|
+
"type": "string"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"version": 1
|
|
26
|
+
}
|
|
@@ -163,6 +163,15 @@ class ExecuteWorkflowTrigger {
|
|
|
163
163
|
default: 'string',
|
|
164
164
|
noDataExpression: true,
|
|
165
165
|
},
|
|
166
|
+
{
|
|
167
|
+
displayName: 'Default Value',
|
|
168
|
+
name: 'defaultValue',
|
|
169
|
+
type: 'string',
|
|
170
|
+
default: '',
|
|
171
|
+
placeholder: 'e.g. default text',
|
|
172
|
+
description: 'Default value to use when no input is provided for this field',
|
|
173
|
+
noDataExpression: true,
|
|
174
|
+
},
|
|
166
175
|
],
|
|
167
176
|
},
|
|
168
177
|
],
|
|
@@ -195,7 +204,12 @@ class ExecuteWorkflowTrigger {
|
|
|
195
204
|
const newKeys = new Set(newParams.fields.map((x) => x.name));
|
|
196
205
|
const itemsInSchema = inputData.map(({ json, binary }, index) => ({
|
|
197
206
|
json: {
|
|
198
|
-
...Object.fromEntries(newParams.fields.map((x) => [
|
|
207
|
+
...Object.fromEntries(newParams.fields.map((x) => [
|
|
208
|
+
x.name,
|
|
209
|
+
x.defaultValue !== undefined && x.defaultValue !== ''
|
|
210
|
+
? x.defaultValue
|
|
211
|
+
: constants_1.FALLBACK_DEFAULT_VALUE,
|
|
212
|
+
])),
|
|
199
213
|
// Need to trim to the expected schema to support legacy Execute Workflow callers passing through all their data
|
|
200
214
|
// which we do not want to expose past this node.
|
|
201
215
|
...(0, pickBy_1.default)(json, (_value, key) => newKeys.has(key)),
|
|
File without changes
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { INode } from 'n8n-workflow';
|
|
2
|
+
/**
|
|
3
|
+
* Validates a git reference to prevent command injection attacks
|
|
4
|
+
* @param reference - The git reference to validate (e.g., branch name, HEAD, refs/heads/main)
|
|
5
|
+
* @param node - The node instance for error throwing
|
|
6
|
+
* @throws {NodeOperationError} If the reference contains unsafe characters or patterns
|
|
7
|
+
*/
|
|
8
|
+
export declare function validateGitReference(reference: string, node: INode): void;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateGitReference = validateGitReference;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
/**
|
|
6
|
+
* Validates a git reference to prevent command injection attacks
|
|
7
|
+
* @param reference - The git reference to validate (e.g., branch name, HEAD, refs/heads/main)
|
|
8
|
+
* @param node - The node instance for error throwing
|
|
9
|
+
* @throws {NodeOperationError} If the reference contains unsafe characters or patterns
|
|
10
|
+
*/
|
|
11
|
+
function validateGitReference(reference, node) {
|
|
12
|
+
// Allow only safe characters: alphanumeric, /, @, {, }, ., -, _, :
|
|
13
|
+
const safeReferencePattern = /^[a-zA-Z0-9/@{}._:-]+$/;
|
|
14
|
+
if (!safeReferencePattern.test(reference)) {
|
|
15
|
+
throw new n8n_workflow_1.NodeOperationError(node, 'Invalid reference format. Reference contains unsafe characters. Only alphanumeric characters and /@{}._:- are allowed');
|
|
16
|
+
}
|
|
17
|
+
// Prevent argument injection by blocking references starting with -
|
|
18
|
+
if (reference.startsWith('-')) {
|
|
19
|
+
throw new n8n_workflow_1.NodeOperationError(node, 'Invalid reference format. Reference cannot start with a hyphen');
|
|
20
|
+
}
|
|
21
|
+
// Prevent path traversal attempts
|
|
22
|
+
if (reference.includes('..')) {
|
|
23
|
+
throw new n8n_workflow_1.NodeOperationError(node, 'Invalid reference format. Reference cannot contain ".."');
|
|
24
|
+
}
|
|
25
|
+
// Prevent control characters that could be used for injection
|
|
26
|
+
// eslint-disable-next-line no-control-regex
|
|
27
|
+
if (/[\x00-\x1f\x7f]/.test(reference)) {
|
|
28
|
+
throw new n8n_workflow_1.NodeOperationError(node, 'Invalid reference format. Reference cannot contain control characters');
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.reflogFields = void 0;
|
|
4
|
+
exports.reflogFields = [
|
|
5
|
+
{
|
|
6
|
+
displayName: 'Return All',
|
|
7
|
+
name: 'returnAll',
|
|
8
|
+
type: 'boolean',
|
|
9
|
+
displayOptions: {
|
|
10
|
+
show: {
|
|
11
|
+
operation: ['reflog'],
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
default: false,
|
|
15
|
+
description: 'Whether to return all results or only up to a given limit',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
displayName: 'Limit',
|
|
19
|
+
name: 'limit',
|
|
20
|
+
type: 'number',
|
|
21
|
+
displayOptions: {
|
|
22
|
+
show: {
|
|
23
|
+
operation: ['reflog'],
|
|
24
|
+
returnAll: [false],
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
typeOptions: {
|
|
28
|
+
minValue: 1,
|
|
29
|
+
maxValue: 100,
|
|
30
|
+
},
|
|
31
|
+
default: 100,
|
|
32
|
+
description: 'Max number of results to return',
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
displayName: 'Options',
|
|
36
|
+
name: 'options',
|
|
37
|
+
type: 'collection',
|
|
38
|
+
displayOptions: {
|
|
39
|
+
show: {
|
|
40
|
+
operation: ['reflog'],
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
placeholder: 'Add option',
|
|
44
|
+
default: {},
|
|
45
|
+
options: [
|
|
46
|
+
{
|
|
47
|
+
displayName: 'Reference',
|
|
48
|
+
name: 'reference',
|
|
49
|
+
type: 'string',
|
|
50
|
+
default: '',
|
|
51
|
+
placeholder: 'HEAD',
|
|
52
|
+
description: 'The reference to show the reflog for (e.g., HEAD, branch name). Leave empty for HEAD.',
|
|
53
|
+
},
|
|
54
|
+
],
|
|
55
|
+
},
|
|
56
|
+
];
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { IWebhookFunctions } from 'n8n-workflow';
|
|
2
|
+
/**
|
|
3
|
+
* Verifies the GitHub webhook signature using HMAC-SHA256.
|
|
4
|
+
*
|
|
5
|
+
* GitHub sends a signature in the `X-Hub-Signature-256` header in the format:
|
|
6
|
+
* `sha256=<HMAC hex digest>`
|
|
7
|
+
*
|
|
8
|
+
* This function computes the expected signature using the stored webhook secret
|
|
9
|
+
* and compares it with the provided signature using a constant-time comparison.
|
|
10
|
+
*
|
|
11
|
+
* @returns true if signature is valid or no secret is configured, false otherwise
|
|
12
|
+
*/
|
|
13
|
+
export declare function verifySignature(this: IWebhookFunctions): boolean;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.verifySignature = verifySignature;
|
|
4
|
+
const crypto_1 = require("crypto");
|
|
5
|
+
/**
|
|
6
|
+
* Verifies the GitHub webhook signature using HMAC-SHA256.
|
|
7
|
+
*
|
|
8
|
+
* GitHub sends a signature in the `X-Hub-Signature-256` header in the format:
|
|
9
|
+
* `sha256=<HMAC hex digest>`
|
|
10
|
+
*
|
|
11
|
+
* This function computes the expected signature using the stored webhook secret
|
|
12
|
+
* and compares it with the provided signature using a constant-time comparison.
|
|
13
|
+
*
|
|
14
|
+
* @returns true if signature is valid or no secret is configured, false otherwise
|
|
15
|
+
*/
|
|
16
|
+
function verifySignature() {
|
|
17
|
+
// Get the secret from workflow static data (set during webhook creation)
|
|
18
|
+
const webhookData = this.getWorkflowStaticData('node');
|
|
19
|
+
const webhookSecret = webhookData.webhookSecret;
|
|
20
|
+
// If no secret is configured, skip verification (backwards compatibility)
|
|
21
|
+
if (!webhookSecret) {
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
const req = this.getRequestObject();
|
|
25
|
+
// Get the signature from GitHub's header
|
|
26
|
+
const signature = req.header('x-hub-signature-256');
|
|
27
|
+
if (!signature) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
// Validate signature format (must start with "sha256=")
|
|
31
|
+
if (!signature.startsWith('sha256=')) {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
// Extract just the hex digest part
|
|
35
|
+
const providedSignature = signature.substring(7);
|
|
36
|
+
try {
|
|
37
|
+
// Get the raw request body
|
|
38
|
+
if (!req.rawBody) {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
// Compute HMAC-SHA256 of the raw body using our secret
|
|
42
|
+
const hmac = (0, crypto_1.createHmac)('sha256', webhookSecret);
|
|
43
|
+
if (Buffer.isBuffer(req.rawBody)) {
|
|
44
|
+
hmac.update(req.rawBody);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
const rawBodyString = typeof req.rawBody === 'string' ? req.rawBody : JSON.stringify(req.rawBody);
|
|
48
|
+
hmac.update(rawBodyString);
|
|
49
|
+
}
|
|
50
|
+
const computedSignature = hmac.digest('hex');
|
|
51
|
+
const computedBuffer = Buffer.from(computedSignature, 'utf8');
|
|
52
|
+
const providedBuffer = Buffer.from(providedSignature, 'utf8');
|
|
53
|
+
// Buffers must be same length for timingSafeEqual
|
|
54
|
+
if (computedBuffer.length !== providedBuffer.length) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
return (0, crypto_1.timingSafeEqual)(computedBuffer, providedBuffer);
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "object",
|
|
3
|
+
"properties": {
|
|
4
|
+
"badge_url": {
|
|
5
|
+
"type": "string"
|
|
6
|
+
},
|
|
7
|
+
"created_at": {
|
|
8
|
+
"type": "string"
|
|
9
|
+
},
|
|
10
|
+
"html_url": {
|
|
11
|
+
"type": "string"
|
|
12
|
+
},
|
|
13
|
+
"id": {
|
|
14
|
+
"type": "integer"
|
|
15
|
+
},
|
|
16
|
+
"name": {
|
|
17
|
+
"type": "string"
|
|
18
|
+
},
|
|
19
|
+
"node_id": {
|
|
20
|
+
"type": "string"
|
|
21
|
+
},
|
|
22
|
+
"path": {
|
|
23
|
+
"type": "string"
|
|
24
|
+
},
|
|
25
|
+
"state": {
|
|
26
|
+
"type": "string"
|
|
27
|
+
},
|
|
28
|
+
"updated_at": {
|
|
29
|
+
"type": "string"
|
|
30
|
+
},
|
|
31
|
+
"url": {
|
|
32
|
+
"type": "string"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"version": 1
|
|
36
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "object",
|
|
3
|
+
"properties": {
|
|
4
|
+
"total_count": {
|
|
5
|
+
"type": "integer"
|
|
6
|
+
},
|
|
7
|
+
"workflows": {
|
|
8
|
+
"type": "array",
|
|
9
|
+
"items": {
|
|
10
|
+
"type": "object",
|
|
11
|
+
"properties": {
|
|
12
|
+
"badge_url": {
|
|
13
|
+
"type": "string"
|
|
14
|
+
},
|
|
15
|
+
"created_at": {
|
|
16
|
+
"type": "string"
|
|
17
|
+
},
|
|
18
|
+
"html_url": {
|
|
19
|
+
"type": "string"
|
|
20
|
+
},
|
|
21
|
+
"id": {
|
|
22
|
+
"type": "integer"
|
|
23
|
+
},
|
|
24
|
+
"name": {
|
|
25
|
+
"type": "string"
|
|
26
|
+
},
|
|
27
|
+
"node_id": {
|
|
28
|
+
"type": "string"
|
|
29
|
+
},
|
|
30
|
+
"path": {
|
|
31
|
+
"type": "string"
|
|
32
|
+
},
|
|
33
|
+
"state": {
|
|
34
|
+
"type": "string"
|
|
35
|
+
},
|
|
36
|
+
"updated_at": {
|
|
37
|
+
"type": "string"
|
|
38
|
+
},
|
|
39
|
+
"url": {
|
|
40
|
+
"type": "string"
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
"version": 1
|
|
47
|
+
}
|
|
File without changes
|
|
@@ -186,7 +186,7 @@ const eventExtendYearIntoFuture = (data, timezone, currentYear) => {
|
|
|
186
186
|
exports.eventExtendYearIntoFuture = eventExtendYearIntoFuture;
|
|
187
187
|
function dateObjectToISO(date) {
|
|
188
188
|
if (date instanceof luxon_1.DateTime)
|
|
189
|
-
return date.toISO();
|
|
189
|
+
return date.toISO() || '';
|
|
190
190
|
if (date instanceof Date)
|
|
191
191
|
return date.toISOString();
|
|
192
192
|
return date;
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "object",
|
|
3
|
+
"properties": {
|
|
4
|
+
"adminCreated": {
|
|
5
|
+
"type": "boolean"
|
|
6
|
+
},
|
|
7
|
+
"description": {
|
|
8
|
+
"type": "string"
|
|
9
|
+
},
|
|
10
|
+
"email": {
|
|
11
|
+
"type": "string"
|
|
12
|
+
},
|
|
13
|
+
"etag": {
|
|
14
|
+
"type": "string"
|
|
15
|
+
},
|
|
16
|
+
"id": {
|
|
17
|
+
"type": "string"
|
|
18
|
+
},
|
|
19
|
+
"kind": {
|
|
20
|
+
"type": "string"
|
|
21
|
+
},
|
|
22
|
+
"name": {
|
|
23
|
+
"type": "string"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"version": 1
|
|
27
|
+
}
|
|
@@ -207,7 +207,7 @@ function extractEmail(s) {
|
|
|
207
207
|
}
|
|
208
208
|
const prepareTimestamp = (node, itemIndex, query, dateValue, label) => {
|
|
209
209
|
if (dateValue instanceof luxon_1.DateTime) {
|
|
210
|
-
dateValue = dateValue.toISO();
|
|
210
|
+
dateValue = dateValue.toISO() || '';
|
|
211
211
|
}
|
|
212
212
|
let timestamp = luxon_1.DateTime.fromISO(dateValue).toSeconds();
|
|
213
213
|
const timestampLengthInMilliseconds1990 = 12;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "object",
|
|
3
|
+
"properties": {
|
|
4
|
+
"id": {
|
|
5
|
+
"type": "string"
|
|
6
|
+
},
|
|
7
|
+
"message": {
|
|
8
|
+
"type": "object",
|
|
9
|
+
"properties": {
|
|
10
|
+
"id": {
|
|
11
|
+
"type": "string"
|
|
12
|
+
},
|
|
13
|
+
"labelIds": {
|
|
14
|
+
"type": "array",
|
|
15
|
+
"items": {
|
|
16
|
+
"type": "string"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"threadId": {
|
|
20
|
+
"type": "string"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"version": 1
|
|
26
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "object",
|
|
3
|
+
"properties": {
|
|
4
|
+
"id": {
|
|
5
|
+
"type": "string"
|
|
6
|
+
},
|
|
7
|
+
"labelListVisibility": {
|
|
8
|
+
"type": "string"
|
|
9
|
+
},
|
|
10
|
+
"messageListVisibility": {
|
|
11
|
+
"type": "string"
|
|
12
|
+
},
|
|
13
|
+
"name": {
|
|
14
|
+
"type": "string"
|
|
15
|
+
},
|
|
16
|
+
"type": {
|
|
17
|
+
"type": "string"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"version": 1
|
|
21
|
+
}
|