Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Infer typings for config schema #2656

Merged
merged 26 commits into from
Apr 8, 2022
Merged
Show file tree
Hide file tree
Changes from 24 commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
f9da0ed
:truck: Move schema to standalone file
ivov Jan 9, 2022
d6dbf4d
:zap: Add assertions to string literal arrays
ivov Jan 9, 2022
84faf9a
:sparkles: Infer typings for convict schema
ivov Jan 9, 2022
4e96768
:fire: Remove unneeded assertions
ivov Jan 9, 2022
453730e
:hammer: Fix errors surfaced by typings
ivov Jan 9, 2022
9eb9c40
:zap: Type nodes.include/exclude per docs
ivov Jan 9, 2022
b58153f
:zap: Account for types for exception paths
ivov Jan 9, 2022
aed849d
:zap: Set method alias to flag incorrect paths
ivov Jan 9, 2022
9f41baf
:zap: Replace original with alias
ivov Jan 9, 2022
e165043
:zap: Make allowance for nodes.include
ivov Jan 9, 2022
fe6c301
:twisted_rightwards_arrows: Merge master
ivov Mar 3, 2022
71745b4
:zap: Adjust leftover calls
ivov Mar 3, 2022
52e16b6
:twisted_rightwards_arrows: Merge master
ivov Mar 28, 2022
f59eef9
:twisted_rightwards_arrows: Fix conflicts
ivov Mar 28, 2022
94d22bf
:fire: Remove unneeded castings
ivov Mar 28, 2022
527eb29
:blue_book: Simplify exception path type
ivov Mar 28, 2022
01866b9
:package: Update package-lock.json
ivov Mar 28, 2022
6b1279e
:fire: Remove unneeded imports
ivov Mar 29, 2022
bf28dec
:fire: Remove unrelated file
ivov Mar 29, 2022
440f876
:twisted_rightwards_arrows: Merge master
ivov Apr 3, 2022
84098a4
:zap: Update schema
ivov Apr 3, 2022
2b292bb
:zap: Update interface
ivov Apr 3, 2022
a59525e
:package: Update package-lock.json
ivov Apr 3, 2022
e3f344a
:package: Update package-lock.json
ivov Apr 7, 2022
8aa30aa
:fire: Remove leftover assertions
ivov Apr 8, 2022
d7992c5
:twisted_rightwards_arrows: Merge branch 'master' into infer-typings-…
janober Apr 8, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 2 additions & 7 deletions packages/cli/commands/execute.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,7 @@
/* eslint-disable no-console */
import { promises as fs } from 'fs';
import { Command, flags } from '@oclif/command';
import {
BinaryDataManager,
IBinaryDataConfig,
UserSettings,
PLACEHOLDER_EMPTY_WORKFLOW_ID,
} from 'n8n-core';
import { BinaryDataManager, UserSettings, PLACEHOLDER_EMPTY_WORKFLOW_ID } from 'n8n-core';
import { INode, LoggerProxy } from 'n8n-workflow';

