diff --git a/app/package-lock.json b/app/package-lock.json index c841a66869..82c74a9c30 100644 --- a/app/package-lock.json +++ b/app/package-lock.json @@ -1,6 +1,6 @@ { "name": "camunda-modeler", - "version": "3.5.0", + "version": "3.6.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/client/package-lock.json b/client/package-lock.json index 124d848536..21d926f4b0 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -1,6 +1,6 @@ { "name": "camunda-modeler-client", - "version": "3.7.0", + "version": "3.7.1", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1059,6 +1059,28 @@ "resolved": "https://registry.npmjs.org/@bpmn-io/align-to-origin/-/align-to-origin-0.6.0.tgz", "integrity": "sha512-SOmBybagyP+ezS0xHYeVaKov+l6KXkbJinlwYM1kIVjr9AVxcbr3VrOty2YHq2bIMUbcnmEfizrK/C8iyUuloQ==" }, + "@bpmn-io/dmn-migrate": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@bpmn-io/dmn-migrate/-/dmn-migrate-0.4.3.tgz", + "integrity": "sha512-l4VOUoqGV9Me13EFDJZVOmw+lM0+gKaafzhXpK2z6gcqiwJhsBQ4J4AFHkJmCeZqpZaOUQLAG2klieIJVG5q6w==", + "requires": { + "dmn-moddle": "^8.0.0", + "ids": "^1.0.0", + "min-dash": "^3.5.2" + }, + "dependencies": { + "ids": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ids/-/ids-1.0.0.tgz", + "integrity": "sha512-Zvtq1xUto4LttpstyOlFum8lKx+i1OmRfg+6A9drFS9iSZsDPMHG4Sof/qwNR4kCU7jBeWFPrY2ocHxiz7cCRw==" + }, + "min-dash": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/min-dash/-/min-dash-3.5.2.tgz", + "integrity": "sha512-YVbJZUtnzT5QsgJUp9H9uyJTW6NJgswFqI27RI/+MSox860uIjaGMbSQBftEzbMXiJVRG24hpoIh3SG666SHgA==" + } + } + }, "@bpmn-io/replace-ids": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/@bpmn-io/replace-ids/-/replace-ids-0.2.0.tgz", @@ -3854,24 +3876,24 @@ "dev": true }, "dmn-js": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/dmn-js/-/dmn-js-7.5.0.tgz", - "integrity": "sha512-CF/ksSofVPplWxrxjWei9buSgMBhEiV6Fw9j3RcuJaved6YeAptwW60jK/pEZ8MBRKBw6ce2Nx8JKVwP3ZN3ng==", + "version": "8.0.0-alpha.1", + "resolved": "https://registry.npmjs.org/dmn-js/-/dmn-js-8.0.0-alpha.1.tgz", + "integrity": "sha512-f813bGPVya3QYG/4pwTXn1wRXZhF06E8L4dhp8PhoxyWAlBAE1bIkkZnOu9gDXRe6xibbbuKOlLSAQbMAa3kPw==", "requires": { - "dmn-js-decision-table": "^7.5.0", - "dmn-js-drd": "^7.5.0", - "dmn-js-literal-expression": "^7.5.0", - "dmn-js-shared": "^7.5.0" + "dmn-js-decision-table": "^8.0.0-alpha.1", + "dmn-js-drd": "^8.0.0-alpha.1", + "dmn-js-literal-expression": "^8.0.0-alpha.1", + "dmn-js-shared": "^8.0.0-alpha.1" } }, "dmn-js-decision-table": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/dmn-js-decision-table/-/dmn-js-decision-table-7.5.0.tgz", - "integrity": "sha512-yWJnrCvamD/YH7lXmRewnLoG3YpxOVZor/o9PVV8VjQNBTdfo3+N+XsrD4xVWmAVn5H5xE+MhUEuCB/M014zKA==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/dmn-js-decision-table/-/dmn-js-decision-table-8.1.0.tgz", + "integrity": "sha512-BfHS5pmtulx53Q5WoN5Lx0Rvfak7+WnVF4EOhycVOmgN0x0ImoOvS421vInpRpPVe3D3vhpPlf4qyF5X+6z+Gg==", "requires": { "css.escape": "^1.5.1", "diagram-js": "^6.3.0", - "dmn-js-shared": "^7.5.0", + "dmn-js-shared": "^8.1.0", "escape-html": "^1.0.3", "inferno": "~5.0.5", "min-dash": "^3.0.0", @@ -3881,26 +3903,27 @@ } }, "dmn-js-drd": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/dmn-js-drd/-/dmn-js-drd-7.5.0.tgz", - "integrity": "sha512-Z1PJi5Nbz7CYmPg9a0nZOm5i9yv73Pvxwo8ScvKlaDqtOYTkMuupr+7LqeL6qCm6vHvI96EuS0fRdw4Xd/mkZg==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/dmn-js-drd/-/dmn-js-drd-8.1.0.tgz", + "integrity": "sha512-HHTRQsjuELVQteAgvOOj2heYRttVmklmDf/206EJwiUa+w3DnZatQ1i4qeT+ORPht2hFX72aC2Iq/SmJmZMywg==", "requires": { "diagram-js": "^6.3.0", "diagram-js-direct-editing": "^1.5.0", - "dmn-js-shared": "^7.5.0", + "dmn-js-shared": "^8.1.0", "inherits": "^2.0.1", "min-dash": "^3.0.0", "min-dom": "^3.1.1", + "object-refs": "^0.3.0", "tiny-svg": "^2.2.1" } }, "dmn-js-literal-expression": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/dmn-js-literal-expression/-/dmn-js-literal-expression-7.5.0.tgz", - "integrity": "sha512-uyg2qG8M2ypYHJCzORZgS5GzsoNzunI860wLYNHWX/hO6PbStiduW5tlt2gcneDnimYMf3+wKuf5cAvhVNGl7Q==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/dmn-js-literal-expression/-/dmn-js-literal-expression-8.1.0.tgz", + "integrity": "sha512-V5eP73TIjAjMxNHpzSoSjo4QxaDP4p6HsJ7Io7hM8leRNUZW5aLWTtMvrN5s4No3/bauIJTpSX0VH+g0YrL9fg==", "requires": { "diagram-js": "^6.3.0", - "dmn-js-shared": "^7.5.0", + "dmn-js-shared": "^8.1.0", "escape-html": "^1.0.3", "inferno": "~5.0.5", "min-dash": "^3.0.0", @@ -3928,12 +3951,13 @@ } }, "dmn-js-shared": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/dmn-js-shared/-/dmn-js-shared-7.5.0.tgz", - "integrity": "sha512-0AOJVoGEffYK2RKsJG0TCzfRA9EWZumpcmWxkPpS+hWRatb8xVe2ZJcSb/UgJPY74bHwmJTQsMEXAOUEARMkmw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/dmn-js-shared/-/dmn-js-shared-8.1.0.tgz", + "integrity": "sha512-/JPQ87ISCCD8K2Luv9Ue5YMBHiCRvd9O/t9OHRiMEX1gaWdDkmo/mTa2hBjUeHkAeR4pbqg0yqMuWuyPJtUumg==", "requires": { + "camunda-dmn-moddle": "^1.0.0", "diagram-js": "^6.3.0", - "dmn-moddle": "^5.0.0", + "dmn-moddle": "^8.0.3", "ids": "^0.2.0", "inferno": "~5.0.5", "min-dash": "^3.0.0", @@ -3941,16 +3965,66 @@ "selection-ranges": "^3.0.2", "selection-update": "^0.1.2", "table-js": "^6.0.3" + }, + "dependencies": { + "dmn-moddle": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/dmn-moddle/-/dmn-moddle-8.0.4.tgz", + "integrity": "sha512-7pVmt6Jr44cEleQeaitYx1InSEgU993LBbskEug/UUwfoR72ZdszHiSwfDIP5hUnc+dJylIgMbz10MXbQSld7g==", + "requires": { + "min-dash": "^3.0.0", + "moddle": "^5.0.1", + "moddle-xml": "^8.0.1" + } + }, + "moddle": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/moddle/-/moddle-5.0.1.tgz", + "integrity": "sha512-RB9NCYxbnQLiY1ZJ8Y61+I8TBEmmyaMr8Tj0+fJHN8Fm6l5NqojDy1s4LNDxq+omvug4gnzERMgT8uwNsADDvw==", + "requires": { + "min-dash": "^3.0.0" + } + }, + "moddle-xml": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/moddle-xml/-/moddle-xml-8.0.2.tgz", + "integrity": "sha512-8PkPzoPs8/pz3waSL1EEE0Wm0C7jkHOPVt/GmWhdDJNiz2IlGcCBWBwgb32VcNoN7zAAMvRn0nJ9AyIdOchxIQ==", + "requires": { + "min-dash": "^3.0.0", + "moddle": "^5.0.1", + "saxen": "^8.1.0" + } + } } }, "dmn-moddle": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/dmn-moddle/-/dmn-moddle-5.0.0.tgz", - "integrity": "sha512-zs7bZdtFhbJtnEL9sYlwc1YHbjEsZWWbdU0eg7gnw/EgpeHvP1lgZlD87m2kQTc9eAgT2oLtQcF3PjuFgCZMAA==", + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/dmn-moddle/-/dmn-moddle-8.0.4.tgz", + "integrity": "sha512-7pVmt6Jr44cEleQeaitYx1InSEgU993LBbskEug/UUwfoR72ZdszHiSwfDIP5hUnc+dJylIgMbz10MXbQSld7g==", "requires": { "min-dash": "^3.0.0", - "moddle": "^4.1.0", - "moddle-xml": "^7.1.0" + "moddle": "^5.0.1", + "moddle-xml": "^8.0.1" + }, + "dependencies": { + "moddle": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/moddle/-/moddle-5.0.1.tgz", + "integrity": "sha512-RB9NCYxbnQLiY1ZJ8Y61+I8TBEmmyaMr8Tj0+fJHN8Fm6l5NqojDy1s4LNDxq+omvug4gnzERMgT8uwNsADDvw==", + "requires": { + "min-dash": "^3.0.0" + } + }, + "moddle-xml": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/moddle-xml/-/moddle-xml-8.0.2.tgz", + "integrity": "sha512-8PkPzoPs8/pz3waSL1EEE0Wm0C7jkHOPVt/GmWhdDJNiz2IlGcCBWBwgb32VcNoN7zAAMvRn0nJ9AyIdOchxIQ==", + "requires": { + "min-dash": "^3.0.0", + "moddle": "^5.0.1", + "saxen": "^8.1.0" + } + } } }, "dns-equal": { diff --git a/client/package.json b/client/package.json index 2bb104d346..b9a380da98 100644 --- a/client/package.json +++ b/client/package.json @@ -8,6 +8,7 @@ "dependencies": { "@bpmn-io/add-exporter": "^0.2.0", "@bpmn-io/align-to-origin": "^0.6.0", + "@bpmn-io/dmn-migrate": "^0.4.3", "@bpmn-io/replace-ids": "^0.2.0", "bpmn-js": "^6.3.4", "bpmn-js-disable-collapsed-subprocess": "^0.1.1", @@ -27,7 +28,7 @@ "diagram-js-direct-editing": "^1.6.1", "diagram-js-minimap": "^2.0.3", "diagram-js-origin": "^1.3.1", - "dmn-js": "^7.5.0", + "dmn-js": "^8.0.0-alpha.1", "dmn-js-properties-panel": "^0.3.5", "drag-tabs": "^2.2.0", "events": "^3.0.0", diff --git a/client/src/app/App.js b/client/src/app/App.js index 2eab11c1a0..21ebf71640 100644 --- a/client/src/app/App.js +++ b/client/src/app/App.js @@ -1725,6 +1725,12 @@ export class App extends PureComponent { return config.get(key, file, ...args); } + setConfig = (key, ...args) => { + const config = this.getGlobal('config'); + + return config.set(key, ...args); + } + getPlugins = type => { return this.getGlobal('plugins').get(type); } @@ -1917,6 +1923,7 @@ export class App extends PureComponent { onAction={ this.triggerAction } onModal={ this.openModal } getConfig={ this.getConfig } + setConfig={ this.setConfig } getPlugins={ this.getPlugins } ref={ this.tabRef } /> diff --git a/client/src/app/__tests__/AppSpec.js b/client/src/app/__tests__/AppSpec.js index 77f0e0d4db..5c33ab635e 100644 --- a/client/src/app/__tests__/AppSpec.js +++ b/client/src/app/__tests__/AppSpec.js @@ -2392,6 +2392,36 @@ describe('', function() { }); + describe('#setConfig', function() { + + afterEach(sinon.restore); + + + it('should set config', async function() { + + // given + const setConfigSpy = spy(); + + const config = new Config({ + set: setConfigSpy + }); + + const { app } = createApp({ + globals: { + config + } + }); + + // when + app.setConfig('foo'); + + // then + expect(setConfigSpy).to.be.calledOnceWith('foo'); + }); + + }); + + describe('#loadPlugins', function() { it('should load plugins', function() { diff --git a/client/src/app/tabs/MultiSheetTab.js b/client/src/app/tabs/MultiSheetTab.js index b29aae015a..3059c4adc3 100644 --- a/client/src/app/tabs/MultiSheetTab.js +++ b/client/src/app/tabs/MultiSheetTab.js @@ -337,6 +337,19 @@ export class MultiSheetTab extends CachedComponent { return file && !file.path; } + onAction = (action, options) => { + const { + onAction, + tab + } = this.props; + + if (action === 'close-tab') { + return onAction('close-tab', { tabId: tab.id }); + } + + return onAction(action, options); + } + render() { let { activeSheet, @@ -348,7 +361,6 @@ export class MultiSheetTab extends CachedComponent { id, xml, layout, - onAction, tab } = this.props; @@ -376,7 +388,7 @@ export class MultiSheetTab extends CachedComponent { activeSheet={ activeSheet } onSheetsChanged={ this.sheetsChanged } onContextMenu={ this.handleContextMenu } - onAction={ onAction } + onAction={ this.onAction } onChanged={ this.handleChanged } onContentUpdated={ this.handleContentUpdated } onError={ this.handleError } @@ -384,6 +396,7 @@ export class MultiSheetTab extends CachedComponent { onLayoutChanged={ this.handleLayoutChanged } onModal={ this.props.onModal } getConfig={ this.props.getConfig } + setConfig={ this.props.setConfig } getPlugins={ this.props.getPlugins } /> diff --git a/client/src/app/tabs/__tests__/MultiSheetTabSpec.js b/client/src/app/tabs/__tests__/MultiSheetTabSpec.js index 9210673dd2..397c0d5768 100644 --- a/client/src/app/tabs/__tests__/MultiSheetTabSpec.js +++ b/client/src/app/tabs/__tests__/MultiSheetTabSpec.js @@ -455,6 +455,47 @@ describe('', function() { }); + + describe('#onAction', function() { + + it('should propagate action', async function() { + + // given + const onAction = sinon.spy(); + + const { + instance + } = renderTab({ + onAction + }); + + // when + await instance.onAction('foo'); + + // then + expect(onAction).to.have.been.calledWith('foo'); + }); + + + it('should handle close-tab action', async function() { + + // given + const onAction = sinon.spy(); + + const { + instance + } = renderTab({ + onAction + }); + + // when + await instance.onAction('close-tab'); + + // then + expect(onAction).to.have.been.calledWith('close-tab', { tabId: instance.props.tab.id }); + }); + }); + }); diff --git a/client/src/app/tabs/bpmn/BpmnEditor.js b/client/src/app/tabs/bpmn/BpmnEditor.js index f2d6f56ad3..65b32e1450 100644 --- a/client/src/app/tabs/bpmn/BpmnEditor.js +++ b/client/src/app/tabs/bpmn/BpmnEditor.js @@ -52,7 +52,7 @@ import applyDefaultTemplates from './modeler/features/apply-default-templates/ap import { findUsages as findNamespaceUsages, replaceUsages as replaceNamespaceUsages -} from './util/namespace'; +} from '../util/namespace'; import configureModeler from './util/configure'; diff --git a/client/src/app/tabs/dmn/DmnEditor.js b/client/src/app/tabs/dmn/DmnEditor.js index a1333157aa..a306ce837d 100644 --- a/client/src/app/tabs/dmn/DmnEditor.js +++ b/client/src/app/tabs/dmn/DmnEditor.js @@ -55,9 +55,17 @@ import generateImage from '../../util/generateImage'; import Metadata from '../../../util/Metadata'; +import { findUsages as findNamespaceUsages } from '../util/namespace'; + +import { migrateDiagram } from '@bpmn-io/dmn-migrate'; const EXPORT_AS = [ 'png', 'jpeg', 'svg' ]; +const NAMESPACE_URL_DMN11 = 'http://www.omg.org/spec/DMN/20151101/dmn.xsd', + NAMESPACE_URL_DMN12 = 'http://www.omg.org/spec/DMN/20180521/MODEL/'; + +const CONFIG_KEY = 'editor.askDmnMigration'; + export class DmnEditor extends CachedComponent { @@ -412,7 +420,11 @@ export class DmnEditor extends CachedComponent { return xml !== lastXML; } - importXML() { + async importXML() { + const { + xml + } = this.props; + const { modeler } = this.getCached(); @@ -421,7 +433,66 @@ export class DmnEditor extends CachedComponent { importing: true }); - modeler.importXML(this.props.xml, this.ifMounted(this.handleImport)); + const importedXML = await this.handleMigration(xml); + + if (!importedXML) { + this.props.onAction('close-tab'); + + return; + } + + modeler.importXML(importedXML, this.ifMounted(this.handleImport)); + } + + handleMigration = async (xml) => { + const used = findNamespaceUsages(xml, NAMESPACE_URL_DMN11) || + findNamespaceUsages(xml, NAMESPACE_URL_DMN12); + + if (!used) { + return xml; + } + + const askDmnMigration = await this.props.getConfig(CONFIG_KEY); + + if (askDmnMigration !== false) { + const shouldMigrate = await this.shouldMigrate(); + + if (!shouldMigrate) { + return null; + } + } + + const { + onContentUpdated + } = this.props; + + let migratedXML; + + try { + migratedXML = await migrateDiagram(xml); + } catch (err) { + this.handleError({ + error: err + }); + + return null; + } + + onContentUpdated(migratedXML); + + return migratedXML; + } + + async shouldMigrate() { + const { onAction } = this.props; + + const { button, checkboxChecked } = await onAction('show-dialog', getMigrationDialog()); + + if (button === 'yes' && checkboxChecked) { + this.props.setConfig(CONFIG_KEY, false); + } + + return button === 'yes'; } checkSheetChange(prevProps) { @@ -817,3 +888,21 @@ function getSheetName(view) { function isCachedStateChange(prevProps, props) { return prevProps.cachedState !== props.cachedState; } + +function getMigrationDialog() { + return { + type: 'warning', + title: 'Deprecated DMN 1.1 Diagram Detected', + buttons: [ + { id: 'cancel', label: 'Cancel' }, + { id: 'yes', label: 'Yes' } + ], + defaultId: 1, + message: 'Would you like to migrate your diagram to DMN 1.3?', + detail: [ + 'Only DMN 1.3 diagrams can be opened with Camunda Modeler v4.0.0 or later.', + ].join('\n'), + checkboxChecked: true, + checkboxLabel: 'Do not ask again.' + }; +} \ No newline at end of file diff --git a/client/src/app/tabs/dmn/__tests__/DiagramSpec.js b/client/src/app/tabs/dmn/__tests__/DiagramSpec.js index 1caca744ad..4a071287cf 100644 --- a/client/src/app/tabs/dmn/__tests__/DiagramSpec.js +++ b/client/src/app/tabs/dmn/__tests__/DiagramSpec.js @@ -19,7 +19,7 @@ describe('tabs/dmn', function() { // then expect(contents).to.contain('id="Definitions_{{ ID }}"'); - expect(contents).to.contain('id="Decision_{{ ID }}"'); + expect(contents).to.contain('id="Decision_{{ ID:decision }}"'); }); }); diff --git a/client/src/app/tabs/dmn/__tests__/DmnEditorSpec.js b/client/src/app/tabs/dmn/__tests__/DmnEditorSpec.js index f00c977581..517dd758fd 100644 --- a/client/src/app/tabs/dmn/__tests__/DmnEditorSpec.js +++ b/client/src/app/tabs/dmn/__tests__/DmnEditorSpec.js @@ -40,6 +40,8 @@ import { import diagramXML from './diagram.dmn'; +import diagram11XML from './diagram11.dmn'; + const { spy } = sinon; @@ -927,6 +929,7 @@ describe('', function() { }); + describe('sheet change', function() { it('should switch active view on sheet change', async function() { @@ -945,6 +948,7 @@ describe('', function() { }); + describe('import', function() { afterEach(sinon.restore); @@ -1320,6 +1324,64 @@ describe('', function() { }); + + describe('#handleMigration', function() { + + it('should migrate to DMN 1.3', function(done) { + + // given + const onAction = sinon.stub().withArgs('show-dialog').resolves({ + button: 'yes' + }); + + const onContentUpdated = sinon.spy(); + + function onImport() { + try { + + // then + expect(onContentUpdated).to.be.calledOnce; + expect(onContentUpdated).to.be.calledOnceWith(sinon.match('dmndi:DMNDI')); + + done(); + } catch (error) { + done(error); + } + } + + // when + renderEditor(diagram11XML, { + onAction, + onContentUpdated, + onImport + }); + }); + + + it('shoud NOT migrate to DMN 1.3', function(done) { + + // given + const onAction = sinon.stub(); + + onAction.withArgs('show-dialog').onFirstCall().resolves({ + button: 'cancel' + }); + + onAction.withArgs('close-tab').onFirstCall().callsFake(function() { + done(); + }); + + const onContentUpdated = sinon.spy(); + + // when + renderEditor(diagram11XML, { + onAction, + onContentUpdated + }); + }); + + }); + }); @@ -1334,11 +1396,13 @@ async function renderEditor(xml, options = {}) { layout, onAction, onChanged, + onContentUpdated, onError, onImport, onLayoutChanged, onModal, onSheetsChanged, + getConfig, getPlugins } = options; @@ -1348,12 +1412,14 @@ async function renderEditor(xml, options = {}) { xml={ xml } activeSheet={ options.activeSheet || { id: 'dmn' } } onAction={ onAction || noop } + onContentUpdated={ onContentUpdated || noop } onChanged={ onChanged || noop } onError={ onError || noop } onImport={ onImport || noop } onLayoutChanged={ onLayoutChanged || noop } onModal={ onModal || noop } onSheetsChanged={ onSheetsChanged || noop } + getConfig={ getConfig || (() => {}) } getPlugins={ getPlugins || (() => []) } cache={ options.cache || new Cache() } layout={ layout || { diff --git a/client/src/app/tabs/dmn/__tests__/diagram.dmn b/client/src/app/tabs/dmn/__tests__/diagram.dmn index 07f9d89437..3d217c46fb 100644 --- a/client/src/app/tabs/dmn/__tests__/diagram.dmn +++ b/client/src/app/tabs/dmn/__tests__/diagram.dmn @@ -1,76 +1,75 @@ - + - - - - - - - - + - - + + - - - - + - - - - - + - - - - - - - - - - - - + - + - - - - + We decide for holidays when we agreed on +season + region - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/client/src/app/tabs/dmn/__tests__/diagram11.dmn b/client/src/app/tabs/dmn/__tests__/diagram11.dmn new file mode 100644 index 0000000000..17f5257143 --- /dev/null +++ b/client/src/app/tabs/dmn/__tests__/diagram11.dmn @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/client/src/app/tabs/dmn/diagram.dmn b/client/src/app/tabs/dmn/diagram.dmn index 45061aafa9..f4a59149e1 100644 --- a/client/src/app/tabs/dmn/diagram.dmn +++ b/client/src/app/tabs/dmn/diagram.dmn @@ -1,16 +1,20 @@ - - - - - - - - + + + + + - + + + + + + + + diff --git a/client/src/app/tabs/dmn/table.dmn b/client/src/app/tabs/dmn/table.dmn index 7198c22560..a869f298b2 100644 --- a/client/src/app/tabs/dmn/table.dmn +++ b/client/src/app/tabs/dmn/table.dmn @@ -1,16 +1,13 @@ - + - - - + + + - + \ No newline at end of file diff --git a/client/src/app/tabs/bpmn/util/__tests__/fixtures/activiti-expected.xml b/client/src/app/tabs/util/__tests__/fixtures/activiti-expected.xml similarity index 100% rename from client/src/app/tabs/bpmn/util/__tests__/fixtures/activiti-expected.xml rename to client/src/app/tabs/util/__tests__/fixtures/activiti-expected.xml diff --git a/client/src/app/tabs/bpmn/util/__tests__/fixtures/activiti.xml b/client/src/app/tabs/util/__tests__/fixtures/activiti.xml similarity index 100% rename from client/src/app/tabs/bpmn/util/__tests__/fixtures/activiti.xml rename to client/src/app/tabs/util/__tests__/fixtures/activiti.xml diff --git a/client/src/app/tabs/bpmn/util/__tests__/fixtures/activitiCamunda-expected.xml b/client/src/app/tabs/util/__tests__/fixtures/activitiCamunda-expected.xml similarity index 100% rename from client/src/app/tabs/bpmn/util/__tests__/fixtures/activitiCamunda-expected.xml rename to client/src/app/tabs/util/__tests__/fixtures/activitiCamunda-expected.xml diff --git a/client/src/app/tabs/bpmn/util/__tests__/fixtures/activitiCamunda.xml b/client/src/app/tabs/util/__tests__/fixtures/activitiCamunda.xml similarity index 100% rename from client/src/app/tabs/bpmn/util/__tests__/fixtures/activitiCamunda.xml rename to client/src/app/tabs/util/__tests__/fixtures/activitiCamunda.xml diff --git a/client/src/app/tabs/bpmn/util/__tests__/fixtures/activitiComplex-expected.xml b/client/src/app/tabs/util/__tests__/fixtures/activitiComplex-expected.xml similarity index 100% rename from client/src/app/tabs/bpmn/util/__tests__/fixtures/activitiComplex-expected.xml rename to client/src/app/tabs/util/__tests__/fixtures/activitiComplex-expected.xml diff --git a/client/src/app/tabs/bpmn/util/__tests__/fixtures/activitiComplex.xml b/client/src/app/tabs/util/__tests__/fixtures/activitiComplex.xml similarity index 100% rename from client/src/app/tabs/bpmn/util/__tests__/fixtures/activitiComplex.xml rename to client/src/app/tabs/util/__tests__/fixtures/activitiComplex.xml diff --git a/client/src/app/tabs/bpmn/util/__tests__/fixtures/diagram.bpmn b/client/src/app/tabs/util/__tests__/fixtures/diagram.bpmn similarity index 100% rename from client/src/app/tabs/bpmn/util/__tests__/fixtures/diagram.bpmn rename to client/src/app/tabs/util/__tests__/fixtures/diagram.bpmn diff --git a/client/src/app/tabs/bpmn/util/__tests__/fixtures/specialChars-expected.xml b/client/src/app/tabs/util/__tests__/fixtures/specialChars-expected.xml similarity index 100% rename from client/src/app/tabs/bpmn/util/__tests__/fixtures/specialChars-expected.xml rename to client/src/app/tabs/util/__tests__/fixtures/specialChars-expected.xml diff --git a/client/src/app/tabs/bpmn/util/__tests__/fixtures/specialChars.xml b/client/src/app/tabs/util/__tests__/fixtures/specialChars.xml similarity index 100% rename from client/src/app/tabs/bpmn/util/__tests__/fixtures/specialChars.xml rename to client/src/app/tabs/util/__tests__/fixtures/specialChars.xml diff --git a/client/src/app/tabs/bpmn/util/__tests__/namespaceSpec.js b/client/src/app/tabs/util/__tests__/namespaceSpec.js similarity index 100% rename from client/src/app/tabs/bpmn/util/__tests__/namespaceSpec.js rename to client/src/app/tabs/util/__tests__/namespaceSpec.js diff --git a/client/src/app/tabs/bpmn/util/namespace.js b/client/src/app/tabs/util/namespace.js similarity index 100% rename from client/src/app/tabs/bpmn/util/namespace.js rename to client/src/app/tabs/util/namespace.js diff --git a/package-lock.json b/package-lock.json index cfa9efe81d..d23827eef2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -406,9 +406,9 @@ } }, "@electron/get": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.7.5.tgz", - "integrity": "sha512-Yvhsx6PRx4cOZLTsht/094olgU+BEW7kxxiuUeYHVg+77aGAEKHf+XW1o/gJopifAmX1WTaqYoFrI0SUQM5+PA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.9.0.tgz", + "integrity": "sha512-OBIKtF6ttIJotDXe4KJMUyTBO4xMii+mFjlA8R4CORuD4HvCUaCK3lPjhdTRCvuEv6gzWNbAvd9DNBv0v780lw==", "dev": true, "requires": { "debug": "^4.1.1", @@ -417,6 +417,7 @@ "global-agent": "^2.0.2", "global-tunnel-ng": "^2.7.1", "got": "^9.6.0", + "progress": "^2.0.3", "sanitize-filename": "^1.6.2", "sumchecker": "^3.0.1" }, @@ -427,15 +428,6 @@ "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==", "dev": true }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, "got": { "version": "9.6.0", "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", @@ -5630,9 +5622,9 @@ "dev": true }, "electron": { - "version": "7.1.12", - "resolved": "https://registry.npmjs.org/electron/-/electron-7.1.12.tgz", - "integrity": "sha512-gOJxAlJX2UyCRRncKzKzHSZStDI6MdoDzsustTCzudoZx3vlst1kkIP0n5t3TWTNoKNY/ihRsYIpeu63ar1m/g==", + "version": "7.1.14", + "resolved": "https://registry.npmjs.org/electron/-/electron-7.1.14.tgz", + "integrity": "sha512-y9Nbja4rl+5fPVw9e/lFudwRax3a+jenzS7WXzUkjF7GI8YFxNH2eH9K9PZFNuSwc/OOCja2ul70+D44tKTQEw==", "dev": true, "requires": { "@electron/get": "^1.0.1", @@ -5641,9 +5633,9 @@ }, "dependencies": { "@types/node": { - "version": "12.12.27", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.27.tgz", - "integrity": "sha512-odQFl/+B9idbdS0e8IxDl2ia/LP8KZLXhV3BUeI98TrZp0uoIzQPhGd+5EtzHmT0SMOIaPd7jfz6pOHLWTtl7A==", + "version": "12.12.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.30.tgz", + "integrity": "sha512-sz9MF/zk6qVr3pAnM0BSQvYIBK44tS75QC5N+VbWSE4DjCV/pJ+UzCW/F+vVnl7TkOPcuwQureKNtSSwjBTaMg==", "dev": true } } @@ -9063,6 +9055,15 @@ "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", "dev": true }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -9599,9 +9600,9 @@ "optional": true }, "semver": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.2.tgz", - "integrity": "sha512-BJs9T/H8sEVHbeigqzIEo57Iu/3DG6c4QoqTfbQB3BPA4zgzAomh/Fk9E7QtjWQ8mx2dgA9YCfSF4y9k9bHNpQ==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.3.tgz", + "integrity": "sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA==", "dev": true, "optional": true }