diff --git a/dist/datamodel/node/container/SectionNode.d.ts.map b/dist/datamodel/node/container/SectionNode.d.ts.map index f7f07a53..c27fd47f 100644 --- a/dist/datamodel/node/container/SectionNode.d.ts.map +++ b/dist/datamodel/node/container/SectionNode.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"SectionNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/container/SectionNode.ts"],"names":[],"mappings":"AAEA,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAM3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAMvE,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACtG,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC;AA4DrE,wBAAgB,YAAY,IAAI,MAAM,CAYrC;AAED,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,aAAa;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;gBAEH,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAMhF,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,iBAAiB,IAAI,iBAAiB,CAKzC;IAED,eAAe,IAAI,MAAM,EAAE;IAQ3B,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAUtC,oBAAoB,IAAI,MAAM,EAAE;IA4BhC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAKrD,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IA6BhE,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,IAAI,EAAE,MAAM,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,IAAI,CAAA;KAAE,GAAG,IAAI;IAiBlH,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG;QAAE,IAAI,EAAE,MAAM,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,IAAI,CAAA;KAAE,GAAG,IAAI;IAiB9E,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAerC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,EAAE,qBAAqB,GAAG,IAAI,GAAG,QAAQ;CA+BvG"} \ No newline at end of file +{"version":3,"file":"SectionNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/container/SectionNode.ts"],"names":[],"mappings":"AAEA,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAM3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAMvE,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACtG,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC;AAwErE,wBAAgB,YAAY,IAAI,MAAM,CAWrC;AAED,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,aAAa;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;gBAEH,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAMhF,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,iBAAiB,IAAI,iBAAiB,CAKzC;IAED,eAAe,IAAI,MAAM,EAAE;IAQ3B,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAUtC,oBAAoB,IAAI,MAAM,EAAE;IA4BhC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAKrD,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IA6BhE,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,IAAI,EAAE,MAAM,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,IAAI,CAAA;KAAE,GAAG,IAAI;IAiBlH,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG;QAAE,IAAI,EAAE,MAAM,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,IAAI,CAAA;KAAE,GAAG,IAAI;IAiB9E,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAerC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,EAAE,qBAAqB,GAAG,IAAI,GAAG,QAAQ;CA+BvG"} \ No newline at end of file diff --git a/dist/datamodel/node/container/SectionNode.js b/dist/datamodel/node/container/SectionNode.js index e75f7cd8..4803f4ff 100644 --- a/dist/datamodel/node/container/SectionNode.js +++ b/dist/datamodel/node/container/SectionNode.js @@ -65,18 +65,29 @@ const ALLOWED_TYPES = { config: ['Simulink.ConfigSet', 'Simulink.ConfigSetRef'], other: ['MatlabVariable', 'Simulink.VariantExpression', 'Simulink.VariantVariable', 'CustomObject'], }; +// A new entry's metadata uuid: 32 random lowercase hex nibbles as 8-4-4-4-12, with no +// version or variant nibble fixed, which is the shape this function has always written. +// +// The uuid is an identity, not a secret. It only has to be unique: it tells two +// same-named entries apart (see entrySelector.ts), and the file stores it in plain text. +// It does not come from `Math.random`, because a uuid drawn from that published the +// generator's state: every nibble was four bits of V8's xorshift128+, and two uuids drawn +// back to back are enough to solve for its 128-bit state and predict the next uuid +// exactly (5 of 5 runs, Node 24). `crypto.getRandomValues` publishes nothing, and it is a +// global in every runtime this barrel runs in: Node 19+, so every VS Code extension host, +// browsers, and the Web Worker that hosts the web extension. Unlike `crypto.randomUUID`, +// it does not need a secure context, and it does not fix the version and variant nibbles. export function generateUuid() { const hex = '0123456789abcdef'; - const segments = [8, 4, 4, 4, 12]; - return segments - .map(function (len) { - let s = ''; - for (let i = 0; i < len; i++) { - s += hex[Math.floor(Math.random() * 16)]; + const bytes = crypto.getRandomValues(new Uint8Array(16)); + let s = ''; + for (let i = 0; i < bytes.length; i++) { + if (i === 4 || i === 6 || i === 8 || i === 10) { + s += '-'; } - return s; - }) - .join('-'); + s += hex[bytes[i] >> 4] + hex[bytes[i] & 15]; + } + return s; } export default class SectionNode extends ContainerNode { constructor(name, parent, label, iconId) { diff --git a/dist/datamodel/node/container/SectionNode.js.map b/dist/datamodel/node/container/SectionNode.js.map index bcb2c290..fd753a17 100644 --- a/dist/datamodel/node/container/SectionNode.js.map +++ b/dist/datamodel/node/container/SectionNode.js.map @@ -1 +1 @@ -{"version":3,"file":"SectionNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/container/SectionNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"SectionNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/container/SectionNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/node/container/SlddNode.d.ts.map b/dist/datamodel/node/container/SlddNode.d.ts.map index 7e4c9d2b..b0460e55 100644 --- a/dist/datamodel/node/container/SlddNode.d.ts.map +++ b/dist/datamodel/node/container/SlddNode.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"SlddNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/container/SlddNode.ts"],"names":[],"mappings":"AAEA,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAChD,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAE3C,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAM5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAkBvE,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,aAAa;IAC/C,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC/C,oBAAoB,EAAE,OAAO,EAAE,CAAC;IAChC,cAAc,EAAE,OAAO,CAAC;IACxB,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC7C,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAChD,cAAc,EAAE,qBAAqB,GAAG,IAAI,CAAC;gBAEjC,IAAI,EAAE,MAAM;IAiBxB,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,eAAe,IAAI,MAAM,CAM5B;IAED,aAAa,IAAI,SAAS,EAAE;IAI5B,WAAW,IAAI,UAAU,EAAE;IAM3B,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAI3C,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAQnF;;;;;;;;;;OAUG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,YAAY,EAAE,GAAG,QAAQ;IA2GlG,MAAM,CAAC,oBAAoB,CACvB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GACtC,qBAAqB,GAAG,IAAI;IA0D/B,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;IAK5D,SAAS,IAAI,OAAO;IAKpB,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAqB3C"} \ No newline at end of file +{"version":3,"file":"SlddNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/container/SlddNode.ts"],"names":[],"mappings":"AAEA,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAChD,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAE3C,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAM5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAkBvE,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,aAAa;IAC/C,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC/C,oBAAoB,EAAE,OAAO,EAAE,CAAC;IAChC,cAAc,EAAE,OAAO,CAAC;IACxB,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC7C,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAChD,cAAc,EAAE,qBAAqB,GAAG,IAAI,CAAC;gBAEjC,IAAI,EAAE,MAAM;IAiBxB,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,eAAe,IAAI,MAAM,CAM5B;IAED,aAAa,IAAI,SAAS,EAAE;IAI5B,WAAW,IAAI,UAAU,EAAE;IAM3B,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAI3C,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAQnF;;;;;;;;;;OAUG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,YAAY,EAAE,GAAG,QAAQ;IA2GlG,MAAM,CAAC,oBAAoB,CACvB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GACtC,qBAAqB,GAAG,IAAI;IA2D/B,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;IAK5D,SAAS,IAAI,OAAO;IAKpB,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAqB3C"} \ No newline at end of file diff --git a/dist/datamodel/node/container/SlddNode.js b/dist/datamodel/node/container/SlddNode.js index 0b0b97b6..79ab2df2 100644 --- a/dist/datamodel/node/container/SlddNode.js +++ b/dist/datamodel/node/container/SlddNode.js @@ -7,7 +7,7 @@ import PropRelease from '../../prop/PropRelease.js'; import PropFileFormat from '../../prop/PropFileFormat.js'; import PropNumberOfEntries from '../../prop/PropNumberOfEntries.js'; import { slddChunkContent } from '../../parser/SlddContent.js'; -import { SC_PART } from '../../parser/ScCatalog.js'; +import { SC_PART, emptyCatalogBag } from '../../parser/ScCatalog.js'; import { DATA_PART_KEY, TEXT_CONTENT, TEXT_PARTS } from '../../parser/SlddParts.js'; import { takeDecodeFailures } from '../../parser/EncodedValue.js'; import { heldByTextDictionary } from '../../parser/MatWriter.js'; @@ -204,8 +204,9 @@ export default class SlddNode extends ContainerNode { // measurement, and `DERIVED_KIND_BY_CLASS` for the fallback it licenses. return null; } - const interfaces = {}; - const modeledDataTypes = {}; + // Prototype-less, like the binary reader's: see `classificationOf`. + const interfaces = emptyCatalogBag(); + const modeledDataTypes = emptyCatalogBag(); const readName = (item) => { const c = item.content || {}; return c.p_Name || ''; diff --git a/dist/datamodel/node/container/SlddNode.js.map b/dist/datamodel/node/container/SlddNode.js.map index 2039fdf3..48af3cbc 100644 --- a/dist/datamodel/node/container/SlddNode.js.map +++ b/dist/datamodel/node/container/SlddNode.js.map @@ -1 +1 @@ -{"version":3,"file":"SlddNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/container/SlddNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"SlddNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/container/SlddNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/parser/ScCatalog.d.ts b/dist/datamodel/parser/ScCatalog.d.ts index 91a7dcb1..c8283d51 100644 --- a/dist/datamodel/parser/ScCatalog.d.ts +++ b/dist/datamodel/parser/ScCatalog.d.ts @@ -6,6 +6,12 @@ export interface SystemComposerCatalog { } export declare const SC_TYPE_TO_CLASSIFICATION: Record; export declare function classificationOf(catalog: SystemComposerCatalog | null | undefined, entryName: string): string | null; +/** + * An empty name-keyed bag for the catalog: no prototype, so a name is only ever an own + * key. `__proto__` in particular is stored like any other name rather than handed to + * `Object.prototype`'s setter, which drops a string without a word. + */ +export declare function emptyCatalogBag(): Record; /** Where a name is written in the source text, as a half-open span. */ export interface ScNameSite { start: number; @@ -29,7 +35,14 @@ export interface ScDefinition { container: 'interfaces' | 'modeledDataTypes'; nameSites: ScNameSite[]; } -/** Fold definitions into the catalog the model classifies entries with. */ +/** + * Fold definitions into the catalog the model classifies entries with. + * + * The bag is chosen by comparing `container`, never by indexing with it: this function + * is public, a JS caller is not held to the union, and `catalog['__proto__'][name] = type` + * writes onto `Object.prototype` itself. A container outside the union names no bag and + * is skipped. + */ export declare function catalogFromDefinitions(defs: ScDefinition[]): SystemComposerCatalog; /** * Scan the MF0 XML of a compressed-binary dictionary's interface dictionary. diff --git a/dist/datamodel/parser/ScCatalog.d.ts.map b/dist/datamodel/parser/ScCatalog.d.ts.map index d7226a8c..4a6aacb7 100644 --- a/dist/datamodel/parser/ScCatalog.d.ts.map +++ b/dist/datamodel/parser/ScCatalog.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"ScCatalog.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/ScCatalog.ts"],"names":[],"mappings":"AA8BA,eAAO,MAAM,OAAO,gDAAgD,CAAC;AAKrE,eAAO,MAAM,WAAW,oDAAmB,CAAC;AAM5C,MAAM,WAAW,qBAAqB;IAIlC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAGnC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5C;AAKD,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAS5D,CAAC;AAKF,wBAAgB,gBAAgB,CAC5B,OAAO,EAAE,qBAAqB,GAAG,IAAI,GAAG,SAAS,EACjD,SAAS,EAAE,MAAM,GAClB,MAAM,GAAG,IAAI,CAMf;AAkCD,uEAAuE;AACvE,MAAM,WAAW,UAAU;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,SAAS,EAAE,YAAY,GAAG,kBAAkB,CAAC;IAC7C,SAAS,EAAE,UAAU,EAAE,CAAC;CAC3B;AAED,2EAA2E;AAC3E,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,qBAAqB,CAQlF;AAsBD;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,EAAE,CAsDrD;AAqBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE,CAiB3D;AAkND,uFAAuF;AACvF,MAAM,WAAW,UAAU;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CACzB,IAAI,EAAE,YAAY,EAAE,EACpB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GAChB,UAAU,EAAE,CASd;AAED,wFAAwF;AACxF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,CAMtE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAC3B,OAAO,EAAE,qBAAqB,GAAG,IAAI,GAAG,SAAS,EACjD,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GAChB,OAAO,CAcT"} \ No newline at end of file +{"version":3,"file":"ScCatalog.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/ScCatalog.ts"],"names":[],"mappings":"AA8BA,eAAO,MAAM,OAAO,gDAAgD,CAAC;AAKrE,eAAO,MAAM,WAAW,oDAAmB,CAAC;AAM5C,MAAM,WAAW,qBAAqB;IAIlC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAGnC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5C;AAKD,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAS5D,CAAC;AAYF,wBAAgB,gBAAgB,CAC5B,OAAO,EAAE,qBAAqB,GAAG,IAAI,GAAG,SAAS,EACjD,SAAS,EAAE,MAAM,GAClB,MAAM,GAAG,IAAI,CAMf;AAMD;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAExD;AAkCD,uEAAuE;AACvE,MAAM,WAAW,UAAU;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,SAAS,EAAE,YAAY,GAAG,kBAAkB,CAAC;IAC7C,SAAS,EAAE,UAAU,EAAE,CAAC;CAC3B;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,qBAAqB,CAalF;AAsBD;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,EAAE,CAsDrD;AAqBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE,CAiB3D;AAkND,uFAAuF;AACvF,MAAM,WAAW,UAAU;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CACzB,IAAI,EAAE,YAAY,EAAE,EACpB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GAChB,UAAU,EAAE,CASd;AAED,wFAAwF;AACxF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,CAMtE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAC3B,OAAO,EAAE,qBAAqB,GAAG,IAAI,GAAG,SAAS,EACjD,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GAChB,OAAO,CAcT"} \ No newline at end of file diff --git a/dist/datamodel/parser/ScCatalog.js b/dist/datamodel/parser/ScCatalog.js index adaa8f4f..4381e772 100644 --- a/dist/datamodel/parser/ScCatalog.js +++ b/dist/datamodel/parser/ScCatalog.js @@ -48,12 +48,30 @@ export const SC_TYPE_TO_CLASSIFICATION = { // Resolve the classification token (e.g. 'DataInterface', 'StructType') for an // entry name, or null if the catalog doesn't classify it. Interfaces are checked // before modeled data types. +// +// Every lookup is of an OWN key. The names are user-chosen MATLAB identifiers, and +// `toString`, `constructor`, `valueOf` and the rest of `Object.prototype`'s members are +// all valid ones: on a plain object `interfaces['toString']` is the inherited function, +// which is truthy, so a struct type of that name never reached `modeledDataTypes` and +// read as a Data Interface. The two readers build prototype-less bags, but the shape is +// public and a host's own catalog — or a clone of ours — has a prototype again. export function classificationOf(catalog, entryName) { if (!catalog) { return null; } - const scType = catalog.interfaces[entryName] || catalog.modeledDataTypes[entryName]; - return (scType && SC_TYPE_TO_CLASSIFICATION[scType]) || null; + const scType = ownValue(catalog.interfaces, entryName) || ownValue(catalog.modeledDataTypes, entryName); + return (scType && ownValue(SC_TYPE_TO_CLASSIFICATION, scType)) || null; +} +function ownValue(bag, key) { + return Object.prototype.hasOwnProperty.call(bag, key) ? bag[key] : undefined; +} +/** + * An empty name-keyed bag for the catalog: no prototype, so a name is only ever an own + * key. `__proto__` in particular is stored like any other name rather than handed to + * `Object.prototype`'s setter, which drops a string without a word. + */ +export function emptyCatalogBag() { + return Object.create(null); } // NEITHER reader warns when the catalog yields no definitions, whether the part is // absent or present-and-empty. Both used to raise `part-unreadable` here, on the @@ -84,12 +102,25 @@ export function classificationOf(catalog, entryName) { const IFACE_KEY = 'p_Interfaces'; const MODELED_KEY = 'p_ModeledDataTypes'; const DESCRIPTOR_TYPE = 'systemcomposer.property.ValueTypeDescriptor'; -/** Fold definitions into the catalog the model classifies entries with. */ +/** + * Fold definitions into the catalog the model classifies entries with. + * + * The bag is chosen by comparing `container`, never by indexing with it: this function + * is public, a JS caller is not held to the union, and `catalog['__proto__'][name] = type` + * writes onto `Object.prototype` itself. A container outside the union names no bag and + * is skipped. + */ export function catalogFromDefinitions(defs) { - const catalog = { interfaces: {}, modeledDataTypes: {} }; + const catalog = { interfaces: emptyCatalogBag(), modeledDataTypes: emptyCatalogBag() }; defs.forEach((def) => { - if (def.name) { - catalog[def.container][def.name] = def.type; + if (!def.name) { + return; + } + if (def.container === 'interfaces') { + catalog.interfaces[def.name] = def.type; + } + else if (def.container === 'modeledDataTypes') { + catalog.modeledDataTypes[def.name] = def.type; } }); return catalog; diff --git a/dist/datamodel/parser/ScCatalog.js.map b/dist/datamodel/parser/ScCatalog.js.map index a34e737c..7c4f2e39 100644 --- a/dist/datamodel/parser/ScCatalog.js.map +++ b/dist/datamodel/parser/ScCatalog.js.map @@ -1 +1 @@ -{"version":3,"file":"ScCatalog.js","sourceRoot":"","sources":["../../../src/datamodel/parser/ScCatalog.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"ScCatalog.js","sourceRoot":"","sources":["../../../src/datamodel/parser/ScCatalog.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/datamodel/node/container/SectionNode.ts b/src/datamodel/node/container/SectionNode.ts index 6408da15..982fd6c6 100644 --- a/src/datamodel/node/container/SectionNode.ts +++ b/src/datamodel/node/container/SectionNode.ts @@ -76,18 +76,29 @@ const ALLOWED_TYPES: Record = { other: ['MatlabVariable', 'Simulink.VariantExpression', 'Simulink.VariantVariable', 'CustomObject'], }; +// A new entry's metadata uuid: 32 random lowercase hex nibbles as 8-4-4-4-12, with no +// version or variant nibble fixed, which is the shape this function has always written. +// +// The uuid is an identity, not a secret. It only has to be unique: it tells two +// same-named entries apart (see entrySelector.ts), and the file stores it in plain text. +// It does not come from `Math.random`, because a uuid drawn from that published the +// generator's state: every nibble was four bits of V8's xorshift128+, and two uuids drawn +// back to back are enough to solve for its 128-bit state and predict the next uuid +// exactly (5 of 5 runs, Node 24). `crypto.getRandomValues` publishes nothing, and it is a +// global in every runtime this barrel runs in: Node 19+, so every VS Code extension host, +// browsers, and the Web Worker that hosts the web extension. Unlike `crypto.randomUUID`, +// it does not need a secure context, and it does not fix the version and variant nibbles. export function generateUuid(): string { const hex = '0123456789abcdef'; - const segments = [8, 4, 4, 4, 12]; - return segments - .map(function (len) { - let s = ''; - for (let i = 0; i < len; i++) { - s += hex[Math.floor(Math.random() * 16)]; - } - return s; - }) - .join('-'); + const bytes = crypto.getRandomValues(new Uint8Array(16)); + let s = ''; + for (let i = 0; i < bytes.length; i++) { + if (i === 4 || i === 6 || i === 8 || i === 10) { + s += '-'; + } + s += hex[bytes[i] >> 4] + hex[bytes[i] & 15]; + } + return s; } export default class SectionNode extends ContainerNode { diff --git a/src/datamodel/node/container/SlddNode.ts b/src/datamodel/node/container/SlddNode.ts index 501672be..1c70173f 100644 --- a/src/datamodel/node/container/SlddNode.ts +++ b/src/datamodel/node/container/SlddNode.ts @@ -12,7 +12,7 @@ import PropNumberOfEntries from '../../prop/PropNumberOfEntries.js'; import { slddChunkContent } from '../../parser/SlddContent.js'; import type { ParseWarning } from '../../parser/ParseWarning.js'; import type { SystemComposerCatalog } from '../../parser/ScCatalog.js'; -import { SC_PART } from '../../parser/ScCatalog.js'; +import { SC_PART, emptyCatalogBag } from '../../parser/ScCatalog.js'; import { DATA_PART_KEY, TEXT_CONTENT, TEXT_PARTS } from '../../parser/SlddParts.js'; import { takeDecodeFailures } from '../../parser/EncodedValue.js'; import { heldByTextDictionary } from '../../parser/MatWriter.js'; @@ -242,8 +242,9 @@ export default class SlddNode extends ContainerNode { return null; } - const interfaces: Record = {}; - const modeledDataTypes: Record = {}; + // Prototype-less, like the binary reader's: see `classificationOf`. + const interfaces = emptyCatalogBag(); + const modeledDataTypes = emptyCatalogBag(); const readName = (item: Record): string => { const c = (item.content as Record) || {}; diff --git a/src/datamodel/parser/ScCatalog.ts b/src/datamodel/parser/ScCatalog.ts index 8fc447f2..4771deab 100644 --- a/src/datamodel/parser/ScCatalog.ts +++ b/src/datamodel/parser/ScCatalog.ts @@ -66,6 +66,13 @@ export const SC_TYPE_TO_CLASSIFICATION: Record = { // Resolve the classification token (e.g. 'DataInterface', 'StructType') for an // entry name, or null if the catalog doesn't classify it. Interfaces are checked // before modeled data types. +// +// Every lookup is of an OWN key. The names are user-chosen MATLAB identifiers, and +// `toString`, `constructor`, `valueOf` and the rest of `Object.prototype`'s members are +// all valid ones: on a plain object `interfaces['toString']` is the inherited function, +// which is truthy, so a struct type of that name never reached `modeledDataTypes` and +// read as a Data Interface. The two readers build prototype-less bags, but the shape is +// public and a host's own catalog — or a clone of ours — has a prototype again. export function classificationOf( catalog: SystemComposerCatalog | null | undefined, entryName: string, @@ -73,8 +80,21 @@ export function classificationOf( if (!catalog) { return null; } - const scType = catalog.interfaces[entryName] || catalog.modeledDataTypes[entryName]; - return (scType && SC_TYPE_TO_CLASSIFICATION[scType]) || null; + const scType = ownValue(catalog.interfaces, entryName) || ownValue(catalog.modeledDataTypes, entryName); + return (scType && ownValue(SC_TYPE_TO_CLASSIFICATION, scType)) || null; +} + +function ownValue(bag: Record, key: string): string | undefined { + return Object.prototype.hasOwnProperty.call(bag, key) ? bag[key] : undefined; +} + +/** + * An empty name-keyed bag for the catalog: no prototype, so a name is only ever an own + * key. `__proto__` in particular is stored like any other name rather than handed to + * `Object.prototype`'s setter, which drops a string without a word. + */ +export function emptyCatalogBag(): Record { + return Object.create(null) as Record; } // NEITHER reader warns when the catalog yields no definitions, whether the part is @@ -134,12 +154,24 @@ export interface ScDefinition { nameSites: ScNameSite[]; } -/** Fold definitions into the catalog the model classifies entries with. */ +/** + * Fold definitions into the catalog the model classifies entries with. + * + * The bag is chosen by comparing `container`, never by indexing with it: this function + * is public, a JS caller is not held to the union, and `catalog['__proto__'][name] = type` + * writes onto `Object.prototype` itself. A container outside the union names no bag and + * is skipped. + */ export function catalogFromDefinitions(defs: ScDefinition[]): SystemComposerCatalog { - const catalog: SystemComposerCatalog = { interfaces: {}, modeledDataTypes: {} }; + const catalog: SystemComposerCatalog = { interfaces: emptyCatalogBag(), modeledDataTypes: emptyCatalogBag() }; defs.forEach((def) => { - if (def.name) { - catalog[def.container][def.name] = def.type; + if (!def.name) { + return; + } + if (def.container === 'interfaces') { + catalog.interfaces[def.name] = def.type; + } else if (def.container === 'modeledDataTypes') { + catalog.modeledDataTypes[def.name] = def.type; } }); return catalog; diff --git a/test/scCatalog.test.ts b/test/scCatalog.test.ts index a903c95f..9d4cf8bd 100644 --- a/test/scCatalog.test.ts +++ b/test/scCatalog.test.ts @@ -33,6 +33,7 @@ import { parseBinarySlddParts, applyScEdits, catalogFromDefinitions, + classificationOf, scRenameEdits, scanScJsonText, scanScXml, @@ -414,3 +415,130 @@ describe('the in-memory catalog follows a rename', () => { expect(sldd.systemComposer).toBeNull(); }); }); + +// The catalog is keyed by a name the USER chose, and a plain `{}` answers a lookup of +// every name `Object.prototype` carries. `toString`, `constructor`, `valueOf`, +// `hasOwnProperty`… are all valid MATLAB identifiers, so a struct type can be called one +// — and `catalog.interfaces[name] || catalog.modeledDataTypes[name]` then read the +// inherited FUNCTION off the interface bag, never consulted the modeled one, and the +// struct type came back a plain Data Interface with a data-interface icon. An interface of +// the same name was unaffected (its own key shadows the inherited one), which is why it +// went unnoticed: only the SECOND bag is reached through a miss on the first. +describe('a definition named after an Object.prototype member', () => { + const INHERITED = ['toString', 'constructor', 'valueOf', 'hasOwnProperty', 'isPrototypeOf']; + const STRUCT = 'systemcomposer.property.StructDataType'; + const IFACE = 'systemcomposer.architecture.model.interface.CompositeDataInterface'; + + // The definition `from` renamed in BOTH the entry and the catalog, so the file is one + // MATLAB could have written: the rename the host carries, applied before the read. + function binaryRenamed(from: string, name: string): SlddNode { + const files = unzipSync(new Uint8Array(readFileSync(fixture('arch_binary.sldd')))); + const zipMeta: Record = {}; + Object.entries(files).forEach(([member, data]) => { + if (member !== 'data/chunk0.xml') { + zipMeta[member] = data; + } + }); + const xml = new TextDecoder().decode(zipMeta[SC_PART_XML]); + zipMeta[SC_PART_XML] = new TextEncoder().encode( + applyScEdits(xml, scRenameEdits(scanScXml(xml), from, name)), + ); + const chunk = new TextDecoder().decode(files['data/chunk0.xml']).replace( + new RegExp(`(

)${from}(

\\s*

, 'arch.sldd'); + } + + it.each(INHERITED)('reads a struct type called %s as a struct type, in either format', (name) => { + for (const sldd of [binaryRenamed('StructType', name), textRenamed('StructType', name)]) { + const entry = entryNamed(sldd, name); + expect(entry.kind).toBe('Struct Type'); + expect(entry.classification).toBe('StructType'); + expect(entry.isStructType).toBe(true); + } + }); + + it('keeps a struct type a struct type when the user renames it to one', () => { + // The UI path: `toString` passes `validateMatlabName`, the catalog re-keys, and the + // narrow repaint rebuilds the entry through the catalog. + const sldd = loadBinarySldd('arch_binary.sldd'); + const entry = entryNamed(sldd, 'StructType'); + expect(entry.setProperty('Name', 'toString')).toBe(true); + + const rebuilt = entry.parent.parseEntry(entry.serialize(), sldd.systemComposer); + entry.parent.removeChild(rebuilt); + expect(rebuilt.kind).toBe('Struct Type'); + }); + + it('classifies by own keys alone, whoever built the catalog', () => { + // A host may build the (public) catalog shape itself, or clone the one it holds — + // either way it gets an object WITH a prototype back. + const catalog = catalogFromDefinitions( + INHERITED.map((name) => ({ name, type: STRUCT, container: 'modeledDataTypes' as const, nameSites: [] })), + ); + for (const copy of [catalog, structuredClone(catalog), JSON.parse(JSON.stringify(catalog))]) { + INHERITED.forEach((name) => expect(classificationOf(copy, name)).toBe('StructType')); + } + // Built by hand, out of plain object literals: no reader and no clone involved. + expect(classificationOf({ interfaces: {}, modeledDataTypes: { toString: STRUCT } }, 'toString')) + .toBe('StructType'); + const handBuilt = { + interfaces: {} as Record, + modeledDataTypes: Object.fromEntries(INHERITED.map((name) => [name, STRUCT])), + }; + INHERITED.forEach((name) => expect(classificationOf(handBuilt, name)).toBe('StructType')); + // And a name the catalog does not list is unclassified, inherited or not. + expect(classificationOf({ interfaces: {}, modeledDataTypes: {} }, 'toString')).toBeNull(); + // A type the vocabulary does not have is nothing, even one spelled like a member. + expect(classificationOf( + catalogFromDefinitions([{ name: 'X', type: 'constructor', container: 'interfaces', nameSites: [] }]), + 'X', + )).toBeNull(); + }); + + it('records a name the reader does not validate, rather than handing it to a setter', () => { + // MATLAB cannot write `__proto__` (an identifier starts with a letter) but the + // readers take names raw, and on a plain `{}` this assignment was silently dropped. + const catalog = catalogFromDefinitions([ + { name: '__proto__', type: IFACE, container: 'interfaces', nameSites: [] }, + ]); + expect(Object.keys(catalog.interfaces)).toEqual(['__proto__']); + expect(classificationOf(catalog, '__proto__')).toBe('DataInterface'); + }); + + // The text reader builds its two bags itself, in `SlddNode._parseSystemComposer`, not + // through `catalogFromDefinitions`. Every other inherited name is an own key once it is + // written, so the own-key lookup reads it right off a plain `{}` too, and the cases above + // pass either way. `__proto__` is the one name a plain `{}` still loses, because writing + // it calls the prototype setter, which drops a string. MATLAB cannot write that name (see + // above), but the text reader takes names raw, as the binary one does. + it.each([ + ['struct type', 'StructType', 'modeledDataTypes', 'StructType'], + ['data interface', 'DataInterface', 'interfaces', 'DataInterface'], + ] as const)('records a %s named __proto__ in a text dictionary as the binary reader does', (_, from, bag, cls) => { + const text = textRenamed(from, '__proto__'); + expect(Object.keys(text.systemComposer![bag])).toContain('__proto__'); + expect(entryNamed(text, '__proto__').classification).toBe(cls); + expect(text.systemComposer).toEqual(binaryRenamed(from, '__proto__').systemComposer); + }); + + it('cannot reach Object.prototype through a container outside the union', () => { + // `catalogFromDefinitions` is public, and a JS caller is not held to the type. + try { + catalogFromDefinitions([ + { name: 'scCatalogPolluted', type: 'yes', container: '__proto__' as never, nameSites: [] }, + ]); + expect(({} as Record).scCatalogPolluted).toBeUndefined(); + } finally { + delete (Object.prototype as Record).scCatalogPolluted; + } + }); +}); diff --git a/test/sectionNode.test.ts b/test/sectionNode.test.ts index 9344ccee..9cc044a8 100644 --- a/test/sectionNode.test.ts +++ b/test/sectionNode.test.ts @@ -15,7 +15,7 @@ // 2. getAllowedTypes returning [] means "no restriction", not "nothing allowed". // A section whose key is not in ALLOWED_TYPES therefore accepts everything; // inverting that reading would make such a section silently unusable. -import { describe, it, expect } from 'vitest'; +import { describe, it, expect, vi } from 'vitest'; import SectionNode from '../src/datamodel/node/container/SectionNode.js'; import SlddNode from '../src/datamodel/node/container/SlddNode.js'; import { generateUuid } from '../src/datamodel/node/container/SectionNode.js'; @@ -523,7 +523,30 @@ describe('generateUuid', () => { }); it('does not repeat across many calls', () => { - const seen = new Set(Array.from({ length: 200 }, () => generateUuid())); - expect(seen.size).toBe(200); + const seen = new Set(Array.from({ length: 10_000 }, () => generateUuid())); + expect(seen.size).toBe(10_000); + }); + + it('fixes no nibble: every position is random, as it has always been', () => { + // Not an RFC 4122 v4 uuid, and not to become one: `crypto.randomUUID` would pin the + // version nibble to 4 and the variant nibble to 8-b, which is a different shape from + // every uuid this function has written. Over 10,000 uuids each of the 32 positions + // takes all 16 values; one missing a value by chance is about 3e-278. + const seen = Array.from({ length: 32 }, () => new Set()); + for (let n = 0; n < 10_000; n++) { + [...generateUuid().replace(/-/g, '')].forEach((nibble, i) => seen[i].add(nibble)); + } + expect(seen.map((values) => values.size)).toEqual(Array(32).fill(16)); + }); + + it('draws nothing from Math.random, whose state a uuid would publish', () => { + // 32 nibbles of xorshift128+ output per uuid: two in a row determine the generator. + const random = vi.spyOn(Math, 'random'); + try { + generateUuid(); + expect(random).not.toHaveBeenCalled(); + } finally { + random.mockRestore(); + } }); });