diff --git a/packages/xod-fs/src/unpack.js b/packages/xod-fs/src/unpack.js index 1a991f8a..d18862e9 100644 --- a/packages/xod-fs/src/unpack.js +++ b/packages/xod-fs/src/unpack.js @@ -29,14 +29,12 @@ export const getProjectPath = R.pipe( export const getPatchFolderName = R.pipe(XP.getPatchPath, XP.getBaseName); -const removeIds = R.map(R.dissoc('id')); - export const getXodpContents = R.compose( R.dissoc('impls'), R.dissoc('path'), R.evolve({ - nodes: removeIds, - links: removeIds, + nodes: R.values, + links: R.values, }) ); diff --git a/packages/xod-fs/src/utils.js b/packages/xod-fs/src/utils.js index 8149ff6a..b115fac9 100644 --- a/packages/xod-fs/src/utils.js +++ b/packages/xod-fs/src/utils.js @@ -29,11 +29,11 @@ export const doesFileExist = R.tryCatch( R.F ); -const assocIds = R.mapObjIndexed((entity, id) => R.assoc('id', id, entity)); +const indexByIds = R.indexBy(R.prop('id')); export const reassignIds = R.evolve({ - nodes: assocIds, - links: assocIds, + nodes: indexByIds, + links: indexByIds, }); export const getPatchName = (patchPath) => { diff --git a/packages/xod-fs/test/fixtures/libs.json b/packages/xod-fs/test/fixtures/libs.json index 9412fae1..22f30f74 100644 --- a/packages/xod-fs/test/fixtures/libs.json +++ b/packages/xod-fs/test/fixtures/libs.json @@ -1,6 +1,5 @@ { "xod/core/led": { - "label": "LED", "description": "", "links": {}, "nodes": { @@ -34,7 +33,6 @@ }, "xod/core/and": { "path": "xod/core/and", - "label": "and", "description": "", "links": {}, "nodes": { @@ -88,7 +86,6 @@ } }, "xod/core/pot": { - "label": "pot", "description": "", "links": {}, "nodes": { @@ -135,7 +132,6 @@ "path": "xod/core/test", "nodes": {}, "links": {}, - "label": "Test", "description": "", "impls": {} } diff --git a/packages/xod-fs/test/fixtures/simple-project.json b/packages/xod-fs/test/fixtures/simple-project.json index 885c559a..c135a6c0 100644 --- a/packages/xod-fs/test/fixtures/simple-project.json +++ b/packages/xod-fs/test/fixtures/simple-project.json @@ -5,6 +5,7 @@ ], "description": "", "license": "", + "version": "0.0.1", "patches": { "xod/core/led": { "nodes": { diff --git a/packages/xod-fs/test/fixtures/unpacked.json b/packages/xod-fs/test/fixtures/unpacked.json index 23e1cf15..71678bdf 100644 --- a/packages/xod-fs/test/fixtures/unpacked.json +++ b/packages/xod-fs/test/fixtures/unpacked.json @@ -7,6 +7,7 @@ ], "description": "", "license": "", + "version": "42", "name": "awesome-project", "libs": [ "xod/core" @@ -17,7 +18,6 @@ "content": { "path": "@/main", "description": "", - "label": "Main", "impls": {}, "links": { "1d78b081-ebfe-4a2d-b857-08a3b9ddd90f": { @@ -113,7 +113,6 @@ } } }, - "label": "QUX", "description": "" } } diff --git a/packages/xod-fs/test/fixtures/workspace/awesome-project/main/patch.xodp b/packages/xod-fs/test/fixtures/workspace/awesome-project/main/patch.xodp index 47d2e044..4f940da3 100644 --- a/packages/xod-fs/test/fixtures/workspace/awesome-project/main/patch.xodp +++ b/packages/xod-fs/test/fixtures/workspace/awesome-project/main/patch.xodp @@ -1,6 +1,7 @@ { - "nodes": { - "2c03e470-fefd-4f58-be6a-58d209d9158c": { + "nodes": [ + { + "id": "2c03e470-fefd-4f58-be6a-58d209d9158c", "type": "xod/core/pot", "pins": {}, "position": { @@ -8,7 +9,8 @@ "y": 182 } }, - "89c69d91-b484-478d-8990-027e5f0a2e3e": { + { + "id": "89c69d91-b484-478d-8990-027e5f0a2e3e", "type": "xod/core/and", "pins": {}, "position": { @@ -16,7 +18,8 @@ "y": 314 } }, - "4d716df5-81e7-4845-9b82-31a54c1634d7": { + { + "id": "4d716df5-81e7-4845-9b82-31a54c1634d7", "type": "@/qux", "pins": {}, "position": { @@ -24,9 +27,10 @@ "y": 322 } } - }, - "links": { - "3ed564cd-71e5-4ad3-9361-e7b9719bc82a": { + ], + "links": [ + { + "id": "3ed564cd-71e5-4ad3-9361-e7b9719bc82a", "input": { "nodeId": "2c03e470-fefd-4f58-be6a-58d209d9158c", "pinKey": "value" @@ -36,7 +40,8 @@ "pinKey": "b" } }, - "1d78b081-ebfe-4a2d-b857-08a3b9ddd90f": { + { + "id": "1d78b081-ebfe-4a2d-b857-08a3b9ddd90f", "input": { "nodeId": "2c03e470-fefd-4f58-be6a-58d209d9158c", "pinKey": "value" @@ -46,7 +51,6 @@ "pinKey": "38395ee5-8634-40f9-b7fa-dfe9eee208e8" } } - }, - "label": "Main", + ], "description": "" } diff --git a/packages/xod-fs/test/fixtures/workspace/awesome-project/project.xod b/packages/xod-fs/test/fixtures/workspace/awesome-project/project.xod index be1a5691..2e9e30a2 100644 --- a/packages/xod-fs/test/fixtures/workspace/awesome-project/project.xod +++ b/packages/xod-fs/test/fixtures/workspace/awesome-project/project.xod @@ -5,6 +5,7 @@ "description": "", "license": "", "name": "awesome-project", + "version": "42", "libs": [ "xod/core" ] diff --git a/packages/xod-fs/test/fixtures/workspace/awesome-project/qux/patch.xodp b/packages/xod-fs/test/fixtures/workspace/awesome-project/qux/patch.xodp index c48b3cda..80f9184a 100644 --- a/packages/xod-fs/test/fixtures/workspace/awesome-project/qux/patch.xodp +++ b/packages/xod-fs/test/fixtures/workspace/awesome-project/qux/patch.xodp @@ -1,6 +1,7 @@ { - "nodes": { - "38395ee5-8634-40f9-b7fa-dfe9eee208e8": { + "nodes": [ + { + "id": "38395ee5-8634-40f9-b7fa-dfe9eee208e8", "type": "xod/patch-nodes/input-number", "pins": {}, "position": { @@ -8,7 +9,8 @@ "y": 155 } }, - "4da4c29d-f482-47c2-825e-a969084b1116": { + { + "id": "4da4c29d-f482-47c2-825e-a969084b1116", "type": "xod/core/led", "pins": {}, "position": { @@ -16,9 +18,10 @@ "y": 307 } } - }, - "links": { - "30dafe79-37e6-4fc0-a8b8-fa5e912ffef1": { + ], + "links": [ + { + "id": "30dafe79-37e6-4fc0-a8b8-fa5e912ffef1", "input": { "nodeId": "38395ee5-8634-40f9-b7fa-dfe9eee208e8", "pinKey": "PIN" @@ -28,7 +31,6 @@ "pinKey": "brightness" } } - }, - "label": "QUX", + ], "description": "" } \ No newline at end of file diff --git a/packages/xod-fs/test/fixtures/workspace/lib/user/utils/test/patch.xodp b/packages/xod-fs/test/fixtures/workspace/lib/user/utils/test/patch.xodp index 48a73818..e2a3bc8d 100644 --- a/packages/xod-fs/test/fixtures/workspace/lib/user/utils/test/patch.xodp +++ b/packages/xod-fs/test/fixtures/workspace/lib/user/utils/test/patch.xodp @@ -1,6 +1,5 @@ { - "nodes": {}, - "links": {}, - "label": "Test", + "nodes": [], + "links": [], "description": "" } diff --git a/packages/xod-fs/test/fixtures/workspace/lib/xod/core/and/patch.xodp b/packages/xod-fs/test/fixtures/workspace/lib/xod/core/and/patch.xodp index 608ec8d7..5e705ca9 100644 --- a/packages/xod-fs/test/fixtures/workspace/lib/xod/core/and/patch.xodp +++ b/packages/xod-fs/test/fixtures/workspace/lib/xod/core/and/patch.xodp @@ -1,9 +1,9 @@ { - "label": "and", "description": "", - "links": {}, - "nodes": { - "noNativeImpl": { + "links": [], + "nodes": [ + { + "id": "noNativeImpl", "label": "", "description": "", "pins": {}, @@ -13,7 +13,8 @@ }, "type": "xod/patch-nodes/not-implemented-in-xod" }, - "a": { + { + "id": "a", "label": "First input", "description": "", "pins": {}, @@ -23,7 +24,8 @@ }, "type": "xod/patch-nodes/input-boolean" }, - "b": { + { + "id": "b", "label": "Second input", "description": "", "pins": {}, @@ -33,7 +35,8 @@ }, "type": "xod/patch-nodes/input-boolean" }, - "out": { + { + "id": "out", "label": "output", "description": "\"true\" if both inputs are \"true\"", "pins": {}, @@ -43,5 +46,5 @@ }, "type": "xod/patch-nodes/output-boolean" } - } + ] } \ No newline at end of file diff --git a/packages/xod-fs/test/fixtures/workspace/lib/xod/core/led/patch.xodp b/packages/xod-fs/test/fixtures/workspace/lib/xod/core/led/patch.xodp index 82fb2fa9..908731e9 100644 --- a/packages/xod-fs/test/fixtures/workspace/lib/xod/core/led/patch.xodp +++ b/packages/xod-fs/test/fixtures/workspace/lib/xod/core/led/patch.xodp @@ -1,9 +1,9 @@ { - "label": "LED", "description": "", - "links": {}, - "nodes": { - "noNativeImpl": { + "links": [], + "nodes": [ + { + "id": "noNativeImpl", "label": "", "description": "", "pins": {}, @@ -13,7 +13,8 @@ }, "type": "xod/patch-nodes/not-implemented-in-xod" }, - "brightness": { + { + "id": "brightness", "label": "", "description": "Shine brightness", "pins": {}, @@ -23,5 +24,5 @@ }, "type": "xod/patch-nodes/input-number" } - } + ] } \ No newline at end of file diff --git a/packages/xod-fs/test/fixtures/workspace/lib/xod/core/pot/patch.xodp b/packages/xod-fs/test/fixtures/workspace/lib/xod/core/pot/patch.xodp index 843f5523..2fadcecc 100644 --- a/packages/xod-fs/test/fixtures/workspace/lib/xod/core/pot/patch.xodp +++ b/packages/xod-fs/test/fixtures/workspace/lib/xod/core/pot/patch.xodp @@ -1,9 +1,9 @@ { - "label": "pot", "description": "", - "links": {}, - "nodes": { - "noNativeImpl": { + "links": [], + "nodes": [ + { + "id": "noNativeImpl", "label": "", "description": "", "pins": {}, @@ -13,7 +13,8 @@ }, "type": "xod/patch-nodes/not-implemented-in-xod" }, - "sample": { + { + "id": "sample", "label": "", "description": "Sample current value", "pins": {}, @@ -23,7 +24,8 @@ }, "type": "xod/patch-nodes/input-pulse" }, - "value": { + { + "id": "value", "label": "", "description": "Sampled potentiometer value", "pins": {}, @@ -33,5 +35,5 @@ }, "type": "xod/patch-nodes/output-number" } - } + ] } \ No newline at end of file diff --git a/packages/xod-fs/test/fixtures/workspace/lib/xod/core/test/patch.xodp b/packages/xod-fs/test/fixtures/workspace/lib/xod/core/test/patch.xodp index 48a73818..e2a3bc8d 100644 --- a/packages/xod-fs/test/fixtures/workspace/lib/xod/core/test/patch.xodp +++ b/packages/xod-fs/test/fixtures/workspace/lib/xod/core/test/patch.xodp @@ -1,6 +1,5 @@ { - "nodes": {}, - "links": {}, - "label": "Test", + "nodes": [], + "links": [], "description": "" } diff --git a/packages/xod-fs/test/fixtures/workspace/lib/xod/math/test/patch.xodp b/packages/xod-fs/test/fixtures/workspace/lib/xod/math/test/patch.xodp index 48a73818..e2a3bc8d 100644 --- a/packages/xod-fs/test/fixtures/workspace/lib/xod/math/test/patch.xodp +++ b/packages/xod-fs/test/fixtures/workspace/lib/xod/math/test/patch.xodp @@ -1,6 +1,5 @@ { - "nodes": {}, - "links": {}, - "label": "Test", + "nodes": [], + "links": [], "description": "" } diff --git a/packages/xod-fs/test/fixtures/xodball.json b/packages/xod-fs/test/fixtures/xodball.json index 380c05bf..0836574f 100644 --- a/packages/xod-fs/test/fixtures/xodball.json +++ b/packages/xod-fs/test/fixtures/xodball.json @@ -4,10 +4,10 @@ ], "description": "", "license": "", + "version": "42", "name": "awesome-project", "patches": { "xod/core/and": { - "label": "and", "description": "", "links": {}, "nodes": { @@ -62,7 +62,6 @@ } }, "xod/core/led": { - "label": "LED", "description": "", "links": {}, "nodes": { @@ -95,7 +94,6 @@ } }, "xod/core/pot": { - "label": "pot", "description": "", "links": {}, "nodes": { @@ -141,7 +139,6 @@ "xod/core/test": { "nodes": {}, "links": {}, - "label": "Test", "description": "", "path": "xod/core/test", "impls": {} @@ -200,7 +197,6 @@ "id": "1d78b081-ebfe-4a2d-b857-08a3b9ddd90f" } }, - "label": "Main", "description": "", "path": "@/main", "impls": {} @@ -239,7 +235,6 @@ "id": "30dafe79-37e6-4fc0-a8b8-fa5e912ffef1" } }, - "label": "QUX", "description": "", "path": "@/qux", "impls": {} diff --git a/packages/xod-fs/test/load.spec.js b/packages/xod-fs/test/load.spec.js index 57ac28a8..e724d296 100644 --- a/packages/xod-fs/test/load.spec.js +++ b/packages/xod-fs/test/load.spec.js @@ -30,6 +30,7 @@ describe('Loader', () => { license: '', name: 'awesome-project', libs: ['xod/core'], + version: '42', path: path.resolve(workspace, projectPath), }, ]); diff --git a/packages/xod-fs/test/unpack.spec.js b/packages/xod-fs/test/unpack.spec.js index 25e4cba5..d742e56c 100644 --- a/packages/xod-fs/test/unpack.spec.js +++ b/packages/xod-fs/test/unpack.spec.js @@ -22,14 +22,16 @@ describe('arrangeByFiles', () => { 'xod/core', ], license: '', + version: '0.0.1', name: 'awesome-project', }, path: './awesome-project/project.xod', }, { content: { - nodes: { - SJmGlirFpx: { + nodes: [ + { + id: 'SJmGlirFpx', type: 'xod/core/led', position: { x: 138, @@ -44,7 +46,8 @@ describe('arrangeByFiles', () => { label: 'my led', description: 'description for my led', }, - rJxbjrKpl: { + { + id: 'rJxbjrKpl', type: 'xod/patch-nodes/input-number', position: { x: 138, @@ -54,9 +57,10 @@ describe('arrangeByFiles', () => { label: '', description: '', }, - }, - links: { - rJIWsrtae: { + ], + links: [ + { + id: 'rJIWsrtae', output: { nodeId: 'rJxbjrKpl', pinKey: 'PIN', @@ -66,7 +70,7 @@ describe('arrangeByFiles', () => { pinKey: 'brightness', }, }, - }, + ], }, path: './awesome-project/main/patch.xodp', },