import {
Expand Down Expand Up @@ -52,7 +47,7 @@ export class Execute extends Command {
async run() {
const logger = getLogger();
LoggerProxy.init(logger);
const binaryDataConfig = config.get('binaryDataManager') as IBinaryDataConfig;
const binaryDataConfig = config.getEnv('binaryDataManager');
await BinaryDataManager.init(binaryDataConfig, true);

// eslint-disable-next-line @typescript-eslint/no-shadow
Expand Down
4 changes: 2 additions & 2 deletions packages/cli/commands/executeBatch.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import * as fs from 'fs';
import { Command, flags } from '@oclif/command';

import { BinaryDataManager, IBinaryDataConfig, UserSettings } from 'n8n-core';
import { BinaryDataManager, UserSettings } from 'n8n-core';

// eslint-disable-next-line @typescript-eslint/no-unused-vars
import { INode, ITaskData, LoggerProxy } from 'n8n-workflow';
Expand Down Expand Up @@ -196,7 +196,7 @@ export class ExecuteBatch extends Command {

const logger = getLogger();
LoggerProxy.init(logger);
const binaryDataConfig = config.get('binaryDataManager') as IBinaryDataConfig;
const binaryDataConfig = config.getEnv('binaryDataManager');
await BinaryDataManager.init(binaryDataConfig, true);

// eslint-disable-next-line @typescript-eslint/no-shadow
Expand Down
28 changes: 14 additions & 14 deletions packages/cli/commands/start.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
/* eslint-disable @typescript-eslint/no-unsafe-call */
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
import * as localtunnel from 'localtunnel';
import { BinaryDataManager, IBinaryDataConfig, TUNNEL_SUBDOMAIN_ENV, UserSettings } from 'n8n-core';
import { BinaryDataManager, TUNNEL_SUBDOMAIN_ENV, UserSettings } from 'n8n-core';
import { Command, flags } from '@oclif/command';
// eslint-disable-next-line import/no-extraneous-dependencies
import * as Redis from 'ioredis';
Expand Down Expand Up @@ -100,9 +100,9 @@ export class Start extends Command {

await InternalHooksManager.getInstance().onN8nStop();

const skipWebhookDeregistration = config.get(
const skipWebhookDeregistration = config.getEnv(
'endpoints.skipWebhoooksDeregistrationOnShutdown',
) as boolean;
);

const removePromises = [];
if (activeWorkflowRunner !== undefined && !skipWebhookDeregistration) {
Expand Down Expand Up @@ -169,7 +169,7 @@ export class Start extends Command {
// Make sure the settings exist
const userSettings = await UserSettings.prepareUserSettings();

if (!config.get('userManagement.jwtSecret')) {
if (!config.getEnv('userManagement.jwtSecret')) {
// If we don't have a JWT secret set, generate
// one based and save to config.
const encryptionKey = await UserSettings.getEncryptionKey();
Expand Down Expand Up @@ -222,12 +222,12 @@ export class Start extends Command {
config.set(setting.key, JSON.parse(setting.value));
});

if (config.get('executions.mode') === 'queue') {
const redisHost = config.get('queue.bull.redis.host');
const redisPassword = config.get('queue.bull.redis.password');
const redisPort = config.get('queue.bull.redis.port');
const redisDB = config.get('queue.bull.redis.db');
const redisConnectionTimeoutLimit = config.get('queue.bull.redis.timeoutThreshold');
if (config.getEnv('executions.mode') === 'queue') {
const redisHost = config.getEnv('queue.bull.redis.host');
const redisPassword = config.getEnv('queue.bull.redis.password');
const redisPort = config.getEnv('queue.bull.redis.port');
const redisDB = config.getEnv('queue.bull.redis.db');
const redisConnectionTimeoutLimit = config.getEnv('queue.bull.redis.timeoutThreshold');
let lastTimer = 0;
let cumulativeTimeout = 0;

Expand Down Expand Up @@ -285,7 +285,7 @@ export class Start extends Command {
const dbType = (await GenericHelpers.getConfigValue('database.type')) as DatabaseType;

if (dbType === 'sqlite') {
const shouldRunVacuum = config.get('database.sqlite.executeVacuumOnStartup') as number;
const shouldRunVacuum = config.getEnv('database.sqlite.executeVacuumOnStartup');
if (shouldRunVacuum) {
// eslint-disable-next-line @typescript-eslint/no-floating-promises, @typescript-eslint/no-non-null-assertion
await Db.collections.Execution!.query('VACUUM;');
Expand Down Expand Up @@ -324,7 +324,7 @@ export class Start extends Command {
subdomain: tunnelSubdomain,
};

const port = config.get('port');
const port = config.getEnv('port');

// @ts-ignore
const webhookTunnel = await localtunnel(port, tunnelSettings);
Expand All @@ -340,7 +340,7 @@ export class Start extends Command {
const { cli } = await GenericHelpers.getVersions();
InternalHooksManager.init(instanceId, cli, nodeTypes);

const binaryDataConfig = config.get('binaryDataManager') as IBinaryDataConfig;
const binaryDataConfig = config.getEnv('binaryDataManager');
await BinaryDataManager.init(binaryDataConfig, true);

await Server.start();
Expand All @@ -354,7 +354,7 @@ export class Start extends Command {
const editorUrl = GenericHelpers.getBaseUrl();
this.log(`\nEditor is now accessible via:\n${editorUrl}`);

const saveManualExecutions = config.get('executions.saveDataManualExecutions') as boolean;
const saveManualExecutions = config.getEnv('executions.saveDataManualExecutions');

if (saveManualExecutions) {
this.log('\nManual executions will be visible only for the owner');
Expand Down
18 changes: 9 additions & 9 deletions packages/cli/commands/webhook.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
/* eslint-disable @typescript-eslint/unbound-method */
import { BinaryDataManager, IBinaryDataConfig, UserSettings } from 'n8n-core';
import { BinaryDataManager, UserSettings } from 'n8n-core';
import { Command, flags } from '@oclif/command';
// eslint-disable-next-line import/no-extraneous-dependencies
import * as Redis from 'ioredis';
Expand Down Expand Up @@ -95,7 +95,7 @@ export class Webhook extends Command {

// Wrap that the process does not close but we can still use async
await (async () => {
if (config.get('executions.mode') !== 'queue') {
if (config.getEnv('executions.mode') !== 'queue') {
/**
* It is technically possible to run without queues but
* there are 2 known bugs when running in this mode:
Expand Down Expand Up @@ -152,15 +152,15 @@ export class Webhook extends Command {
const { cli } = await GenericHelpers.getVersions();
InternalHooksManager.init(instanceId, cli, nodeTypes);

const binaryDataConfig = config.get('binaryDataManager') as IBinaryDataConfig;
const binaryDataConfig = config.getEnv('binaryDataManager');
await BinaryDataManager.init(binaryDataConfig);

if (config.get('executions.mode') === 'queue') {
const redisHost = config.get('queue.bull.redis.host');
const redisPassword = config.get('queue.bull.redis.password');
const redisPort = config.get('queue.bull.redis.port');
const redisDB = config.get('queue.bull.redis.db');
const redisConnectionTimeoutLimit = config.get('queue.bull.redis.timeoutThreshold');
if (config.getEnv('executions.mode') === 'queue') {
const redisHost = config.getEnv('queue.bull.redis.host');
const redisPassword = config.getEnv('queue.bull.redis.password');
const redisPort = config.getEnv('queue.bull.redis.port');
const redisDB = config.getEnv('queue.bull.redis.db');
const redisConnectionTimeoutLimit = config.getEnv('queue.bull.redis.timeoutThreshold');
let lastTimer = 0;
let cumulativeTimeout = 0;

Expand Down
12 changes: 6 additions & 6 deletions packages/cli/commands/worker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ export class Worker extends Command {
staticData = workflowData.staticData;
}

let workflowTimeout = config.get('executions.timeout') as number; // initialize with default
let workflowTimeout = config.getEnv('executions.timeout'); // initialize with default
if (
// eslint-disable-next-line @typescript-eslint/prefer-optional-chain
currentExecutionDb.workflowData.settings &&
Expand All @@ -169,7 +169,7 @@ export class Worker extends Command {

let executionTimeoutTimestamp: number | undefined;
if (workflowTimeout > 0) {
workflowTimeout = Math.min(workflowTimeout, config.get('executions.maxTimeout') as number);
workflowTimeout = Math.min(workflowTimeout, config.getEnv('executions.maxTimeout'));
executionTimeoutTimestamp = Date.now() + workflowTimeout * 1000;
}

Expand Down Expand Up @@ -288,7 +288,7 @@ export class Worker extends Command {
await startDbInitPromise;

// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
const redisConnectionTimeoutLimit = config.get('queue.bull.redis.timeoutThreshold');
const redisConnectionTimeoutLimit = config.getEnv('queue.bull.redis.timeoutThreshold');

Worker.jobQueue = Queue.getInstance().getBullObjectInstance();
// eslint-disable-next-line @typescript-eslint/no-floating-promises
Expand All @@ -299,7 +299,7 @@ export class Worker extends Command {

InternalHooksManager.init(instanceId, versions.cli, nodeTypes);

const binaryDataConfig = config.get('binaryDataManager') as IBinaryDataConfig;
const binaryDataConfig = config.getEnv('binaryDataManager');
await BinaryDataManager.init(binaryDataConfig);

console.info('\nn8n worker is now ready');
Expand Down Expand Up @@ -352,8 +352,8 @@ export class Worker extends Command {
}
});

if (config.get('queue.health.active')) {
const port = config.get('queue.health.port') as number;
if (config.getEnv('queue.health.active')) {
const port = config.getEnv('queue.health.port');

const app = express();
const server = http.createServer(app);
Expand Down
Loading