@atom8n/decorators 1.2.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 -0
- package/dist/command/command-metadata.d.ts +7 -0
- package/dist/command/command-metadata.js +29 -0
- package/dist/command/command-metadata.js.map +1 -0
- package/dist/command/command.d.ts +2 -0
- package/dist/command/command.js +17 -0
- package/dist/command/command.js.map +1 -0
- package/dist/command/index.d.ts +3 -0
- package/dist/command/index.js +8 -0
- package/dist/command/index.js.map +1 -0
- package/dist/command/types.d.ts +24 -0
- package/dist/command/types.js +3 -0
- package/dist/command/types.js.map +1 -0
- package/dist/context-establishment/context-establishment-hook-metadata.d.ts +12 -0
- package/dist/context-establishment/context-establishment-hook-metadata.js +36 -0
- package/dist/context-establishment/context-establishment-hook-metadata.js.map +1 -0
- package/dist/context-establishment/context-establishment-hook.d.ts +25 -0
- package/dist/context-establishment/context-establishment-hook.js +3 -0
- package/dist/context-establishment/context-establishment-hook.js.map +1 -0
- package/dist/context-establishment/index.d.ts +2 -0
- package/dist/context-establishment/index.js +7 -0
- package/dist/context-establishment/index.js.map +1 -0
- package/dist/controller/args.d.ts +3 -0
- package/dist/controller/args.js +14 -0
- package/dist/controller/args.js.map +1 -0
- package/dist/controller/controller-registry-metadata.d.ts +7 -0
- package/dist/controller/controller-registry-metadata.js +46 -0
- package/dist/controller/controller-registry-metadata.js.map +1 -0
- package/dist/controller/index.d.ts +9 -0
- package/dist/controller/index.js +29 -0
- package/dist/controller/index.js.map +1 -0
- package/dist/controller/licensed.d.ts +2 -0
- package/dist/controller/licensed.js +11 -0
- package/dist/controller/licensed.js.map +1 -0
- package/dist/controller/middleware.d.ts +1 -0
- package/dist/controller/middleware.js +11 -0
- package/dist/controller/middleware.js.map +1 -0
- package/dist/controller/rest-controller.d.ts +1 -0
- package/dist/controller/rest-controller.js +13 -0
- package/dist/controller/rest-controller.js.map +1 -0
- package/dist/controller/root-level-controller.d.ts +1 -0
- package/dist/controller/root-level-controller.js +13 -0
- package/dist/controller/root-level-controller.js.map +1 -0
- package/dist/controller/route.d.ts +19 -0
- package/dist/controller/route.js +25 -0
- package/dist/controller/route.js.map +1 -0
- package/dist/controller/scoped.d.ts +3 -0
- package/dist/controller/scoped.js +14 -0
- package/dist/controller/scoped.js.map +1 -0
- package/dist/controller/types.d.ts +46 -0
- package/dist/controller/types.js +3 -0
- package/dist/controller/types.js.map +1 -0
- package/dist/credential-resolver/credential-resolver-metadata.d.ts +12 -0
- package/dist/credential-resolver/credential-resolver-metadata.js +36 -0
- package/dist/credential-resolver/credential-resolver-metadata.js.map +1 -0
- package/dist/credential-resolver/credential-resolver.d.ts +24 -0
- package/dist/credential-resolver/credential-resolver.js +3 -0
- package/dist/credential-resolver/credential-resolver.js.map +1 -0
- package/dist/credential-resolver/errors.d.ts +9 -0
- package/dist/credential-resolver/errors.js +25 -0
- package/dist/credential-resolver/errors.js.map +1 -0
- package/dist/credential-resolver/index.d.ts +3 -0
- package/dist/credential-resolver/index.js +22 -0
- package/dist/credential-resolver/index.js.map +1 -0
- package/dist/debounce.d.ts +1 -0
- package/dist/debounce.js +20 -0
- package/dist/debounce.js.map +1 -0
- package/dist/errors.d.ts +4 -0
- package/dist/errors.js +11 -0
- package/dist/errors.js.map +1 -0
- package/dist/execution-lifecycle/index.d.ts +3 -0
- package/dist/execution-lifecycle/index.js +8 -0
- package/dist/execution-lifecycle/index.js.map +1 -0
- package/dist/execution-lifecycle/lifecycle-metadata.d.ts +41 -0
- package/dist/execution-lifecycle/lifecycle-metadata.js +26 -0
- package/dist/execution-lifecycle/lifecycle-metadata.js.map +1 -0
- package/dist/execution-lifecycle/on-lifecycle-event.d.ts +2 -0
- package/dist/execution-lifecycle/on-lifecycle-event.js +20 -0
- package/dist/execution-lifecycle/on-lifecycle-event.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -0
- package/dist/memoized.d.ts +1 -0
- package/dist/memoized.js +23 -0
- package/dist/memoized.js.map +1 -0
- package/dist/module/index.d.ts +3 -0
- package/dist/module/index.js +8 -0
- package/dist/module/index.js.map +1 -0
- package/dist/module/module-metadata.d.ts +15 -0
- package/dist/module/module-metadata.js +32 -0
- package/dist/module/module-metadata.js.map +1 -0
- package/dist/module/module.d.ts +38 -0
- package/dist/module/module.js +15 -0
- package/dist/module/module.js.map +1 -0
- package/dist/multi-main/index.d.ts +2 -0
- package/dist/multi-main/index.js +9 -0
- package/dist/multi-main/index.js.map +1 -0
- package/dist/multi-main/multi-main-metadata.d.ts +11 -0
- package/dist/multi-main/multi-main-metadata.js +28 -0
- package/dist/multi-main/multi-main-metadata.js.map +1 -0
- package/dist/multi-main/on-multi-main-event.d.ts +2 -0
- package/dist/multi-main/on-multi-main-event.js +23 -0
- package/dist/multi-main/on-multi-main-event.js.map +1 -0
- package/dist/pubsub/index.d.ts +3 -0
- package/dist/pubsub/index.js +8 -0
- package/dist/pubsub/index.js.map +1 -0
- package/dist/pubsub/on-pubsub-event.d.ts +2 -0
- package/dist/pubsub/on-pubsub-event.js +21 -0
- package/dist/pubsub/on-pubsub-event.js.map +1 -0
- package/dist/pubsub/pubsub-metadata.d.ts +19 -0
- package/dist/pubsub/pubsub-metadata.js +26 -0
- package/dist/pubsub/pubsub-metadata.js.map +1 -0
- package/dist/redactable.d.ts +7 -0
- package/dist/redactable.js +34 -0
- package/dist/redactable.js.map +1 -0
- package/dist/shutdown/constants.d.ts +3 -0
- package/dist/shutdown/constants.js +7 -0
- package/dist/shutdown/constants.js.map +1 -0
- package/dist/shutdown/index.d.ts +4 -0
- package/dist/shutdown/index.js +12 -0
- package/dist/shutdown/index.js.map +1 -0
- package/dist/shutdown/on-shutdown.d.ts +1 -0
- package/dist/shutdown/on-shutdown.js +20 -0
- package/dist/shutdown/on-shutdown.js.map +1 -0
- package/dist/shutdown/shutdown-metadata.d.ts +7 -0
- package/dist/shutdown/shutdown-metadata.js +36 -0
- package/dist/shutdown/shutdown-metadata.js.map +1 -0
- package/dist/shutdown/types.d.ts +8 -0
- package/dist/shutdown/types.js +3 -0
- package/dist/shutdown/types.js.map +1 -0
- package/dist/timed.d.ts +9 -0
- package/dist/timed.js +26 -0
- package/dist/timed.js.map +1 -0
- package/dist/types.d.ts +9 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +36 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OnLeaderStepdown = exports.OnLeaderTakeover = void 0;
|
|
4
|
+
const di_1 = require("@n8n/di");
|
|
5
|
+
const multi_main_metadata_1 = require("./multi-main-metadata");
|
|
6
|
+
const errors_1 = require("../errors");
|
|
7
|
+
const OnMultiMainEvent = (eventName) => (prototype, propertyKey, descriptor) => {
|
|
8
|
+
const eventHandlerClass = prototype.constructor;
|
|
9
|
+
const methodName = String(propertyKey);
|
|
10
|
+
if (typeof descriptor?.value !== 'function') {
|
|
11
|
+
throw new errors_1.NonMethodError(`${eventHandlerClass.name}.${methodName}()`);
|
|
12
|
+
}
|
|
13
|
+
di_1.Container.get(multi_main_metadata_1.MultiMainMetadata).register({
|
|
14
|
+
eventHandlerClass,
|
|
15
|
+
methodName,
|
|
16
|
+
eventName,
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
const OnLeaderTakeover = () => OnMultiMainEvent(multi_main_metadata_1.LEADER_TAKEOVER_EVENT_NAME);
|
|
20
|
+
exports.OnLeaderTakeover = OnLeaderTakeover;
|
|
21
|
+
const OnLeaderStepdown = () => OnMultiMainEvent(multi_main_metadata_1.LEADER_STEPDOWN_EVENT_NAME);
|
|
22
|
+
exports.OnLeaderStepdown = OnLeaderStepdown;
|
|
23
|
+
//# sourceMappingURL=on-multi-main-event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"on-multi-main-event.js","sourceRoot":"","sources":["../../src/multi-main/on-multi-main-event.ts"],"names":[],"mappings":";;;AAAA,gCAAoC;AAGpC,+DAI+B;AAC/B,sCAA2C;AAG3C,MAAM,gBAAgB,GACrB,CAAC,SAAyB,EAAmB,EAAE,CAC/C,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE;IACtC,MAAM,iBAAiB,GAAG,SAAS,CAAC,WAAgC,CAAC;IACrE,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IAEvC,IAAI,OAAO,UAAU,EAAE,KAAK,KAAK,UAAU,EAAE,CAAC;QAC7C,MAAM,IAAI,uBAAc,CAAC,GAAG,iBAAiB,CAAC,IAAI,IAAI,UAAU,IAAI,CAAC,CAAC;IACvE,CAAC;IAED,cAAS,CAAC,GAAG,CAAC,uCAAiB,CAAC,CAAC,QAAQ,CAAC;QACzC,iBAAiB;QACjB,UAAU;QACV,SAAS;KACT,CAAC,CAAC;AACJ,CAAC,CAAC;AAiBI,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,gBAAgB,CAAC,gDAA0B,CAAC,CAAC;AAAtE,QAAA,gBAAgB,oBAAsD;AAiB5E,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,gBAAgB,CAAC,gDAA0B,CAAC,CAAC;AAAtE,QAAA,gBAAgB,oBAAsD"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OnPubSubEvent = exports.PubSubMetadata = void 0;
|
|
4
|
+
var pubsub_metadata_1 = require("./pubsub-metadata");
|
|
5
|
+
Object.defineProperty(exports, "PubSubMetadata", { enumerable: true, get: function () { return pubsub_metadata_1.PubSubMetadata; } });
|
|
6
|
+
var on_pubsub_event_1 = require("./on-pubsub-event");
|
|
7
|
+
Object.defineProperty(exports, "OnPubSubEvent", { enumerable: true, get: function () { return on_pubsub_event_1.OnPubSubEvent; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pubsub/index.ts"],"names":[],"mappings":";;;AACA,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AACvB,qDAAkD;AAAzC,gHAAA,aAAa,OAAA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OnPubSubEvent = void 0;
|
|
4
|
+
const di_1 = require("@n8n/di");
|
|
5
|
+
const pubsub_metadata_1 = require("./pubsub-metadata");
|
|
6
|
+
const errors_1 = require("../errors");
|
|
7
|
+
const OnPubSubEvent = (eventName, filter) => (prototype, propertyKey, descriptor) => {
|
|
8
|
+
const eventHandlerClass = prototype.constructor;
|
|
9
|
+
const methodName = String(propertyKey);
|
|
10
|
+
if (typeof descriptor?.value !== 'function') {
|
|
11
|
+
throw new errors_1.NonMethodError(`${eventHandlerClass.name}.${methodName}()`);
|
|
12
|
+
}
|
|
13
|
+
di_1.Container.get(pubsub_metadata_1.PubSubMetadata).register({
|
|
14
|
+
eventHandlerClass,
|
|
15
|
+
methodName,
|
|
16
|
+
eventName,
|
|
17
|
+
filter,
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
exports.OnPubSubEvent = OnPubSubEvent;
|
|
21
|
+
//# sourceMappingURL=on-pubsub-event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"on-pubsub-event.js","sourceRoot":"","sources":["../../src/pubsub/on-pubsub-event.ts"],"names":[],"mappings":";;;AAAA,gCAAoC;AAEpC,uDAAmD;AAEnD,sCAA2C;AAsBpC,MAAM,aAAa,GACzB,CAAC,SAA0B,EAAE,MAA0B,EAAmB,EAAE,CAC5E,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE;IACtC,MAAM,iBAAiB,GAAG,SAAS,CAAC,WAAgC,CAAC;IACrE,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IAEvC,IAAI,OAAO,UAAU,EAAE,KAAK,KAAK,UAAU,EAAE,CAAC;QAC7C,MAAM,IAAI,uBAAc,CAAC,GAAG,iBAAiB,CAAC,IAAI,IAAI,UAAU,IAAI,CAAC,CAAC;IACvE,CAAC;IAED,cAAS,CAAC,GAAG,CAAC,gCAAc,CAAC,CAAC,QAAQ,CAAC;QACtC,iBAAiB;QACjB,UAAU;QACV,SAAS;QACT,MAAM;KACN,CAAC,CAAC;AACJ,CAAC,CAAC;AAhBU,QAAA,aAAa,iBAgBvB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { InstanceRole, InstanceType } from '@n8n/constants';
|
|
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' | 'community-package-install' | 'community-package-uninstall' | 'community-package-update' | 'get-worker-status' | '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' | 'reload-sso-provisioning-configuration';
|
|
4
|
+
export type PubSubEventFilter = {
|
|
5
|
+
instanceType: 'main';
|
|
6
|
+
instanceRole?: Omit<InstanceRole, 'unset'>;
|
|
7
|
+
} | {
|
|
8
|
+
instanceType: Omit<InstanceType, 'main'>;
|
|
9
|
+
instanceRole?: never;
|
|
10
|
+
};
|
|
11
|
+
type PubSubEventHandler = EventHandler<PubSubEventName> & {
|
|
12
|
+
filter?: PubSubEventFilter;
|
|
13
|
+
};
|
|
14
|
+
export declare class PubSubMetadata {
|
|
15
|
+
private readonly handlers;
|
|
16
|
+
register(handler: PubSubEventHandler): void;
|
|
17
|
+
getHandlers(): PubSubEventHandler[];
|
|
18
|
+
}
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.PubSubMetadata = void 0;
|
|
10
|
+
const di_1 = require("@n8n/di");
|
|
11
|
+
let PubSubMetadata = class PubSubMetadata {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.handlers = [];
|
|
14
|
+
}
|
|
15
|
+
register(handler) {
|
|
16
|
+
this.handlers.push(handler);
|
|
17
|
+
}
|
|
18
|
+
getHandlers() {
|
|
19
|
+
return this.handlers;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
exports.PubSubMetadata = PubSubMetadata;
|
|
23
|
+
exports.PubSubMetadata = PubSubMetadata = __decorate([
|
|
24
|
+
(0, di_1.Service)()
|
|
25
|
+
], PubSubMetadata);
|
|
26
|
+
//# sourceMappingURL=pubsub-metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pubsub-metadata.js","sourceRoot":"","sources":["../../src/pubsub/pubsub-metadata.ts"],"names":[],"mappings":";;;;;;;;;AACA,gCAAkC;AAsC3B,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;AAVY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,YAAO,GAAE;GACG,cAAc,CAU1B"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { UnexpectedError } from 'n8n-workflow';
|
|
2
|
+
export declare class RedactableError extends UnexpectedError {
|
|
3
|
+
constructor(fieldName: string, args: string);
|
|
4
|
+
}
|
|
5
|
+
type FieldName = 'user' | 'inviter' | 'invitee';
|
|
6
|
+
export declare const Redactable: (fieldName?: FieldName) => MethodDecorator;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Redactable = exports.RedactableError = void 0;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
class RedactableError extends n8n_workflow_1.UnexpectedError {
|
|
6
|
+
constructor(fieldName, args) {
|
|
7
|
+
super(`Failed to find "${fieldName}" property in argument "${args.toString()}". Please set the decorator \`@Redactable()\` only on \`LogStreamingEventRelay\` methods where the argument contains a "${fieldName}" property.`);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.RedactableError = RedactableError;
|
|
11
|
+
function toRedactable(userLike) {
|
|
12
|
+
return {
|
|
13
|
+
userId: userLike.id,
|
|
14
|
+
_email: userLike.email,
|
|
15
|
+
_firstName: userLike.firstName,
|
|
16
|
+
_lastName: userLike.lastName,
|
|
17
|
+
globalRole: userLike.role?.slug,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
const Redactable = (fieldName = 'user') => (_target, _propertyName, propertyDescriptor) => {
|
|
21
|
+
const originalMethod = propertyDescriptor.value;
|
|
22
|
+
propertyDescriptor.value = function (...args) {
|
|
23
|
+
const index = args.findIndex((arg) => arg[fieldName] !== undefined);
|
|
24
|
+
if (index === -1)
|
|
25
|
+
throw new RedactableError(fieldName, args.toString());
|
|
26
|
+
const userLike = args[index]?.[fieldName];
|
|
27
|
+
if (userLike)
|
|
28
|
+
args[index][fieldName] = toRedactable(userLike);
|
|
29
|
+
return originalMethod.apply(this, args);
|
|
30
|
+
};
|
|
31
|
+
return propertyDescriptor;
|
|
32
|
+
};
|
|
33
|
+
exports.Redactable = Redactable;
|
|
34
|
+
//# sourceMappingURL=redactable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redactable.js","sourceRoot":"","sources":["../src/redactable.ts"],"names":[],"mappings":";;;AAAA,+CAA+C;AAY/C,MAAa,eAAgB,SAAQ,8BAAe;IACnD,YAAY,SAAiB,EAAE,IAAY;QAC1C,KAAK,CACJ,mBAAmB,SAAS,2BAA2B,IAAI,CAAC,QAAQ,EAAE,2HAA2H,SAAS,aAAa,CACvN,CAAC;IACH,CAAC;CACD;AAND,0CAMC;AAED,SAAS,YAAY,CAAC,QAAkB;IACvC,OAAO;QACN,MAAM,EAAE,QAAQ,CAAC,EAAE;QACnB,MAAM,EAAE,QAAQ,CAAC,KAAK;QACtB,UAAU,EAAE,QAAQ,CAAC,SAAS;QAC9B,SAAS,EAAE,QAAQ,CAAC,QAAQ;QAC5B,UAAU,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI;KAC/B,CAAC;AACH,CAAC;AAgBM,MAAM,UAAU,GACtB,CAAC,YAAuB,MAAM,EAAmB,EAAE,CACnD,CAAC,OAAO,EAAE,aAAa,EAAE,kBAAsC,EAAE,EAAE;IAElE,MAAM,cAAc,GAAG,kBAAkB,CAAC,KAAiB,CAAC;IAI5D,kBAAkB,CAAC,KAAK,GAAG,UAAU,GAAG,IAAgB;QACvD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,SAAS,CAAC,CAAC;QAEpE,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,MAAM,IAAI,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAExE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;QAG1C,IAAI,QAAQ;YAAE,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QAG9D,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC,CAAC;IAEF,OAAO,kBAAkB,CAAC;AAC3B,CAAC,CAAC;AAvBU,QAAA,UAAU,cAuBpB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HIGHEST_SHUTDOWN_PRIORITY = exports.DEFAULT_SHUTDOWN_PRIORITY = exports.LOWEST_SHUTDOWN_PRIORITY = void 0;
|
|
4
|
+
exports.LOWEST_SHUTDOWN_PRIORITY = 0;
|
|
5
|
+
exports.DEFAULT_SHUTDOWN_PRIORITY = 100;
|
|
6
|
+
exports.HIGHEST_SHUTDOWN_PRIORITY = 200;
|
|
7
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/shutdown/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,wBAAwB,GAAG,CAAC,CAAC;AAC7B,QAAA,yBAAyB,GAAG,GAAG,CAAC;AAChC,QAAA,yBAAyB,GAAG,GAAG,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { HIGHEST_SHUTDOWN_PRIORITY, DEFAULT_SHUTDOWN_PRIORITY, LOWEST_SHUTDOWN_PRIORITY, } from './constants';
|
|
2
|
+
export { ShutdownMetadata } from './shutdown-metadata';
|
|
3
|
+
export { OnShutdown } from './on-shutdown';
|
|
4
|
+
export type { ShutdownHandler, ShutdownServiceClass } from './types';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OnShutdown = exports.ShutdownMetadata = exports.LOWEST_SHUTDOWN_PRIORITY = exports.DEFAULT_SHUTDOWN_PRIORITY = exports.HIGHEST_SHUTDOWN_PRIORITY = void 0;
|
|
4
|
+
var constants_1 = require("./constants");
|
|
5
|
+
Object.defineProperty(exports, "HIGHEST_SHUTDOWN_PRIORITY", { enumerable: true, get: function () { return constants_1.HIGHEST_SHUTDOWN_PRIORITY; } });
|
|
6
|
+
Object.defineProperty(exports, "DEFAULT_SHUTDOWN_PRIORITY", { enumerable: true, get: function () { return constants_1.DEFAULT_SHUTDOWN_PRIORITY; } });
|
|
7
|
+
Object.defineProperty(exports, "LOWEST_SHUTDOWN_PRIORITY", { enumerable: true, get: function () { return constants_1.LOWEST_SHUTDOWN_PRIORITY; } });
|
|
8
|
+
var shutdown_metadata_1 = require("./shutdown-metadata");
|
|
9
|
+
Object.defineProperty(exports, "ShutdownMetadata", { enumerable: true, get: function () { return shutdown_metadata_1.ShutdownMetadata; } });
|
|
10
|
+
var on_shutdown_1 = require("./on-shutdown");
|
|
11
|
+
Object.defineProperty(exports, "OnShutdown", { enumerable: true, get: function () { return on_shutdown_1.OnShutdown; } });
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/shutdown/index.ts"],"names":[],"mappings":";;;AAAA,yCAIqB;AAHpB,sHAAA,yBAAyB,OAAA;AACzB,sHAAA,yBAAyB,OAAA;AACzB,qHAAA,wBAAwB,OAAA;AAEzB,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA;AACzB,6CAA2C;AAAlC,yGAAA,UAAU,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const OnShutdown: (priority?: number) => MethodDecorator;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OnShutdown = void 0;
|
|
4
|
+
const di_1 = require("@n8n/di");
|
|
5
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
6
|
+
const constants_1 = require("./constants");
|
|
7
|
+
const shutdown_metadata_1 = require("./shutdown-metadata");
|
|
8
|
+
const OnShutdown = (priority = constants_1.DEFAULT_SHUTDOWN_PRIORITY) => (prototype, propertyKey, descriptor) => {
|
|
9
|
+
const serviceClass = prototype.constructor;
|
|
10
|
+
const methodName = String(propertyKey);
|
|
11
|
+
if (typeof descriptor?.value === 'function') {
|
|
12
|
+
di_1.Container.get(shutdown_metadata_1.ShutdownMetadata).register(priority, { serviceClass, methodName });
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
const name = `${serviceClass.name}.${methodName}()`;
|
|
16
|
+
throw new n8n_workflow_1.UnexpectedError(`${name} must be a method on ${serviceClass.name} to use "OnShutdown"`);
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
exports.OnShutdown = OnShutdown;
|
|
20
|
+
//# sourceMappingURL=on-shutdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"on-shutdown.js","sourceRoot":"","sources":["../../src/shutdown/on-shutdown.ts"],"names":[],"mappings":";;;AAAA,gCAAoC;AACpC,+CAA+C;AAE/C,2CAAwD;AACxD,2DAAuD;AAsBhD,MAAM,UAAU,GACtB,CAAC,QAAQ,GAAG,qCAAyB,EAAmB,EAAE,CAC1D,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE;IACtC,MAAM,YAAY,GAAG,SAAS,CAAC,WAAmC,CAAC;IACnE,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IAEvC,IAAI,OAAO,UAAU,EAAE,KAAK,KAAK,UAAU,EAAE,CAAC;QAC7C,cAAS,CAAC,GAAG,CAAC,oCAAgB,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC;IAClF,CAAC;SAAM,CAAC;QACP,MAAM,IAAI,GAAG,GAAG,YAAY,CAAC,IAAI,IAAI,UAAU,IAAI,CAAC;QACpD,MAAM,IAAI,8BAAe,CACxB,GAAG,IAAI,wBAAwB,YAAY,CAAC,IAAI,sBAAsB,CACtE,CAAC;IACH,CAAC;AACF,CAAC,CAAC;AAdU,QAAA,UAAU,cAcpB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.ShutdownMetadata = void 0;
|
|
10
|
+
const di_1 = require("@n8n/di");
|
|
11
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
12
|
+
const constants_1 = require("./constants");
|
|
13
|
+
let ShutdownMetadata = class ShutdownMetadata {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.handlersByPriority = [];
|
|
16
|
+
}
|
|
17
|
+
register(priority, handler) {
|
|
18
|
+
if (priority < constants_1.LOWEST_SHUTDOWN_PRIORITY || priority > constants_1.HIGHEST_SHUTDOWN_PRIORITY) {
|
|
19
|
+
throw new n8n_workflow_1.UserError(`Invalid shutdown priority. Please set it between ${constants_1.LOWEST_SHUTDOWN_PRIORITY} and ${constants_1.HIGHEST_SHUTDOWN_PRIORITY}.`, { extra: { priority } });
|
|
20
|
+
}
|
|
21
|
+
if (!this.handlersByPriority[priority])
|
|
22
|
+
this.handlersByPriority[priority] = [];
|
|
23
|
+
this.handlersByPriority[priority].push(handler);
|
|
24
|
+
}
|
|
25
|
+
getHandlersByPriority() {
|
|
26
|
+
return this.handlersByPriority;
|
|
27
|
+
}
|
|
28
|
+
clear() {
|
|
29
|
+
this.handlersByPriority = [];
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
exports.ShutdownMetadata = ShutdownMetadata;
|
|
33
|
+
exports.ShutdownMetadata = ShutdownMetadata = __decorate([
|
|
34
|
+
(0, di_1.Service)()
|
|
35
|
+
], ShutdownMetadata);
|
|
36
|
+
//# sourceMappingURL=shutdown-metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shutdown-metadata.js","sourceRoot":"","sources":["../../src/shutdown/shutdown-metadata.ts"],"names":[],"mappings":";;;;;;;;;AAAA,gCAAkC;AAClC,+CAAyC;AAEzC,2CAAkF;AAI3E,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAAtB;QACE,uBAAkB,GAAwB,EAAE,CAAC;IAsBtD,CAAC;IApBA,QAAQ,CAAC,QAAgB,EAAE,OAAwB;QAClD,IAAI,QAAQ,GAAG,oCAAwB,IAAI,QAAQ,GAAG,qCAAyB,EAAE,CAAC;YACjF,MAAM,IAAI,wBAAS,CAClB,oDAAoD,oCAAwB,QAAQ,qCAAyB,GAAG,EAChH,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,CACvB,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;YAAE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QAE/E,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC;IAED,qBAAqB;QACpB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IAChC,CAAC;IAED,KAAK;QACJ,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;IAC9B,CAAC;CACD,CAAA;AAvBY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,YAAO,GAAE;GACG,gBAAgB,CAuB5B"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Class } from '../types';
|
|
2
|
+
type ShutdownHandlerFn = () => Promise<void> | void;
|
|
3
|
+
export type ShutdownServiceClass = Class<Record<string, ShutdownHandlerFn>>;
|
|
4
|
+
export interface ShutdownHandler {
|
|
5
|
+
serviceClass: ShutdownServiceClass;
|
|
6
|
+
methodName: string;
|
|
7
|
+
}
|
|
8
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shutdown/types.ts"],"names":[],"mappings":""}
|
package/dist/timed.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface TimedOptions {
|
|
2
|
+
threshold?: number;
|
|
3
|
+
logArgs?: boolean;
|
|
4
|
+
}
|
|
5
|
+
interface Logger {
|
|
6
|
+
warn(message: string, meta?: object): void;
|
|
7
|
+
}
|
|
8
|
+
export declare const Timed: (logger: Logger, msg?: string) => (options?: TimedOptions) => MethodDecorator;
|
|
9
|
+
export {};
|
package/dist/timed.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Timed = void 0;
|
|
4
|
+
const Timed = (logger, msg = 'Slow method call') => (options = {}) => (_target, propertyKey, descriptor) => {
|
|
5
|
+
const originalMethod = descriptor.value;
|
|
6
|
+
const thresholdMs = options.threshold ?? 100;
|
|
7
|
+
const logArgs = options.logArgs ?? false;
|
|
8
|
+
descriptor.value = async function (...args) {
|
|
9
|
+
const methodName = `${this.constructor.name}.${String(propertyKey)}`;
|
|
10
|
+
const start = performance.now();
|
|
11
|
+
const result = await originalMethod.apply(this, args);
|
|
12
|
+
const durationMs = performance.now() - start;
|
|
13
|
+
if (durationMs > thresholdMs) {
|
|
14
|
+
logger.warn(msg, {
|
|
15
|
+
method: methodName,
|
|
16
|
+
durationMs: Math.round(durationMs),
|
|
17
|
+
thresholdMs,
|
|
18
|
+
params: logArgs ? args : '[hidden]',
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
return result;
|
|
22
|
+
};
|
|
23
|
+
return descriptor;
|
|
24
|
+
};
|
|
25
|
+
exports.Timed = Timed;
|
|
26
|
+
//# sourceMappingURL=timed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timed.js","sourceRoot":"","sources":["../src/timed.ts"],"names":[],"mappings":";;;AAcO,MAAM,KAAK,GACjB,CAAC,MAAc,EAAE,GAAG,GAAG,kBAAkB,EAAE,EAAE,CAC7C,CAAC,UAAwB,EAAE,EAAmB,EAAE,CAChD,CAAC,OAAO,EAAE,WAAW,EAAE,UAA8B,EAAE,EAAE;IACxD,MAAM,cAAc,GAAG,UAAU,CAAC,KAAwC,CAAC;IAC3E,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,IAAI,GAAG,CAAC;IAC7C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC;IAEzC,UAAU,CAAC,KAAK,GAAG,KAAK,WAAW,GAAG,IAAe;QACpD,MAAM,UAAU,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QACrE,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACtD,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QAE7C,IAAI,UAAU,GAAG,WAAW,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;gBAChB,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;gBAClC,WAAW;gBACX,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU;aACnC,CAAC,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC;IACf,CAAC,CAAC;IAEF,OAAO,UAAU,CAAC;AACnB,CAAC,CAAC;AA3BU,QAAA,KAAK,SA2Bf"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type Class<T = object, A extends unknown[] = unknown[]> = new (...args: A) => T;
|
|
2
|
+
type EventHandlerFn = () => Promise<void> | void;
|
|
3
|
+
export type EventHandlerClass = Class<Record<string, EventHandlerFn>>;
|
|
4
|
+
export type EventHandler<T extends string> = {
|
|
5
|
+
eventHandlerClass: EventHandlerClass;
|
|
6
|
+
methodName: string;
|
|
7
|
+
eventName: T;
|
|
8
|
+
};
|
|
9
|
+
export {};
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@atom8n/decorators",
|
|
3
|
+
"version": "1.2.0",
|
|
4
|
+
"scripts": {
|
|
5
|
+
"clean": "rimraf dist .turbo",
|
|
6
|
+
"dev": "pnpm watch",
|
|
7
|
+
"typecheck": "tsc --noEmit",
|
|
8
|
+
"build": "tsc -p tsconfig.build.json",
|
|
9
|
+
"format": "biome format --write .",
|
|
10
|
+
"format:check": "biome ci .",
|
|
11
|
+
"lint": "eslint . --quiet",
|
|
12
|
+
"lint:fix": "eslint . --fix",
|
|
13
|
+
"watch": "tsc -p tsconfig.build.json --watch",
|
|
14
|
+
"test": "jest",
|
|
15
|
+
"test:unit": "jest",
|
|
16
|
+
"test:dev": "jest --watch"
|
|
17
|
+
},
|
|
18
|
+
"main": "dist/index.js",
|
|
19
|
+
"module": "src/index.ts",
|
|
20
|
+
"types": "dist/index.d.ts",
|
|
21
|
+
"files": [
|
|
22
|
+
"dist/**/*"
|
|
23
|
+
],
|
|
24
|
+
"devDependencies": {
|
|
25
|
+
"@atom8n/typescript-config": "1.3.0",
|
|
26
|
+
"@types/express": "catalog:",
|
|
27
|
+
"@types/lodash": "catalog:"
|
|
28
|
+
},
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"@atom8n/constants": "0.15.0",
|
|
31
|
+
"@atom8n/di": "0.10.0",
|
|
32
|
+
"@atom8n/permissions": "0.45.0",
|
|
33
|
+
"lodash": "catalog:",
|
|
34
|
+
"@atom8n/n8n-workflow": "2.2.0"
|
|
35
|
+
}
|
|
36
|
+
}
|