Skip to content
This repository was archived by the owner on May 3, 2023. It is now read-only.

Commit b671f13

Browse files
sameergoyalSameer Goyal
and
Sameer Goyal
authored
Upgrade all deps to latest & remove runtime deps from output bundle (#89)
* chore(deps): Upgrade all deps to latest & remove deprecated deps BREAKING CHANGE: * Several runtime deps like Preact have been upgraded * Made changes in source code to support newer lint rules, newer Preact changes, etc * fix: Remove runtime dependencies from output bundle and update package.json accordingly Co-authored-by: Sameer Goyal <[email protected]>
1 parent bba5ef7 commit b671f13

File tree

356 files changed

+14212
-45595
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

356 files changed

+14212
-45595
lines changed

.eslintrc

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
{
2+
"extends": [
3+
"eslint:recommended",
4+
"plugin:import/recommended",
5+
"plugin:react/recommended",
6+
"plugin:react-hooks/recommended",
7+
"airbnb",
8+
"airbnb-typescript"
9+
],
10+
"plugins": [
11+
"@typescript-eslint",
12+
"jsx-a11y",
13+
"jest"
14+
],
15+
"parser": "@typescript-eslint/parser",
16+
"parserOptions": {
17+
"project": "tsconfig.json"
18+
},
19+
"rules": {
20+
"max-len": ["error", { "code": 120 }],
21+
// Since we use Preact, there's no react in scope
22+
"react/react-in-jsx-scope": "off",
23+
// We follow a pattern of using index files to re-export all public objects/types & we dont want to use default export if there's just one
24+
"import/prefer-default-export": "off",
25+
// We need to create a new object in unit tests without using the resulting object
26+
"no-new": "off",
27+
// In some cases function signature requires a positional arg, but is not needed in body, prepend _ to make it work
28+
"@typescript-eslint/no-unused-vars": ["error", { "argsIgnorePattern": "^_" }],
29+
// Allow immer for param re-assign
30+
"no-param-reassign": ["error", { "props": true, "ignorePropertyModificationsForRegex": ["[dD]raft"] }],
31+
// Allow optional dependency of dagre
32+
"import/no-extraneous-dependencies": ["error", { "optionalDependencies": true }],
33+
// TODO: See if newer versions of preact can better handle rendering consumer provided callbacks using memoized callbacks
34+
"react/jsx-no-bind": "off"
35+
}
36+
}

DeclarationBundlePlugin.js

-38
This file was deleted.

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ Read more about the architecture of diagram maker [here](https://awslabs.github.
3838
Check out our full documentation [here](https://awslabs.github.io/diagram-maker).
3939

4040
## Typedoc generated documentation
41-
Check out the [typedoc](http://typedoc.org/) generated documentation [here](https://awslabs.github.io/diagram-maker/typedoc/globals.html) to find out more information about any of our exported symbols.
41+
Check out the [typedoc](http://typedoc.org/) generated documentation [here](https://awslabs.github.io/diagram-maker/typedoc/modules.html) to find out more information about any of our exported symbols.
4242

4343
## Security
4444

cypress/.eslintrc

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"extends": [
3+
"eslint:recommended",
4+
"plugin:import/recommended",
5+
"airbnb",
6+
"airbnb-typescript",
7+
"plugin:cypress/recommended"
8+
],
9+
"plugins": [
10+
"@typescript-eslint",
11+
"cypress"
12+
],
13+
"parser": "@typescript-eslint/parser",
14+
"parserOptions": {
15+
"project": "cypress/tsconfig.json"
16+
},
17+
"rules": {
18+
"max-len": ["error", { "code": 120 }]
19+
}
20+
}

cypress/common/interaction.ts

+11-9
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ function getRightButtonMouseEventParams() {
2525
export function dragAndDropElement(
2626
element: Cypress.Chainable,
2727
position: { pageX: number, pageY: number },
28-
mouseParams: { button: number } = getLeftButtonMouseEventParams()
28+
mouseParams: { button: number } = getLeftButtonMouseEventParams(),
2929
) {
3030
element.trigger('mousedown', { ...mouseParams, which: 1, force: true })
3131
.trigger('mousemove', { ...mouseParams, ...position, force: true })
@@ -42,9 +42,11 @@ export function dragStartElement(
4242
element: Cypress.Chainable,
4343
position: { pageX: number, pageY: number },
4444
originPosition?: { pageX: number, pageY: number },
45-
mouseParams: { button: number } = getLeftButtonMouseEventParams()
45+
mouseParams: { button: number } = getLeftButtonMouseEventParams(),
4646
) {
47-
element.trigger('mousedown', { ...mouseParams, which: 1, ...originPosition, force: true })
47+
element.trigger('mousedown', {
48+
...mouseParams, which: 1, ...originPosition, force: true,
49+
})
4850
.trigger('mousemove', { ...mouseParams, ...position, force: true });
4951
}
5052

@@ -57,7 +59,7 @@ export function dragStartElement(
5759
export function dragElement(
5860
element: Cypress.Chainable,
5961
position: { pageX: number, pageY: number },
60-
mouseParams: { button: number } = getLeftButtonMouseEventParams()
62+
mouseParams: { button: number } = getLeftButtonMouseEventParams(),
6163
) {
6264
element.trigger('mousemove', { ...mouseParams, ...position, force: true });
6365
}
@@ -71,7 +73,7 @@ export function dragElement(
7173
export function dropElement(
7274
element: Cypress.Chainable,
7375
position?: { pageX: number, pageY: number },
74-
mouseParams: { button: number } = getLeftButtonMouseEventParams()
76+
mouseParams: { button: number } = getLeftButtonMouseEventParams(),
7577
) {
7678
element.trigger('mouseup', { ...mouseParams, ...position, force: true });
7779
}
@@ -88,7 +90,7 @@ export function dropElement(
8890
export function forceDragAndDropElement(
8991
element: Cypress.Chainable,
9092
position: { pageX: number, pageY: number },
91-
mouseParams: { button: number } = getLeftButtonMouseEventParams()
93+
mouseParams: { button: number } = getLeftButtonMouseEventParams(),
9294
) {
9395
element.trigger('mousedown', { ...mouseParams, which: 1, force: true })
9496
.trigger('mousemove', { ...mouseParams, ...position, force: true })
@@ -104,7 +106,7 @@ export function forceDragAndDropElement(
104106
export function clickElement(
105107
element: Cypress.Chainable,
106108
position: Cypress.PositionType = 'center',
107-
mouseParams: { button: number } = getLeftButtonMouseEventParams()
109+
mouseParams: { button: number } = getLeftButtonMouseEventParams(),
108110
) {
109111
element.trigger('mousedown', position, { ...mouseParams, force: true })
110112
.trigger('mouseup', { ...mouseParams, force: true });
@@ -119,7 +121,7 @@ export function clickElement(
119121
export function rightClickElement(
120122
element: Cypress.Chainable,
121123
position: Cypress.PositionType = 'center',
122-
mouseParams: { button: number } = getRightButtonMouseEventParams()
124+
mouseParams: { button: number } = getRightButtonMouseEventParams(),
123125
) {
124126
element.trigger('contextmenu', position, { ...mouseParams, force: true });
125127
}
@@ -133,7 +135,7 @@ export function rightClickElement(
133135
export function triggerKeyboardEvent(
134136
element: Cypress.Chainable,
135137
key: string,
136-
modKey = false
138+
modKey = false,
137139
) {
138140
let text = key;
139141
if (key === 'Delete') {

cypress/plugins/index.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
module.exports = (on, config) => {
2-
require('@cypress/code-coverage/task')(on, config)
2+
require('@cypress/code-coverage/task')(on, config);
33

44
return config;
5-
}
5+
};

cypress/support/commands.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Cypress.Commands.overwrite('visit', function (originalVisit, filename, options) {
2-
var visitUrl = Cypress.config().baseUrl ? filename : 'dist/examples'.concat(filename);
1+
Cypress.Commands.overwrite('visit', (originalVisit, filename, options) => {
2+
const visitUrl = Cypress.config().baseUrl ? filename : 'dist/examples'.concat(filename);
33
originalVisit(visitUrl, options);
44
});

cypress/support/index.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
import '@cypress/code-coverage/support'
1+
import '@cypress/code-coverage/support';
22

3-
import './commands'
3+
import './commands';

cypress/tests/api.ts

+25-17
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import {
22
getAllEdges, getAllNodes, getDiagramMakerView, getEdgeById, getElementByDataIdAndType, getNodeById,
3-
getPanelById, getPotentialEdge, getPotentialNodeById, getSelectionMarquee, getWorkspace
3+
getPanelById, getPotentialEdge, getPotentialNodeById, getSelectionMarquee, getWorkspace,
44
} from '../common/getters';
55
import {
6-
clickElement, dragAndDropElement, dragElement, dragStartElement, dropElement, triggerKeyboardEvent
6+
clickElement, dragAndDropElement, dragElement, dragStartElement, dropElement, triggerKeyboardEvent,
77
} from '../common/interaction';
88
import { convertScaleToMatrix, convertTranslate2dToMatrix } from '../common/utils';
99

@@ -14,14 +14,13 @@ describe('DiagramMaker.API', () => {
1414

1515
const toolsType = 'DiagramMaker.Tools';
1616
const viewport = { width: 1200, height: 900 };
17-
const nodeRect = { width: 100, height: 50, top: 150, left: 200 };
17+
const nodeRect = {
18+
width: 100, height: 50, top: 150, left: 200,
19+
};
1820
const workspace = { width: 3200, height: 1600 };
1921

20-
// TODO: Add layout integ tests
21-
2222
describe('setEditorMode', () => {
2323
describe('Select', () => {
24-
2524
const selectId = 'Select';
2625

2726
beforeEach(() => {
@@ -102,7 +101,9 @@ describe('DiagramMaker.API', () => {
102101
getElementByDataIdAndType(readOnlyId, toolsType).click();
103102
const expectedTransform = convertScaleToMatrix(1.3);
104103
getWorkspace()
105-
.trigger('wheel', { deltaY: -50, pageX: 0, pageY: 0, force: true });
104+
.trigger('wheel', {
105+
deltaY: -50, pageX: 0, pageY: 0, force: true,
106+
});
106107
getWorkspace().should('have.css', 'transform').and('eq', expectedTransform);
107108
});
108109

@@ -226,7 +227,9 @@ describe('DiagramMaker.API', () => {
226227
it('centers the workspace & resets the zoom', () => {
227228
const expectedTransform = convertScaleToMatrix(1.3);
228229
getWorkspace()
229-
.trigger('wheel', { deltaY: -50, pageX: 0, pageY: 0, force: true });
230+
.trigger('wheel', {
231+
deltaY: -50, pageX: 0, pageY: 0, force: true,
232+
});
230233
getWorkspace().should('have.css', 'transform').and('eq', expectedTransform);
231234
getElementByDataIdAndType(focusSelectedId, toolsType).click();
232235
const expectedLeft = (viewport.width - workspace.width) / 2;
@@ -248,14 +251,15 @@ describe('DiagramMaker.API', () => {
248251
dragAndDropElement(node, { pageX: centerX, pageY: centerY });
249252
node.should('have.css', 'transform').and('eq', expectedNodeTransform);
250253
getElementByDataIdAndType(focusSelectedId, toolsType).click();
251-
const expectedTransform =
252-
convertTranslate2dToMatrix(viewport.width / 2 - centerX, viewport.height / 2 - centerY);
254+
const expectedTransform = convertTranslate2dToMatrix(
255+
viewport.width / 2 - centerX,
256+
viewport.height / 2 - centerY,
257+
);
253258
getWorkspace().should('have.css', 'transform').and('eq', expectedTransform);
254259
});
255260
});
256261

257262
describe('when multiple nodes are selected', () => {
258-
259263
beforeEach(() => {
260264
const selectId = 'Select';
261265
getElementByDataIdAndType(selectId, toolsType).click();
@@ -267,19 +271,21 @@ describe('DiagramMaker.API', () => {
267271
it('fits the selected nodes', () => {
268272
getElementByDataIdAndType(focusSelectedId, toolsType).click();
269273
const buffer = 50;
270-
const nodeBoundingRect = { width: 300, height: 200, top: 150, left: 200 };
274+
const nodeBoundingRect = {
275+
width: 300, height: 200, top: 150, left: 200,
276+
};
271277
const nodeBoundingRectWithBuffer = {
272278
height: nodeBoundingRect.height + 2 * buffer,
273279
left: nodeBoundingRect.left - buffer,
274280
top: nodeBoundingRect.top - buffer,
275-
width: nodeBoundingRect.width + 2 * buffer
281+
width: nodeBoundingRect.width + 2 * buffer,
276282
};
277283
const scaleForWidth = viewport.width / nodeBoundingRectWithBuffer.width;
278284
const scaleForHeight = viewport.height / nodeBoundingRectWithBuffer.height;
279285
const expectedScale = Math.min(scaleForWidth, scaleForHeight);
280286
const expectedPosition = {
281287
x: -nodeBoundingRectWithBuffer.left * expectedScale,
282-
y: -nodeBoundingRectWithBuffer.top * expectedScale
288+
y: -nodeBoundingRectWithBuffer.top * expectedScale,
283289
};
284290
const expectedTransform = convertScaleToMatrix(expectedScale, expectedPosition.x, expectedPosition.y);
285291
getWorkspace().should('have.css', 'transform').and('eq', expectedTransform);
@@ -292,19 +298,21 @@ describe('DiagramMaker.API', () => {
292298
it('fits all the nodes on the screen', () => {
293299
getElementByDataIdAndType(fitId, toolsType).click();
294300
const buffer = 50;
295-
const nodeBoundingRect = { width: 300, height: 200, top: 150, left: 200 };
301+
const nodeBoundingRect = {
302+
width: 300, height: 200, top: 150, left: 200,
303+
};
296304
const nodeBoundingRectWithBuffer = {
297305
height: nodeBoundingRect.height + 2 * buffer,
298306
left: nodeBoundingRect.left - buffer,
299307
top: nodeBoundingRect.top - buffer,
300-
width: nodeBoundingRect.width + 2 * buffer
308+
width: nodeBoundingRect.width + 2 * buffer,
301309
};
302310
const scaleForWidth = viewport.width / nodeBoundingRectWithBuffer.width;
303311
const scaleForHeight = viewport.height / nodeBoundingRectWithBuffer.height;
304312
const expectedScale = Math.min(scaleForWidth, scaleForHeight);
305313
const expectedPosition = {
306314
x: -nodeBoundingRectWithBuffer.left * expectedScale,
307-
y: -nodeBoundingRectWithBuffer.top * expectedScale
315+
y: -nodeBoundingRectWithBuffer.top * expectedScale,
308316
};
309317
const expectedTransform = convertScaleToMatrix(expectedScale, expectedPosition.x, expectedPosition.y);
310318
getWorkspace().should('have.css', 'transform').and('eq', expectedTransform);

0 commit comments

Comments
 (0)