diff --git a/dist/core/DataModel.d.ts.map b/dist/core/DataModel.d.ts.map index e6ed2fe9..356df5de 100644 --- a/dist/core/DataModel.d.ts.map +++ b/dist/core/DataModel.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"DataModel.d.ts","sourceRoot":"","sources":["../../src/core/DataModel.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"DataModel.d.ts","sourceRoot":"","sources":["../../src/core/DataModel.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/core/DataModel.js b/dist/core/DataModel.js index fbf26231..d9d6ecce 100644 --- a/dist/core/DataModel.js +++ b/dist/core/DataModel.js @@ -67,6 +67,19 @@ export function createSession(opts = {}) { }; const dataSources = new Map(); const nodeIndex = new Map(); + // Ids that a second node was indexed under while another node already held them, since + // the index was last rebuilt whole. A node id is its PATH (BaseNode.id), so two entries + // with one name in one section are one id, and so is every node inside them; the index + // keeps the last one, and an operation addressed by that id would act on whichever that + // was. Only a malformed file holds such a pair (F1-50; MATLAB writes none, and a rename + // here refuses to make one), and D13 keeps both as read, so no id changes. Instead every + // id-addressed operation resolves through resolveId, which refuses an id that names more + // than one node. + // + // A filter, not the answer: the live check (hasTwin) decides, so an entry here that has + // since stopped being shared (one twin renamed) costs one check and refuses nothing. + // Empty for every well-formed file, which keeps resolveId a single Map lookup. + const sharedIds = new Set(); let contextNode = null; let entryNodes = []; let previewNode = null; @@ -118,15 +131,163 @@ export function createSession(opts = {}) { deindexSource(previous); } dataSources.set(srcId, sourceNode); - indexSource(sourceNode); + // Two nodes of this tree under one id is a file holding two entries (or two fields, + // two elements) with one name, and it is said here, at open, because from now on the + // session refuses to edit or delete either of them by id (resolveId). Looked for only + // when indexing met an id already held, so a clean file pays nothing for it. + if (indexSource(sourceNode)) { + const twins = twinWarnings(sourceNode); + if (twins.length > 0) { + // Appended to whatever the reader reported, and only when there is something: a + // clean file keeps no `warnings` field at all (see above). A new array, so the + // caller's own `warnings` argument is not written into. + const holder = sourceNode; + holder.warnings = (holder.warnings ?? []).concat(twins); + } + } publish('datamodel/source-added', { srcId, slddNode: sourceNode }); return sourceNode; } + // Index one node, noting its id in sharedIds when a different node already holds it. + // Every write into nodeIndex goes through here, so no path can make two nodes share an + // id without the filter hearing of it. Returns whether it did. + function indexNode(node) { + const id = node.id; + const held = nodeIndex.get(id); + nodeIndex.set(id, node); + if (held !== undefined && held !== node) { + sharedIds.add(id); + return true; + } + return false; + } + // Whether any node of `source` went in under an id another node already held. function indexSource(source) { const flat = source.flatten(); + let met = false; for (let i = 0; i < flat.length; i++) { - nodeIndex.set(flat[i].id, flat[i]); + if (indexNode(flat[i])) { + met = true; + } + } + return met; + } + // Whether `node`, or any node above it, has a sibling with the same id: what makes the + // id `node` answers to name more than one node. A node inside a shared entry counts, since + // `S/a` is a field of each `S`. Ids rather than names, because an id is not always the + // name (ModelBlockNode keys a block on its SID, ModelReferenceNode on its block path), + // and two same-named nodes with ids of their own are not shared. A source root has no + // parent, so two open files are never twins here. + function hasTwin(node) { + for (let n = node; n.parent; n = n.parent) { + const id = n.id; + const siblings = n.parent.children; + for (let i = 0; i < siblings.length; i++) { + if (siblings[i] !== n && siblings[i].id === id) { + return true; + } + } + } + return false; + } + // Whether the id `node` answers to is shared, so an operation addressed by it must be + // refused. sharedIds first: it is empty for a well-formed file, so this is free there, + // and it holds the id of every shared node, and so the id of a shared ancestor of any + // node inside one (an id is its parent's id, '/', and a key). + function idIsShared(node) { + if (sharedIds.size === 0) { + return false; + } + const id = node.id; + for (const shared of sharedIds) { + if (id === shared || id.startsWith(shared + '/')) { + return hasTwin(node); + } + } + return false; + } + // The node an id-addressed operation acts on: the indexed node, or null when there is + // none or when the id names more than one (idIsShared). Null for both, because a caller + // can do nothing right with either: the index holds the LAST twin indexed, which is not + // the row a host painted and is not necessarily the one its user meant. + function resolveId(nodeId) { + const node = nodeIndex.get(nodeId); + if (!node || idIsShared(node)) { + return null; + } + return node; + } + // After `ids` have left nodeIndex, put back any node still in an open tree that answers + // to one of them, other than the nodes in `leaving`. Deleting an id deletes it for every + // node that shared it, so a host that renames or removes one twin would otherwise leave + // the other unfindable until the next whole rebuild; with this, the twin left behind is + // the one node under that id, and resolveId hands it out again. Walks the trees only when + // one of the ids was shared, which a well-formed file never has. + function reindexLeftBehind(ids, leaving) { + const wanted = new Set(); + for (let i = 0; i < ids.length; i++) { + if (sharedIds.has(ids[i]) && !nodeIndex.has(ids[i])) { + wanted.add(ids[i]); + } + } + if (wanted.size === 0) { + return; } + dataSources.forEach((source) => { + const flat = source.flatten(); + for (let i = 0; i < flat.length; i++) { + if (!leaving.has(flat[i]) && wanted.has(flat[i].id)) { + indexNode(flat[i]); + } + } + }); + } + // One warning per group of siblings that share an id, at the shallowest level they do: + // everything inside a shared entry shares an id too, and the one warning already says + // that none of it can be edited or deleted. Walks the tree again, which registerSource + // asks of it only when indexing found an id held twice. + function twinWarnings(source) { + const warnings = []; + const visit = (parent) => { + const byId = new Map(); + for (let i = 0; i < parent.children.length; i++) { + const child = parent.children[i]; + const id = child.id; + const group = byId.get(id); + if (group) { + group.push(child); + } + else { + byId.set(id, [child]); + } + } + for (const group of byId.values()) { + if (group.length > 1) { + warnings.push(twinWarning(parent, group)); + } + else { + visit(group[0]); + } + } + }; + visit(source); + return warnings; + } + // What a group of twins reads as: where they are, the name they share, and what that + // costs the user, without the word "id", which a user never sees. `part` is the entry's + // name, the way a dictionary names one, or the MATLAB path of a field or element. + function twinWarning(parent, group) { + const first = group[0]; + const pathOf = (node) => node.matlabPath || node.name; + const where = parent.isContainer ? parent.displayName : pathOf(parent); + const noun = first.isEntry ? 'entries' : 'items'; + const name = first.displayName || first.name; + const message = group.length === 2 + ? `Two ${noun} in ${where} are named '${name}'. ` + + 'Neither can be edited or deleted until the file gives one of them another name.' + : `${group.length} ${noun} in ${where} are named '${name}'. ` + + 'None of them can be edited or deleted until the file gives each its own name.'; + return { code: 'duplicate-id', message, part: first.isEntry ? first.name : pathOf(first) }; } function deindexSource(source) { const flat = source.flatten(); @@ -185,13 +346,17 @@ export function createSession(opts = {}) { } const after = root.flatten(); for (let i = 0; i < after.length; i++) { - nodeIndex.set(after[i].id, after[i]); + indexNode(after[i]); } // Whatever `mutate` removed is a node the session must stop pointing at, for the // reason deleteOneNode releases it there: `before` minus `after`, by identity, so a // rename (same nodes, new ids) releases nothing. const survivors = new Set(after); - releaseSubtreeSelection(before.filter((n) => !survivors.has(n))); + const removed = before.filter((n) => !survivors.has(n)); + // An id this subtree shared with a node outside it (a twin, renamed here) has just + // been deleted for both; the twin left behind goes back in. + reindexLeftBehind(staleIds, new Set(removed)); + releaseSubtreeSelection(removed); } } /** @@ -211,7 +376,7 @@ export function createSession(opts = {}) { function indexSubtree(root) { const flat = root.flatten(); for (let i = 0; i < flat.length; i++) { - nodeIndex.set(flat[i].id, flat[i]); + indexNode(flat[i]); } } /** @@ -240,6 +405,9 @@ export function createSession(opts = {}) { for (let i = 0; i < ids.length; i++) { nodeIndex.delete(ids[i]); } + // A twin of a leaving node lost its id with it, and is still in the tree. By + // identity, not by attachment, since with no callback the subtree is still attached. + reindexLeftBehind(ids, new Set(flat)); // Every node here is leaving the tree, so the whole subtree is what the selection // must stop pointing at — see releaseSubtreeSelection, and mutateSubtree's // before-minus-after form of the same rule. @@ -479,6 +647,7 @@ export function createSession(opts = {}) { function removeAll() { dataSources.clear(); nodeIndex.clear(); + sharedIds.clear(); publish('datamodel/cleared'); releaseSelection(null); } @@ -497,8 +666,12 @@ export function createSession(opts = {}) { function isBatching() { return batchDepth > 0; } + // Null for an id no indexed node answers to, and for one that more than one node answers + // to: two entries with one name in one section, or anything inside them (resolveId). A + // host resolves a row it painted through this before it edits or deletes it, so this is + // where an id naming two nodes has to stop, not only in the session's own mutations. function findNodeById(nodeId) { - return nodeIndex.get(nodeId) || null; + return resolveId(nodeId); } /** * Every node matching `query`, live, as findNodeById hands back live nodes. @@ -843,20 +1016,27 @@ export function createSession(opts = {}) { // same way in both places, and the order below is that rule: // // 1. the model's OWN model workspace, which is private to it. + // 1b. the `.mat` that workspace is kept in, when the model keeps it in one + // (`WSDataSource: 'MAT-File'`). That file IS the model workspace, so it comes here and + // not with the other `.mat` files: a name it defines and the linked dictionary defines + // as well is the file's. It used to come last, because it is also one of the model's + // externals (below) and nothing else told it apart. It is read off the model's + // `workspaceDataSource`, which the parsers set for exactly this. // 2. the dictionaries it links, and every dictionary those reference, transitively. // Chased breadth-first, so the nearer file wins, with a seen-set keyed by // refBasename because a dictionary hierarchy is a graph a user can make cyclic. // resolveDictionaryReferences is deliberately one level — a host follows a link at a // time — but a NAME resolves down the whole chain, which is what MATLAB does and // what made a sub-dictionary's entries show no usages here at all. - // 3. its external `.mat` files. + // 3. its other external `.mat` files. // - // Read off the `dataSources` section rather than the `dataDictionary` field, because that - // section is where ModelNode.fromParsed puts both kinds, in that same order — the linked - // dictionary first, then the externals — so one read covers dictionary entries and MAT - // variables without naming either. Each recorded name goes through openSourceNamed, the - // same matcher a bare link target goes through, so "the dictionary this model links" and - // "the dictionary that link points at" can never be answered differently. + // Steps 2 and 3 are read off the `dataSources` section rather than the `dataDictionary` + // field, because that section is where ModelNode.fromParsed puts both kinds, in that same + // order — the linked dictionary first, then the externals — so one read covers dictionary + // entries and MAT variables without naming either. Each recorded name goes through + // openSourceNamed, the same matcher a bare link target goes through, so "the dictionary + // this model links" and "the dictionary that link points at" can never be answered + // differently. Step 1b's name goes through it too. // // A file NOT in this list is invisible: two unrelated projects open in one session, or a // model linked to a different dictionary that happens to define the same name, must not @@ -868,6 +1048,13 @@ export function createSession(opts = {}) { function resolutionOrder(model, modelSrcId) { // Index 0 is the model itself, which is how its own workspace comes first. const order = [modelSrcId]; + // Step 1b. Duck-typed, as the section below is: a host-supplied tree, or a parse from + // before the field, has no `workspaceDataSource`, and its model resolves as it always did. + const recorded = model.workspaceDataSource; + const workspaceMat = typeof recorded === 'string' && isMatFile(recorded) ? openSourceNamed(recorded) : null; + if (workspaceMat !== null) { + order.push(workspaceMat.srcId); + } // A host-supplied tree (addParsedSource) need not have sections at all. const declared = typeof model.getSection === 'function' ? model.getSection('dataSources') : null; const children = declared && Array.isArray(declared.children) ? declared.children : []; @@ -904,7 +1091,8 @@ export function createSession(opts = {}) { } for (const ref of mats) { const open = openSourceNamed(ref); - if (open !== null) { + // The workspace `.mat` is in the section too, as an external; it already has its place. + if (open !== null && open.srcId !== workspaceMat?.srcId) { order.push(open.srcId); } } @@ -1014,6 +1202,11 @@ export function createSession(opts = {}) { * that crosses a structured-clone boundary — see NodeUsage. */ function findUsages(nodeId) { + // The index directly, not resolveId: this reads, and what it reads is the same for every + // node an id names (a usage is found by the definition's NAME, in its source and its + // section, and twins share all three), so it cannot act on the wrong one. Refusing here + // would also make an out-of-batch row's UsedBy cell differ from the same row's cell in + // a rowsOf() batch, which credits both twins; see usagesForRow. const definition = nodeIndex.get(nodeId); // The same empty answer findNodeById gives for an id it does not hold: enumerating // rows and asking about each should not need a guard per row. @@ -1296,6 +1489,9 @@ export function createSession(opts = {}) { } function reindexAll() { nodeIndex.clear(); + // Rebuilt whole, so the filter is too: an id two nodes shared before the edit that + // triggered this and no longer do drops out of it here. + sharedIds.clear(); dataSources.forEach((src) => indexSource(src)); } subscribe('node/added', reindexAll); @@ -1345,6 +1541,12 @@ export function createSession(opts = {}) { if (!node.setProperty) { return false; } + // The edit is addressed by `nodeId`, and an id two nodes answer to does not say which: + // the selection may hold either twin, or the one findNodeById used to hand out. Refused + // as findNodeById refuses it (resolveId). + if (idIsShared(node)) { + return false; + } // Capture the pre-edit value so undo can restore it even when the caller omits // `oldValue`. The parameter is optional, and README's own example omits it, so // trusting it meant undo called setProperty(prop, undefined) — destroying the @@ -1441,7 +1643,7 @@ export function createSession(opts = {}) { UndoManager.pushExecuted(srcId, { execute() { result.redo(); - nodeIndex.set(node.id, node); + indexNode(node); setActiveEntry(node); publish('node/added', { node, sectionKey: sectionRef.name }); }, @@ -1452,7 +1654,7 @@ export function createSession(opts = {}) { publish('node/deleted', { node, section: sectionRef }); }, }); - nodeIndex.set(node.id, node); + indexNode(node); publish('node/added', { node, sectionKey: section.name }); setActiveEntry(node); return node; @@ -1485,7 +1687,7 @@ export function createSession(opts = {}) { UndoManager.pushExecuted(scope.name, { execute() { result.redo(); - nodeIndex.set(child.id, child); + indexNode(child); if (policy === 'follow') { setActiveEntry(child); } @@ -1502,7 +1704,7 @@ export function createSession(opts = {}) { }, }); } - nodeIndex.set(child.id, child); + indexNode(child); publish('node/children-changed', { parent: node }); return child; } @@ -1533,7 +1735,7 @@ export function createSession(opts = {}) { }, undo() { result.undo(); - nodeIndex.set(node.id, node); + indexNode(node); if (policy === 'follow') { setActiveEntry(node); } @@ -1570,7 +1772,7 @@ export function createSession(opts = {}) { }, undo() { result.undo(); - nodeIndex.set(node.id, node); + indexNode(node); if (policy === 'follow') { setActiveEntry(node); } @@ -1622,7 +1824,7 @@ export function createSession(opts = {}) { undo() { for (let i = undoInfo.length - 1; i >= 0; i--) { undoInfo[i].result.undo(); - nodeIndex.set(undoInfo[i].node.id, undoInfo[i].node); + indexNode(undoInfo[i].node); } if (policy === 'follow') { setActiveEntry(undoInfo.map((info) => info.node)); @@ -1651,7 +1853,7 @@ export function createSession(opts = {}) { // The undo scope is resolved from the TARGET, because getActiveSlddNode() derives // from contextNode and a headless caller has none — which is the whole gap. function addChildTo(nodeId) { - const node = nodeIndex.get(nodeId); + const node = resolveId(nodeId); if (!node) { return null; } @@ -1677,7 +1879,7 @@ export function createSession(opts = {}) { // whatever file happened to be selected — so undo in the file that actually changed // would do nothing, and undo in the untouched one would replay a change it never made. function deleteNodeById(nodeId) { - const node = nodeIndex.get(nodeId); + const node = resolveId(nodeId); if (!node) { return false; } @@ -1695,9 +1897,16 @@ export function createSession(opts = {}) { const nodes = []; for (const id of nodeIds) { const node = nodeIndex.get(id); - if (node) { - nodes.push(node); + if (!node) { + continue; + } + // An id naming two entries refuses the whole batch, as a batch spanning two files + // does below: it names an entry that is there and that this cannot tell from its + // twin, so deleting the rest would report a success for a request half carried out. + if (idIsShared(node)) { + return false; } + nodes.push(node); } if (nodes.length === 0) { return false; diff --git a/dist/core/DataModel.js.map b/dist/core/DataModel.js.map index 763cc0ea..9fe42467 100644 --- a/dist/core/DataModel.js.map +++ b/dist/core/DataModel.js.map @@ -1 +1 @@ -{"version":3,"file":"DataModel.js","sourceRoot":"","sources":["../../src/core/DataModel.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"DataModel.js","sourceRoot":"","sources":["../../src/core/DataModel.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/node/BaseNode.d.ts.map b/dist/datamodel/node/BaseNode.d.ts.map index d1122911..d436c04d 100644 --- a/dist/datamodel/node/BaseNode.d.ts.map +++ b/dist/datamodel/node/BaseNode.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"BaseNode.d.ts","sourceRoot":"","sources":["../../../src/datamodel/node/BaseNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"BaseNode.d.ts","sourceRoot":"","sources":["../../../src/datamodel/node/BaseNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/node/BaseNode.js b/dist/datamodel/node/BaseNode.js index 76b4b108..e64f6621 100644 --- a/dist/datamodel/node/BaseNode.js +++ b/dist/datamodel/node/BaseNode.js @@ -300,10 +300,12 @@ export default class BaseNode { // has to be, and it decides which by CHECKING. // // An element's `name` already is its 1-based slot: every builder stamps String(i+1), - // and _buildArrayChildren is now the only one that does. So the slot can be read - // instead of searched. But `name` is data — nothing reindexes it when children are - // reordered — so a derived index is a guess until the slot it names is confirmed to - // hold THIS node. Confirmed, it is the answer; unconfirmed, the scan still is. + // MatlabVariableNode's, StructNode's and ObjectNode's alike, and a sparse array names + // its rows by their ordinals among its nonzeros (test/elementNameBase.test.ts holds + // all of them to it). So the slot can be read instead of searched. But `name` is + // data — nothing reindexes it when children are reordered — so a derived index is a + // guess until the slot it names is confirmed to hold THIS node. Confirmed, it is the + // answer; unconfirmed, the scan still is. // // This replaced a bare `children.indexOf(this)`, which is O(n) per element and so // O(n^2) per array. Measured on the 1000x1000 double that prompted this: 1.5 us at diff --git a/dist/datamodel/node/BaseNode.js.map b/dist/datamodel/node/BaseNode.js.map index c2dfbede..131d7e42 100644 --- a/dist/datamodel/node/BaseNode.js.map +++ b/dist/datamodel/node/BaseNode.js.map @@ -1 +1 @@ -{"version":3,"file":"BaseNode.js","sourceRoot":"","sources":["../../../src/datamodel/node/BaseNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"BaseNode.js","sourceRoot":"","sources":["../../../src/datamodel/node/BaseNode.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG1E,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AA0HlE,gFAAgF;AAChF,yEAAyE;AACzE,gFAAgF;AAChF,6DAA6D;AAC7D,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AAmCrH;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAAC,IAAiC;IAC/D,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAE,CAA0C,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;QAC/F,IAAK,CAAuC,CAAC,QAAQ,EAAE,CAAC;YACtD,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,OAAO,OAAO,QAAQ;IAa3B,YAAY,IAAY,EAAE,MAAuB;QAC/C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IACpE,CAAC;IAED,IAAI,IAAI;QACN,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,6EAA6E;IAC7E,UAAU;IACV,IAAI,SAAS;QACX,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,8FAA8F;IAC9F,0FAA0F;IAC1F,wEAAwE;IACxE,YAAY;QACV,OAAO,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;IAED,0EAA0E;IAC1E,8EAA8E;IAC9E,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,6EAA6E;IAC7E,6EAA6E;IAC7E,gDAAgD;IAChD,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,YAAY;QACd,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gFAAgF;IAChF,kEAAkE;IAClE,IAAI,aAAa;QACf,OAAO,CAAC,CAAC,CACP,IAAI,CAAC,MAAM;YACX,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAClG,CAAC;IACJ,CAAC;IAED,2EAA2E;IAC3E,8EAA8E;IAC9E,iFAAiF;IACjF,iFAAiF;IACjF,kFAAkF;IAClF,qCAAqC;IACrC,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;IACxE,CAAC;IAED,6EAA6E;IAC7E,2EAA2E;IAC3E,6EAA6E;IAC7E,+EAA+E;IAC/E,iFAAiF;IACjF,0CAA0C;IAC1C,IAAI,mBAAmB;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,mFAAmF;IACnF,sFAAsF;IACtF,kFAAkF;IAClF,uFAAuF;IACvF,gDAAgD;IAChD,IAAI,eAAe;QACjB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,YAAY;QACd,oFAAoF;QACpF,0EAA0E;QAC1E,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,MAAM,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACzC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,0DAA0D;QAC1D,IAAI,IAAI,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC;YACrC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+EAA+E;IAC/E,iFAAiF;IACjF,8EAA8E;IAC9E,+EAA+E;IAC/E,6EAA6E;IAC7E,0CAA0C;IAC1C,qBAAqB,CAAC,MAAgB,IAAS,CAAC;IAEhD,WAAW;QACT,OAAO,KAAK,CAAC;IACf,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,KAAe,EAAE,KAAc;QACtC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QACD,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;QACpB,uFAAuF;QACvF,8EAA8E;QAC9E,qFAAqF;QACrF,yFAAyF;QACzF,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,WAAW,CAAC,KAAe;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC7B,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;YACpB,yEAAyE;YACzE,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAClC,CAAC;IACH,CAAC;IAED,YAAY,CAAC,OAAiB;QAC5B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YACZ,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8EAA8E;IAC9E,EAAE;IACF,wFAAwF;IACxF,sFAAsF;IACtF,uFAAuF;IACvF,6EAA6E;IAC7E,0CAA0C;IAC1C,EAAE;IACF,uFAAuF;IACvF,wFAAwF;IACxF,mBAAmB;IACnB,wBAAwB;QACtB,IAAI,IAAI,GAAa,IAAI,CAAC;QAC1B,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;QACA,IAAgD,CAAC,cAAc,GAAG,IAAI,CAAC;IAC1E,CAAC;IAED,gFAAgF;IAChF,gFAAgF;IAChF,4EAA4E;IAC5E,gFAAgF;IAChF,gFAAgF;IAChF,sCAAsC;IACtC,gBAAgB;QACd,IAAI,IAAI,GAAa,IAAI,CAAC;QAC1B,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;QACD,MAAM,MAAM,GAAG,IAAsC,CAAC;QACtD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;QACtB,CAAC;QACD,wFAAwF;QACxF,sFAAsF;QACtF,sDAAsD;QACtD,IAAI,CAAC,wBAAwB,EAAE,CAAC;IAClC,CAAC;IAED,8EAA8E;IAC9E,EAAE;IACF,qFAAqF;IACrF,gFAAgF;IAChF,sFAAsF;IACtF,oFAAoF;IACpF,6EAA6E;IAC7E,kFAAkF;IAClF,oFAAoF;IACpF,mFAAmF;IACnF,uFAAuF;IACvF,uEAAuE;IACvE,EAAE;IACF,sFAAsF;IACtF,wFAAwF;IACxF,sFAAsF;IACtF,wFAAwF;IACxF,uFAAuF;IACvF,iFAAiF;IACjF,wFAAwF;IACxF,uFAAuF;IACvF,sFAAsF;IACtF,cAAc;IACd,EAAE;IACF,mFAAmF;IACnF,qFAAqF;IACrF,wBAAwB;IACxB,WAAW;QACT,IAAI,IAAI,GAAa,IAAI,CAAC;QAC1B,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;QACD,MAAM,OAAO,GAAI,IAAsD,CAAC,cAAc,CAAC;QACvF,oFAAoF;QACpF,oFAAoF;QACpF,+EAA+E;QAC/E,8EAA8E;QAC9E,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;YAClC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,qFAAqF;QACrF,sFAAsF;QACtF,sFAAsF;QACtF,8CAA8C;QAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC;IACzF,CAAC;IAED,kFAAkF;IAClF,yFAAyF;IACzF,uFAAuF;IACvF,gEAAgE;IAChE,EAAE;IACF,uFAAuF;IACvF,wFAAwF;IACxF,uFAAuF;IACvF,oFAAoF;IACpF,6EAA6E;IAC7E,aAAa,CAAC,QAAiB;QAC7B,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;YACpD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,IAAI,GAAa,IAAI,CAAC;QAC1B,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;QACD,MAAM,OAAO,GAAI,IAA4D,CAAC,iBAAiB,CAAC;QAChG,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;YAClC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,SAAS,CAAC;IACtD,CAAC;IAED,OAAO;QACL,MAAM,MAAM,GAAe,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAe,CAAC,IAAI,CAAC,CAAC;QACjC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,oFAAoF;IACpF,+CAA+C;IAC/C,EAAE;IACF,qFAAqF;IACrF,sFAAsF;IACtF,oFAAoF;IACpF,iFAAiF;IACjF,oFAAoF;IACpF,qFAAqF;IACrF,0CAA0C;IAC1C,EAAE;IACF,kFAAkF;IAClF,mFAAmF;IACnF,kFAAkF;IAClF,0EAA0E;IAC1E,qEAAqE;IACrE,4EAA4E;IAC5E,+DAA+D;IACvD,kBAAkB;QACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAO,CAAC,QAAQ,CAAC;QACvC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;YACtE,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,WAAW;QACb,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC;IAClG,CAAC;IAED;;;;;OAKG;IACH,IAAI,UAAU;QACZ,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAC9B,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM,IAAK,MAA+C,CAAC,WAAW,EAAE,CAAC;YAC5E,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,UAAU,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;IAC1F,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,WAAyB;QACnC,iFAAiF;QACjF,oFAAoF;QACpF,oFAAoF;QACpF,mFAAmF;QACnF,SAAS;QACT,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACnC,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;YAC1B,OAAO,IAAI,IAAI,CAAC;gBACd,CAAC,CAAC,eAAe,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC;gBACjD,CAAC,CAAC,cAAc,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QACzE,CAAC;QACD,IACE,IAAI,CAAC,MAAM;YACX,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,EACjG,CAAC;YACD,yEAAyE;YACzE,sEAAsE;YACtE,EAAE;YACF,sEAAsE;YACtE,8DAA8D;YAC9D,qEAAqE;YACrE,2EAA2E;YAC3E,2EAA2E;YAC3E,2EAA2E;YAC3E,uEAAuE;YACvE,EAAE;YACF,wEAAwE;YACxE,4EAA4E;YAC5E,uEAAuE;YACvE,iCAAiC;YACjC,OAAO,cAAc,CACnB,WAAW,EAAE,EACb,IAAI,CAAC,kBAAkB,EAAE,EACzB,IAAI,CAAC,MAAM,CAAC,KAAK,EACjB,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,EAC5D,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAC3C,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,aAAa;QACf,kFAAkF;QAClF,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAC/D,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qFAAqF;IACrF,kFAAkF;IAClF,qFAAqF;IACrF,uEAAuE;IACvE,mFAAmF;IACnF,qCAAqC;IACrC,EAAE;IACF,sFAAsF;IACtF,oFAAoF;IACpF,uFAAuF;IACvF,EAAE;IACF,8EAA8E;IAC9E,oFAAoF;IACpF,8BAA8B;IAC9B,IAAI,mBAAmB;QACrB,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,WAAW,CAAC,YAAuB;QACjC,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC;QAC7B,IAAI,YAAoB,CAAC;QACzB,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;YAC3B,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,YAAY,GAAG,YAAY,CAAC,MAAM,CAAE,IAA2C,CAAC,GAAG,CAAC,CAAC,CAAC;QACxF,CAAC;QAED,IAAI,QAAQ,GAAG,YAAY,CAAC,MAAM,KAAK,OAAO,CAAC;QAC/C,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YACnB,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC;QAC3C,CAAC;QACD,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YACpB,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC;QAC5C,CAAC;QACD,oFAAoF;QACpF,qFAAqF;QACrF,iBAAiB;QACjB,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;YAC1B,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC,mBAAmB,CAAC;QAClD,CAAC;QACD,IAAI,QAAQ,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC;YACzC,QAAQ,GAAG,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC;QACD,wFAAwF;QACxF,sFAAsF;QACtF,uCAAuC;QACvC,IAAI,GAAG,KAAK,MAAM,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5C,QAAQ,GAAG,KAAK,CAAC;QACnB,CAAC;QAED,OAAO;YACL,GAAG;YACH,WAAW,EAAE,YAAY,CAAC,WAAW;YACrC,KAAK,EAAG,IAA2C,CAAC,YAAY,CAAC,YAAY,IAAI,GAAG,CAAC;YACrF,YAAY;YACZ,QAAQ;YACR,MAAM,EAAE,YAAY,CAAC,MAAM;YAC3B,OAAO,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SAC/E,CAAC;IACJ,CAAC;IAED,sFAAsF;IACtF,8EAA8E;IAC9E,mFAAmF;IACnF,uFAAuF;IACvF,kFAAkF;IAClF,KAAK,CAAC,IAAkB;QACtB,MAAM,QAAQ,GACZ,IAAI,CAAC,MAAM,IAAI,CAAE,IAAI,CAAC,MAA+C,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5G,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACnC,MAAM,GAAG,GAAY;YACnB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAG,IAAuC,CAAC,MAAM,IAAI,EAAE;SAC9D,CAAC;QAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAC/B,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,SAAS;YACX,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC;YAElC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,GAAG,CAAC,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;YAC5I,CAAC;iBAAM,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBAC9B,oEAAoE;gBACpE,yDAAyD;gBACzD,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;oBAC7B,GAAG,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;gBAClH,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;gBAChC,CAAC;gBACD,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC;YACrC,CAAC;iBAAM,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3D,wEAAwE;gBACxE,uEAAuE;gBACvE,0EAA0E;gBAC1E,0EAA0E;gBAC1E,+DAA+D;gBAC/D,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;YACxG,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;YAClC,CAAC;QACH,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACd,GAAG,CAAC,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;QAC/I,CAAC;QACD,IAAI,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC,EAAE,CAAC;YACtB,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;YAC9B,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC;QAC1C,CAAC;QACD,IAAI,CAAC,CAAC,UAAU,IAAI,GAAG,CAAC,EAAE,CAAC;YACzB,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC,EAAE,CAAC;YACtB,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC;YACrB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,CAAC;QACD,IAAI,CAAC,CAAC,aAAa,IAAI,GAAG,CAAC,EAAE,CAAC;YAC5B,GAAG,CAAC,WAAW,GAAI,IAA4C,CAAC,WAAW,IAAI,EAAE,CAAC;QACpF,CAAC;QACD,gFAAgF;QAChF,uEAAuE;QACvE,iFAAiF;QACjF,qEAAqE;QACrE,GAAG,CAAC,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAEpD,mFAAmF;QACnF,mFAAmF;QACnF,mFAAmF;QACnF,qFAAqF;QACrF,qFAAqF;QACrF,sEAAsE;QACtE,mFAAmF;QACnF,oFAAoF;QACpF,0EAA0E;QAC1E,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAClC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;QACtB,CAAC;QAED,sFAAsF;QACtF,+EAA+E;QAC/E,sFAAsF;QACtF,oFAAoF;QACpF,uFAAuF;QACvF,qFAAqF;QACrF,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC1B,CAAC;QAED,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACtC,CAAC;IAED,aAAa;QACX,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,uEAAuE;IACvE,wEAAwE;IACxE,2EAA2E;IAC3E,4EAA4E;IAC5E,gFAAgF;IAChF,8EAA8E;IAC9E,iCAAiC;IACjC,WAAW;QACT,OAAO,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAED,UAAU;QACR,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAClC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,UAAU,GAAc,EAAE,CAAC;QACjC,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,MAAM,GAAG,GAA4B,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;QAElE,+EAA+E;QAC/E,6EAA6E;QAC7E,yEAAyE;QACzE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QAEpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,UAAU,GAAc,EAAE,CAAC;YACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/C,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACvC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;gBAC5C,0EAA0E;gBAC1E,+EAA+E;gBAC/E,0CAA0C;gBAC1C,EAAE;gBACF,iFAAiF;gBACjF,kFAAkF;gBAClF,gFAAgF;gBAChF,kFAAkF;gBAClF,sDAAsD;gBACtD,EAAE;gBACF,kFAAkF;gBAClF,oFAAoF;gBACpF,qFAAqF;gBACrF,mFAAmF;gBACnF,mFAAmF;gBACnF,8DAA8D;gBAC9D,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC;gBACrC,MAAM,MAAM,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC;gBAC/D,MAAM,QAAQ,GAAG,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC3F,MAAM,SAAS,GACb,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,QAAQ,CAAC,UAAU,KAAK,QAAQ;oBACjF,CAAC,CAAC,QAAQ,CAAC,UAAU;oBACrB,CAAC,CAAC,SAAS,CAAC;gBAChB,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,IAAI,CAAC,GAAG;oBACd,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,QAAQ,EAAE,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;oBACrD,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,sCAAsC;oBAC3G,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,IAAI;oBAC9E,MAAM,EAAE,IAAI;oBACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,KAAK,EAAE,IAAI;oBACX,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;iBAClD,CAAC,CAAC;gBACH,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;gBACtD,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;gBAClC,MAAM,IAAI,GAAG,YAAY,CAAC,UAAU,IAAI,CAAC,YAAY,CAAC,YAAY,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;gBACxF,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;oBACrB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnB,CAAC;YACH,CAAC;YACD,6EAA6E;YAC7E,8EAA8E;YAC9E,8EAA8E;YAC9E,gFAAgF;YAChF,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YACvE,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,GAAG,OAAO;gBACzD,IAAI,EAAE,OAAO;gBACb,WAAW;gBACX,KAAK,EAAE,UAAU;gBACjB,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC;QACL,CAAC;QAED,4EAA4E;QAC5E,+EAA+E;QAC/E,4DAA4D;QAC5D,MAAM,QAAQ,GAAI,IAA0D,CAAC,MAAM,EAAE,WAAW,CAAC;QACjG,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACtD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,UAAU,GAAc,EAAE,CAAC;YACjC,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;gBAC5B,MAAM,QAAQ,GAAG,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC;gBACrC,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,GAAG,CAAC,IAAI;oBACrB,QAAQ,EAAE,MAAM;oBAChB,QAAQ,EAAE,sCAAsC;oBAChD,aAAa,EAAE,IAAI;oBACnB,MAAM,EAAE,IAAI;oBACZ,QAAQ,EAAE,KAAK;oBACf,KAAK,EAAE,IAAI;iBACZ,CAAC,CAAC;gBACH,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;gBACtD,GAAG,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;YAC5B,CAAC;YACD,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,OAAO;gBACb,WAAW,EAAE,OAAO;gBACpB,KAAK,EAAE,UAAU;gBACjB,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,aAAa,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE;YACrC,OAAO,EAAE,CAAC,GAAG,CAAC;YACd,UAAU,EAAE,IAAI;YAChB,gBAAgB,EAAE,KAAK;SACxB,CAAC;IACJ,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC;IACd,CAAC;CACF"} \ No newline at end of file diff --git a/dist/datamodel/node/container/ModelNode.d.ts b/dist/datamodel/node/container/ModelNode.d.ts index 82eee50f..c1f09acc 100644 --- a/dist/datamodel/node/container/ModelNode.d.ts +++ b/dist/datamodel/node/container/ModelNode.d.ts @@ -18,6 +18,7 @@ export interface ParsedSlx { modelName: string; }[]; externalDataSources: string[]; + workspaceDataSource?: string | null; configSets: ParsedConfigSet[]; workspace: MatVariable[]; blockParamUsages?: BlockParamUsage[]; @@ -32,6 +33,14 @@ export default class ModelNode extends ContainerNode { lastModified: string; uuid: string; dataDictionary: string | null; + /** + * The MAT file this model's workspace is kept in, as the model recorded it, or null. + * It is also a child of the dataSources section, with the externals. It is kept here + * as well because the session's usage engine resolves a name in it right after the + * model's own workspace and ahead of the dictionaries, and in that section it is one + * `.mat` among the others. See SlxParser's ParsedSlx.workspaceDataSource. + */ + workspaceDataSource: string | null; rawContents: Record | null; dirty: boolean; blockParamUsages: BlockParamUsage[]; diff --git a/dist/datamodel/node/container/ModelNode.d.ts.map b/dist/datamodel/node/container/ModelNode.d.ts.map index 6d06e06e..8f818ebe 100644 --- a/dist/datamodel/node/container/ModelNode.d.ts.map +++ b/dist/datamodel/node/container/ModelNode.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"ModelNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/container/ModelNode.ts"],"names":[],"mappings":"AAEA,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AAGrD,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAmBpD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,eAAe,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC5D,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,gBAAgB,CAAC,EAAE,eAAe,EAAE,CAAC;IACrC,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAC3C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC;IAK9C,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,aAAa;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAC3C,KAAK,EAAE,OAAO,CAAC;IACf,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC;;;;OAIG;IACH,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC;IAC/C,cAAc,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;gBAEzB,IAAI,EAAE,MAAM;IAmBxB,IAAI,iBAAiB,IAAI,iBAAiB,CAEzC;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IA8BD,IAAI,YAAY,IAAI,MAAM,CAKzB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,eAAe,IAAI,MAAM,CAM5B;IAED,aAAa,IAAI,SAAS,EAAE;IAI5B,WAAW,IAAI,UAAU,EAAE;IAI3B,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAIhD,SAAS,IAAI,OAAO;IAuCpB,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS;CAiHlE"} \ No newline at end of file +{"version":3,"file":"ModelNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/container/ModelNode.ts"],"names":[],"mappings":"AAEA,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AAGrD,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAmBpD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,eAAe,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC5D,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAI9B,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,gBAAgB,CAAC,EAAE,eAAe,EAAE,CAAC;IACrC,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAC3C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC;IAK9C,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,aAAa;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B;;;;;;OAMG;IACH,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAC3C,KAAK,EAAE,OAAO,CAAC;IACf,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC;;;;OAIG;IACH,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC;IAC/C,cAAc,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;gBAEzB,IAAI,EAAE,MAAM;IAoBxB,IAAI,iBAAiB,IAAI,iBAAiB,CAEzC;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IA8BD,IAAI,YAAY,IAAI,MAAM,CAKzB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,eAAe,IAAI,MAAM,CAM5B;IAED,aAAa,IAAI,SAAS,EAAE;IAI5B,WAAW,IAAI,UAAU,EAAE;IAI3B,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAIhD,SAAS,IAAI,OAAO;IAuCpB,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS;CAuHlE"} \ No newline at end of file diff --git a/dist/datamodel/node/container/ModelNode.js b/dist/datamodel/node/container/ModelNode.js index f1c0b067..dc5cdf52 100644 --- a/dist/datamodel/node/container/ModelNode.js +++ b/dist/datamodel/node/container/ModelNode.js @@ -22,6 +22,7 @@ export default class ModelNode extends ContainerNode { this.lastModified = ''; this.uuid = ''; this.dataDictionary = null; + this.workspaceDataSource = null; this.rawContents = null; this.dirty = false; this.blockParamUsages = []; @@ -140,6 +141,12 @@ export default class ModelNode extends ContainerNode { node.lastModified = parsed.lastModified; node.uuid = parsed.uuid; node.dataDictionary = parsed.dataDictionary; + // A string or nothing: a host parse may predate the field, and one that crossed a + // worker boundary is plain data with no type behind it. + node.workspaceDataSource = + typeof parsed.workspaceDataSource === 'string' && parsed.workspaceDataSource !== '' + ? parsed.workspaceDataSource + : null; node.rawContents = parsed.rawContents || null; node._zipEntries = parsed.zipEntries || null; node._workspaceVars = parsed.workspace; diff --git a/dist/datamodel/node/container/ModelNode.js.map b/dist/datamodel/node/container/ModelNode.js.map index 897c1d6f..9a147136 100644 --- a/dist/datamodel/node/container/ModelNode.js.map +++ b/dist/datamodel/node/container/ModelNode.js.map @@ -1 +1 @@ -{"version":3,"file":"ModelNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/container/ModelNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"ModelNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/container/ModelNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/node/data/ObjectNode.d.ts.map b/dist/datamodel/node/data/ObjectNode.d.ts.map index 06d49f41..fe7ebbca 100644 --- a/dist/datamodel/node/data/ObjectNode.d.ts.map +++ b/dist/datamodel/node/data/ObjectNode.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"ObjectNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/data/ObjectNode.ts"],"names":[],"mappings":"AAEA,OAAO,QAAQ,EAAE,EAAgE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEhI,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAgF5D;;;;GAIG;AACH,UAAU,QAAQ;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CACpB;AAoGD,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,QAAQ;IAC5C,UAAU,EAAE,MAAM,CAAC;IAKnB,eAAe,CAAC,EAAE,OAAO,CAAC;gBAEd,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAKvG,IAAI,IAAI,IAAI,MAAM,CAqBjB;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAID,IAAI,mBAAmB,IAAI,OAAO,CAEjC;IAMD,IAAI,IAAI,IAAI,MAAM,EAAE,CAenB;IAED;;;;;;;OAOG;IACH,SAAS,IAAI,MAAM,EAAE,GAAG,IAAI;IA8B5B,aAAa,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IAChC,SAAS,IAAI,QAAQ,GAAG,IAAI;IAQ5B;;;;;;;;;;;;;;OAcG;IACH,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI;IAuChD,IAAI,YAAY,IAAI,MAAM,CAezB;IAID,IAAI,aAAa,IAAI,OAAO,CAE3B;IAKD,IAAI,mBAAmB,IAAI,OAAO,CAEjC;IAWD,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,iBAAiB;IAsB5E,aAAa,IAAI,SAAS,EAAE;IAI5B,WAAW,IAAI,UAAU,EAAE;IAc3B,cAAc,IAAI,OAAO;IAmEzB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAqEhG,wBAAwB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IA4BnD,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAkC5D,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAW5C,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,UAAU;IAoFhG,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IA2BnD,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI;CAcvG"} \ No newline at end of file +{"version":3,"file":"ObjectNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/data/ObjectNode.ts"],"names":[],"mappings":"AAEA,OAAO,QAAQ,EAAE,EAAgE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEhI,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAgF5D;;;;GAIG;AACH,UAAU,QAAQ;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CACpB;AAoGD,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,QAAQ;IAC5C,UAAU,EAAE,MAAM,CAAC;IAKnB,eAAe,CAAC,EAAE,OAAO,CAAC;gBAEd,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAKvG,IAAI,IAAI,IAAI,MAAM,CAqBjB;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAID,IAAI,mBAAmB,IAAI,OAAO,CAEjC;IAMD,IAAI,IAAI,IAAI,MAAM,EAAE,CAenB;IAED;;;;;;;OAOG;IACH,SAAS,IAAI,MAAM,EAAE,GAAG,IAAI;IA8B5B,aAAa,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IAChC,SAAS,IAAI,QAAQ,GAAG,IAAI;IAQ5B;;;;;;;;;;;;;;OAcG;IACH,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI;IAuChD,IAAI,YAAY,IAAI,MAAM,CAezB;IAID,IAAI,aAAa,IAAI,OAAO,CAE3B;IAKD,IAAI,mBAAmB,IAAI,OAAO,CAEjC;IAWD,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,iBAAiB;IAsB5E,aAAa,IAAI,SAAS,EAAE;IAI5B,WAAW,IAAI,UAAU,EAAE;IAc3B,cAAc,IAAI,OAAO;IAmEzB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAqEhG,wBAAwB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IA4BnD,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAkC5D,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAW5C,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,UAAU;IAqFhG,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IA4BnD,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI;CAcvG"} \ No newline at end of file diff --git a/dist/datamodel/node/data/ObjectNode.js b/dist/datamodel/node/data/ObjectNode.js index 12657c8c..efdf407e 100644 --- a/dist/datamodel/node/data/ObjectNode.js +++ b/dist/datamodel/node/data/ObjectNode.js @@ -653,7 +653,8 @@ export default class ObjectNode extends DataNode { if (isEnumBag(rawVal)) { elemRaw[ENUM_KEY] = rawVal[ENUM_KEY]; } - const elemNode = NodeRegistry.parseValue(elemRaw, String(ei), node); + // Named by its 1-based slot, as every element is (BaseNode._slotAmongSiblings). + const elemNode = NodeRegistry.parseValue(elemRaw, String(ei + 1), node); // The MCOS decoder and both SLDD paths deliver elements in MATLAB's // own COLUMN-major order, so element ei is MATLAB's linear index // ei+1. Reading it row-major named 4 of the 6 elements of a 2x3 @@ -693,7 +694,8 @@ export default class ObjectNode extends DataNode { _elements: [{ _enum_value: value }], _mw_element_type: rawVal._mw_element_type || 'MATLABArray', }; - const elemNode = ObjectNode.parse(elemRaw, String(ei), node); + // Named by its 1-based slot, as the binary dictionary's rows of the same value are. + const elemNode = ObjectNode.parse(elemRaw, String(ei + 1), node); elemNode._subscript = { index: ei, dims, order: 'column-major', bracket: '()' }; node.addChild(elemNode); }); diff --git a/dist/datamodel/node/data/ObjectNode.js.map b/dist/datamodel/node/data/ObjectNode.js.map index ef745831..e8169134 100644 --- a/dist/datamodel/node/data/ObjectNode.js.map +++ b/dist/datamodel/node/data/ObjectNode.js.map @@ -1 +1 @@ -{"version":3,"file":"ObjectNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/data/ObjectNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"ObjectNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/data/ObjectNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/node/data/StructNode.d.ts.map b/dist/datamodel/node/data/StructNode.d.ts.map index 9b39682e..298f627f 100644 --- a/dist/datamodel/node/data/StructNode.d.ts.map +++ b/dist/datamodel/node/data/StructNode.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"StructNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/data/StructNode.ts"],"names":[],"mappings":"AAEA,OAAO,QAAsC,MAAM,gBAAgB,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AA4DnE,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,QAAQ;IAC5C,cAAc,CAAC,EAAE,OAAO,CAAC;IASzB,eAAe,UAAS;IAExB,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAGD,IAAI,QAAQ,IAAI,MAAM,CAErB;IAGD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAUD,IAAI,IAAI,IAAI,MAAM,EAAE,CAEnB;IAOD,IAAI,YAAY,IAAI,MAAM,CAEzB;IAKD,IAAI,eAAe,IAAI,OAAO,CAE7B;IAID,IAAI,mBAAmB,IAAI,OAAO,CAEjC;IAED,aAAa,IAAI,SAAS,EAAE;IAI5B,WAAW,IAAI,UAAU,EAAE;IAW3B,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAU3C,cAAc,IAAI,OAAO;IA+CzB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAoEhG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAqB5C,cAAc,IAAI,OAAO;IAKzB,eAAe,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IActC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAStD,WAAW,IAAI,OAAO;IAKtB,oBAAoB,CAAC,EAAE,EAAE,KAAK,GAAG,QAAQ,GAAG,UAAU,GAAG,IAAI;IAQ7D,YAAY,IAAI,QAAQ;IAYxB,YAAY,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,IAAI;IAC7C,eAAe,CAAC,KAAK,CAAC,EAAE,QAAQ,GAAG,aAAa,GAAG,IAAI;IAEvD,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,UAAU;IA4DhG,MAAM,KAAK,WAAW,IAAI,MAAM,CAAqB;IAiBrD,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,UAAU;CAS1E"} \ No newline at end of file +{"version":3,"file":"StructNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/data/StructNode.ts"],"names":[],"mappings":"AAEA,OAAO,QAAsC,MAAM,gBAAgB,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AA4DnE,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,QAAQ;IAC5C,cAAc,CAAC,EAAE,OAAO,CAAC;IASzB,eAAe,UAAS;IAExB,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAGD,IAAI,QAAQ,IAAI,MAAM,CAErB;IAGD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAUD,IAAI,IAAI,IAAI,MAAM,EAAE,CAEnB;IAOD,IAAI,YAAY,IAAI,MAAM,CAEzB;IAKD,IAAI,eAAe,IAAI,OAAO,CAE7B;IAID,IAAI,mBAAmB,IAAI,OAAO,CAEjC;IAED,aAAa,IAAI,SAAS,EAAE;IAI5B,WAAW,IAAI,UAAU,EAAE;IAW3B,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAU3C,cAAc,IAAI,OAAO;IA+CzB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAoEhG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAqB5C,cAAc,IAAI,OAAO;IAKzB,eAAe,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IActC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAStD,WAAW,IAAI,OAAO;IAKtB,oBAAoB,CAAC,EAAE,EAAE,KAAK,GAAG,QAAQ,GAAG,UAAU,GAAG,IAAI;IAQ7D,YAAY,IAAI,QAAQ;IAYxB,YAAY,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,IAAI;IAC7C,eAAe,CAAC,KAAK,CAAC,EAAE,QAAQ,GAAG,aAAa,GAAG,IAAI;IAEvD,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,UAAU;IA+DhG,MAAM,KAAK,WAAW,IAAI,MAAM,CAAqB;IAiBrD,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,UAAU;CAS1E"} \ No newline at end of file diff --git a/dist/datamodel/node/data/StructNode.js b/dist/datamodel/node/data/StructNode.js index 59a9466a..7eaa4564 100644 --- a/dist/datamodel/node/data/StructNode.js +++ b/dist/datamodel/node/data/StructNode.js @@ -354,7 +354,10 @@ export default class StructNode extends DataNode { _fields: fields, _mw_element_type: rawVal._mw_element_type }; - const elemNode = new StructNode(String(ei), node, elemSerial); + // Named by its 1-based slot, as every element of every flavour is + // (BaseNode._slotAmongSiblings), so its id is the one a text dictionary's + // cdata and a .mat file give the same element. + const elemNode = new StructNode(String(ei + 1), node, elemSerial); elemNode._isElementNode = true; // Same answer as the array root's, so the two cannot come to disagree about // it. An element serializes through serializeElement and so never emits diff --git a/dist/datamodel/node/data/StructNode.js.map b/dist/datamodel/node/data/StructNode.js.map index 9dc5639a..9bc1e07f 100644 --- a/dist/datamodel/node/data/StructNode.js.map +++ b/dist/datamodel/node/data/StructNode.js.map @@ -1 +1 @@ -{"version":3,"file":"StructNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/data/StructNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"StructNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/data/StructNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/parser/MdlParser.d.ts.map b/dist/datamodel/parser/MdlParser.d.ts.map index b681c0f3..908763c9 100644 --- a/dist/datamodel/parser/MdlParser.d.ts.map +++ b/dist/datamodel/parser/MdlParser.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"MdlParser.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/MdlParser.ts"],"names":[],"mappings":"AAqCA,OAAO,KAAK,EAAoC,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAQlF;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,SAAS,CAAC;AAIlC,wBAAgB,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,CAkDzE;AA2xBD;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAUzD"} \ No newline at end of file +{"version":3,"file":"MdlParser.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/MdlParser.ts"],"names":[],"mappings":"AAqCA,OAAO,KAAK,EAAoC,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAQlF;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,SAAS,CAAC;AAIlC,wBAAgB,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,CAkDzE;AA+xBD;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAUzD"} \ No newline at end of file diff --git a/dist/datamodel/parser/MdlParser.js b/dist/datamodel/parser/MdlParser.js index 0a5dc0d3..347e5317 100644 --- a/dist/datamodel/parser/MdlParser.js +++ b/dist/datamodel/parser/MdlParser.js @@ -579,11 +579,14 @@ function parseClassicMdl(bytes, filename) { // begin `engine_R2011b/`). const modelName = prop(model, 'Name') || ''; // The model workspace, for the case where it lives in a MAT file instead of in - // the model. Same relationship the `.slx` reads out of blockDiagram.json. + // the model. Same relationship the `.slx` reads out of blockDiagram.json, and + // returned the same two ways: as external data, which a host loads, and on its own + // as `workspaceDataSource`, which resolves ahead of the dictionary. const externalDataSources = []; const wsFile = prop(model, 'WSSourceFileName'); - if (prop(model, 'WSDataSource') === 'MAT-File' && wsFile) { - externalDataSources.push(wsFile); + const workspaceDataSource = prop(model, 'WSDataSource') === 'MAT-File' && wsFile ? wsFile : null; + if (workspaceDataSource) { + externalDataSources.push(workspaceDataSource); } return { name: filename, @@ -603,6 +606,7 @@ function parseClassicMdl(bytes, filename) { dataDictionary: prop(model, 'DataDictionary') || null, modelReferences: classicModelReferences(model, modelName), externalDataSources, + workspaceDataSource, configSets: classicConfigSets(model), workspace: classicWorkspace(root, model, warnings), ...classicBlockParamUsages(model), diff --git a/dist/datamodel/parser/MdlParser.js.map b/dist/datamodel/parser/MdlParser.js.map index 6016c188..f9bca8af 100644 --- a/dist/datamodel/parser/MdlParser.js.map +++ b/dist/datamodel/parser/MdlParser.js.map @@ -1 +1 @@ -{"version":3,"file":"MdlParser.js","sourceRoot":"","sources":["../../../src/datamodel/parser/MdlParser.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"MdlParser.js","sourceRoot":"","sources":["../../../src/datamodel/parser/MdlParser.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/parser/ParseWarning.d.ts b/dist/datamodel/parser/ParseWarning.d.ts index bf259daf..11932859 100644 --- a/dist/datamodel/parser/ParseWarning.d.ts +++ b/dist/datamodel/parser/ParseWarning.d.ts @@ -4,7 +4,8 @@ * * Deliberately about CONTAINERS AND PARTS rather than about any one format, so a * `.slx` part, a `.prj` store document and a `.mat` variable all report through - * the same three shapes as their readers gain the channel. + * the same three shapes as their readers gain the channel. The fourth, `duplicate-id`, + * is about what the session can do with a read that lost nothing; see above. */ export type ParseWarningCode = /** One named piece of the source could not be read; the rest of it was. */ @@ -12,8 +13,15 @@ export type ParseWarningCode = /** The source opened but held nothing this reader recognizes; the result is empty. */ | 'source-empty' /** Reading the source failed outright and was recovered from; the result is empty. */ - | 'source-unreadable'; -/** One thing that could not be read, in a source that otherwise opened. */ + | 'source-unreadable' +/** + * Nothing is missing: two or more siblings share a name, and so one node id, so + * none of them can be edited or deleted by id until the file names them apart. + * `part` is the entry's name, or the MATLAB path of a field or element. Added by the + * session when a source is registered, not by a reader. + */ + | 'duplicate-id'; +/** One thing that could not be read (or, for `duplicate-id`, addressed), in a source that otherwise opened. */ export interface ParseWarning { code: ParseWarningCode; /** One line, host-renderable, naming what was lost rather than where it broke. */ diff --git a/dist/datamodel/parser/ParseWarning.d.ts.map b/dist/datamodel/parser/ParseWarning.d.ts.map index f388c66f..a25bcdbb 100644 --- a/dist/datamodel/parser/ParseWarning.d.ts.map +++ b/dist/datamodel/parser/ParseWarning.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"ParseWarning.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/ParseWarning.ts"],"names":[],"mappings":"AAuBA;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB;AAC1B,2EAA2E;AACzE,iBAAiB;AACnB,sFAAsF;GACpF,cAAc;AAChB,sFAAsF;GACpF,mBAAmB,CAAC;AAExB,2EAA2E;AAC3E,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,gBAAgB,CAAC;IACvB,kFAAkF;IAClF,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAK7C"} \ No newline at end of file +{"version":3,"file":"ParseWarning.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/ParseWarning.ts"],"names":[],"mappings":"AA6BA;;;;;;;;GAQG;AACH,MAAM,MAAM,gBAAgB;AAC1B,2EAA2E;AACzE,iBAAiB;AACnB,sFAAsF;GACpF,cAAc;AAChB,sFAAsF;GACpF,mBAAmB;AACrB;;;;;GAKG;GACD,cAAc,CAAC;AAEnB,+GAA+G;AAC/G,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,gBAAgB,CAAC;IACvB,kFAAkF;IAClF,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAK7C"} \ No newline at end of file diff --git a/dist/datamodel/parser/ParseWarning.js b/dist/datamodel/parser/ParseWarning.js index fda1604e..0afedc65 100644 --- a/dist/datamodel/parser/ParseWarning.js +++ b/dist/datamodel/parser/ParseWarning.js @@ -20,6 +20,12 @@ // a defect in the file or in the read, and warning about them would put a count on // every legacy file a user opens — which teaches a host, and its user, to ignore // the count. Warn when the bytes claim something is there and it could not be read. +// +// ONE KIND IS NOT A LOSS. `duplicate-id` is a file that read in full but holds two +// entries (or two fields, two elements) with one name in one place, which MATLAB never +// writes. Both are kept as read; the session cannot tell them apart by id, so it refuses +// to edit or delete either by id, and this is how the user hears why. A host that counts +// losses counts the other codes. /** * The reason an unknown throw carried, reduced to a string. * diff --git a/dist/datamodel/parser/ParseWarning.js.map b/dist/datamodel/parser/ParseWarning.js.map index 7f8a20a6..c0e9a249 100644 --- a/dist/datamodel/parser/ParseWarning.js.map +++ b/dist/datamodel/parser/ParseWarning.js.map @@ -1 +1 @@ -{"version":3,"file":"ParseWarning.js","sourceRoot":"","sources":["../../../src/datamodel/parser/ParseWarning.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,qCAAqC;AACrC,EAAE;AACF,mEAAmE;AACnE,EAAE;AACF,kFAAkF;AAClF,iFAAiF;AACjF,gFAAgF;AAChF,+EAA+E;AAC/E,8EAA8E;AAC9E,4EAA4E;AAC5E,EAAE;AACF,kFAAkF;AAClF,yEAAyE;AACzE,EAAE;AACF,+EAA+E;AAC/E,kFAAkF;AAClF,gFAAgF;AAChF,kFAAkF;AAClF,mFAAmF;AACnF,iFAAiF;AACjF,oFAAoF;AA+BpF;;;;;;;GAOG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAY;IACnC,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACzB,OAAO,GAAG,CAAC,OAAO,CAAC;IACrB,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC"} \ No newline at end of file +{"version":3,"file":"ParseWarning.js","sourceRoot":"","sources":["../../../src/datamodel/parser/ParseWarning.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,qCAAqC;AACrC,EAAE;AACF,mEAAmE;AACnE,EAAE;AACF,kFAAkF;AAClF,iFAAiF;AACjF,gFAAgF;AAChF,+EAA+E;AAC/E,8EAA8E;AAC9E,4EAA4E;AAC5E,EAAE;AACF,kFAAkF;AAClF,yEAAyE;AACzE,EAAE;AACF,+EAA+E;AAC/E,kFAAkF;AAClF,gFAAgF;AAChF,kFAAkF;AAClF,mFAAmF;AACnF,iFAAiF;AACjF,oFAAoF;AACpF,EAAE;AACF,mFAAmF;AACnF,uFAAuF;AACvF,yFAAyF;AACzF,yFAAyF;AACzF,iCAAiC;AAuCjC;;;;;;;GAOG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAY;IACnC,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACzB,OAAO,GAAG,CAAC,OAAO,CAAC;IACrB,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC"} \ No newline at end of file diff --git a/dist/datamodel/parser/SlxParser.d.ts b/dist/datamodel/parser/SlxParser.d.ts index ed9ab226..257c9455 100644 --- a/dist/datamodel/parser/SlxParser.d.ts +++ b/dist/datamodel/parser/SlxParser.d.ts @@ -69,6 +69,17 @@ export interface ParsedSlx { modelName: string; }[]; externalDataSources: string[]; + /** + * The MAT file this model's workspace is kept in (`WSDataSource: 'MAT-File'`), as + * the model recorded it, or null when the workspace is not kept in a MAT file. + * + * The same file is in `externalDataSources` too, where a host already finds it. It + * is named again here because a name resolves differently in it: it IS the model + * workspace, so MATLAB looks in it right after the model's own workspace and ahead of + * every dictionary, where the other externals come after them. Both usage engines + * read this for that (UsageIndex.resolveName, DataModel's resolutionOrder). + */ + workspaceDataSource: string | null; configSets: ParsedConfigSet[]; workspace: MatVariable[] & { _trailingElements: Uint8Array[]; diff --git a/dist/datamodel/parser/SlxParser.d.ts.map b/dist/datamodel/parser/SlxParser.d.ts.map index 64032f12..3f690388 100644 --- a/dist/datamodel/parser/SlxParser.d.ts.map +++ b/dist/datamodel/parser/SlxParser.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"SlxParser.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/SlxParser.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;;;;;OASG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,eAAe,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC5D,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,SAAS,EAAE,WAAW,EAAE,GAAG;QAAE,iBAAiB,EAAE,UAAU,EAAE,CAAA;KAAE,CAAC;IAC/D,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC;;;;OAIG;IACH,KAAK,EAAE,SAAS,EAAE,CAAC;IAInB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAC3C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC;IAY9C,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B;AA2ED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CA8B5F;AAsVD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMvD;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAQ1D;AA2DD;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAI5F;AA8BD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAwLD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,CAgBzE;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,CAkOhG"} \ No newline at end of file +{"version":3,"file":"SlxParser.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/SlxParser.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;;;;;OASG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,eAAe,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAG5D,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B;;;;;;;;;OASG;IACH,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,SAAS,EAAE,WAAW,EAAE,GAAG;QAAE,iBAAiB,EAAE,UAAU,EAAE,CAAA;KAAE,CAAC;IAC/D,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC;;;;OAIG;IACH,KAAK,EAAE,SAAS,EAAE,CAAC;IAInB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAC3C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC;IAY9C,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B;AA2ED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CA8B5F;AAoZD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMvD;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAQ1D;AA2DD;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAI5F;AA8BD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAsND,wBAAgB,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,CAgBzE;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,CAiOhG"} \ No newline at end of file diff --git a/dist/datamodel/parser/SlxParser.js b/dist/datamodel/parser/SlxParser.js index eadd289e..57f520b3 100644 --- a/dist/datamodel/parser/SlxParser.js +++ b/dist/datamodel/parser/SlxParser.js @@ -101,6 +101,63 @@ export function configSetIdentity(data) { // from a release this corpus does not sample is the case that would otherwise lose it. return { objectClass: obj['@_ClassName'], sourceName: props.SourceName ?? props.WSVarName ?? '' }; } +// The entries a JSON index part lists (`ConfigSetInfo` in configSetInfo.json, +// `ModelReferences` in graphicalInterface.json) as a list, or null when the value cannot +// be read as one. MATLAB always writes an array: all 68 configSetInfo.json parts in this +// repo and the corpus, and every graphicalInterface.json that has ModelReferences at all. +// So any other shape comes from a hand-edited or third-party package. Most used to throw +// out of the read and take the whole model with it (C-255); a falsy one read as nothing. +// A lone object is read as a list of one, the file's own idiom for single-vs-array +// (`findAll`, `systemRefsIn`). +// What the caller does with a null, and with an entry it cannot use, is the caller's call. +function indexEntries(value) { + if (Array.isArray(value)) + return value; + if (value !== null && typeof value === 'object') + return [value]; + return null; +} +/** One entry an index lists, when it is an object (not an array) and so can name anything. */ +function isEntryObject(entry) { + return entry !== null && typeof entry === 'object' && !Array.isArray(entry); +} +/** What a value that is not a list or an object is, for a warning's message. */ +function shapeOf(value) { + return value === undefined ? 'absent' : value === null ? 'null' : `a ${typeof value}`; +} +// The configuration sets that configSetInfo.json lists, as `legacyConfigSetInfo` gives +// the XML index's. Only for an index part that parsed: one that did not has already been +// reported once, by readPart. Anything but a list or an object is one warning and no sets: +// the part is there and does not say which sets the model has, and every model has one. +// An entry that does not name both its part and its set is one warning and is skipped; +// the sets listed around it are still read. +function jsonConfigSetInfo(value, warnings) { + const part = 'simulink/configSetInfo.json'; + const list = indexEntries(value); + if (list === null) { + warnings.push({ + code: 'part-unreadable', + message: `The model part "${part}" does not list its configuration sets ` + + `(its ConfigSetInfo is ${shapeOf(value)}), so no configuration sets were read.`, + part, + }); + return []; + } + const out = []; + list.forEach((entry, i) => { + if (!isEntryObject(entry) || typeof entry.PartName !== 'string' || typeof entry.ConfigSetName !== 'string') { + warnings.push({ + code: 'part-unreadable', + message: `Entry ${i + 1} of the configuration sets listed in "${part}" does not name both its part ` + + 'and its set, so that set was not read.', + part, + }); + return; + } + out.push({ PartName: entry.PartName, ConfigSetName: entry.ConfigSetName, Active: !!entry.Active }); + }); + return out; +} function extractConfigSets(entries, configSetInfo, warnings) { const configs = []; for (const info of configSetInfo) { @@ -735,7 +792,8 @@ function extractBlockParamUsages(entries, legacy, warnings) { } return { usages, masks }; } -function extractModelReferences(graphicalInterface) { +const REFS_LOST = "this model's references to other models are missing"; +function extractModelReferences(graphicalInterface, warnings) { if (!graphicalInterface) { return []; } @@ -747,12 +805,39 @@ function extractModelReferences(graphicalInterface) { // unwrapped for above. const gi = graphicalInterface.GraphicalInterface || graphicalInterface; const refs = gi.ModelReferences; - if (!refs) { + // Absent is a model that references no other model: 78 of the 124 graphicalInterface.json + // parts in this repo and the corpus have no ModelReferences. That is not a loss, so it + // stays silent. Any other value that is not a list or an object is one (C-255). + if (refs === undefined || refs === null) { + return []; + } + const part = 'simulink/graphicalInterface.json'; + const list = indexEntries(refs); + if (list === null) { + warnings.push({ + code: 'part-unreadable', + message: `The model part "${part}" does not list its model references ` + + `(its ModelReferences is ${shapeOf(refs)}), so ${REFS_LOST}.`, + part, + }); return []; } - return refs.map(function (ref) { - return { blockPath: ref.BlockPath, modelName: ref.ModelName }; + const out = []; + list.forEach((ref, i) => { + // Without this check, a reference with no ModelName reached the references section, + // whose file-kind check threw on it, and the whole model failed to open. + if (!isEntryObject(ref) || typeof ref.BlockPath !== 'string' || typeof ref.ModelName !== 'string') { + warnings.push({ + code: 'part-unreadable', + message: `Entry ${i + 1} of the model references listed in "${part}" does not name both its block ` + + 'and the model it references, so that reference was not read.', + part, + }); + return; + } + out.push({ blockPath: ref.BlockPath, modelName: ref.ModelName }); }); + return out; } export function parseSlx(buffer, filename) { const unreadable = []; @@ -839,7 +924,7 @@ export function parseModelParts(entries, filename) { // is nothing left to count. `extractConfigSets` is still called with an empty list // so the rest of the model is read normally. const info = readPart(entries, 'simulink/configSetInfo.json', 'no configuration sets were read', warnings); - configSets = extractConfigSets(entries, info?.ConfigSetInfo || [], warnings); + configSets = extractConfigSets(entries, info ? jsonConfigSetInfo(info.ConfigSetInfo, warnings) : [], warnings); } else if (entries['simulink/configSetInfo.xml']) { const info = readPart(entries, 'simulink/configSetInfo.xml', 'no configuration sets were read', warnings); @@ -851,10 +936,9 @@ export function parseModelParts(entries, filename) { // Graphical interface (model references). JSON from R2024b, XML from R2014b, and // inline in the block diagram before that. let modelReferences = []; - const REFS_LOST = "this model's references to other models are missing"; if (entries['simulink/graphicalInterface.json']) { const gi = readPart(entries, 'simulink/graphicalInterface.json', REFS_LOST, warnings); - modelReferences = gi ? extractModelReferences(gi) : []; + modelReferences = gi ? extractModelReferences(gi, warnings) : []; } else if (entries['simulink/graphicalInterface.xml']) { modelReferences = legacyModelReferences(readPart(entries, 'simulink/graphicalInterface.xml', REFS_LOST, warnings)); @@ -870,7 +954,10 @@ export function parseModelParts(entries, filename) { if (eds) { externalDataSources = extractExternalDataSources(eds); } - // Model-workspace MAT source (from blockDiagram.json) is also external data. + // Model-workspace MAT source (from blockDiagram.json) is also external data, so a + // host that loads the externals loads it. It is returned on its own as well, as + // `workspaceDataSource`, because it resolves ahead of the dictionaries and the rest + // of this list does not. if (workspaceMatFile && !externalDataSources.includes(workspaceMatFile)) { externalDataSources.push(workspaceMatFile); } @@ -960,6 +1047,7 @@ export function parseModelParts(entries, filename) { dataDictionary, modelReferences, externalDataSources, + workspaceDataSource: workspaceMatFile, configSets, workspace, blockParamUsages, diff --git a/dist/datamodel/parser/SlxParser.js.map b/dist/datamodel/parser/SlxParser.js.map index 736a5da3..84e2f154 100644 --- a/dist/datamodel/parser/SlxParser.js.map +++ b/dist/datamodel/parser/SlxParser.js.map @@ -1 +1 @@ -{"version":3,"file":"SlxParser.js","sourceRoot":"","sources":["../../../src/datamodel/parser/SlxParser.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"SlxParser.js","sourceRoot":"","sources":["../../../src/datamodel/parser/SlxParser.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/usage/UsageIndex.d.ts b/dist/datamodel/usage/UsageIndex.d.ts index 08b9a36f..51a162cf 100644 --- a/dist/datamodel/usage/UsageIndex.d.ts +++ b/dist/datamodel/usage/UsageIndex.d.ts @@ -37,6 +37,14 @@ export interface ModelSummary { slddRefs: string[]; /** refBasename'd names of linked MAT-files. */ matRefs: string[]; + /** + * refBasename'd name of the MAT-file the model workspace is kept in, which resolves + * right after `workspaceNames` and ahead of `slddRefs`. It is in `matRefs` too. + * + * Absent when there is no such file. Optional, rather than null, so that a summary a + * host built before this existed is still a ModelSummary, and resolves as it always did. + */ + workspaceMatRef?: string; /** * The model's mask workspaces — a scope INSIDE the model, ahead of everything above. * Unlike the three ref lists this needs no lookup elsewhere: a mask is defined in the @@ -206,8 +214,10 @@ export declare function summarizeMatScan(scan: MatScanResult, srcId: string, fil * if it does not. * * MATLAB's order, and the FIRST hit wins: the mask workspaces of the masked subsystems - * this block is inside (innermost out), then the model's own workspace, then the linked - * dictionary and any dictionary it references transitively, then linked MAT-files. Each + * this block is inside (innermost out), then the model's own workspace, then the MAT-file + * that workspace is kept in (`workspaceMatRef`, whose hit is kind `'mat'` since the + * definition is in that file), then the linked dictionary and any dictionary it + * references transitively, then the other linked MAT-files. Each * scope SHADOWS the ones after it — the block reads one value, so only one definition is * used, and crediting both would put a usage on a definition whose value never reaches * the block. diff --git a/dist/datamodel/usage/UsageIndex.d.ts.map b/dist/datamodel/usage/UsageIndex.d.ts.map index c5c454c0..42c64ef2 100644 --- a/dist/datamodel/usage/UsageIndex.d.ts.map +++ b/dist/datamodel/usage/UsageIndex.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"UsageIndex.d.ts","sourceRoot":"","sources":["../../../src/datamodel/usage/UsageIndex.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"UsageIndex.d.ts","sourceRoot":"","sources":["../../../src/datamodel/usage/UsageIndex.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/usage/UsageIndex.js b/dist/datamodel/usage/UsageIndex.js index 83a90684..cbf06994 100644 --- a/dist/datamodel/usage/UsageIndex.js +++ b/dist/datamodel/usage/UsageIndex.js @@ -26,18 +26,20 @@ // whichever engine happened to answer, which is how the shadowed usage was found. // // The rule below is the one both express: the enclosing mask workspaces innermost-out, then -// the model workspace, then the dictionary chain, then the MATs, first hit wins. Two +// the model workspace, then the `.mat` the model workspace is kept in (if it is kept in +// one), then the dictionary chain, then the other MATs, first hit wins. Two // implementations remain because the INPUTS genuinely differ // (bytes on disk versus trees in a session, and neither can be had from the other), so the // agreement is pinned by test rather than by construction — see test/usageEngines.test.ts, // which asks both the same question about the same files. // -// ==> OPEN, and not the same question: a model whose WORKSPACE is sourced from a `.mat` -// (`WSDataSource: 'MAT-File'`) resolves that file last here, with the other externals, -// because both parsers merge it into `externalDataSources` and the distinction is gone by -// the time a summary is built. MATLAB would resolve it FIRST — it is the model workspace. -// It only shows when such a model also links a dictionary defining the same name, and -// closing it needs the parsers to keep the workspace file apart from the rest. +// The workspace `.mat` (`WSDataSource: 'MAT-File'`) is the one file that is in two places. +// Both parsers list it in `externalDataSources` with the other externals, which is how a +// host knows to load it, and name it again as `workspaceDataSource`, because it IS the +// model workspace and MATLAB resolves a name in it ahead of the dictionaries. This used to +// rank it last, with the externals, since nothing else told it apart: a name such a model's +// linked dictionary defined too was credited to the dictionary, the one definition the block +// does not read. It stays in `matRefs` as well, where a second look in it finds nothing new. import { blockKey, blockLabel, joinBlockPath } from '../blockIdentity.js'; import { identifiersIn } from '../expressions.js'; import { maskDefining } from '../maskScope.js'; @@ -56,6 +58,11 @@ import { scanMat } from '../parser/MatScan.js'; // the rest of the folder. function modelSummary(parsed, srcId, filename) { const externals = parsed.externalDataSources ?? []; + // A typeof test rather than a `??`, for the same reason: summarizeParsedModel is handed a + // host's parse, which may predate the field. Only a `.mat` is a file this looks in, as for + // matRefs. + const workspaceMat = parsed.workspaceDataSource; + const workspaceMatRef = typeof workspaceMat === 'string' && isMatFile(workspaceMat) ? refBasename(workspaceMat) : null; return { srcId, // The bare model name, off the BASENAME: a caller hands over whatever path it has, and @@ -74,6 +81,7 @@ function modelSummary(parsed, srcId, filename) { ...externals.filter(isSlddFile).map(refBasename), ], matRefs: externals.filter(isMatFile).map(refBasename), + ...(workspaceMatRef !== null ? { workspaceMatRef } : {}), masks: parsed.masks ?? [], blockParams: (parsed.blockParamUsages ?? []).map((u) => ({ blockName: u.blockName, @@ -249,8 +257,10 @@ export function summarizeMatScan(scan, srcId, filename) { * if it does not. * * MATLAB's order, and the FIRST hit wins: the mask workspaces of the masked subsystems - * this block is inside (innermost out), then the model's own workspace, then the linked - * dictionary and any dictionary it references transitively, then linked MAT-files. Each + * this block is inside (innermost out), then the model's own workspace, then the MAT-file + * that workspace is kept in (`workspaceMatRef`, whose hit is kind `'mat'` since the + * definition is in that file), then the linked dictionary and any dictionary it + * references transitively, then the other linked MAT-files. Each * scope SHADOWS the ones after it — the block reads one value, so only one definition is * used, and crediting both would put a usage on a definition whose value never reaches * the block. @@ -274,6 +284,14 @@ export function resolveName(model, name, slddByName, matByName, systemPath = '') if (model.workspaceNames.has(name)) { return { kind: 'workspace', srcId: model.srcId }; } + // The model workspace kept in a `.mat`. It is in matRefs too, so the MAT pass below may + // look in it again; for a name it does not define that finds nothing either. + if (model.workspaceMatRef) { + const workspaceMat = matByName.get(model.workspaceMatRef); + if (workspaceMat?.names.has(name)) { + return { kind: 'mat', srcId: workspaceMat.srcId }; + } + } const seen = new Set(); const queue = [...model.slddRefs]; while (queue.length > 0) { diff --git a/dist/datamodel/usage/UsageIndex.js.map b/dist/datamodel/usage/UsageIndex.js.map index 044c49f8..f9180b0d 100644 --- a/dist/datamodel/usage/UsageIndex.js.map +++ b/dist/datamodel/usage/UsageIndex.js.map @@ -1 +1 @@ -{"version":3,"file":"UsageIndex.js","sourceRoot":"","sources":["../../../src/datamodel/usage/UsageIndex.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"UsageIndex.js","sourceRoot":"","sources":["../../../src/datamodel/usage/UsageIndex.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/core/DataModel.ts b/src/core/DataModel.ts index 02ba7188..a8ffd0ea 100644 --- a/src/core/DataModel.ts +++ b/src/core/DataModel.ts @@ -102,6 +102,19 @@ export function createSession(opts: CreateSessionOptions = {}) { const dataSources: Map = new Map(); const nodeIndex: Map = new Map(); +// Ids that a second node was indexed under while another node already held them, since +// the index was last rebuilt whole. A node id is its PATH (BaseNode.id), so two entries +// with one name in one section are one id, and so is every node inside them; the index +// keeps the last one, and an operation addressed by that id would act on whichever that +// was. Only a malformed file holds such a pair (F1-50; MATLAB writes none, and a rename +// here refuses to make one), and D13 keeps both as read, so no id changes. Instead every +// id-addressed operation resolves through resolveId, which refuses an id that names more +// than one node. +// +// A filter, not the answer: the live check (hasTwin) decides, so an entry here that has +// since stopped being shared (one twin renamed) costs one check and refuses nothing. +// Empty for every well-formed file, which keeps resolveId a single Map lookup. +const sharedIds: Set = new Set(); let contextNode: INode | IAllNode | null = null; let entryNodes: INode[] = []; let previewNode: INode | null = null; @@ -161,16 +174,170 @@ function registerSource( deindexSource(previous); } dataSources.set(srcId, sourceNode); - indexSource(sourceNode); + // Two nodes of this tree under one id is a file holding two entries (or two fields, + // two elements) with one name, and it is said here, at open, because from now on the + // session refuses to edit or delete either of them by id (resolveId). Looked for only + // when indexing met an id already held, so a clean file pays nothing for it. + if (indexSource(sourceNode)) { + const twins = twinWarnings(sourceNode); + if (twins.length > 0) { + // Appended to whatever the reader reported, and only when there is something: a + // clean file keeps no `warnings` field at all (see above). A new array, so the + // caller's own `warnings` argument is not written into. + const holder = sourceNode as unknown as { warnings?: ParseWarning[] }; + holder.warnings = (holder.warnings ?? []).concat(twins); + } + } publish('datamodel/source-added', { srcId, slddNode: sourceNode }); return sourceNode; } -function indexSource(source: ISourceNode): void { +// Index one node, noting its id in sharedIds when a different node already holds it. +// Every write into nodeIndex goes through here, so no path can make two nodes share an +// id without the filter hearing of it. Returns whether it did. +function indexNode(node: INode): boolean { + const id = node.id; + const held = nodeIndex.get(id); + nodeIndex.set(id, node); + if (held !== undefined && held !== node) { + sharedIds.add(id); + return true; + } + return false; +} + +// Whether any node of `source` went in under an id another node already held. +function indexSource(source: ISourceNode): boolean { const flat = source.flatten(); + let met = false; for (let i = 0; i < flat.length; i++) { - nodeIndex.set(flat[i].id, flat[i]); + if (indexNode(flat[i])) { + met = true; + } + } + return met; +} + +// Whether `node`, or any node above it, has a sibling with the same id: what makes the +// id `node` answers to name more than one node. A node inside a shared entry counts, since +// `S/a` is a field of each `S`. Ids rather than names, because an id is not always the +// name (ModelBlockNode keys a block on its SID, ModelReferenceNode on its block path), +// and two same-named nodes with ids of their own are not shared. A source root has no +// parent, so two open files are never twins here. +function hasTwin(node: INode): boolean { + for (let n: INode = node; n.parent; n = n.parent) { + const id = n.id; + const siblings = n.parent.children; + for (let i = 0; i < siblings.length; i++) { + if (siblings[i] !== n && siblings[i].id === id) { + return true; + } + } + } + return false; +} + +// Whether the id `node` answers to is shared, so an operation addressed by it must be +// refused. sharedIds first: it is empty for a well-formed file, so this is free there, +// and it holds the id of every shared node, and so the id of a shared ancestor of any +// node inside one (an id is its parent's id, '/', and a key). +function idIsShared(node: INode): boolean { + if (sharedIds.size === 0) { + return false; + } + const id = node.id; + for (const shared of sharedIds) { + if (id === shared || id.startsWith(shared + '/')) { + return hasTwin(node); + } + } + return false; +} + +// The node an id-addressed operation acts on: the indexed node, or null when there is +// none or when the id names more than one (idIsShared). Null for both, because a caller +// can do nothing right with either: the index holds the LAST twin indexed, which is not +// the row a host painted and is not necessarily the one its user meant. +function resolveId(nodeId: string): INode | null { + const node = nodeIndex.get(nodeId); + if (!node || idIsShared(node)) { + return null; } + return node; +} + +// After `ids` have left nodeIndex, put back any node still in an open tree that answers +// to one of them, other than the nodes in `leaving`. Deleting an id deletes it for every +// node that shared it, so a host that renames or removes one twin would otherwise leave +// the other unfindable until the next whole rebuild; with this, the twin left behind is +// the one node under that id, and resolveId hands it out again. Walks the trees only when +// one of the ids was shared, which a well-formed file never has. +function reindexLeftBehind(ids: string[], leaving: Set): void { + const wanted = new Set(); + for (let i = 0; i < ids.length; i++) { + if (sharedIds.has(ids[i]) && !nodeIndex.has(ids[i])) { + wanted.add(ids[i]); + } + } + if (wanted.size === 0) { + return; + } + dataSources.forEach((source) => { + const flat = source.flatten(); + for (let i = 0; i < flat.length; i++) { + if (!leaving.has(flat[i]) && wanted.has(flat[i].id)) { + indexNode(flat[i]); + } + } + }); +} + +// One warning per group of siblings that share an id, at the shallowest level they do: +// everything inside a shared entry shares an id too, and the one warning already says +// that none of it can be edited or deleted. Walks the tree again, which registerSource +// asks of it only when indexing found an id held twice. +function twinWarnings(source: ISourceNode): ParseWarning[] { + const warnings: ParseWarning[] = []; + const visit = (parent: INode): void => { + const byId = new Map(); + for (let i = 0; i < parent.children.length; i++) { + const child = parent.children[i]; + const id = child.id; + const group = byId.get(id); + if (group) { + group.push(child); + } else { + byId.set(id, [child]); + } + } + for (const group of byId.values()) { + if (group.length > 1) { + warnings.push(twinWarning(parent, group)); + } else { + visit(group[0]); + } + } + }; + visit(source as unknown as INode); + return warnings; +} + +// What a group of twins reads as: where they are, the name they share, and what that +// costs the user, without the word "id", which a user never sees. `part` is the entry's +// name, the way a dictionary names one, or the MATLAB path of a field or element. +function twinWarning(parent: INode, group: INode[]): ParseWarning { + const first = group[0]; + const pathOf = (node: INode): string => (node as unknown as { matlabPath?: string }).matlabPath || node.name; + const where = parent.isContainer ? parent.displayName : pathOf(parent); + const noun = first.isEntry ? 'entries' : 'items'; + const name = first.displayName || first.name; + const message = + group.length === 2 + ? `Two ${noun} in ${where} are named '${name}'. ` + + 'Neither can be edited or deleted until the file gives one of them another name.' + : `${group.length} ${noun} in ${where} are named '${name}'. ` + + 'None of them can be edited or deleted until the file gives each its own name.'; + return { code: 'duplicate-id', message, part: first.isEntry ? first.name : pathOf(first) }; } function deindexSource(source: ISourceNode): void { @@ -230,13 +397,17 @@ function mutateSubtree(root: INode, mutate: () => T): T { } const after = root.flatten(); for (let i = 0; i < after.length; i++) { - nodeIndex.set(after[i].id, after[i]); + indexNode(after[i]); } // Whatever `mutate` removed is a node the session must stop pointing at, for the // reason deleteOneNode releases it there: `before` minus `after`, by identity, so a // rename (same nodes, new ids) releases nothing. const survivors = new Set(after); - releaseSubtreeSelection(before.filter((n) => !survivors.has(n))); + const removed = before.filter((n) => !survivors.has(n)); + // An id this subtree shared with a node outside it (a twin, renamed here) has just + // been deleted for both; the twin left behind goes back in. + reindexLeftBehind(staleIds, new Set(removed)); + releaseSubtreeSelection(removed); } } @@ -257,7 +428,7 @@ function mutateSubtree(root: INode, mutate: () => T): T { function indexSubtree(root: INode): void { const flat = root.flatten(); for (let i = 0; i < flat.length; i++) { - nodeIndex.set(flat[i].id, flat[i]); + indexNode(flat[i]); } } @@ -286,6 +457,9 @@ function unindexSubtree(root: INode, detach?: () => void): void { for (let i = 0; i < ids.length; i++) { nodeIndex.delete(ids[i]); } + // A twin of a leaving node lost its id with it, and is still in the tree. By + // identity, not by attachment, since with no callback the subtree is still attached. + reindexLeftBehind(ids, new Set(flat)); // Every node here is leaving the tree, so the whole subtree is what the selection // must stop pointing at — see releaseSubtreeSelection, and mutateSubtree's // before-minus-after form of the same rule. @@ -558,6 +732,7 @@ function removeDataSource(srcId: string): void { function removeAll(): void { dataSources.clear(); nodeIndex.clear(); + sharedIds.clear(); publish('datamodel/cleared'); releaseSelection(null); } @@ -582,8 +757,12 @@ function isBatching(): boolean { return batchDepth > 0; } +// Null for an id no indexed node answers to, and for one that more than one node answers +// to: two entries with one name in one section, or anything inside them (resolveId). A +// host resolves a row it painted through this before it edits or deletes it, so this is +// where an id naming two nodes has to stop, not only in the session's own mutations. function findNodeById(nodeId: string): INode | null { - return nodeIndex.get(nodeId) || null; + return resolveId(nodeId); } /** @@ -936,20 +1115,27 @@ function dictionaryRefNamesOf(srcId: string): string[] { // same way in both places, and the order below is that rule: // // 1. the model's OWN model workspace, which is private to it. +// 1b. the `.mat` that workspace is kept in, when the model keeps it in one +// (`WSDataSource: 'MAT-File'`). That file IS the model workspace, so it comes here and +// not with the other `.mat` files: a name it defines and the linked dictionary defines +// as well is the file's. It used to come last, because it is also one of the model's +// externals (below) and nothing else told it apart. It is read off the model's +// `workspaceDataSource`, which the parsers set for exactly this. // 2. the dictionaries it links, and every dictionary those reference, transitively. // Chased breadth-first, so the nearer file wins, with a seen-set keyed by // refBasename because a dictionary hierarchy is a graph a user can make cyclic. // resolveDictionaryReferences is deliberately one level — a host follows a link at a // time — but a NAME resolves down the whole chain, which is what MATLAB does and // what made a sub-dictionary's entries show no usages here at all. -// 3. its external `.mat` files. +// 3. its other external `.mat` files. // -// Read off the `dataSources` section rather than the `dataDictionary` field, because that -// section is where ModelNode.fromParsed puts both kinds, in that same order — the linked -// dictionary first, then the externals — so one read covers dictionary entries and MAT -// variables without naming either. Each recorded name goes through openSourceNamed, the -// same matcher a bare link target goes through, so "the dictionary this model links" and -// "the dictionary that link points at" can never be answered differently. +// Steps 2 and 3 are read off the `dataSources` section rather than the `dataDictionary` +// field, because that section is where ModelNode.fromParsed puts both kinds, in that same +// order — the linked dictionary first, then the externals — so one read covers dictionary +// entries and MAT variables without naming either. Each recorded name goes through +// openSourceNamed, the same matcher a bare link target goes through, so "the dictionary +// this model links" and "the dictionary that link points at" can never be answered +// differently. Step 1b's name goes through it too. // // A file NOT in this list is invisible: two unrelated projects open in one session, or a // model linked to a different dictionary that happens to define the same name, must not @@ -961,6 +1147,13 @@ function dictionaryRefNamesOf(srcId: string): string[] { function resolutionOrder(model: ISourceNode, modelSrcId: string): string[] { // Index 0 is the model itself, which is how its own workspace comes first. const order: string[] = [modelSrcId]; + // Step 1b. Duck-typed, as the section below is: a host-supplied tree, or a parse from + // before the field, has no `workspaceDataSource`, and its model resolves as it always did. + const recorded = (model as unknown as { workspaceDataSource?: unknown }).workspaceDataSource; + const workspaceMat = typeof recorded === 'string' && isMatFile(recorded) ? openSourceNamed(recorded) : null; + if (workspaceMat !== null) { + order.push(workspaceMat.srcId); + } // A host-supplied tree (addParsedSource) need not have sections at all. const declared = typeof model.getSection === 'function' ? model.getSection('dataSources') : null; const children = declared && Array.isArray(declared.children) ? declared.children : []; @@ -996,7 +1189,8 @@ function resolutionOrder(model: ISourceNode, modelSrcId: string): string[] { } for (const ref of mats) { const open = openSourceNamed(ref); - if (open !== null) { + // The workspace `.mat` is in the section too, as an external; it already has its place. + if (open !== null && open.srcId !== workspaceMat?.srcId) { order.push(open.srcId); } } @@ -1116,6 +1310,11 @@ function definitionRank( * that crosses a structured-clone boundary — see NodeUsage. */ function findUsages(nodeId: string): NodeUsage[] { + // The index directly, not resolveId: this reads, and what it reads is the same for every + // node an id names (a usage is found by the definition's NAME, in its source and its + // section, and twins share all three), so it cannot act on the wrong one. Refusing here + // would also make an out-of-batch row's UsedBy cell differ from the same row's cell in + // a rowsOf() batch, which credits both twins; see usagesForRow. const definition = nodeIndex.get(nodeId); // The same empty answer findNodeById gives for an id it does not hold: enumerating // rows and asking about each should not need a guard per row. @@ -1412,6 +1611,9 @@ function resolveDictionaryReferences(srcId: string): DictionaryReference[] { function reindexAll(): void { nodeIndex.clear(); + // Rebuilt whole, so the filter is too: an id two nodes shared before the edit that + // triggered this and no longer do drops out of it here. + sharedIds.clear(); dataSources.forEach((src) => indexSource(src)); } @@ -1470,6 +1672,12 @@ function editProperty( if (!node.setProperty) { return false; } + // The edit is addressed by `nodeId`, and an id two nodes answer to does not say which: + // the selection may hold either twin, or the one findNodeById used to hand out. Refused + // as findNodeById refuses it (resolveId). + if (idIsShared(node)) { + return false; + } // Capture the pre-edit value so undo can restore it even when the caller omits // `oldValue`. The parameter is optional, and README's own example omits it, so @@ -1573,7 +1781,7 @@ function addEntry(sectionKey: string, className: string, entryName?: string): IN UndoManager.pushExecuted(srcId, { execute() { result.redo(); - nodeIndex.set(node.id, node); + indexNode(node); setActiveEntry(node); publish('node/added', { node, sectionKey: sectionRef.name }); }, @@ -1585,7 +1793,7 @@ function addEntry(sectionKey: string, className: string, entryName?: string): IN }, }); - nodeIndex.set(node.id, node); + indexNode(node); publish('node/added', { node, sectionKey: section.name }); setActiveEntry(node); return node; @@ -1637,7 +1845,7 @@ function addChildOfNode(node: INode, scope: ISourceNode | null, policy: Selectio UndoManager.pushExecuted(scope.name, { execute() { result.redo(); - nodeIndex.set(child.id, child); + indexNode(child); if (policy === 'follow') { setActiveEntry(child); } @@ -1655,7 +1863,7 @@ function addChildOfNode(node: INode, scope: ISourceNode | null, policy: Selectio }); } - nodeIndex.set(child.id, child); + indexNode(child); publish('node/children-changed', { parent: node }); return child; } @@ -1687,7 +1895,7 @@ function deleteOneNode(node: INode, scope: ISourceNode, policy: SelectionPolicy) }, undo() { result.undo(); - nodeIndex.set(node.id, node); + indexNode(node); if (policy === 'follow') { setActiveEntry(node); } @@ -1725,7 +1933,7 @@ function deleteOneNode(node: INode, scope: ISourceNode, policy: SelectionPolicy) }, undo() { result.undo(); - nodeIndex.set(node.id, node); + indexNode(node); if (policy === 'follow') { setActiveEntry(node); } @@ -1781,7 +1989,7 @@ function deleteEntryBatch(nodes: INode[], scope: ISourceNode, policy: SelectionP undo() { for (let i = undoInfo.length - 1; i >= 0; i--) { undoInfo[i].result.undo(); - nodeIndex.set(undoInfo[i].node.id, undoInfo[i].node); + indexNode(undoInfo[i].node); } if (policy === 'follow') { setActiveEntry(undoInfo.map((info) => info.node)); @@ -1812,7 +2020,7 @@ function addChild(): INode | null { // The undo scope is resolved from the TARGET, because getActiveSlddNode() derives // from contextNode and a headless caller has none — which is the whole gap. function addChildTo(nodeId: string): INode | null { - const node = nodeIndex.get(nodeId); + const node = resolveId(nodeId); if (!node) { return null; } @@ -1842,7 +2050,7 @@ function deleteNode(): boolean { // whatever file happened to be selected — so undo in the file that actually changed // would do nothing, and undo in the untouched one would replay a change it never made. function deleteNodeById(nodeId: string): boolean { - const node = nodeIndex.get(nodeId); + const node = resolveId(nodeId); if (!node) { return false; } @@ -1861,9 +2069,16 @@ function deleteNodesById(nodeIds: string[]): boolean { const nodes: INode[] = []; for (const id of nodeIds) { const node = nodeIndex.get(id); - if (node) { - nodes.push(node); + if (!node) { + continue; + } + // An id naming two entries refuses the whole batch, as a batch spanning two files + // does below: it names an entry that is there and that this cannot tell from its + // twin, so deleting the rest would report a success for a request half carried out. + if (idIsShared(node)) { + return false; } + nodes.push(node); } if (nodes.length === 0) { return false; diff --git a/src/datamodel/node/BaseNode.ts b/src/datamodel/node/BaseNode.ts index 144001ce..12f01e19 100644 --- a/src/datamodel/node/BaseNode.ts +++ b/src/datamodel/node/BaseNode.ts @@ -497,10 +497,12 @@ export default class BaseNode { // has to be, and it decides which by CHECKING. // // An element's `name` already is its 1-based slot: every builder stamps String(i+1), - // and _buildArrayChildren is now the only one that does. So the slot can be read - // instead of searched. But `name` is data — nothing reindexes it when children are - // reordered — so a derived index is a guess until the slot it names is confirmed to - // hold THIS node. Confirmed, it is the answer; unconfirmed, the scan still is. + // MatlabVariableNode's, StructNode's and ObjectNode's alike, and a sparse array names + // its rows by their ordinals among its nonzeros (test/elementNameBase.test.ts holds + // all of them to it). So the slot can be read instead of searched. But `name` is + // data — nothing reindexes it when children are reordered — so a derived index is a + // guess until the slot it names is confirmed to hold THIS node. Confirmed, it is the + // answer; unconfirmed, the scan still is. // // This replaced a bare `children.indexOf(this)`, which is O(n) per element and so // O(n^2) per array. Measured on the 1000x1000 double that prompted this: 1.5 us at diff --git a/src/datamodel/node/container/ModelNode.ts b/src/datamodel/node/container/ModelNode.ts index 277c7d63..bb4a773d 100644 --- a/src/datamodel/node/container/ModelNode.ts +++ b/src/datamodel/node/container/ModelNode.ts @@ -37,6 +37,10 @@ export interface ParsedSlx { dataDictionary: string | null; modelReferences: { blockPath: string; modelName: string }[]; externalDataSources: string[]; + // Optional here and required on SlxParser's, for the reason `warnings` gives below: a + // host parse from before the field existed has none, and its model then resolves as it + // always did, with this file among the externals. + workspaceDataSource?: string | null; configSets: ParsedConfigSet[]; workspace: MatVariable[]; blockParamUsages?: BlockParamUsage[]; @@ -56,6 +60,14 @@ export default class ModelNode extends ContainerNode { lastModified: string; uuid: string; dataDictionary: string | null; + /** + * The MAT file this model's workspace is kept in, as the model recorded it, or null. + * It is also a child of the dataSources section, with the externals. It is kept here + * as well because the session's usage engine resolves a name in it right after the + * model's own workspace and ahead of the dictionaries, and in that section it is one + * `.mat` among the others. See SlxParser's ParsedSlx.workspaceDataSource. + */ + workspaceDataSource: string | null; rawContents: Record | null; dirty: boolean; blockParamUsages: BlockParamUsage[]; @@ -75,6 +87,7 @@ export default class ModelNode extends ContainerNode { this.lastModified = ''; this.uuid = ''; this.dataDictionary = null; + this.workspaceDataSource = null; this.rawContents = null; this.dirty = false; this.blockParamUsages = []; @@ -208,6 +221,12 @@ export default class ModelNode extends ContainerNode { node.lastModified = parsed.lastModified; node.uuid = parsed.uuid; node.dataDictionary = parsed.dataDictionary; + // A string or nothing: a host parse may predate the field, and one that crossed a + // worker boundary is plain data with no type behind it. + node.workspaceDataSource = + typeof parsed.workspaceDataSource === 'string' && parsed.workspaceDataSource !== '' + ? parsed.workspaceDataSource + : null; node.rawContents = parsed.rawContents || null; node._zipEntries = parsed.zipEntries || null; node._workspaceVars = parsed.workspace; diff --git a/src/datamodel/node/data/ObjectNode.md b/src/datamodel/node/data/ObjectNode.md index c1d7948c..df8af81e 100644 --- a/src/datamodel/node/data/ObjectNode.md +++ b/src/datamodel/node/data/ObjectNode.md @@ -36,8 +36,9 @@ icon (architectural data support). ## Element rows of an object array A multi-element value object expands in two levels — N element rows `name(i)`, each -expanding into its own rows (see `test/objectArrayExpansion.test.ts`). Those element -rows do NOT inherit a data type from the container, which is the opposite of the +expanding into its own rows (see `test/objectArrayExpansion.test.ts`). Each element is +named by its 1-based slot, `1` to `N`, as a struct array's elements are +(`test/elementNameBase.test.ts`). Those element rows do NOT inherit a data type from the container, which is the opposite of the numeric rule one level over (an int32 array's elements are int32s — see `MatlabVariable.md`). An object's class is Class, not a data type, so: diff --git a/src/datamodel/node/data/ObjectNode.ts b/src/datamodel/node/data/ObjectNode.ts index 41fd6573..2277a1f2 100644 --- a/src/datamodel/node/data/ObjectNode.ts +++ b/src/datamodel/node/data/ObjectNode.ts @@ -708,7 +708,8 @@ export default class ObjectNode extends DataNode { if (isEnumBag(rawVal)) { elemRaw[ENUM_KEY] = rawVal[ENUM_KEY]; } - const elemNode = NodeRegistry.parseValue(elemRaw, String(ei), node) as DataNode; + // Named by its 1-based slot, as every element is (BaseNode._slotAmongSiblings). + const elemNode = NodeRegistry.parseValue(elemRaw, String(ei + 1), node) as DataNode; // The MCOS decoder and both SLDD paths deliver elements in MATLAB's // own COLUMN-major order, so element ei is MATLAB's linear index // ei+1. Reading it row-major named 4 of the 6 elements of a 2x3 @@ -748,7 +749,8 @@ export default class ObjectNode extends DataNode { _elements: [{ _enum_value: value }], _mw_element_type: (rawVal._mw_element_type as string) || 'MATLABArray', }; - const elemNode = ObjectNode.parse(elemRaw, String(ei), node); + // Named by its 1-based slot, as the binary dictionary's rows of the same value are. + const elemNode = ObjectNode.parse(elemRaw, String(ei + 1), node); elemNode._subscript = { index: ei, dims, order: 'column-major', bracket: '()' }; node.addChild(elemNode); }); diff --git a/src/datamodel/node/data/StructNode.md b/src/datamodel/node/data/StructNode.md index 51d16336..71fc9e6f 100644 --- a/src/datamodel/node/data/StructNode.md +++ b/src/datamodel/node/data/StructNode.md @@ -24,7 +24,9 @@ format it is represented as: StructNode handles both scalar structs (1x1) and struct arrays (e.g. 1x2, 2x3). Struct arrays have multiple `_elements`, each sharing the same `_fields` list. Each -element is parsed as a child `StructNode` with `_isElementNode = true`. +element is parsed as a child `StructNode` with `_isElementNode = true`, named by its +1-based slot (`1`, `2`, …, so its id is the array's id and `/1`) as every reader names an +element, and labelled by its MATLAB subscript (`s(2,1)`). ### Columns surfaced | Column | Source | Editable | diff --git a/src/datamodel/node/data/StructNode.ts b/src/datamodel/node/data/StructNode.ts index 477a43e0..23d296f9 100644 --- a/src/datamodel/node/data/StructNode.ts +++ b/src/datamodel/node/data/StructNode.ts @@ -385,7 +385,10 @@ export default class StructNode extends DataNode { _fields: fields, _mw_element_type: rawVal._mw_element_type }; - const elemNode = new StructNode(String(ei), node, elemSerial); + // Named by its 1-based slot, as every element of every flavour is + // (BaseNode._slotAmongSiblings), so its id is the one a text dictionary's + // cdata and a .mat file give the same element. + const elemNode = new StructNode(String(ei + 1), node, elemSerial); elemNode._isElementNode = true; // Same answer as the array root's, so the two cannot come to disagree about // it. An element serializes through serializeElement and so never emits diff --git a/src/datamodel/parser/MdlParser.ts b/src/datamodel/parser/MdlParser.ts index ed5a020d..ae5cf6a9 100644 --- a/src/datamodel/parser/MdlParser.ts +++ b/src/datamodel/parser/MdlParser.ts @@ -664,11 +664,14 @@ function parseClassicMdl(bytes: Uint8Array, filename: string): ParsedMdl { const modelName = prop(model, 'Name') || ''; // The model workspace, for the case where it lives in a MAT file instead of in - // the model. Same relationship the `.slx` reads out of blockDiagram.json. + // the model. Same relationship the `.slx` reads out of blockDiagram.json, and + // returned the same two ways: as external data, which a host loads, and on its own + // as `workspaceDataSource`, which resolves ahead of the dictionary. const externalDataSources: string[] = []; const wsFile = prop(model, 'WSSourceFileName'); - if (prop(model, 'WSDataSource') === 'MAT-File' && wsFile) { - externalDataSources.push(wsFile); + const workspaceDataSource = prop(model, 'WSDataSource') === 'MAT-File' && wsFile ? wsFile : null; + if (workspaceDataSource) { + externalDataSources.push(workspaceDataSource); } return { @@ -689,6 +692,7 @@ function parseClassicMdl(bytes: Uint8Array, filename: string): ParsedMdl { dataDictionary: prop(model, 'DataDictionary') || null, modelReferences: classicModelReferences(model, modelName), externalDataSources, + workspaceDataSource, configSets: classicConfigSets(model), workspace: classicWorkspace(root, model, warnings), ...classicBlockParamUsages(model), diff --git a/src/datamodel/parser/ParseWarning.ts b/src/datamodel/parser/ParseWarning.ts index ad87d80c..ebd5e1fa 100644 --- a/src/datamodel/parser/ParseWarning.ts +++ b/src/datamodel/parser/ParseWarning.ts @@ -20,6 +20,12 @@ // a defect in the file or in the read, and warning about them would put a count on // every legacy file a user opens — which teaches a host, and its user, to ignore // the count. Warn when the bytes claim something is there and it could not be read. +// +// ONE KIND IS NOT A LOSS. `duplicate-id` is a file that read in full but holds two +// entries (or two fields, two elements) with one name in one place, which MATLAB never +// writes. Both are kept as read; the session cannot tell them apart by id, so it refuses +// to edit or delete either by id, and this is how the user hears why. A host that counts +// losses counts the other codes. /** * Stable, machine-readable warning kinds. Hosts group, filter and localize on @@ -27,7 +33,8 @@ * * Deliberately about CONTAINERS AND PARTS rather than about any one format, so a * `.slx` part, a `.prj` store document and a `.mat` variable all report through - * the same three shapes as their readers gain the channel. + * the same three shapes as their readers gain the channel. The fourth, `duplicate-id`, + * is about what the session can do with a read that lost nothing; see above. */ export type ParseWarningCode = /** One named piece of the source could not be read; the rest of it was. */ @@ -35,9 +42,16 @@ export type ParseWarningCode = /** The source opened but held nothing this reader recognizes; the result is empty. */ | 'source-empty' /** Reading the source failed outright and was recovered from; the result is empty. */ - | 'source-unreadable'; + | 'source-unreadable' + /** + * Nothing is missing: two or more siblings share a name, and so one node id, so + * none of them can be edited or deleted by id until the file names them apart. + * `part` is the entry's name, or the MATLAB path of a field or element. Added by the + * session when a source is registered, not by a reader. + */ + | 'duplicate-id'; -/** One thing that could not be read, in a source that otherwise opened. */ +/** One thing that could not be read (or, for `duplicate-id`, addressed), in a source that otherwise opened. */ export interface ParseWarning { code: ParseWarningCode; /** One line, host-renderable, naming what was lost rather than where it broke. */ diff --git a/src/datamodel/parser/SlxParser.ts b/src/datamodel/parser/SlxParser.ts index 1d147715..a6b8591c 100644 --- a/src/datamodel/parser/SlxParser.ts +++ b/src/datamodel/parser/SlxParser.ts @@ -77,7 +77,20 @@ export interface ParsedSlx { uuid: string; dataDictionary: string | null; modelReferences: { blockPath: string; modelName: string }[]; + // Every data file the model names: the external sources, then the MAT file its + // workspace is kept in (listed once, if both name it). A host loads these. externalDataSources: string[]; + /** + * The MAT file this model's workspace is kept in (`WSDataSource: 'MAT-File'`), as + * the model recorded it, or null when the workspace is not kept in a MAT file. + * + * The same file is in `externalDataSources` too, where a host already finds it. It + * is named again here because a name resolves differently in it: it IS the model + * workspace, so MATLAB looks in it right after the model's own workspace and ahead of + * every dictionary, where the other externals come after them. Both usage engines + * read this for that (UsageIndex.resolveName, DataModel's resolutionOrder). + */ + workspaceDataSource: string | null; configSets: ParsedConfigSet[]; workspace: MatVariable[] & { _trailingElements: Uint8Array[] }; blockParamUsages: BlockParamUsage[]; @@ -211,6 +224,68 @@ export function configSetIdentity(data: unknown): { objectClass: string; sourceN return { objectClass: obj['@_ClassName'], sourceName: props.SourceName ?? props.WSVarName ?? '' }; } +// The entries a JSON index part lists (`ConfigSetInfo` in configSetInfo.json, +// `ModelReferences` in graphicalInterface.json) as a list, or null when the value cannot +// be read as one. MATLAB always writes an array: all 68 configSetInfo.json parts in this +// repo and the corpus, and every graphicalInterface.json that has ModelReferences at all. +// So any other shape comes from a hand-edited or third-party package. Most used to throw +// out of the read and take the whole model with it (C-255); a falsy one read as nothing. +// A lone object is read as a list of one, the file's own idiom for single-vs-array +// (`findAll`, `systemRefsIn`). +// What the caller does with a null, and with an entry it cannot use, is the caller's call. +function indexEntries(value: unknown): unknown[] | null { + if (Array.isArray(value)) return value; + if (value !== null && typeof value === 'object') return [value]; + return null; +} + +/** One entry an index lists, when it is an object (not an array) and so can name anything. */ +function isEntryObject(entry: unknown): entry is Record { + return entry !== null && typeof entry === 'object' && !Array.isArray(entry); +} + +/** What a value that is not a list or an object is, for a warning's message. */ +function shapeOf(value: unknown): string { + return value === undefined ? 'absent' : value === null ? 'null' : `a ${typeof value}`; +} + +// The configuration sets that configSetInfo.json lists, as `legacyConfigSetInfo` gives +// the XML index's. Only for an index part that parsed: one that did not has already been +// reported once, by readPart. Anything but a list or an object is one warning and no sets: +// the part is there and does not say which sets the model has, and every model has one. +// An entry that does not name both its part and its set is one warning and is skipped; +// the sets listed around it are still read. +function jsonConfigSetInfo( + value: unknown, + warnings: ParseWarning[], +): { PartName: string; ConfigSetName: string; Active: boolean }[] { + const part = 'simulink/configSetInfo.json'; + const list = indexEntries(value); + if (list === null) { + warnings.push({ + code: 'part-unreadable', + message: `The model part "${part}" does not list its configuration sets ` + + `(its ConfigSetInfo is ${shapeOf(value)}), so no configuration sets were read.`, + part, + }); + return []; + } + const out: { PartName: string; ConfigSetName: string; Active: boolean }[] = []; + list.forEach((entry, i) => { + if (!isEntryObject(entry) || typeof entry.PartName !== 'string' || typeof entry.ConfigSetName !== 'string') { + warnings.push({ + code: 'part-unreadable', + message: `Entry ${i + 1} of the configuration sets listed in "${part}" does not name both its part ` + + 'and its set, so that set was not read.', + part, + }); + return; + } + out.push({ PartName: entry.PartName, ConfigSetName: entry.ConfigSetName, Active: !!entry.Active }); + }); + return out; +} + function extractConfigSets( entries: Record, configSetInfo: { PartName: string; ConfigSetName: string; Active: boolean }[], @@ -851,8 +926,11 @@ function extractBlockParamUsages( return { usages, masks }; } +const REFS_LOST = "this model's references to other models are missing"; + function extractModelReferences( graphicalInterface: Record | null, + warnings: ParseWarning[], ): { blockPath: string; modelName: string }[] { if (!graphicalInterface) { return []; @@ -865,12 +943,39 @@ function extractModelReferences( // unwrapped for above. const gi = (graphicalInterface.GraphicalInterface as Record) || graphicalInterface; const refs = gi.ModelReferences; - if (!refs) { + // Absent is a model that references no other model: 78 of the 124 graphicalInterface.json + // parts in this repo and the corpus have no ModelReferences. That is not a loss, so it + // stays silent. Any other value that is not a list or an object is one (C-255). + if (refs === undefined || refs === null) { + return []; + } + const part = 'simulink/graphicalInterface.json'; + const list = indexEntries(refs); + if (list === null) { + warnings.push({ + code: 'part-unreadable', + message: `The model part "${part}" does not list its model references ` + + `(its ModelReferences is ${shapeOf(refs)}), so ${REFS_LOST}.`, + part, + }); return []; } - return (refs as { BlockPath: string; ModelName: string }[]).map(function (ref) { - return { blockPath: ref.BlockPath, modelName: ref.ModelName }; + const out: { blockPath: string; modelName: string }[] = []; + list.forEach((ref, i) => { + // Without this check, a reference with no ModelName reached the references section, + // whose file-kind check threw on it, and the whole model failed to open. + if (!isEntryObject(ref) || typeof ref.BlockPath !== 'string' || typeof ref.ModelName !== 'string') { + warnings.push({ + code: 'part-unreadable', + message: `Entry ${i + 1} of the model references listed in "${part}" does not name both its block ` + + 'and the model it references, so that reference was not read.', + part, + }); + return; + } + out.push({ blockPath: ref.BlockPath, modelName: ref.ModelName }); }); + return out; } export function parseSlx(buffer: ArrayBuffer, filename: string): ParsedSlx { @@ -979,11 +1084,7 @@ export function parseModelParts(entries: Record, filename: s 'no configuration sets were read', warnings, ) as Record | null; - configSets = extractConfigSets( - entries, - (info?.ConfigSetInfo as { PartName: string; ConfigSetName: string; Active: boolean }[]) || [], - warnings, - ); + configSets = extractConfigSets(entries, info ? jsonConfigSetInfo(info.ConfigSetInfo, warnings) : [], warnings); } else if (entries['simulink/configSetInfo.xml']) { const info = readPart(entries, 'simulink/configSetInfo.xml', 'no configuration sets were read', warnings); configSets = extractConfigSets(entries, legacyConfigSetInfo(info), warnings); @@ -994,13 +1095,12 @@ export function parseModelParts(entries: Record, filename: s // Graphical interface (model references). JSON from R2024b, XML from R2014b, and // inline in the block diagram before that. let modelReferences: { blockPath: string; modelName: string }[] = []; - const REFS_LOST = "this model's references to other models are missing"; if (entries['simulink/graphicalInterface.json']) { const gi = readPart(entries, 'simulink/graphicalInterface.json', REFS_LOST, warnings) as Record< string, unknown > | null; - modelReferences = gi ? extractModelReferences(gi) : []; + modelReferences = gi ? extractModelReferences(gi, warnings) : []; } else if (entries['simulink/graphicalInterface.xml']) { modelReferences = legacyModelReferences( readPart(entries, 'simulink/graphicalInterface.xml', REFS_LOST, warnings), @@ -1022,7 +1122,10 @@ export function parseModelParts(entries: Record, filename: s if (eds) { externalDataSources = extractExternalDataSources(eds); } - // Model-workspace MAT source (from blockDiagram.json) is also external data. + // Model-workspace MAT source (from blockDiagram.json) is also external data, so a + // host that loads the externals loads it. It is returned on its own as well, as + // `workspaceDataSource`, because it resolves ahead of the dictionaries and the rest + // of this list does not. if (workspaceMatFile && !externalDataSources.includes(workspaceMatFile)) { externalDataSources.push(workspaceMatFile); } @@ -1118,6 +1221,7 @@ export function parseModelParts(entries: Record, filename: s dataDictionary, modelReferences, externalDataSources, + workspaceDataSource: workspaceMatFile, configSets, workspace, blockParamUsages, diff --git a/src/datamodel/usage/UsageIndex.ts b/src/datamodel/usage/UsageIndex.ts index 242e3506..91d63727 100644 --- a/src/datamodel/usage/UsageIndex.ts +++ b/src/datamodel/usage/UsageIndex.ts @@ -26,18 +26,20 @@ // whichever engine happened to answer, which is how the shadowed usage was found. // // The rule below is the one both express: the enclosing mask workspaces innermost-out, then -// the model workspace, then the dictionary chain, then the MATs, first hit wins. Two +// the model workspace, then the `.mat` the model workspace is kept in (if it is kept in +// one), then the dictionary chain, then the other MATs, first hit wins. Two // implementations remain because the INPUTS genuinely differ // (bytes on disk versus trees in a session, and neither can be had from the other), so the // agreement is pinned by test rather than by construction — see test/usageEngines.test.ts, // which asks both the same question about the same files. // -// ==> OPEN, and not the same question: a model whose WORKSPACE is sourced from a `.mat` -// (`WSDataSource: 'MAT-File'`) resolves that file last here, with the other externals, -// because both parsers merge it into `externalDataSources` and the distinction is gone by -// the time a summary is built. MATLAB would resolve it FIRST — it is the model workspace. -// It only shows when such a model also links a dictionary defining the same name, and -// closing it needs the parsers to keep the workspace file apart from the rest. +// The workspace `.mat` (`WSDataSource: 'MAT-File'`) is the one file that is in two places. +// Both parsers list it in `externalDataSources` with the other externals, which is how a +// host knows to load it, and name it again as `workspaceDataSource`, because it IS the +// model workspace and MATLAB resolves a name in it ahead of the dictionaries. This used to +// rank it last, with the externals, since nothing else told it apart: a name such a model's +// linked dictionary defined too was credited to the dictionary, the one definition the block +// does not read. It stays in `matRefs` as well, where a second look in it finds nothing new. import { blockKey, blockLabel, joinBlockPath } from '../blockIdentity.js'; import { identifiersIn } from '../expressions.js'; import { maskDefining } from '../maskScope.js'; @@ -87,6 +89,14 @@ export interface ModelSummary { slddRefs: string[]; /** refBasename'd names of linked MAT-files. */ matRefs: string[]; + /** + * refBasename'd name of the MAT-file the model workspace is kept in, which resolves + * right after `workspaceNames` and ahead of `slddRefs`. It is in `matRefs` too. + * + * Absent when there is no such file. Optional, rather than null, so that a summary a + * host built before this existed is still a ModelSummary, and resolves as it always did. + */ + workspaceMatRef?: string; /** * The model's mask workspaces — a scope INSIDE the model, ahead of everything above. * Unlike the three ref lists this needs no lookup elsewhere: a mask is defined in the @@ -196,6 +206,12 @@ export interface UsageIndex { // the rest of the folder. function modelSummary(parsed: ParsedSlx, srcId: string, filename: string): ModelSummary { const externals = parsed.externalDataSources ?? []; + // A typeof test rather than a `??`, for the same reason: summarizeParsedModel is handed a + // host's parse, which may predate the field. Only a `.mat` is a file this looks in, as for + // matRefs. + const workspaceMat = parsed.workspaceDataSource; + const workspaceMatRef = + typeof workspaceMat === 'string' && isMatFile(workspaceMat) ? refBasename(workspaceMat) : null; return { srcId, // The bare model name, off the BASENAME: a caller hands over whatever path it has, and @@ -214,6 +230,7 @@ function modelSummary(parsed: ParsedSlx, srcId: string, filename: string): Model ...externals.filter(isSlddFile).map(refBasename), ], matRefs: externals.filter(isMatFile).map(refBasename), + ...(workspaceMatRef !== null ? { workspaceMatRef } : {}), masks: parsed.masks ?? [], blockParams: (parsed.blockParamUsages ?? []).map((u) => ({ blockName: u.blockName, @@ -392,8 +409,10 @@ export function summarizeMatScan(scan: MatScanResult, srcId: string, filename: s * if it does not. * * MATLAB's order, and the FIRST hit wins: the mask workspaces of the masked subsystems - * this block is inside (innermost out), then the model's own workspace, then the linked - * dictionary and any dictionary it references transitively, then linked MAT-files. Each + * this block is inside (innermost out), then the model's own workspace, then the MAT-file + * that workspace is kept in (`workspaceMatRef`, whose hit is kind `'mat'` since the + * definition is in that file), then the linked dictionary and any dictionary it + * references transitively, then the other linked MAT-files. Each * scope SHADOWS the ones after it — the block reads one value, so only one definition is * used, and crediting both would put a usage on a definition whose value never reaches * the block. @@ -425,6 +444,15 @@ export function resolveName( return { kind: 'workspace', srcId: model.srcId }; } + // The model workspace kept in a `.mat`. It is in matRefs too, so the MAT pass below may + // look in it again; for a name it does not define that finds nothing either. + if (model.workspaceMatRef) { + const workspaceMat = matByName.get(model.workspaceMatRef); + if (workspaceMat?.names.has(name)) { + return { kind: 'mat', srcId: workspaceMat.srcId }; + } + } + const seen = new Set(); const queue = [...model.slddRefs]; while (queue.length > 0) { diff --git a/test/ambiguousId.test.ts b/test/ambiguousId.test.ts new file mode 100644 index 00000000..edefea91 --- /dev/null +++ b/test/ambiguousId.test.ts @@ -0,0 +1,224 @@ +// Copyright 2026 The MathWorks, Inc. +// Two entries with one name in one section share one node id (F1-50). +// +// A node id is its path (BaseNode.id), so two `K`s in Design Data are both +// `/design/K`, and the session index can hold only one node per id: the last one +// indexed. Every id-addressed operation used to act on whichever `K` that happened to be, +// so deleting the row the user picked could delete the other one. Only a malformed file +// reaches this (MATLAB writes no such dictionary, and a rename here refuses to make one), +// and D13 keeps both entries as read. The ruling (2026-10-16, group E, option (a)) is to +// change no id and instead refuse every id-addressed operation while the id names more +// than one node, and to say so when the file opens. + +import { describe, it, expect } from 'vitest'; +import { readFileSync } from 'node:fs'; +import { fileURLToPath } from 'node:url'; +import { createSession } from '../src/index.js'; + +const SRC = 'dup.sldd'; + +function loadFixture(name: string): any { + const path = fileURLToPath(new URL(`./fixtures/${name}`, import.meta.url)); + return JSON.parse(readFileSync(path, 'utf8')); +} + +function contentOf(doc: any): any { + return doc.__MW_TEXT_PARTS__['__MW_TEXT_PART__/data/chunk0'].__MW_TEXT_content; +} + +// numeric_json.sldd's own Design Data entries, cut down to the ones named, plus copies of +// some of them under the same name with another value. Built from a real file rather than +// by hand so that every entry is one the reader already reads. +function docWith(keep: string[], twins: { of: string; value: unknown }[]): any { + const doc = loadFixture('numeric_json.sldd'); + const content = contentOf(doc); + const byName = new Map(content.entries.map((e: any) => [e.name, e])); + const entries: any[] = keep.map((name) => byName.get(name)); + for (const twin of twins) { + const copy = JSON.parse(JSON.stringify(byName.get(twin.of))); + copy.value = twin.value; + entries.push(copy); + } + content.entries = entries; + return doc; +} + +const STRUCT_A2 = { + _array_type: 'Struct', + _dimensions: [1, 1], + _elements: [{ a: 2, b: 7 }], + _fields: ['a', 'b'], + _mw_element_type: 'MATLABArray', +}; + +// `Number` twice (1 and 2), `PI` once, `Struct` twice (a = 1 and a = 2). +function open(doc: any = docWith(['Number', 'PI', 'Struct'], [{ of: 'Number', value: 2 }, { of: 'Struct', value: STRUCT_A2 }])) { + const s = createSession(); + const src = s.addDataSource(SRC, doc) as any; + s.setActiveContext(src); + const design = src.children.find((c: any) => c.name === 'design'); + const named = (name: string): any[] => design.children.filter((c: any) => c.name === name); + return { s, src, design, named }; +} + +// What each entry's Value reads as, in tree order: the saved text, since what reaches the +// file is what a wrong-entry edit or delete would have damaged. +function savedValues(s: any, name: string): unknown[] { + const out = s.serializeSource(SRC); + const entries = contentOf(JSON.parse(out.text)).entries; + return entries.filter((e: any) => e.name === name).map((e: any) => e.value); +} + +const idOf = (name: string) => `${SRC}/design/${name}`; + +describe('an id two entries share is refused by every id-addressed operation', () => { + it('says so when the file opens: one duplicate-id warning per shared name, naming it', () => { + const { src } = open(); + const warnings = (src.warnings ?? []).filter((w: any) => w.code === 'duplicate-id'); + expect(warnings.map((w: any) => w.part).sort()).toEqual(['Number', 'Struct']); + const number = warnings.find((w: any) => w.part === 'Number'); + expect(number.message).toBe( + "Two entries in Design Data are named 'Number'. Neither can be edited or deleted until the file gives one of them another name.", + ); + // One warning for the shared entry, not another for each field inside it: `Struct/a` + // is shared too, and for the same reason. + expect(warnings.length).toBe(2); + }); + + it('counts three or more, and names the section they are in', () => { + const { src } = open(docWith(['Number'], [{ of: 'Number', value: 2 }, { of: 'Number', value: 3 }])); + const warnings = (src.warnings ?? []).filter((w: any) => w.code === 'duplicate-id'); + expect(warnings.length).toBe(1); + expect(warnings[0].message).toBe( + "3 entries in Design Data are named 'Number'. None of them can be edited or deleted until the file gives each its own name.", + ); + }); + + it('findNodeById answers null for the shared id', () => { + const { s, named } = open(); + // Both are in the tree, and both are what the id names: the lookup cannot pick one. + expect(named('Number').length).toBe(2); + expect(s.findNodeById(idOf('Number'))).toBeNull(); + }); + + it('deleteNodeById refuses, and deletes neither entry', () => { + const { s, named } = open(); + expect(s.deleteNodeById(idOf('Number'))).toBe(false); + expect(named('Number').length).toBe(2); + expect(savedValues(s, 'Number')).toEqual([1, 2]); + expect(s.canUndo()).toBe(false); + }); + + it('deleteNodesById refuses the whole batch when one id in it is shared', () => { + const { s, named } = open(); + expect(s.deleteNodesById([idOf('PI'), idOf('Number')])).toBe(false); + expect(named('PI').length).toBe(1); + expect(named('Number').length).toBe(2); + expect(s.canUndo()).toBe(false); + }); + + it('addChildTo refuses, and adds a field to neither struct', () => { + const { s, named } = open(); + const before = named('Struct').map((n: any) => n.children.length); + expect(s.addChildTo(idOf('Struct'))).toBeNull(); + expect(named('Struct').map((n: any) => n.children.length)).toEqual(before); + expect(s.canUndo()).toBe(false); + }); + + it('editProperty refuses an edit addressed by the shared id, whichever twin is selected', () => { + const { s, named } = open(); + for (const twin of named('Number')) { + s.setActiveEntry(twin); + expect(s.editProperty(idOf('Number'), 'Value', '5')).toBe(false); + } + expect(savedValues(s, 'Number')).toEqual([1, 2]); + expect(s.canUndo()).toBe(false); + }); + + it('refuses a node INSIDE a shared entry too: `Struct/a` names a field of each', () => { + const { s, named } = open(); + const fields = named('Struct').map((n: any) => n.children.find((c: any) => c.name === 'a')); + expect(fields.every(Boolean)).toBe(true); + expect(fields[0].id).toBe(fields[1].id); + expect(s.findNodeById(`${idOf('Struct')}/a`)).toBeNull(); + expect(s.deleteNodeById(`${idOf('Struct')}/a`)).toBe(false); + expect(named('Struct').map((n: any) => n.children.length)).toEqual([2, 2]); + }); +}); + +describe('what the refusal leaves alone', () => { + it('an entry whose name is its own is found, edited and deleted as before', () => { + const { s, named } = open(); + const pi = named('PI')[0]; + expect(s.findNodeById(idOf('PI'))).toBe(pi); + s.setActiveEntry(pi); + expect(s.editProperty(idOf('PI'), 'Value', '3')).toBe(true); + expect(savedValues(s, 'PI')).toEqual([3]); + expect(s.deleteNodeById(idOf('PI'))).toBe(true); + expect(named('PI').length).toBe(0); + }); + + it('a file with no shared name carries no warnings field at all, not an empty one', () => { + const { src } = open(docWith(['Number', 'PI', 'Struct'], [])); + expect('warnings' in src).toBe(false); + }); + + it('renaming one twin (a host edit through mutateSubtree) makes both addressable again', () => { + const { s, named } = open(); + const [first, second] = named('Number'); + s.mutateSubtree(first, () => first.setProperty('Name', 'Number2')); + expect(s.findNodeById(idOf('Number2'))).toBe(first); + // The twin left behind is the only `Number` now, and the index holds it, even though + // the rename took the id it used to share out of the index. + expect(s.findNodeById(idOf('Number'))).toBe(second); + expect(s.deleteNodeById(idOf('Number'))).toBe(true); + expect(savedValues(s, 'Number2')).toEqual([1]); + expect(savedValues(s, 'Number')).toEqual([]); + }); +}); + +describe('twins below the entry level', () => { + // btBus with its second element renamed onto the first: two elements named `plain`. + function busTwins() { + const doc = loadFixture('bus_types_text.sldd'); + const bus = contentOf(doc).entries.find((e: any) => e.name === 'btBus'); + const elements = bus.value._elements[0]._properties.Elements_internal._elements; + elements[1]._properties.Name = 'plain'; + const s = createSession(); + const src = s.addDataSource('bus.sldd', doc) as any; + s.setActiveContext(src); + const node = src.children.find((c: any) => c.name === 'design').children.find((c: any) => c.name === 'btBus'); + return { s, src, node }; + } + + it('warns once for two elements of one bus that share a name, naming the bus', () => { + const { src } = busTwins(); + const warnings = (src.warnings ?? []).filter((w: any) => w.code === 'duplicate-id'); + expect(warnings.length).toBe(1); + expect(warnings[0].message).toBe( + "Two items in btBus are named 'plain'. Neither can be edited or deleted until the file gives one of them another name.", + ); + }); + + it('refuses the shared element id, and still finds the bus and its other elements', () => { + const { s, node } = busTwins(); + const plain = node.children.filter((c: any) => c.name === 'plain'); + expect(plain.length).toBe(2); + expect(s.findNodeById(plain[0].id)).toBeNull(); + expect(s.deleteNodeById(plain[0].id)).toBe(false); + expect(node.children.filter((c: any) => c.name === 'plain').length).toBe(2); + expect(s.findNodeById(node.id)).toBe(node); + const geared = node.children.find((c: any) => c.name === 'geared'); + expect(s.findNodeById(geared.id)).toBe(geared); + }); +}); + +describe('a host that removes one twin itself', () => { + it('leaves the other findable under the id they shared (unindexSubtree)', () => { + const { s, design, named } = open(); + const [first, second] = named('Number'); + s.unindexSubtree(first, () => design.removeChild(first)); + expect(named('Number')).toEqual([second]); + expect(s.findNodeById(idOf('Number'))).toBe(second); + }); +}); diff --git a/test/blockParamUsages.test.ts b/test/blockParamUsages.test.ts index 0e276284..8fd3900d 100644 --- a/test/blockParamUsages.test.ts +++ b/test/blockParamUsages.test.ts @@ -629,6 +629,80 @@ describe('parseSlx — model workspace MAT-File source + edge cases', () => { expect(parsed.externalDataSources.filter((s) => s === 'data.mat')).toHaveLength(1); }); + // The same file again, kept apart. In externalDataSources it cannot be told from any + // other `.mat`, and the usage engines rank it differently: it is the model workspace, so + // it comes ahead of the dictionaries (see UsageIndex.resolveName). + it('names the model-workspace MAT source as workspaceDataSource as well', () => { + const buf = slxWith({ + 'simulink/blockDiagram.json': strToU8(JSON.stringify({ + BlockDiagram: { + ModelUUID: 'u1', + ModelWorkspace: { WSDataSource: 'MAT-File', WSSourceFileName: 'model_data.mat' }, + }, + })), + }); + expect(parseSlx(buf, 'test.slx').workspaceDataSource).toBe('model_data.mat'); + }); + + it('still names it as workspaceDataSource when the settings part lists it as an external', () => { + // externalDataSources lists the file once, so it cannot say this. + const buf = slxWith({ + 'simulink/blockDiagram.json': strToU8(JSON.stringify({ + BlockDiagram: { + ModelUUID: 'u1', + ModelWorkspace: { WSDataSource: 'MAT-File', WSSourceFileName: 'data.mat' }, + }, + })), + 'simulink/ExternalDataSourceSettings.xml': strToU8( + `` + + `other.mat` + + `data.mat` + + ``, + ), + }); + const parsed = parseSlx(buf, 'test.slx'); + expect(parsed.externalDataSources).toEqual(['other.mat', 'data.mat']); + expect(parsed.workspaceDataSource).toBe('data.mat'); + }); + + it('reads workspaceDataSource from a legacy blockdiagram.xml too', () => { + // Before R2020a the same two facts are `

` children of ``. + const zipped = zipSync({ + 'simulink/blockdiagram.xml': strToU8( + `` + + `

MAT-File

legacy.mat

` + + ``, + ), + 'metadata/coreProperties.xml': strToU8( + `R2018a`, + ), + }); + const buf = zipped.buffer.slice(zipped.byteOffset, zipped.byteOffset + zipped.byteLength) as ArrayBuffer; + const parsed = parseSlx(buf, 'old.slx'); + expect(parsed.workspaceDataSource).toBe('legacy.mat'); + expect(parsed.externalDataSources).toEqual(['legacy.mat']); + }); + + it('gives a null workspaceDataSource for a model whose workspace is not in a MAT file', () => { + // A workspace kept in the model, and one sourced from a MATLAB file: neither is a + // `.mat` the engines should look in. A name for the file with no MAT-File source + // names nothing. + const kept = slxWith({}); + const script = slxWith({ + 'simulink/blockDiagram.json': strToU8(JSON.stringify({ + BlockDiagram: { + ModelUUID: 'u1', + ModelWorkspace: { WSDataSource: 'MATLAB File', WSSourceFileName: 'init.m' }, + }, + })), + }); + for (const buf of [kept, script]) { + const parsed = parseSlx(buf, 'test.slx'); + expect(parsed.workspaceDataSource).toBeNull(); + expect(parsed.externalDataSources).toEqual([]); + } + }); + it('surfaces a numeric-only version tag via the String() fallback in findText', () => { // fast-xml-parser parses 42 as the number 42, not the string // "42". The findText helper must stringify it so the parser always returns a diff --git a/test/elementNameBase.test.ts b/test/elementNameBase.test.ts new file mode 100644 index 00000000..095d3768 --- /dev/null +++ b/test/elementNameBase.test.ts @@ -0,0 +1,185 @@ +// Copyright 2026 The MathWorks, Inc. +// +// AN ARRAY ELEMENT IS NAMED BY ITS 1-BASED SLOT, IN EVERY FLAVOUR (C-058). +// +// A struct-array or object-array element has no name of its own. Its row's label is a +// subscript into the array, `structNd(2,1,1)`, which BaseNode._labelUnder derives from +// `_subscript`, and that was always the same in every flavour. Its `name`, and so its node id +// (BaseNode.id is the parent's id, '/', the name), was not. MatlabVariableNode, which builds a +// text dictionary's cdata struct array and every `.mat` and model-workspace struct array, +// stamps `String(ei + 1)`. StructNode (a binary dictionary's struct array), ObjectNode's +// object arrays (both dictionary flavours, and a `.mat` object array) and ObjectNode's text +// enumeration arrays stamped `String(ei)`. So the one MATLAB value `structNd` had the element +// ids `structNd/1` … `structNd/12` read from the text dictionary and `structNd/0` … +// `structNd/11` read from the binary one, and BaseNode._slotAmongSiblings, which reads a name +// as its 1-based slot, missed on every 0-based element and fell back to a scan. +// +// The ruling (group E, 2026-10-16) takes the 1-based convention everywhere. The label does not +// change. Only the 0-based names and ids do, each by one. +import { describe, it, expect } from 'vitest'; +import { readFileSync } from 'node:fs'; +import { fileURLToPath } from 'node:url'; +import { createSession } from '../src/index.js'; +import { ingest } from '../src/core/ingest.js'; +import StructNode from '../src/datamodel/node/data/StructNode.js'; +import ObjectNode from '../src/datamodel/node/data/ObjectNode.js'; +import MatlabVariableNode from '../src/datamodel/node/data/MatlabVariableNode.js'; +import '../src/datamodel/node/data/NodeClassMap.js'; + +type Any = any; + +const subtree = (node: Any): Any[] => [node, ...node.children.flatMap(subtree)]; + +/** Open a fixture through ingest, the entry point a host calls, in a session of its own. */ +function open(rel: string): { session: Any; root: Any } { + const bytes = readFileSync(fileURLToPath(new URL(rel, import.meta.url))); + const filename = rel.split('/').pop()!; + // A text dictionary is JSON; a binary one is a zip, whose first byte is 'P'. + const content = filename.endsWith('.sldd') && bytes[0] !== 0x50 + ? bytes.toString('utf8') + : (new Uint8Array(bytes).buffer as ArrayBuffer); + const session = createSession(); + return { session, root: ingest(session, content, { filename }) }; +} + +/** The node at `path` under the root, found by its id. */ +function nodeAt(root: Any, path: string): Any { + const id = `${root.id}/${path}`; + const node = subtree(root).find((n: Any) => n.id === id); + expect(node, id).toBeDefined(); + return node; +} + +/** `count` names, '1' to String(count). */ +const oneBased = (count: number): string[] => Array.from({ length: count }, (_, i) => String(i + 1)); + +/** Each element's id with its array's id taken off the front. */ +const relativeIds = (array: Any): string[] => array.children.map((c: Any) => c.id.slice(array.id.length)); + +// structNd is MATLAB's 2x3x2 struct (truth.json). It is stored in all four of these, and built +// by StructNode from the binary dictionary and by MatlabVariableNode from the other three. +const STRUCT_ND: [flavour: string, file: string, path: string, builder: Any][] = [ + ['text dictionary', './parity/artifacts/text/cases.sldd', 'design/structNd', MatlabVariableNode], + ['binary dictionary', './parity/artifacts/binary/cases.sldd', 'design/structNd', StructNode], + ['.mat file', './parity/artifacts/mat/cases.mat', 'structNd', MatlabVariableNode], + ['model workspace', './parity/artifacts/slx/cases.slx', 'workspace/structNd', MatlabVariableNode], +]; + +// MATLAB's column-major subscripts of a 2x3x2 array, in storage order: the labels. +const ND_SUBSCRIPTS = [ + '(1,1,1)', '(2,1,1)', '(1,2,1)', '(2,2,1)', '(1,3,1)', '(2,3,1)', + '(1,1,2)', '(2,1,2)', '(1,2,2)', '(2,2,2)', '(1,3,2)', '(2,3,2)', +]; + +describe('a struct array element is named by its 1-based slot, in every flavour', () => { + for (const [flavour, file, path, builder] of STRUCT_ND) { + it(`structNd's twelve elements are named 1 to 12: ${flavour}`, () => { + const { root } = open(file); + const array = nodeAt(root, path); + expect(array.children.length).toBe(12); + // The builder this case is here for, so a reader that changed which node it builds + // cannot make the case pass by moving it to the other builder. + for (const element of array.children) { + expect(element).toBeInstanceOf(builder); + } + expect(array.children.map((c: Any) => c.name)).toEqual(oneBased(12)); + // The label is the subscript, and was before: this half is the control. + expect(array.children.map((c: Any) => c.displayName)).toEqual(ND_SUBSCRIPTS.map((s) => 'structNd' + s)); + }); + } + + it('gives structNd the same element ids in all four flavours, and the session finds each by it', () => { + const ids = STRUCT_ND.map(([, file, path]) => { + const { session, root } = open(file); + const array = nodeAt(root, path); + for (const element of array.children) { + expect(session.findNodeById(element.id), element.id).toBe(element); + } + return relativeIds(array); + }); + expect(ids[0]).toEqual(oneBased(12).map((n) => '/' + n)); + expect(ids[1]).toEqual(ids[0]); + expect(ids[2]).toEqual(ids[0]); + expect(ids[3]).toEqual(ids[0]); + }); +}); + +// Every object array the fixtures hold, built by ObjectNode.parse's element loop: dictionary +// object arrays in both flavours (elements of a known class become ParameterNodes, of a custom +// class ObjectNodes), MCOS object arrays in a .mat file, and a binary dictionary's enumeration +// array, which the binary reader delivers as an object array. +const OBJECT_ARRAYS: [file: string, path: string, count: number][] = [ + ['./fixtures/object_array_binary.sldd', 'design/paramArray', 3], + ['./fixtures/object_array_binary.sldd', 'other/usageArray', 2], + ['./fixtures/object_array_text.sldd', 'design/paramArray', 3], + ['./fixtures/object_array_text.sldd', 'other/usageArray', 2], + ['./fixtures/custom_object_binary.sldd', 'other/widget/Parts', 3], + ['./fixtures/custom_object_text.sldd', 'other/widget/Parts', 3], + ['./parity/artifacts/mat/cases.mat', 'objRow', 3], + ['./parity/artifacts/mat/cases.mat', 'obj2x3x2', 12], + ['./fixtures/mcos/busArray.mat', 'buses', 3], + ['./fixtures/display/dispcat_bin.sldd', 'design/en_onoff_vec', 3], +]; + +describe('an object array element is named by its 1-based slot', () => { + for (const [file, path, count] of OBJECT_ARRAYS) { + it(`${file.split('/').pop()} ${path}: elements 1 to ${count}`, () => { + const { root } = open(file); + const array = nodeAt(root, path); + expect(array).toBeInstanceOf(ObjectNode); + expect(array.children.length).toBe(count); + expect(array.children.map((c: Any) => c.name)).toEqual(oneBased(count)); + // Each label is still the element's subscript, from the index it was always given. + array.children.forEach((c: Any, i: number) => expect(c._subscript.index).toBe(i)); + }); + } + + it('names a text enumeration array\'s elements 1 to n, as the binary dictionary names the same value\'s', () => { + // en_onoff_vec is MATLAB's 1x3 matlab.lang.OnOffSwitchState, written by MATLAB into both + // flavours. The text one's rows come from ObjectNode._addTextEnumElements, the binary + // one's from the object-array loop above. + const text = nodeAt(open('./fixtures/display/dispcat_text.sldd').root, 'design/en_onoff_vec'); + const binary = nodeAt(open('./fixtures/display/dispcat_bin.sldd').root, 'design/en_onoff_vec'); + expect(text.children.length).toBe(3); + expect(text.children.map((c: Any) => c.name)).toEqual(['1', '2', '3']); + expect(relativeIds(text)).toEqual(relativeIds(binary)); + // The control: the rows show the same labels and enumerals in both. + expect(text.children.map((c: Any) => [c.displayName, c.displayValue])) + .toEqual(binary.children.map((c: Any) => [c.displayName, c.displayValue])); + }); +}); + +// BaseNode._slotAmongSiblings reads an element's name as its 1-based slot and checks it. A name +// that is not its slot is answered correctly, by a scan, so this is the rule written down there +// and not a wrong label. These fixtures hold every builder of a subscripted element: struct +// arrays (StructNode and MatlabVariableNode), object arrays, enumeration arrays in both +// flavours, sparse elements, and struct and object arrays held inside a cell. +const ALL_BUILDERS = [ + './parity/artifacts/text/cases.sldd', + './parity/artifacts/binary/cases.sldd', + './parity/artifacts/mat/cases.mat', + './parity/artifacts/slx/cases.slx', + './fixtures/object_array_binary.sldd', + './fixtures/object_array_text.sldd', + './fixtures/custom_object_binary.sldd', + './fixtures/custom_object_text.sldd', + './fixtures/cellarr_binary.sldd', + './fixtures/mcos/busArray.mat', + './fixtures/display/dispcat_bin.sldd', + './fixtures/display/dispcat_text.sldd', + './fixtures/sparse/sparse_binary.sldd', +]; + +describe('every subscripted element\'s name is its 1-based slot among its siblings', () => { + for (const file of ALL_BUILDERS) { + it(file.split('/').slice(-2).join('/'), () => { + const { root } = open(file); + const elements = subtree(root).filter((n: Any) => n._subscript); + expect(elements.length).toBeGreaterThan(0); + const misnamed = elements + .filter((n: Any) => n.parent.children[Number(n.name) - 1] !== n) + .map((n: Any) => `${n.id} (${n.constructor.name})`); + expect(misnamed).toEqual([]); + }); + } +}); diff --git a/test/matStructArray.test.ts b/test/matStructArray.test.ts index 781b071e..4b5e8707 100644 --- a/test/matStructArray.test.ts +++ b/test/matStructArray.test.ts @@ -476,7 +476,7 @@ describe('a MAT struct array with no fields, past the row cap', () => { // shows its Value's summary and has no Value row, its Value having no row to show, and a // copy of it carries the Value as its stream. const arr = paramOpened(BIG); - expect(shown(arr.children[2])).toEqual(['2', '<10000x10000 struct>', 0]); + expect(shown(arr.children[2])).toEqual(['3', '<10000x10000 struct>', 0]); const copiedValue = (copyOf(arr) as any)._elements[2]._properties.Value; expect([copiedValue._type, decodedOf(copiedValue)]).toEqual(['cdata', ['struct', BIG, {}]]); @@ -484,7 +484,7 @@ describe('a MAT struct array with no fields, past the row cap', () => { // declared-size guard records as not decoded. Laid out a bag at a time it ran the heap out // the same way, past the guard. const guarded = paramOpened([1, 2_000_000], 5); - expect(shown(guarded.children[2])).toEqual(['2', '<1x2000000 struct, not decoded>', 0]); + expect(shown(guarded.children[2])).toEqual(['3', '<1x2000000 struct, not decoded>', 0]); }); it('in a binary dictionary\'s hex object, opens as its summary and is written back as read', () => { @@ -513,7 +513,7 @@ describe('a MAT struct array with no fields, past the row cap', () => { // row per element. const atCap = paramOpened([1, MAX]); expect([shown(atCap.children[2]), shown(atCap.children[2].children[0])]).toEqual([ - ['2', `<1x${MAX} struct>`, 1], + ['3', `<1x${MAX} struct>`, 1], ['Value', `<1x${MAX} struct>`, MAX], ]); expect(atCap.children[2].children[0]).toBeInstanceOf(StructNode); @@ -522,11 +522,11 @@ describe('a MAT struct array with no fields, past the row cap', () => { const value = paramValue([1, MAX + 1]); expect([value._type, value._type === 'cdata' && decodedOf(value)]).toEqual(['cdata', ['struct', [1, MAX + 1], {}]]); const past = paramOpened([1, MAX + 1]); - expect(shown(past.children[2])).toEqual(['2', `<1x${MAX + 1} struct>`, 0]); + expect(shown(past.children[2])).toEqual(['3', `<1x${MAX + 1} struct>`, 0]); const copiedValue = (copyOf(past) as any)._elements[2]._properties.Value; expect([copiedValue._type, decodedOf(copiedValue)]).toEqual(['cdata', ['struct', [1, MAX + 1], {}]]); // The size that ran the heap out, asked last. - expect(shown(paramOpened([1, 1_000_000]).children[2])).toEqual(['2', '<1x1000000 struct>', 0]); + expect(shown(paramOpened([1, 1_000_000]).children[2])).toEqual(['3', '<1x1000000 struct>', 0]); }); it('in a binary dictionary\'s hex object, is handed over as its stream wherever the .mat route has no rows for it', () => { diff --git a/test/mdlParser.test.ts b/test/mdlParser.test.ts index fa3ff5a3..e03c77c7 100644 --- a/test/mdlParser.test.ts +++ b/test/mdlParser.test.ts @@ -135,6 +135,12 @@ describe('parseMdl — modern .mdl (OPC text package)', () => { ]); }); + it('names the MAT file its model workspace is kept in', () => { + // The whole-model comparison above passes when neither reader has the field, so the + // field is asked for by name. + expect(parseMdl(textPackage(MODEL_PARTS), 'm.mdl').workspaceDataSource).toBe('wsdata.mat'); + }); + it('decodes a base64 part to its exact bytes', () => { // The model workspace is a binary part; a single byte off and it does not parse // at all. Every byte value, so a sign- or masking bug shows up. @@ -335,6 +341,21 @@ describe('parseMdl — classic .mdl metadata', () => { expect(parsed.externalDataSources).toEqual(['wsdata.mat']); }); + it('names that MAT file as workspaceDataSource as well, apart from the externals', () => { + // The usage engines resolve it ahead of the dictionary, as the model workspace it is, + // and they can only do that if the parse says which `.mat` it is. + expect(parsed.workspaceDataSource).toBe('wsdata.mat'); + }); + + it('gives a null workspaceDataSource when the workspace is not kept in a MAT file', () => { + // A file name recorded with any other source is not a `.mat` to look in. + const inModel = CLASSIC.replace('WSDataSource "MAT-File"', 'WSDataSource "Model File"'); + expect(inModel).not.toBe(CLASSIC); + const other = parseMdl(bytes(inModel), 'unit.mdl'); + expect(other.workspaceDataSource).toBeNull(); + expect(other.externalDataSources).toEqual([]); + }); + it('splits ModelRefBlockPath at the LAST bar and roots the path at $bdroot', () => { // A block name may contain a bar; a model name may not. The prefix stripped is // the name recorded IN the file, since an export renamed the diagram. diff --git a/test/modelNode.test.ts b/test/modelNode.test.ts index 886fb099..a87bc84a 100644 --- a/test/modelNode.test.ts +++ b/test/modelNode.test.ts @@ -158,6 +158,38 @@ describe('ModelNode — workspace section', () => { }); }); +// The MAT file a model's workspace is kept in, which the session's usage engine resolves +// right after the model's own workspace. It reads it off the node, not off the dataSources +// section, where the file is one `.mat` among the externals. +describe('ModelNode — workspaceDataSource', () => { + it('carries the file the parse names, and keeps it in dataSources too', () => { + const m = model({ workspaceDataSource: 'signals.mat', externalDataSources: ['signals.mat'] }); + expect(m.workspaceDataSource).toBe('signals.mat'); + expect(m.getSection('dataSources').children.map((c: any) => c.name)).toEqual(['signals.mat']); + }); + + it('reads it off a real parse', () => { + const z = zipSync({ + 'simulink/blockDiagram.json': strToU8( + JSON.stringify({ + BlockDiagram: { ModelUUID: 'u1', ModelWorkspace: { WSDataSource: 'MAT-File', WSSourceFileName: 'ws.mat' } }, + }), + ), + 'metadata/coreProperties.xml': strToU8(`R2026b`), + }); + const buf = z.buffer.slice(z.byteOffset, z.byteOffset + z.byteLength) as ArrayBuffer; + expect((ModelNode.fromParsed(parseSlx(buf, 'm.slx'), 'm.slx') as any).workspaceDataSource).toBe('ws.mat'); + }); + + it('is null for a parse without one, and for a host parse that predates the field', () => { + // `parsedSlx()` has no such key at all, which is what an older host hands over. + expect(model().workspaceDataSource).toBeNull(); + expect(model({ workspaceDataSource: null }).workspaceDataSource).toBeNull(); + // A parse that crossed a boundary is plain data, and only a string names a file. + expect(model({ workspaceDataSource: 42 as unknown as string }).workspaceDataSource).toBeNull(); + }); +}); + describe('ModelNode — config section', () => { // The class comes from `objectClass`, which the parser has already normalized across // the five .slx layouts and the classic .mdl grammar — the node layer does not sniff diff --git a/test/objectValueRefused.test.ts b/test/objectValueRefused.test.ts index 7d9d9139..0ac47d06 100644 --- a/test/objectValueRefused.test.ts +++ b/test/objectValueRefused.test.ts @@ -57,11 +57,11 @@ const CASES: [file: string, path: string][] = [ ['custom_object_binary.sldd', 'other/widget'], ['custom_object_binary.sldd', 'other/widget/Part'], ['custom_object_binary.sldd', 'other/widget/Parts'], - ['custom_object_binary.sldd', 'other/widget/Parts/0'], + ['custom_object_binary.sldd', 'other/widget/Parts/1'], ['custom_object_binary.sldd', 'design/partCell/1'], ['custom_object_text.sldd', 'other/widget'], ['custom_object_text.sldd', 'other/widget/Part'], - ['custom_object_text.sldd', 'other/widget/Parts/0'], + ['custom_object_text.sldd', 'other/widget/Parts/1'], ['custom_object_text.sldd', 'other/widget/Tuning'], ['sparse/sparse_text.sldd', 'design/fhAlias'], ['sparse/hexobj_text.sldd', 'design/anonAlias'], diff --git a/test/parity/matlab/DESIGN.md b/test/parity/matlab/DESIGN.md index e75e14a5..a2224034 100644 --- a/test/parity/matlab/DESIGN.md +++ b/test/parity/matlab/DESIGN.md @@ -2084,10 +2084,14 @@ Two things this measurement settled and left alone: carried the right dims, class and count, `MatlabVariableNode._serializeCellXml` and `_serializeArrayXml` already spelled each of the three forms MATLAB's way. That is the byte-identity test's second job. -- **Struct-array element rows are labelled 0-based** (`0`, `1`, …) where every other - container in the tree is 1-based, and for an N-D struct array the two channels disagree +- **Struct-array element rows were named 0-based** (`0`, `1`, …) where every other + container in the tree is 1-based, and for an N-D struct array the two channels disagreed about it (text `1…12`, binary `0…11`). Visible in the fixtures here, unrelated to cells, - not asserted either way. + and not asserted either way then. *Retired (C-058, group E ruling of 2026-10-16):* every + struct-array, object-array and enumeration-array element is now named by its 1-based + slot in every flavour, so its node id is the same whichever reader built it (`structNd/1` + … `structNd/12` from all four of `cases.*`). The label (`structNd(1,1,1)`) was already + the same and did not change. `test/elementNameBase.test.ts` asserts both. ## Reading a format that changes: derive from structure, do not trust a spelling diff --git a/test/parseWarnings.test.ts b/test/parseWarnings.test.ts index e1f33b65..e6440cfa 100644 --- a/test/parseWarnings.test.ts +++ b/test/parseWarnings.test.ts @@ -943,6 +943,184 @@ describe('a .slx whose workspace part is cut short inside a complex variable ope } }); +// --------------------------------------------------------------------------- +// An index part in a shape MATLAB never writes: read what it states, never refuse +// --------------------------------------------------------------------------- + +// The maintainer's ruling of 2026-10-16 on C-255 (recommendation (c)). MATLAB writes +// `ConfigSetInfo` and `ModelReferences` as arrays: every one of the 68 `.slx` holding a +// configSetInfo.json in this repo and the corpus does, and a `ModelReferences` that is +// there at all (46 files) is one too. A hand-edited or third-party package is the only +// source of another shape. Most of them threw out of parseSlx: a lone object is not +// iterable and has no `.map`, and a non-string `PartName` has no `.replace`. Nothing +// caught it, so the whole model failed to open. The rest (null, false, 0, an empty +// string, the key left out) were read silently as an index listing nothing. Now a lone +// object is read as a one-entry list, any other non-array loses the index with a +// warning, and an entry that cannot name what it lists is skipped with a warning while +// its neighbours are still read. +describe('an index part that is not a list is read for what it states, and the model still opens', () => { + const CS_INFO = 'simulink/configSetInfo.json'; + const GI = 'simulink/graphicalInterface.json'; + const FAST = { ConfigSetName: 'Fast', PartName: '/simulink/configSet1.json' }; + const PLANT = { BlockPath: 'ctrl/plant', ModelName: 'plant.slx' }; + const casesWithIndex = (index: unknown) => + parseSlx(slxWith(SLX_CASES, { [CS_INFO]: JSON.stringify(index) }), 'slxcases.slx'); + const refsWithIndex = (index: unknown) => + parseSlx(slxWith(SLX_REFS, { [GI]: JSON.stringify(index) }), 'model_with_refs.slx'); + + describe('configSetInfo.json', () => { + it('reads a ConfigSetInfo that is one object, not a list, as one configuration set', () => { + const clean = parseSlx(bytesAt(SLX_CASES), 'slxcases.slx'); + const parsed = casesWithIndex({ + ConfigSetInfo: { Active: true, ConfigSetName: 'Configuration', PartName: '/simulink/configSet0.json' }, + }); + expect(parsed.warnings).toEqual([]); + // The same set, read from the same part, as the intact index's first entry gives. + expect(parsed.configSets).toEqual([clean.configSets[0]]); + expect(parsed.configSets[0]).toMatchObject({ name: 'Configuration', active: true }); + }); + + it.each(['"x"', '""', '5', '0', 'true', 'false', 'null'])( + 'reports a ConfigSetInfo of %s once, reads no sets, and reads the rest of the model', + (value) => { + const clean = parseSlx(bytesAt(SLX_CASES), 'slxcases.slx'); + const parsed = parseSlx(slxWith(SLX_CASES, { [CS_INFO]: `{ "ConfigSetInfo": ${value} }` }), 'slxcases.slx'); + expect(codesAndParts(parsed.warnings)).toEqual([['part-unreadable', CS_INFO]]); + expect(parsed.warnings[0].message).toContain('no configuration sets were read'); + expect(parsed.configSets).toEqual([]); + expect(parsed.uuid).not.toBe(''); + expect(parsed.uuid).toBe(clean.uuid); + expect(parsed.blockParamUsages).toEqual(clean.blockParamUsages); + expect(parsed.modelReferences).toEqual(clean.modelReferences); + }, + ); + + it('reports an index that lists no ConfigSetInfo at all, once', () => { + // The part parsed and holds something, so it is not the empty-part case readPart + // reports; it simply does not say which sets there are, and every model has one. + const parsed = casesWithIndex({ Version: '1.0' }); + expect(codesAndParts(parsed.warnings)).toEqual([['part-unreadable', CS_INFO]]); + expect(parsed.warnings[0].message).toContain('no configuration sets were read'); + expect(parsed.configSets).toEqual([]); + }); + + it.each<[string, unknown]>([ + ['a PartName that is a number', { Active: true, ConfigSetName: 'Configuration', PartName: 7 }], + ['no PartName', { Active: true, ConfigSetName: 'Configuration' }], + ['a ConfigSetName that is a number', { Active: true, ConfigSetName: 7, PartName: '/simulink/configSet0.json' }], + ['no ConfigSetName', { Active: true, PartName: '/simulink/configSet0.json' }], + ['null', null], + ['a string', '/simulink/configSet0.json'], + ['a list', [{ ConfigSetName: 'Configuration', PartName: '/simulink/configSet0.json' }]], + ])('skips an entry that is %s with a warning, and still reads the set after it', (_what, entry) => { + const parsed = casesWithIndex({ ConfigSetInfo: [entry, FAST] }); + expect(codesAndParts(parsed.warnings)).toEqual([['part-unreadable', CS_INFO]]); + expect(parsed.warnings[0].message).toContain('was not read'); + expect(parsed.configSets.map((c) => c.name)).toEqual(['Fast']); + }); + + it('applies the same rule to a .mdl package, which reads the same parts', () => { + // MdlParser decodes the text framing and hands the parts to the same reader. + const index = JSON.stringify({ + ConfigSetInfo: { Active: true, ConfigSetName: 'Configuration', PartName: '/simulink/configSet0.json' }, + }); + const parsed = parseMdl(mdlWithPart(CS_INFO, index), 'mdlcases.mdl'); + expect(parsed.warnings).toEqual([]); + expect(parsed.configSets.map((c) => c.name)).toEqual(['Configuration']); + }); + + it('opens a .slx whose ConfigSetInfo is one object, with that one set in its config section', () => { + // The user-visible half: the open used to fail outright, every section with it. + const intact = openedModel(bytesAt(SLX_CASES), 'slxcases.slx'); + const lone = JSON.stringify({ + ConfigSetInfo: { Active: true, ConfigSetName: 'Configuration', PartName: '/simulink/configSet0.json' }, + }); + const opened = openedModel(slxWith(SLX_CASES, { [CS_INFO]: lone }), 'slxcases.slx'); + expect(intact.sections).toContainEqual(['config', 2]); + expect(opened).toEqual({ + format: intact.format, + sections: intact.sections.map(([s, n]): [string, number] => [s, s === 'config' ? 1 : n]), + warnings: [], + }); + }); + }); + + describe('graphicalInterface.json', () => { + it('reads a ModelReferences that is one object, not a list, as one model reference', () => { + const parsed = refsWithIndex({ ModelReferences: PLANT }); + expect(parsed.warnings).toEqual([]); + expect(parsed.modelReferences).toEqual([{ blockPath: 'ctrl/plant', modelName: 'plant.slx' }]); + }); + + it('reads a lone object inside the wrapped GraphicalInterface of R2024b-R2026a the same way', () => { + const parsed = refsWithIndex({ GraphicalInterface: { ModelReferences: PLANT } }); + expect(parsed.warnings).toEqual([]); + expect(parsed.modelReferences).toEqual([{ blockPath: 'ctrl/plant', modelName: 'plant.slx' }]); + }); + + it.each(['"x"', '""', '5', '0', 'true', 'false'])( + 'reports a ModelReferences of %s once, and reads no references', + (value) => { + const clean = parseSlx(bytesAt(SLX_REFS), 'model_with_refs.slx'); + const parsed = parseSlx(slxWith(SLX_REFS, { [GI]: `{ "ModelReferences": ${value} }` }), 'model_with_refs.slx'); + expect(codesAndParts(parsed.warnings)).toEqual([['part-unreadable', GI]]); + expect(parsed.warnings[0].message).toContain("this model's references to other models are missing"); + expect(parsed.modelReferences).toEqual([]); + expect(parsed.dataDictionary).toBe(clean.dataDictionary); + expect(parsed.externalDataSources).toEqual(clean.externalDataSources); + }, + ); + + it.each<[string, Record]>([ + ['absent', { SolverName: 'VariableStepAuto' }], + ['null', { ModelReferences: null }], + ['an empty list', { ModelReferences: [] }], + ])('stays silent for a ModelReferences that is %s: a model that references none', (_what, index) => { + // The normal case, not a loss: 78 of the 124 graphicalInterface.json parts in the + // repo and the corpus hold no ModelReferences at all, and 4 hold an empty list. + const parsed = refsWithIndex(index); + expect(parsed.warnings).toEqual([]); + expect(parsed.modelReferences).toEqual([]); + }); + + it.each<[string, unknown]>([ + ['a BlockPath that is a number', { BlockPath: 3, ModelName: 'other.slx' }], + ['no BlockPath', { ModelName: 'other.slx' }], + ['a ModelName that is a number', { BlockPath: 'ctrl/other', ModelName: 3 }], + ['no ModelName', { BlockPath: 'ctrl/other' }], + ['null', null], + ['a string', 'ctrl/other|other.slx'], + ])('skips a reference that is %s with a warning, and still reads the one after it', (_what, entry) => { + const parsed = refsWithIndex({ ModelReferences: [entry, PLANT] }); + expect(codesAndParts(parsed.warnings)).toEqual([['part-unreadable', GI]]); + expect(parsed.warnings[0].message).toContain('was not read'); + expect(parsed.modelReferences).toEqual([{ blockPath: 'ctrl/plant', modelName: 'plant.slx' }]); + }); + + it('opens a .slx whose ModelReferences is one object, with that reference in its references section', () => { + const intact = openedModel(bytesAt(SLX_REFS), 'model_with_refs.slx'); + const opened = openedModel( + slxWith(SLX_REFS, { [GI]: JSON.stringify({ ModelReferences: PLANT }) }), + 'model_with_refs.slx', + ); + expect(intact.sections).toContainEqual(['references', 1]); + expect(opened).toEqual({ ...intact, warnings: [] }); + }); + + it('opens a .slx one of whose references names no model, listing the reference that does', () => { + // The reference with no ModelName used to reach the references section, whose + // file-kind check threw on it, so the whole open failed. + const intact = openedModel(bytesAt(SLX_REFS), 'model_with_refs.slx'); + const index = JSON.stringify({ ModelReferences: [{ BlockPath: 'ctrl/other' }, PLANT] }); + const opened = openedModel(slxWith(SLX_REFS, { [GI]: index }), 'model_with_refs.slx'); + expect({ ...opened, warnings: codesAndParts(opened.warnings) }).toEqual({ + ...intact, + warnings: [['part-unreadable', GI]], + }); + }); + }); +}); + // --------------------------------------------------------------------------- // .mat — the Level-5 MAT-file // --------------------------------------------------------------------------- diff --git a/test/publicTypeSurface.test.ts b/test/publicTypeSurface.test.ts index 0eb9f320..74008b06 100644 --- a/test/publicTypeSurface.test.ts +++ b/test/publicTypeSurface.test.ts @@ -177,12 +177,14 @@ describe('a consumer can name what a parser returned', () => { } // The codes as a closed union: every arm is reachable and the switch is - // exhaustive, which is what makes a per-code UI safe to write. + // exhaustive, which is what makes a per-code UI safe to write. Four arms since + // F1-50 added \`duplicate-id\` (the 2026-10-16 group E ruling). function icon(code: ParseWarningCode): string { switch (code) { case 'part-unreadable': return 'part'; case 'source-empty': return 'empty'; case 'source-unreadable': return 'broken'; + case 'duplicate-id': return 'twins'; } } diff --git a/test/usageEngines.test.ts b/test/usageEngines.test.ts index 51aabf38..bdfed886 100644 --- a/test/usageEngines.test.ts +++ b/test/usageEngines.test.ts @@ -44,7 +44,12 @@ const block = (name: string, type: string, prop: string, value: string): string // The same builders the two suites use, so these files go through the real parsers: an // engine that reads the wrong field of a parse result is exactly what a hand-built summary // or a hand-assembled tree would hide. -function slxModel(opts: { dictionary?: string | null; blocks: string; workspaceMat?: string }): ArrayBuffer { +function slxModel(opts: { + dictionary?: string | null; + blocks: string; + workspaceMat?: string; + externals?: string[]; +}): ArrayBuffer { const diagram: Record = { ModelUUID: 'u1' }; if (opts.dictionary) { diagram.DataDictionary = opts.dictionary; @@ -52,7 +57,7 @@ function slxModel(opts: { dictionary?: string | null; blocks: string; workspaceM if (opts.workspaceMat) { diagram.ModelWorkspace = { WSDataSource: 'MAT-File', WSSourceFileName: opts.workspaceMat }; } - const zipped = zipSync({ + const parts: Record = { 'simulink/blockDiagram.json': strToU8(JSON.stringify({ BlockDiagram: diagram })), 'simulink/systems/system_root.xml': strToU8( `${opts.blocks}`, @@ -60,10 +65,51 @@ function slxModel(opts: { dictionary?: string | null; blocks: string; workspaceM 'metadata/coreProperties.xml': strToU8( `R2026b`, ), - }); + }; + // The external data sources, in the part MATLAB keeps them in. That is not where it + // records a model workspace's `.mat`, which is blockDiagram.json, above. + if (opts.externals && opts.externals.length > 0) { + parts['simulink/ExternalDataSourceSettings.xml'] = strToU8( + `${opts.externals + .map((s) => `${s}`) + .join('')}`, + ); + } + const zipped = zipSync(parts); return zipped.buffer.slice(zipped.byteOffset, zipped.byteOffset + zipped.byteLength) as ArrayBuffer; } +// A classic `.mdl`, the pre-R2012 brace format. MdlParser reads it on a path of its own, +// apart from every package reader, so a fact that path drops is a fact neither engine gets. +// Each block's SID is its name, as in `block` above. +function classicMdl(opts: { + dictionary?: string; + workspaceMat?: string; + blocks: { name: string; type: string; prop: string; value: string }[]; +}): ArrayBuffer { + const lines = ['Model {', ' Name "wsmdl"']; + if (opts.dictionary) { + lines.push(` DataDictionary "${opts.dictionary}"`); + } + if (opts.workspaceMat) { + lines.push(' WSDataSource "MAT-File"', ` WSSourceFileName "${opts.workspaceMat}"`); + } + lines.push(' System {', ' Name "wsmdl"'); + for (const b of opts.blocks) { + lines.push( + ' Block {', + ` BlockType ${b.type}`, + ` Name "${b.name}"`, + ` SID "${b.name}"`, + ` ${b.prop} "${b.value}"`, + ' }', + ); + } + lines.push(' }', '}', ''); + const u8 = strToU8(lines.join('\n')); + return u8.buffer.slice(u8.byteOffset, u8.byteOffset + u8.byteLength) as ArrayBuffer; +} + // A textual `.sldd`. `entries` is either a bare name (a design entry) or a name plus the // section it belongs to, which is what makes "the same name in two sections at once" // expressible — see the derived case at the bottom. @@ -279,6 +325,109 @@ describe('what shadowing must NOT take away', () => { }); }); +// A model whose workspace is KEPT in a `.mat` (`WSDataSource` 'MAT-File'). That file is +// the model workspace, so MATLAB resolves a name in it right after the model's own +// workspace and ahead of every dictionary. Both engines used to rank it last, with the +// other `.mat` files, because both parsers put it in `externalDataSources` with them. So a +// name the linked dictionary defined as well was credited to the dictionary, which is the +// one definition the block does not read. +// +// `signals.mat` is cases.mat, which defines `kp` and not `Kd`. The dictionary defines both. +describe('a model workspace kept in a .mat — ahead of the dictionary', () => { + const MAT = () => file('signals.mat', artifact('mat/cases.mat')); + const DICT = () => file('mdlparams.sldd', slddBytes(['kp', 'Kd'])); + + // The same model in the two formats whose parsers record this on separate code paths: + // the package reader (blockDiagram.json) and the classic `.mdl` reader. + const MODELS: [what: string, model: () => File][] = [ + [ + '.slx', + () => + file( + 'ws.slx', + slxModel({ + dictionary: 'mdlparams.sldd', + workspaceMat: 'signals.mat', + blocks: block('K', 'Constant', 'Value', 'kp') + block('D', 'Gain', 'Gain', 'Kd'), + }), + ), + ], + [ + 'classic .mdl', + () => + file( + 'ws.mdl', + classicMdl({ + dictionary: 'mdlparams.sldd', + workspaceMat: 'signals.mat', + blocks: [ + { name: 'K', type: 'Constant', prop: 'Value', value: 'kp' }, + { name: 'D', type: 'Gain', prop: 'Gain', value: 'Kd' }, + ], + }), + ), + ], + ]; + + for (const [what, model] of MODELS) { + describe(what, () => { + const files = [model(), MAT(), DICT()]; + + it('credits the workspace .mat, which is the value the block reads', () => { + expectBoth(files, 'signals.mat/kp', 'signals.mat', 'kp', ['K']); + }); + + it('credits the dictionary entry it shadows with NOTHING', () => { + expectBoth(files, 'mdlparams.sldd/design/kp', 'mdlparams.sldd', 'kp', []); + }); + + it('still credits the dictionary for a name only IT defines', () => { + expectBoth(files, 'mdlparams.sldd/design/Kd', 'mdlparams.sldd', 'Kd', ['D']); + }); + }); + } + + it('keeps it ahead when the settings part names the same file as an external too', () => { + // The parser lists the file once, so it is both the workspace file and an external. + // It is still the model workspace. + const files = [ + file( + 'ws.slx', + slxModel({ + dictionary: 'mdlparams.sldd', + workspaceMat: 'signals.mat', + externals: ['signals.mat'], + blocks: block('K', 'Constant', 'Value', 'kp'), + }), + ), + MAT(), + DICT(), + ]; + expectBoth(files, 'signals.mat/kp', 'signals.mat', 'kp', ['K']); + expectBoth(files, 'mdlparams.sldd/design/kp', 'mdlparams.sldd', 'kp', []); + }); + + it('leaves an ordinary external .mat behind the dictionary', () => { + // The control. A `.mat` the model only lists as an external data source is not its + // workspace, so the dictionary still wins. Moving every `.mat` ahead of the + // dictionaries would pass the cases above and fail this one. + const files = [ + file( + 'ext.slx', + slxModel({ + dictionary: 'mdlparams.sldd', + externals: ['signals.mat'], + blocks: block('K', 'Constant', 'Value', 'kp'), + }), + ), + MAT(), + DICT(), + ]; + expectBoth(files, 'mdlparams.sldd/design/kp', 'mdlparams.sldd', 'kp', ['K']); + expectBoth(files, 'signals.mat/kp', 'signals.mat', 'kp', []); + }); +}); + // The fourth scope, and the one that arrived last: a MASK WORKSPACE. mdlmask.slx is a real // MATLAB model (test/parity/matlab/gen_mask.m) whose masked subsystems both DEFINE names and // read the model workspace, and MATLAB's own `Simulink.findVars` on it is recorded in diff --git a/test/usageIndex.test.ts b/test/usageIndex.test.ts index 87b4008a..1d5c0df4 100644 --- a/test/usageIndex.test.ts +++ b/test/usageIndex.test.ts @@ -320,6 +320,26 @@ describe('resolveName — MATLAB’s order, first hit wins', () => { expect(resolveName(model, 'span', sldd, mat)).toEqual({ kind: 'mat', srcId: 'data.mat' }); }); + it('takes a MAT-file the model workspace is kept in ahead of the linked dictionary', () => { + // `WSDataSource: 'MAT-File'`. That file IS the model workspace, so it comes second, after + // the model's own workspace, and not last with the other MAT-files. It is in `matRefs` + // too, as the parser lists it with the externals. + const model = summaryOf({ slddRefs: ['params.sldd'], matRefs: ['data.mat'], workspaceMatRef: 'data.mat' }); + expect(resolveName(model, 'Kp', sldd, mat)).toEqual({ kind: 'mat', srcId: 'data.mat' }); + // A name only the dictionary defines still resolves there. + expect(resolveName(model, 'tau', sldd, mat)).toEqual({ kind: 'sldd', srcId: 'params.sldd' }); + }); + + it('still takes the model’s own workspace ahead of its workspace MAT-file', () => { + const model = summaryOf({ + workspaceNames: new Set(['Kp']), + slddRefs: ['params.sldd'], + matRefs: ['data.mat'], + workspaceMatRef: 'data.mat', + }); + expect(resolveName(model, 'Kp', sldd, mat)).toEqual({ kind: 'workspace', srcId: 'm.slx' }); + }); + it('takes the FIRST linked dictionary, so the dictionary link outranks an external', () => { // The order the summary records is the order MATLAB resolves in: the linked data // dictionary first, then the externals as the model lists them. @@ -883,6 +903,41 @@ describe('summarizeParsedModel — the same summary, from a parse the caller alr }); }); + it('names the MAT-file the model workspace is kept in, apart from the externals', () => { + // Both summary paths, since they share modelSummary and a host may take either. + const both = (f: UsageFile): ModelSummary[] => [ + summarizeParsedModel(parseModel(f.bytes, f.filename), f.srcId, f.filename).models[0], + summarizeFiles([f]).models[0], + ]; + + for (const params of both(MODELS[0][1]())) { + expect(params.workspaceMatRef).toBe('ws.mat'); + // Still with the externals too, which is where a host learns to load it. + expect(params.matRefs).toEqual(['extra.mat', 'ws.mat']); + } + + // refBasename'd, as every other ref here is: a model records the path its author gave. + const pathed = opened( + 'p.slx', + slxModel({ dictionary: 'top.sldd', workspaceMat: 'C:\\work\\WS.MAT', blocks: block('G', 'Gain', 'Gain', 'Kp') }), + ); + for (const summary of both(pathed)) { + expect(summary.workspaceMatRef).toBe('ws.mat'); + } + + // Absent where there is no such file, so a summary built by a host before the field + // existed reads the same as one that has none. + for (const summary of both(MODELS[5][1]())) { + expect(summary).not.toHaveProperty('workspaceMatRef'); + } + // And a file that is not a `.mat`, which matRefs leaves out too. + const notMat = opened('n.slx', slxModel({ workspaceMat: 'data.txt', blocks: block('G', 'Gain', 'Gain', 'Kp') })); + for (const summary of both(notMat)) { + expect(summary).not.toHaveProperty('workspaceMatRef'); + expect(summary.matRefs).toEqual([]); + } + }); + it('has no answer to give for bytes the parser refuses, because there is no parse', () => { // The other half of the empty case, and the one place the two paths CANNOT be compared: // `summarizeFiles` drops an unreadable file silently (its per-file catch), while this