Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master' into InstanceSettings
Browse files Browse the repository at this point in the history
  • Loading branch information
netroy committed Oct 23, 2023
2 parents 9f251ec + 450e0cc commit 4ea8662
Show file tree
Hide file tree
Showing 6 changed files with 57 additions and 19 deletions.
33 changes: 33 additions & 0 deletions cypress/e2e/12-canvas.cy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,10 @@ import {
MERGE_NODE_NAME,
} from './../constants';
import { WorkflowPage as WorkflowPageClass } from '../pages/workflow';
import { WorkflowExecutionsTab } from '../pages';

const WorkflowPage = new WorkflowPageClass();
const ExecutionsTab = new WorkflowExecutionsTab();

const DEFAULT_ZOOM_FACTOR = 1;
const ZOOM_IN_X1_FACTOR = 1.25; // Zoom in factor after one click
Expand Down Expand Up @@ -306,4 +308,35 @@ describe('Canvas Node Manipulation and Navigation', () => {
WorkflowPage.getters.canvasNodes().should('have.length', 3);
WorkflowPage.getters.nodeConnections().should('have.length', 1);
});

// ADO-1240: Connections would get deleted after activating and deactivating NodeView
it('should preserve connections after rename & node-view switch', () => {
WorkflowPage.actions.addNodeToCanvas(MANUAL_TRIGGER_NODE_NAME);
WorkflowPage.actions.addNodeToCanvas(CODE_NODE_NAME);
WorkflowPage.actions.executeWorkflow();

ExecutionsTab.actions.switchToExecutionsTab();
ExecutionsTab.getters.successfulExecutionListItems().should('have.length', 1);

ExecutionsTab.actions.switchToEditorTab();

ExecutionsTab.actions.switchToExecutionsTab();
ExecutionsTab.getters.successfulExecutionListItems().should('have.length', 1);

ExecutionsTab.actions.switchToEditorTab();
WorkflowPage.getters.canvasNodes().should('have.length', 2);

WorkflowPage.getters.canvasNodes().last().click();
cy.get('body').trigger('keydown', { key: 'F2' });
cy.get('.rename-prompt').should('be.visible');
cy.get('body').type(RENAME_NODE_NAME);
cy.get('body').type('{enter}');
WorkflowPage.getters.canvasNodeByName(RENAME_NODE_NAME).should('exist');
// Make sure all connections are there after save & reload
WorkflowPage.actions.saveWorkflowOnButtonClick();
cy.reload();
cy.waitForLoad();
WorkflowPage.getters.canvasNodes().should('have.length', 2);
cy.get('.rect-input-endpoint.jtk-endpoint-connected').should('have.length', 1);
})
});
20 changes: 15 additions & 5 deletions packages/cli/src/Logger.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,22 +9,32 @@ import callsites from 'callsites';
import { basename } from 'path';
import config from '@/config';

const noOp = () => {};
const levelNames = ['debug', 'verbose', 'info', 'warn', 'error'] as const;

export class Logger implements ILogger {
private logger: winston.Logger;

constructor() {
const level = config.getEnv('logs.level');

const output = config
.getEnv('logs.output')
.split(',')
.map((output) => output.trim());

this.logger = winston.createLogger({
level,
silent: level === 'silent',
});

// Change all methods with higher log-level to no-op
for (const levelName of levelNames) {
if (this.logger.levels[levelName] > this.logger.levels[level]) {
Object.defineProperty(this, levelName, { value: noOp });
}
}

const output = config
.getEnv('logs.output')
.split(',')
.map((output) => output.trim());

if (output.includes('console')) {
let format: winston.Logform.Format;
if (['debug', 'verbose'].includes(level)) {
Expand Down
5 changes: 1 addition & 4 deletions packages/core/bin/generate-known
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,7 @@ const { LoggerProxy } = require('n8n-workflow');
const { packageDir, writeJSON } = require('./common');
const { loadClassInIsolation } = require('../dist/ClassLoader');

LoggerProxy.init({
log: console.log.bind(console),
warn: console.warn.bind(console),
});
LoggerProxy.init(console);

const loadClass = (sourcePath) => {
try {
Expand Down
5 changes: 1 addition & 4 deletions packages/core/bin/generate-ui-types
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,7 @@ const { LoggerProxy, NodeHelpers } = require('n8n-workflow');
const { PackageDirectoryLoader } = require('../dist/DirectoryLoader');
const { packageDir, writeJSON } = require('./common');

LoggerProxy.init({
log: console.log.bind(console),
warn: console.warn.bind(console),
});
LoggerProxy.init(console);

function findReferencedMethods(obj, refs = {}, latestName = '') {
for (const key in obj) {
Expand Down
3 changes: 2 additions & 1 deletion packages/editor-ui/src/views/NodeView.vue
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,7 @@ import {
WORKFLOW_LM_CHAT_MODAL_KEY,
AI_NODE_CREATOR_VIEW,
DRAG_EVENT_DATA_KEY,
UPDATE_WEBHOOK_ID_NODE_TYPES,
} from '@/constants';
import { copyPaste } from '@/mixins/copyPaste';
import { externalHooks } from '@/mixins/externalHooks';
Expand Down Expand Up @@ -345,7 +346,6 @@ import { EVENT_ADD_INPUT_ENDPOINT_CLICK } from '@/plugins/jsplumb/N8nAddInputEnd
import { sourceControlEventBus } from '@/event-bus/source-control';
import { getConnectorPaintStyleData, OVERLAY_ENDPOINT_ARROW_ID } from '@/utils/nodeViewUtils';
import { useViewStacks } from '@/components/Node/NodeCreator/composables/useViewStacks';
import { UPDATE_WEBHOOK_ID_NODE_TYPES } from '@/constants';
interface AddNodeOptions {
position?: XYPosition;
Expand Down Expand Up @@ -2894,6 +2894,7 @@ export default defineComponent({
this.instance.unbind(EVENT_CONNECTION_DETACHED, this.onConnectionDragAbortDetached);
this.instance.unbind(EVENT_PLUS_ENDPOINT_CLICK, this.onPlusEndpointClick);
this.instance.unbind(EVENT_ADD_INPUT_ENDPOINT_CLICK, this.onAddInputEndpointClick);
this.eventsAttached = false;
},
unbindEndpointEventListeners(bind = true) {
if (this.instance) {
Expand Down
10 changes: 5 additions & 5 deletions packages/workflow/src/LoggerProxy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,21 +22,21 @@ export function log(type: LogTypes, message: string, meta: object = {}) {
// Convenience methods below

export function debug(message: string, meta: object = {}) {
getInstance().log('debug', message, meta);
getInstance().debug(message, meta);
}

export function info(message: string, meta: object = {}) {
getInstance().log('info', message, meta);
getInstance().info(message, meta);
}

export function error(message: string, meta: object = {}) {
getInstance().log('error', message, meta);
getInstance().error(message, meta);
}

export function verbose(message: string, meta: object = {}) {
getInstance().log('verbose', message, meta);
getInstance().verbose(message, meta);
}

export function warn(message: string, meta: object = {}) {
getInstance().log('warn', message, meta);
getInstance().warn(message, meta);
}

0 comments on commit 4ea8662

Please sign in to comment.