@n8n/decorators 1.43.1 → 1.44.0
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/build.tsbuildinfo +1 -1
- package/dist/controller/api-response.d.ts +3 -2
- package/dist/controller/api-response.js +36 -13
- package/dist/controller/api-response.js.map +1 -1
- package/dist/controller/index.d.ts +1 -1
- package/dist/controller/index.js.map +1 -1
- package/dist/controller/types.d.ts +16 -0
- package/dist/controller/types.js +2 -0
- package/dist/controller/types.js.map +1 -1
- package/dist/execution-lifecycle/lifecycle-metadata.d.ts +1 -0
- package/dist/execution-lifecycle/lifecycle-metadata.js.map +1 -1
- package/dist/policy-check/policy-check.d.ts +11 -2
- package/dist/policy-check/policy-check.js +2 -0
- package/dist/policy-check/policy-check.js.map +1 -1
- package/dist/policy-check/policy-cleared.d.ts +3 -3
- package/dist/policy-check/policy-cleared.js +3 -2
- package/dist/policy-check/policy-cleared.js.map +1 -1
- package/dist/pubsub/pubsub-metadata.d.ts +1 -1
- package/dist/pubsub/pubsub-metadata.js.map +1 -1
- package/dist/system-task/index.d.ts +2 -2
- package/dist/system-task/index.js +2 -1
- package/dist/system-task/index.js.map +1 -1
- package/dist/system-task/system-task.d.ts +7 -1
- package/dist/system-task/system-task.js +18 -5
- package/dist/system-task/system-task.js.map +1 -1
- package/package.json +5 -5
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import type
|
|
2
|
-
export declare
|
|
1
|
+
import { type BinaryResponse, type ResponseDtoClass, type SuccessStatus } from './types';
|
|
2
|
+
export declare function ApiResponse(status: SuccessStatus, dto?: ResponseDtoClass): MethodDecorator;
|
|
3
|
+
export declare function ApiResponse(status: Exclude<SuccessStatus, 204>, binary: BinaryResponse): MethodDecorator;
|
|
@@ -1,18 +1,41 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ApiResponse =
|
|
3
|
+
exports.ApiResponse = ApiResponse;
|
|
4
4
|
const di_1 = require("@n8n/di");
|
|
5
5
|
const controller_registry_metadata_1 = require("./controller-registry-metadata");
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
|
|
6
|
+
const types_1 = require("./types");
|
|
7
|
+
function hasMediaType(body) {
|
|
8
|
+
return typeof body === 'object' && body !== null && 'mediaType' in body;
|
|
9
|
+
}
|
|
10
|
+
function isBinaryResponse(body) {
|
|
11
|
+
return (hasMediaType(body) &&
|
|
12
|
+
types_1.BINARY_RESPONSE_MEDIA_TYPES.some((mediaType) => mediaType === body.mediaType));
|
|
13
|
+
}
|
|
14
|
+
function isResponseDto(body) {
|
|
15
|
+
return ((typeof body === 'function' || (typeof body === 'object' && body !== null)) && 'parse' in body);
|
|
16
|
+
}
|
|
17
|
+
function ApiResponse(status, body) {
|
|
18
|
+
return (target, handlerName) => {
|
|
19
|
+
const routeMetadata = di_1.Container.get(controller_registry_metadata_1.ControllerRegistryMetadata).getRouteMetadata(target.constructor, String(handlerName));
|
|
20
|
+
if (routeMetadata.successStatus !== undefined) {
|
|
21
|
+
throw new Error(`${String(handlerName)} declares more than one @ApiResponse - a route has exactly one success response`);
|
|
22
|
+
}
|
|
23
|
+
if (status === 204 && body !== undefined) {
|
|
24
|
+
const bodyKind = isBinaryResponse(body) ? 'a binary body' : 'a response DTO';
|
|
25
|
+
throw new Error(`${String(handlerName)} declares a 204 @ApiResponse with ${bodyKind} - a 204 response must not have a body`);
|
|
26
|
+
}
|
|
27
|
+
routeMetadata.successStatus = status;
|
|
28
|
+
if (isBinaryResponse(body)) {
|
|
29
|
+
routeMetadata.binaryResponse = body;
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
if (hasMediaType(body)) {
|
|
33
|
+
throw new Error(`${String(handlerName)} declares an unsupported binary media type "${String(body.mediaType)}" - supported: ${types_1.BINARY_RESPONSE_MEDIA_TYPES.join(', ')}`);
|
|
34
|
+
}
|
|
35
|
+
if (body !== undefined && !isResponseDto(body)) {
|
|
36
|
+
throw new Error(`${String(handlerName)} declares an @ApiResponse body that is neither a response DTO nor binary options`);
|
|
37
|
+
}
|
|
38
|
+
routeMetadata.responseDto = body;
|
|
39
|
+
};
|
|
40
|
+
}
|
|
18
41
|
//# sourceMappingURL=api-response.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-response.js","sourceRoot":"","sources":["../../src/controller/api-response.ts"],"names":[],"mappings":";;;AAAA,gCAAoC;AAEpC,iFAA4E;
|
|
1
|
+
{"version":3,"file":"api-response.js","sourceRoot":"","sources":["../../src/controller/api-response.ts"],"names":[],"mappings":";;;AAAA,gCAAoC;AAEpC,iFAA4E;AAC5E,mCAMiB;AAEjB,SAAS,YAAY,CAAC,IAAa;IAClC,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,WAAW,IAAI,IAAI,CAAC;AACzE,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAa;IACtC,OAAO,CACN,YAAY,CAAC,IAAI,CAAC;QAClB,mCAA2B,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC,CAC7E,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,IAAa;IACnC,OAAO,CACN,CAAC,OAAO,IAAI,KAAK,UAAU,IAAI,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,OAAO,IAAI,IAAI,CAC9F,CAAC;AACH,CAAC;AAaD,qBACC,MAAqB,EACrB,IAAwC;IAExC,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;QAC9B,MAAM,aAAa,GAAG,cAAS,CAAC,GAAG,CAAC,yDAA0B,CAAC,CAAC,gBAAgB,CAC/E,MAAM,CAAC,WAAyB,EAChC,MAAM,CAAC,WAAW,CAAC,CACnB,CAAC;QAGF,IAAI,aAAa,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CACd,GAAG,MAAM,CAAC,WAAW,CAAC,iFAAiF,CACvG,CAAC;QACH,CAAC;QAGD,IAAI,MAAM,KAAK,GAAG,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC1C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC;YAC7E,MAAM,IAAI,KAAK,CACd,GAAG,MAAM,CAAC,WAAW,CAAC,qCAAqC,QAAQ,wCAAwC,CAC3G,CAAC;QACH,CAAC;QAED,aAAa,CAAC,aAAa,GAAG,MAAM,CAAC;QAErC,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,aAAa,CAAC,cAAc,GAAG,IAAI,CAAC;YACpC,OAAO;QACR,CAAC;QAED,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CACd,GAAG,MAAM,CAAC,WAAW,CAAC,+CAA+C,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,mCAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACrJ,CAAC;QACH,CAAC;QAED,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CACd,GAAG,MAAM,CAAC,WAAW,CAAC,kFAAkF,CACxG,CAAC;QACH,CAAC;QAED,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC;IAClC,CAAC,CAAC;AACH,CAAC"}
|
|
@@ -15,5 +15,5 @@ export { Licensed } from './licensed';
|
|
|
15
15
|
export { RequiresUserQuota } from './requires-user-quota';
|
|
16
16
|
export { Deprecated } from './deprecated';
|
|
17
17
|
export { GlobalScope, ProjectScope } from './scoped';
|
|
18
|
-
export type { AccessScope, ApiKeyScopeRequirement, Arg, Controller, CorsOptions, DeprecationInfo, ErrorResponse, HandlerName, Method, MultipartUploadLimits, RequestBodyMedia, RequestBodyMediaOptions, RequestBodyMediaType, ResponseDtoClass, RouteMetadata, StaticRouterMetadata, SuccessStatus, } from './types';
|
|
18
|
+
export type { AccessScope, ApiKeyScopeRequirement, Arg, BinaryResponse, BinaryResponseMediaType, BinaryResult, Controller, CorsOptions, DeprecationInfo, ErrorResponse, HandlerName, Method, MultipartUploadLimits, RequestBodyMedia, RequestBodyMediaOptions, RequestBodyMediaType, ResponseDtoClass, ResponseHeader, RouteMetadata, StaticRouterMetadata, SuccessStatus, } from './types';
|
|
19
19
|
export { type RateLimiterLimits, type BodyKeyedRateLimiterConfig, type UserKeyedRateLimiterConfig, type KeyedRateLimiterConfig, createBodyKeyedRateLimiter, createUserKeyedRateLimiter, createIpRateLimit, } from './rate-limit';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/controller/index.ts"],"names":[],"mappings":";;;AAAA,+BAA4C;AAAnC,4FAAA,IAAI,OAAA;AAAE,6FAAA,KAAK,OAAA;AAAE,6FAAA,KAAK,OAAA;AAC3B,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AACvB,iEAA8D;AAArD,4HAAA,mBAAmB,OAAA;AAC5B,iEAA8D;AAArD,4HAAA,mBAAmB,OAAA;AAC5B,iDAA8C;AAArC,4GAAA,WAAW,OAAA;AACpB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AACvB,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,uCAAqC;AAA5B,mGAAA,OAAO,OAAA;AAChB,2DAAwD;AAA/C,sHAAA,gBAAgB,OAAA;AACzB,iCAAuE;AAA9D,4FAAA,GAAG,OAAA;AAAE,6FAAA,IAAI,OAAA;AAAE,4FAAA,GAAG,OAAA;AAAE,8FAAA,KAAK,OAAA;AAAE,+FAAA,MAAM,OAAA;AAAE,6FAAA,IAAI,OAAA;AAAE,gGAAA,OAAO,OAAA;AACrD,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AACnB,+EAA4E;AAAnE,0IAAA,0BAA0B,OAAA;AACnC,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,6DAA0D;AAAjD,wHAAA,iBAAiB,OAAA;AAC1B,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AACnB,mCAAqD;AAA5C,qGAAA,WAAW,OAAA;AAAE,sGAAA,YAAY,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/controller/index.ts"],"names":[],"mappings":";;;AAAA,+BAA4C;AAAnC,4FAAA,IAAI,OAAA;AAAE,6FAAA,KAAK,OAAA;AAAE,6FAAA,KAAK,OAAA;AAC3B,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AACvB,iEAA8D;AAArD,4HAAA,mBAAmB,OAAA;AAC5B,iEAA8D;AAArD,4HAAA,mBAAmB,OAAA;AAC5B,iDAA8C;AAArC,4GAAA,WAAW,OAAA;AACpB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AACvB,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,uCAAqC;AAA5B,mGAAA,OAAO,OAAA;AAChB,2DAAwD;AAA/C,sHAAA,gBAAgB,OAAA;AACzB,iCAAuE;AAA9D,4FAAA,GAAG,OAAA;AAAE,6FAAA,IAAI,OAAA;AAAE,4FAAA,GAAG,OAAA;AAAE,8FAAA,KAAK,OAAA;AAAE,+FAAA,MAAM,OAAA;AAAE,6FAAA,IAAI,OAAA;AAAE,gGAAA,OAAO,OAAA;AACrD,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AACnB,+EAA4E;AAAnE,0IAAA,0BAA0B,OAAA;AACnC,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,6DAA0D;AAAjD,wHAAA,iBAAiB,OAAA;AAC1B,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AACnB,mCAAqD;AAA5C,qGAAA,WAAW,OAAA;AAAE,sGAAA,YAAY,OAAA;AAwBlC,2CAQsB;AAHrB,wHAAA,0BAA0B,OAAA;AAC1B,wHAAA,0BAA0B,OAAA;AAC1B,+GAAA,iBAAiB,OAAA"}
|
|
@@ -2,6 +2,7 @@ import type { ZodClass } from '@n8n/api-types';
|
|
|
2
2
|
import type { BooleanLicenseFeature } from '@n8n/constants';
|
|
3
3
|
import type { Constructable } from '@n8n/di';
|
|
4
4
|
import type { ApiKeyScope, Scope } from '@n8n/permissions';
|
|
5
|
+
import type { Readable } from 'node:stream';
|
|
5
6
|
import type { RequestHandler, Router } from 'express';
|
|
6
7
|
import type { ZodTypeAny } from 'zod';
|
|
7
8
|
import type { KeyedRateLimiterConfig, RateLimiterLimits } from './rate-limit';
|
|
@@ -11,6 +12,20 @@ export type ApiKeyScopeRequirement = ApiKeyScope | {
|
|
|
11
12
|
allOf: readonly ApiKeyScope[];
|
|
12
13
|
};
|
|
13
14
|
export type ResponseDtoClass = Pick<ZodClass, 'parse'>;
|
|
15
|
+
export declare const BINARY_RESPONSE_MEDIA_TYPES: readonly ['application/gzip'];
|
|
16
|
+
export type BinaryResponseMediaType = (typeof BINARY_RESPONSE_MEDIA_TYPES)[number];
|
|
17
|
+
export interface ResponseHeader {
|
|
18
|
+
description: string;
|
|
19
|
+
}
|
|
20
|
+
export interface BinaryResponse {
|
|
21
|
+
mediaType: BinaryResponseMediaType;
|
|
22
|
+
description?: string;
|
|
23
|
+
headers?: Record<string, ResponseHeader>;
|
|
24
|
+
}
|
|
25
|
+
export interface BinaryResult {
|
|
26
|
+
body: Buffer | Readable;
|
|
27
|
+
headers?: Record<string, string | number | readonly string[]>;
|
|
28
|
+
}
|
|
14
29
|
export type SuccessStatus = 200 | 201 | 202 | 204;
|
|
15
30
|
export interface ErrorResponse {
|
|
16
31
|
status: number;
|
|
@@ -84,6 +99,7 @@ export interface RouteMetadata {
|
|
|
84
99
|
accessScope?: AccessScope;
|
|
85
100
|
apiKeyScope?: ApiKeyScopeRequirement;
|
|
86
101
|
responseDto?: ResponseDtoClass;
|
|
102
|
+
binaryResponse?: BinaryResponse;
|
|
87
103
|
successStatus?: SuccessStatus;
|
|
88
104
|
summary?: string;
|
|
89
105
|
description?: string;
|
package/dist/controller/types.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/controller/types.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/controller/types.ts"],"names":[],"mappings":";;;AAiBa,QAAA,2BAA2B,GAAG,CAAC,kBAAkB,CAAU,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle-metadata.js","sourceRoot":"","sources":["../../src/execution-lifecycle/lifecycle-metadata.ts"],"names":[],"mappings":";;;;;;;;;AAAA,gCAAkC;
|
|
1
|
+
{"version":3,"file":"lifecycle-metadata.js","sourceRoot":"","sources":["../../src/execution-lifecycle/lifecycle-metadata.ts"],"names":[],"mappings":";;;;;;;;;AAAA,gCAAkC;AAgG3B,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAAvB;QACW,aAAQ,GAAuB,EAAE,CAAC;IASpD,CAAC;IAPA,QAAQ,CAAC,OAAyB;QACjC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,WAAW;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;CACD,CAAA;;4BAVY,iBAAiB;IAD7B,IAAA,YAAO,GAAE;GACG,iBAAiB,CAU7B"}
|
|
@@ -2,13 +2,15 @@ import type { PolicyCheckFailure, PolicyViolation } from '@n8n/api-types';
|
|
|
2
2
|
import type { Constructable } from '@n8n/di';
|
|
3
3
|
import type { INode } from 'n8n-workflow';
|
|
4
4
|
export type { PolicyViolation, PolicyCheckFailure };
|
|
5
|
-
export declare const ENFORCEMENT_POINTS: readonly ['workflowSave', 'workflowPublish', 'workflowStart', 'workflowTransfer', 'credentialSave', 'credentialDecrypt', 'contentImport'];
|
|
5
|
+
export declare const ENFORCEMENT_POINTS: readonly ['workflowSave', 'workflowPublish', 'workflowStart', 'workflowTransfer', 'credentialSave', 'credentialTransfer', 'credentialDecrypt', 'contentImport'];
|
|
6
6
|
export type EnforcementPoint = (typeof ENFORCEMENT_POINTS)[number];
|
|
7
7
|
export type PolicedWorkflow = {
|
|
8
8
|
readonly id: string | null;
|
|
9
9
|
readonly name: string;
|
|
10
10
|
readonly nodes: readonly INode[];
|
|
11
|
+
readonly artifactKind?: PolicedArtifactKind;
|
|
11
12
|
};
|
|
13
|
+
export type PolicedArtifactKind = 'workflow' | 'agent';
|
|
12
14
|
export type CredentialConsumer = {
|
|
13
15
|
readonly nodeType: string;
|
|
14
16
|
};
|
|
@@ -27,7 +29,7 @@ export type WorkflowStartContext = {
|
|
|
27
29
|
};
|
|
28
30
|
export type WorkflowTransferContext = {
|
|
29
31
|
readonly workflow: PolicedWorkflow;
|
|
30
|
-
readonly targetProjectId: string
|
|
32
|
+
readonly targetProjectId: string;
|
|
31
33
|
};
|
|
32
34
|
export type PolicedCredential = {
|
|
33
35
|
readonly id: string | null;
|
|
@@ -38,6 +40,12 @@ export type CredentialSaveContext = {
|
|
|
38
40
|
readonly storedCredential: PolicedCredential | null;
|
|
39
41
|
readonly projectId: string | null;
|
|
40
42
|
};
|
|
43
|
+
export type CredentialTransferContext = {
|
|
44
|
+
readonly credential: PolicedCredential & {
|
|
45
|
+
readonly id: string;
|
|
46
|
+
};
|
|
47
|
+
readonly targetProjectId: string;
|
|
48
|
+
};
|
|
41
49
|
export type CredentialDecryptContext = {
|
|
42
50
|
readonly credentialType: string;
|
|
43
51
|
readonly credentialId: string;
|
|
@@ -73,6 +81,7 @@ export interface RegisteredPolicyCheck {
|
|
|
73
81
|
onWorkflowStart?(ctx: WorkflowStartContext, signal: AbortSignal): Promise<PolicyCheckResult>;
|
|
74
82
|
onWorkflowTransfer?(ctx: WorkflowTransferContext, signal: AbortSignal): Promise<PolicyCheckResult>;
|
|
75
83
|
onCredentialSave?(ctx: CredentialSaveContext, signal: AbortSignal): Promise<PolicyCheckResult>;
|
|
84
|
+
onCredentialTransfer?(ctx: CredentialTransferContext, signal: AbortSignal): Promise<PolicyCheckResult>;
|
|
76
85
|
onCredentialDecrypt?(ctx: CredentialDecryptContext, signal: AbortSignal): Promise<PolicyCheckResult>;
|
|
77
86
|
onContentImport?(ctx: ContentImportContext, signal: AbortSignal): Promise<PolicyCheckResult>;
|
|
78
87
|
}
|
|
@@ -7,6 +7,7 @@ exports.ENFORCEMENT_POINTS = [
|
|
|
7
7
|
'workflowStart',
|
|
8
8
|
'workflowTransfer',
|
|
9
9
|
'credentialSave',
|
|
10
|
+
'credentialTransfer',
|
|
10
11
|
'credentialDecrypt',
|
|
11
12
|
'contentImport',
|
|
12
13
|
];
|
|
@@ -16,6 +17,7 @@ exports.ENFORCEMENT_POINT_METHODS = {
|
|
|
16
17
|
workflowStart: 'onWorkflowStart',
|
|
17
18
|
workflowTransfer: 'onWorkflowTransfer',
|
|
18
19
|
credentialSave: 'onCredentialSave',
|
|
20
|
+
credentialTransfer: 'onCredentialTransfer',
|
|
19
21
|
credentialDecrypt: 'onCredentialDecrypt',
|
|
20
22
|
contentImport: 'onContentImport',
|
|
21
23
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy-check.js","sourceRoot":"","sources":["../../src/policy-check/policy-check.ts"],"names":[],"mappings":";;;AAaa,QAAA,kBAAkB,GAAG;IACjC,cAAc;IACd,iBAAiB;IACjB,eAAe;IACf,kBAAkB;IAClB,gBAAgB;IAChB,mBAAmB;IACnB,eAAe;CACN,CAAC;
|
|
1
|
+
{"version":3,"file":"policy-check.js","sourceRoot":"","sources":["../../src/policy-check/policy-check.ts"],"names":[],"mappings":";;;AAaa,QAAA,kBAAkB,GAAG;IACjC,cAAc;IACd,iBAAiB;IACjB,eAAe;IACf,kBAAkB;IAClB,gBAAgB;IAChB,oBAAoB;IACpB,mBAAmB;IACnB,eAAe;CACN,CAAC;AAwOE,QAAA,yBAAyB,GAElC;IACH,YAAY,EAAE,gBAAgB;IAC9B,eAAe,EAAE,mBAAmB;IACpC,aAAa,EAAE,iBAAiB;IAChC,gBAAgB,EAAE,oBAAoB;IACtC,cAAc,EAAE,kBAAkB;IAClC,kBAAkB,EAAE,sBAAsB;IAC1C,iBAAiB,EAAE,qBAAqB;IACxC,aAAa,EAAE,iBAAiB;CAChC,CAAC;AAUK,MAAM,mBAAmB,GAAG,CAAC,KAA4B,EAAsB,EAAE,CACvF,QAAA,kBAAkB,CAAC,MAAM,CACxB,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,CAAC,QAAA,yBAAyB,CAAC,KAAK,CAAC,CAAC,KAAK,UAAU,CACxE,CAAC;AAHU,QAAA,mBAAmB,GAAnB,mBAAmB,CAG7B"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { brand } from './policy-brand';
|
|
2
2
|
import type { EnforcementPoint, PolicedCredential, PolicedWorkflow, PolicyDecision, PolicyVersionRef } from './policy-check';
|
|
3
|
-
export type PolicySubjectType = 'workflow' | 'credential';
|
|
3
|
+
export type PolicySubjectType = 'workflow' | 'credential' | 'agent';
|
|
4
4
|
export type PolicySubject = {
|
|
5
5
|
readonly type: PolicySubjectType;
|
|
6
6
|
readonly id: string;
|
|
7
7
|
};
|
|
8
|
-
export declare function workflowContentSubject(workflow: Pick<PolicedWorkflow, 'nodes'>): PolicySubject;
|
|
9
|
-
export declare function workflowSubject(workflow: Pick<PolicedWorkflow, 'id' | 'nodes'>): PolicySubject;
|
|
8
|
+
export declare function workflowContentSubject(workflow: Pick<PolicedWorkflow, 'nodes' | 'artifactKind'>): PolicySubject;
|
|
9
|
+
export declare function workflowSubject(workflow: Pick<PolicedWorkflow, 'id' | 'nodes' | 'artifactKind'>): PolicySubject;
|
|
10
10
|
export declare function credentialContentSubject(credential: Pick<PolicedCredential, 'type'>): PolicySubject;
|
|
11
11
|
export declare function credentialSubject(credential: PolicedCredential): PolicySubject;
|
|
12
12
|
export type PolicyCleared<Point extends EnforcementPoint> = {
|
|
@@ -8,13 +8,14 @@ exports.assertClearedFor = assertClearedFor;
|
|
|
8
8
|
const n8n_workflow_1 = require("n8n-workflow");
|
|
9
9
|
const node_crypto_1 = require("node:crypto");
|
|
10
10
|
const policy_brand_1 = require("./policy-brand");
|
|
11
|
+
const policySubjectType = (workflow) => workflow.artifactKind ?? 'workflow';
|
|
11
12
|
function workflowContentSubject(workflow) {
|
|
12
13
|
const hash = (0, node_crypto_1.createHash)('sha256').update(JSON.stringify(workflow.nodes)).digest('hex');
|
|
13
|
-
return { type:
|
|
14
|
+
return { type: policySubjectType(workflow), id: hash };
|
|
14
15
|
}
|
|
15
16
|
function workflowSubject(workflow) {
|
|
16
17
|
if (workflow.id)
|
|
17
|
-
return { type:
|
|
18
|
+
return { type: policySubjectType(workflow), id: workflow.id };
|
|
18
19
|
return workflowContentSubject(workflow);
|
|
19
20
|
}
|
|
20
21
|
function credentialContentSubject(credential) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy-cleared.js","sourceRoot":"","sources":["../../src/policy-check/policy-cleared.ts"],"names":[],"mappings":";;;;;;;AAAA,+CAA+C;AAC/C,6CAAyC;AAEzC,iDAAuC;
|
|
1
|
+
{"version":3,"file":"policy-cleared.js","sourceRoot":"","sources":["../../src/policy-check/policy-cleared.ts"],"names":[],"mappings":";;;;;;;AAAA,+CAA+C;AAC/C,6CAAyC;AAEzC,iDAAuC;AAwBvC,MAAM,iBAAiB,GAAG,CAAC,QAA+C,EAAqB,EAAE,CAChG,QAAQ,CAAC,YAAY,IAAI,UAAU,CAAC;AAUrC,gCACC,QAAyD;IAGzD,MAAM,IAAI,GAAG,IAAA,wBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAEvF,OAAO,EAAE,IAAI,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxD,CAAC;AASD,yBACC,QAAgE;IAEhE,IAAI,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC;IAE/E,OAAO,sBAAsB,CAAC,QAAQ,CAAC,CAAC;AACzC,CAAC;AAQD,kCACC,UAA2C;IAE3C,MAAM,IAAI,GAAG,IAAA,wBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAExE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACzC,CAAC;AAGD,2BAAkC,UAA6B;IAC9D,IAAI,UAAU,CAAC,EAAE;QAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC;IAEpE,OAAO,wBAAwB,CAAC,UAAU,CAAC,CAAC;AAC7C,CAAC;AA+BD,0BACC,OAAoD,EACpD,KAAuB,EACvB,OAAsB;IAEtB,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,8BAAe,CAAC,2BAA2B,KAAK,EAAE,CAAC,CAAC;IAC5E,IAAI,OAAO,CAAC,oBAAK,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK;QAC1D,MAAM,IAAI,8BAAe,CAAC,8BAA8B,KAAK,EAAE,CAAC,CAAC;IAClE,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE;QAC7E,MAAM,IAAI,8BAAe,CACxB,oBAAoB,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,EAAE,EAAE,CACnG,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { InstanceRole, InstanceType } from '@n8n/constants';
|
|
2
2
|
import type { EventHandler } from '../types';
|
|
3
|
-
export type PubSubEventName = 'add-webhooks-triggers-and-pollers' | 'remove-triggers-and-pollers' | 'clear-test-webhooks' | 'display-workflow-activation' | 'display-workflow-deactivation' | 'display-workflow-activation-error' | 'display-workflow-publication-status' | 'workflow-publish-wake-up' | 'community-package-install' | 'community-package-uninstall' | 'community-package-update' | 'get-worker-status' | 'stop-execution' | 'reload-external-secrets-providers' | 'reload-license' | 'reload-oidc-config' | 'reload-saml-config' | 'reload-overwrite-credentials' | 'response-to-get-worker-status' | 'restart-event-bus' | 'relay-execution-lifecycle-event' | 'relay-agent-execution-update' | 'relay-agent-queued-chat' | 'cancel-agent-chat-execution' | 'relay-agent-message-queue-update' | 'relay-agent-background-tasks-update' | 'relay-agent-update' | 'resume-agent-workflow-tool' | 'relay-chat-stream-event' | 'relay-instance-ai-event' | 'relay-instance-ai-task-control' | 'relay-chat-human-message' | 'relay-chat-message-edit' | 'reload-sso-provisioning-configuration' | 'reload-source-control-config' | 'reload-mcp-registry' | 'reload-otel-config' | 'reload-instance-ai-settings' | 'reload-agents-settings' | 'cancel-test-run' | 'cancel-collection' | 'agent-chat-integration-changed' | 'agent-chat-subscription-changed' | 'agent-chat-leader-channel-request' | 'agent-chat-leader-channel-result' | 'agent-config-changed' | 'cancel-agent-background-job' | 'wake-agent-background-job' | 'agent-tasks-changed' | 'redaction-floor-changed';
|
|
3
|
+
export type PubSubEventName = 'add-webhooks-triggers-and-pollers' | 'remove-triggers-and-pollers' | 'clear-test-webhooks' | 'display-workflow-activation' | 'display-workflow-deactivation' | 'display-workflow-activation-error' | 'display-workflow-publication-status' | 'workflow-publish-wake-up' | 'community-package-install' | 'community-package-uninstall' | 'community-package-update' | 'get-worker-status' | 'stop-execution' | 'reload-external-secrets-providers' | 'reload-license' | 'reload-oidc-config' | 'reload-saml-config' | 'reload-oauth-signing-keys' | 'reload-overwrite-credentials' | 'response-to-get-worker-status' | 'restart-event-bus' | 'relay-execution-lifecycle-event' | 'relay-agent-execution-update' | 'relay-agent-queued-chat' | 'cancel-agent-chat-execution' | 'relay-agent-message-queue-update' | 'relay-agent-background-tasks-update' | 'relay-agent-update' | 'resume-agent-workflow-tool' | 'relay-chat-stream-event' | 'relay-instance-ai-event' | 'relay-instance-ai-task-control' | 'relay-chat-human-message' | 'relay-chat-message-edit' | 'reload-sso-provisioning-configuration' | 'reload-source-control-config' | 'reload-mcp-registry' | 'reload-otel-config' | 'reload-instance-ai-settings' | 'reload-agents-settings' | 'cancel-test-run' | 'cancel-collection' | 'agent-chat-integration-changed' | 'agent-chat-subscription-changed' | 'agent-chat-leader-channel-request' | 'agent-chat-leader-channel-result' | 'agent-config-changed' | 'cancel-agent-background-job' | 'wake-agent-background-job' | 'agent-tasks-changed' | 'redaction-floor-changed';
|
|
4
4
|
export type PubSubEventFilter = {
|
|
5
5
|
instanceType: 'main';
|
|
6
6
|
instanceRole?: Omit<InstanceRole, 'unset'>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pubsub-metadata.js","sourceRoot":"","sources":["../../src/pubsub/pubsub-metadata.ts"],"names":[],"mappings":";;;;;;;;;AACA,gCAAkC;
|
|
1
|
+
{"version":3,"file":"pubsub-metadata.js","sourceRoot":"","sources":["../../src/pubsub/pubsub-metadata.ts"],"names":[],"mappings":";;;;;;;;;AACA,gCAAkC;AAsE3B,IAAM,cAAc,GAApB,MAAM,cAAc;IAApB;QACW,aAAQ,GAAyB,EAAE,CAAC;IAStD,CAAC;IAPA,QAAQ,CAAC,OAA2B;QACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,WAAW;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;CACD,CAAA;;yBAVY,cAAc;IAD1B,IAAA,YAAO,GAAE;GACG,cAAc,CAU1B"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { DEFAULT_SYSTEM_TASK_CONCURRENCY_LIMIT, SystemTask, intervalFromMilliseconds, intervalFromSeconds, resolveSystemTaskRunOptions, resolveSystemTaskSchedule, validateSystemTask, } from './system-task';
|
|
2
|
-
export type { SystemTaskClass, SystemTaskEffects, SystemTaskRunOptions, SystemTaskSchedule, } from './system-task';
|
|
1
|
+
export { DEFAULT_SYSTEM_TASK_CONCURRENCY_LIMIT, SystemTask, intervalFromMilliseconds, intervalFromSeconds, resolveSystemTaskRunOptions, resolveSystemTaskSchedule, timeoutAfterLimit, validateSystemTask, } from './system-task';
|
|
2
|
+
export type { SystemTaskClass, SystemTaskEffects, SystemTaskRunContext, SystemTaskRunOptions, SystemTaskSchedule, } from './system-task';
|
|
3
3
|
export type { SystemTaskPlacement } from './system-task-placement';
|
|
4
4
|
export { SystemTaskMetadata } from './system-task-metadata';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SystemTaskMetadata = exports.validateSystemTask = exports.resolveSystemTaskSchedule = exports.resolveSystemTaskRunOptions = exports.intervalFromSeconds = exports.intervalFromMilliseconds = exports.SystemTask = exports.DEFAULT_SYSTEM_TASK_CONCURRENCY_LIMIT = void 0;
|
|
3
|
+
exports.SystemTaskMetadata = exports.validateSystemTask = exports.timeoutAfterLimit = exports.resolveSystemTaskSchedule = exports.resolveSystemTaskRunOptions = exports.intervalFromSeconds = exports.intervalFromMilliseconds = exports.SystemTask = exports.DEFAULT_SYSTEM_TASK_CONCURRENCY_LIMIT = void 0;
|
|
4
4
|
var system_task_1 = require("./system-task");
|
|
5
5
|
Object.defineProperty(exports, "DEFAULT_SYSTEM_TASK_CONCURRENCY_LIMIT", { enumerable: true, get: function () { return system_task_1.DEFAULT_SYSTEM_TASK_CONCURRENCY_LIMIT; } });
|
|
6
6
|
Object.defineProperty(exports, "SystemTask", { enumerable: true, get: function () { return system_task_1.SystemTask; } });
|
|
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "intervalFromMilliseconds", { enumerable: true, g
|
|
|
8
8
|
Object.defineProperty(exports, "intervalFromSeconds", { enumerable: true, get: function () { return system_task_1.intervalFromSeconds; } });
|
|
9
9
|
Object.defineProperty(exports, "resolveSystemTaskRunOptions", { enumerable: true, get: function () { return system_task_1.resolveSystemTaskRunOptions; } });
|
|
10
10
|
Object.defineProperty(exports, "resolveSystemTaskSchedule", { enumerable: true, get: function () { return system_task_1.resolveSystemTaskSchedule; } });
|
|
11
|
+
Object.defineProperty(exports, "timeoutAfterLimit", { enumerable: true, get: function () { return system_task_1.timeoutAfterLimit; } });
|
|
11
12
|
Object.defineProperty(exports, "validateSystemTask", { enumerable: true, get: function () { return system_task_1.validateSystemTask; } });
|
|
12
13
|
var system_task_metadata_1 = require("./system-task-metadata");
|
|
13
14
|
Object.defineProperty(exports, "SystemTaskMetadata", { enumerable: true, get: function () { return system_task_metadata_1.SystemTaskMetadata; } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/system-task/index.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/system-task/index.ts"],"names":[],"mappings":";;;AAAA,6CASuB;AARtB,oIAAA,qCAAqC,OAAA;AACrC,yGAAA,UAAU,OAAA;AACV,uHAAA,wBAAwB,OAAA;AACxB,kHAAA,mBAAmB,OAAA;AACnB,0HAAA,2BAA2B,OAAA;AAC3B,wHAAA,yBAAyB,OAAA;AACzB,gHAAA,iBAAiB,OAAA;AACjB,iHAAA,kBAAkB,OAAA;AAUnB,+DAA4D;AAAnD,0HAAA,kBAAkB,OAAA"}
|
|
@@ -13,18 +13,24 @@ export interface SystemTask {
|
|
|
13
13
|
readonly misfireGraceSeconds?: number;
|
|
14
14
|
readonly maxAttempts?: number;
|
|
15
15
|
readonly concurrencyLimit?: number | null;
|
|
16
|
-
|
|
16
|
+
readonly timeoutSeconds?: number;
|
|
17
|
+
run(signal: AbortSignal, context: SystemTaskRunContext): Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
export interface SystemTaskRunContext {
|
|
20
|
+
readonly durable: boolean;
|
|
17
21
|
}
|
|
18
22
|
export interface SystemTaskRunOptions {
|
|
19
23
|
misfirePolicy: ScheduledJobMisfirePolicy;
|
|
20
24
|
misfireGraceSeconds: number;
|
|
21
25
|
maxAttempts: number;
|
|
22
26
|
concurrencyLimit: number | null;
|
|
27
|
+
timeoutSeconds: number | undefined;
|
|
23
28
|
}
|
|
24
29
|
export declare const DEFAULT_SYSTEM_TASK_CONCURRENCY_LIMIT = 1;
|
|
25
30
|
export declare function resolveSystemTaskRunOptions(task: SystemTask): SystemTaskRunOptions;
|
|
26
31
|
export declare function validateSystemTask(task: SystemTask): void;
|
|
27
32
|
export declare function intervalFromSeconds(seconds: number): IntervalDefinition;
|
|
33
|
+
export declare function timeoutAfterLimit(limitSeconds: number, marginSeconds: number): number;
|
|
28
34
|
export declare function intervalFromMilliseconds(milliseconds: number): IntervalDefinition;
|
|
29
35
|
export declare function resolveSystemTaskSchedule(task: SystemTask): SystemTaskSchedule;
|
|
30
36
|
export type SystemTaskClass = Constructable<SystemTask>;
|
|
@@ -4,6 +4,7 @@ exports.SystemTask = exports.DEFAULT_SYSTEM_TASK_CONCURRENCY_LIMIT = void 0;
|
|
|
4
4
|
exports.resolveSystemTaskRunOptions = resolveSystemTaskRunOptions;
|
|
5
5
|
exports.validateSystemTask = validateSystemTask;
|
|
6
6
|
exports.intervalFromSeconds = intervalFromSeconds;
|
|
7
|
+
exports.timeoutAfterLimit = timeoutAfterLimit;
|
|
7
8
|
exports.intervalFromMilliseconds = intervalFromMilliseconds;
|
|
8
9
|
exports.resolveSystemTaskSchedule = resolveSystemTaskSchedule;
|
|
9
10
|
const constants_1 = require("@n8n/constants");
|
|
@@ -29,22 +30,25 @@ function resolveSystemTaskRunOptions(task) {
|
|
|
29
30
|
concurrencyLimit: task.concurrencyLimit === undefined
|
|
30
31
|
? exports.DEFAULT_SYSTEM_TASK_CONCURRENCY_LIMIT
|
|
31
32
|
: task.concurrencyLimit,
|
|
33
|
+
timeoutSeconds: roundedTimeoutSeconds(task.timeoutSeconds),
|
|
32
34
|
};
|
|
33
35
|
assertInRange(task.name, 'maxAttempts', options.maxAttempts, 1);
|
|
34
36
|
assertInRange(task.name, 'misfireGraceSeconds', options.misfireGraceSeconds, 1);
|
|
35
37
|
if (options.concurrencyLimit !== null) {
|
|
36
38
|
assertInRange(task.name, 'concurrencyLimit', options.concurrencyLimit, 1);
|
|
37
39
|
}
|
|
40
|
+
if (options.timeoutSeconds !== undefined) {
|
|
41
|
+
assertInRange(task.name, 'timeoutSeconds', options.timeoutSeconds, 1, constants_1.MAX_TIMER_DELAY_SECONDS);
|
|
42
|
+
}
|
|
38
43
|
return options;
|
|
39
44
|
}
|
|
40
|
-
const MAX_RETRY_DELAY_SECONDS = Math.floor(constants_1.MAX_INTEGER_32BITS_SIGNED / constants_1.Time.seconds.toMilliseconds);
|
|
41
45
|
function validateSystemTask(task) {
|
|
42
46
|
resolveSystemTaskRunOptions(task);
|
|
43
47
|
const { retryDelaySeconds } = task;
|
|
44
48
|
if (retryDelaySeconds !== undefined &&
|
|
45
49
|
(!Number.isInteger(retryDelaySeconds) ||
|
|
46
50
|
retryDelaySeconds < 1 ||
|
|
47
|
-
retryDelaySeconds >
|
|
51
|
+
retryDelaySeconds > constants_1.MAX_TIMER_DELAY_SECONDS)) {
|
|
48
52
|
throw new n8n_workflow_1.UnexpectedError('A system task declares an out-of-range retry delay', {
|
|
49
53
|
extra: { name: task.name, retryDelaySeconds },
|
|
50
54
|
});
|
|
@@ -66,6 +70,12 @@ function intervalFromSeconds(seconds) {
|
|
|
66
70
|
}
|
|
67
71
|
return { kind: 'interval', intervalSeconds: Math.round(seconds) };
|
|
68
72
|
}
|
|
73
|
+
function timeoutAfterLimit(limitSeconds, marginSeconds) {
|
|
74
|
+
if (!(limitSeconds > 0)) {
|
|
75
|
+
return constants_1.MAX_TIMER_DELAY_SECONDS;
|
|
76
|
+
}
|
|
77
|
+
return Math.min(Math.ceil(limitSeconds + marginSeconds), constants_1.MAX_TIMER_DELAY_SECONDS);
|
|
78
|
+
}
|
|
69
79
|
function intervalFromMilliseconds(milliseconds) {
|
|
70
80
|
return {
|
|
71
81
|
kind: 'interval',
|
|
@@ -84,13 +94,16 @@ function resolveSystemTaskSchedule(task) {
|
|
|
84
94
|
function wholeSeconds(seconds) {
|
|
85
95
|
return Math.max(1, Math.round(seconds));
|
|
86
96
|
}
|
|
97
|
+
function roundedTimeoutSeconds(seconds) {
|
|
98
|
+
return seconds === undefined || seconds < 0 ? seconds : wholeSeconds(seconds);
|
|
99
|
+
}
|
|
87
100
|
function wholeMilliseconds(seconds) {
|
|
88
101
|
return (Math.max(1, Math.round(seconds * constants_1.Time.seconds.toMilliseconds)) / constants_1.Time.seconds.toMilliseconds);
|
|
89
102
|
}
|
|
90
|
-
function assertInRange(taskName, field, value, min) {
|
|
91
|
-
if (!Number.isInteger(value) || value < min || value >
|
|
103
|
+
function assertInRange(taskName, field, value, min, max = constants_1.MAX_INTEGER_32BITS_SIGNED) {
|
|
104
|
+
if (!Number.isInteger(value) || value < min || value > max) {
|
|
92
105
|
throw new n8n_workflow_1.UnexpectedError('A system task declares an out-of-range option', {
|
|
93
|
-
extra: { name: taskName, field, value, min, max
|
|
106
|
+
extra: { name: taskName, field, value, min, max },
|
|
94
107
|
});
|
|
95
108
|
}
|
|
96
109
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-task.js","sourceRoot":"","sources":["../../src/system-task/system-task.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"system-task.js","sourceRoot":"","sources":["../../src/system-task/system-task.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@n8n/decorators",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.44.0",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"module": "src/index.ts",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -34,12 +34,12 @@
|
|
|
34
34
|
"zod": "3.25.76"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@n8n/api-types": "1.
|
|
38
|
-
"@n8n/constants": "0.
|
|
37
|
+
"@n8n/api-types": "1.44.0",
|
|
38
|
+
"@n8n/constants": "0.42.0",
|
|
39
39
|
"@n8n/di": "0.17.0",
|
|
40
|
-
"@n8n/permissions": "0.
|
|
40
|
+
"@n8n/permissions": "0.81.0",
|
|
41
41
|
"lodash": "4.18.1",
|
|
42
|
-
"n8n-workflow": "2.
|
|
42
|
+
"n8n-workflow": "2.44.0"
|
|
43
43
|
},
|
|
44
44
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
45
45
|
"homepage": "https://n8n.io",
|