@ifc-lite/codegen 1.15.2 → 1.15.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
1
 
2
- > @ifc-lite/codegen@1.15.2 build /home/runner/work/ifc-lite/ifc-lite/packages/codegen
2
+ > @ifc-lite/codegen@1.15.4 build /home/runner/work/ifc-lite/ifc-lite/packages/codegen
3
3
  > pnpm exec tsc
4
4
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,119 @@
1
1
  # @ifc-lite/codegen
2
2
 
3
+ ## 1.15.4
4
+
5
+ ### Patch Changes
6
+
7
+ - [#1151](https://github.com/LTplus-AG/ifc-lite/pull/1151) [`bfd9004`](https://github.com/LTplus-AG/ifc-lite/commit/bfd9004daa17f481a7b33b5c3c11f620e6cd894d) Thanks [@louistrue](https://github.com/louistrue)! - De-duplicate the STEP serializer into a single source of truth. The
8
+ schema-agnostic STEP serialization logic (`serializeValue`, `generateHeader`,
9
+ `parseStepValue`, `ref`/`enumVal`/`isEntityRef`/`isEnumValue`, and the
10
+ registry-injected `toStepLineWithRegistry` / `generateStepFileWithRegistry`)
11
+ previously existed as four hand-synced copies — the codegen template plus three
12
+ generated `serializers.ts` files — which had already silently drifted (the
13
+ runtime copy carried a `?? []` hardening the template lacked). It now lives once
14
+ in `@ifc-lite/data`; the per-schema bundles (parser runtime + codegen outputs)
15
+ are thin re-exports that only bind their own `SCHEMA_REGISTRY` to the
16
+ registry-coupled helpers, so the copies can never diverge again. A codegen test
17
+ asserts the generated bundle stays a thin re-export rather than re-inlining
18
+ logic.
19
+
20
+ Also fixes the broken `generate:ifc4` script (it pointed at a non-existent
21
+ `schemas/IFC4.exp`; the real file is `schemas/IFC4_ADD2_TC1.exp`). No public
22
+ behaviour change: `@ifc-lite/parser` re-exports the same serializer symbols as
23
+ before; `@ifc-lite/data` gains the shared primitives; `@ifc-lite/codegen` now
24
+ declares `@ifc-lite/data` as a dependency since the generated bundle imports it.
25
+
26
+ - [#1143](https://github.com/LTplus-AG/ifc-lite/pull/1143) [`248f2c0`](https://github.com/LTplus-AG/ifc-lite/commit/248f2c09a4d61fa27dfeaba5511a2a641d4cd278) Thanks [@louistrue](https://github.com/louistrue)! - Preserve source IFC HEADER fields on round-trip export. Re-exporting an
27
+ imported file previously regenerated a fresh ifc-lite header, silently dropping
28
+ the source `FILE_DESCRIPTION` items (any `ViewDefinition [...]` label and vendor
29
+ identifier / coordinate-reference strings) and flattening the exact
30
+ `FILE_SCHEMA` token (e.g. `IFC4X3_ADD2` → `IFC4X3`, which some toolchains
31
+ reject).
32
+
33
+ The parser now captures the verbatim HEADER onto a new
34
+ `IfcDataStore.sourceHeader` (`IfcSourceHeader`, exported from `@ifc-lite/data`;
35
+ parser also exports `parseSourceHeader`), threaded through the worker transport.
36
+ `StepExporter` reproduces the source `FILE_DESCRIPTION` items and the exact
37
+ `FILE_SCHEMA` token when not converting schemas, falling back to parsing the
38
+ source bytes for cache-restored stores. Provenance stays honest:
39
+ `preprocessor_version` is set to `ifc-lite` while the source authoring tool is
40
+ kept as `originating_system`, and when mutations exist exactly one
41
+ `Re-exported by ifc-lite, N modification(s)` item is appended without removing
42
+ the source items. `generateHeader` now accepts description/author/organization
43
+ arrays plus a free-form schema token and STEP-escapes all fields; it also emits
44
+ a properly parenthesised `FILE_DESCRIPTION` list (the prior single-string form
45
+ was malformed STEP). Created-from-scratch (`IfcCreator`) and federated/merged
46
+ exports are unaffected — they keep their own provenance headers by design.
47
+
48
+ - Updated dependencies [[`bfd9004`](https://github.com/LTplus-AG/ifc-lite/commit/bfd9004daa17f481a7b33b5c3c11f620e6cd894d), [`248f2c0`](https://github.com/LTplus-AG/ifc-lite/commit/248f2c09a4d61fa27dfeaba5511a2a641d4cd278), [`ddae2b0`](https://github.com/LTplus-AG/ifc-lite/commit/ddae2b0024f071d00f9e6e4b77e0be3965412ec3)]:
49
+ - @ifc-lite/data@2.1.0
50
+
51
+ ## 1.15.3
52
+
53
+ ### Patch Changes
54
+
55
+ - [#946](https://github.com/LTplus-AG/ifc-lite/pull/946) [`6378998`](https://github.com/LTplus-AG/ifc-lite/commit/6378998ec146f7f9297ef5fcc5953b155fd6b5e0) Thanks [@louistrue](https://github.com/louistrue)! - Fix a batch of verified findings from a full-codebase review (security, correctness,
56
+ data-loss, and resource/memory leaks). Highlights:
57
+
58
+ **Security**
59
+
60
+ - collab-server: a malformed WebSocket frame no longer crashes the whole process
61
+ (decode is wrapped; a bad frame is rejected/audited instead of throwing).
62
+ - mcp: the local HTTP transport now validates `Host`/`Origin` and no longer sends a
63
+ wildcard `Access-Control-Allow-Origin`, closing a DNS-rebinding/CSRF hole; the
64
+ `AuthScope.modelIds` allowlist is now enforced at model resolution.
65
+ - server-bin: `extractZip` uses `execFileSync` (argv, no shell), removing command
66
+ injection via archive/destination paths.
67
+ - export / sdk / cli / mcp / lists / viewer CSV exporters now neutralize spreadsheet
68
+ formula injection (CWE-1236) consistently.
69
+ - create-ifc-lite: validates the project name (no path traversal) and drops the
70
+ unused `execSync`-based downloader.
71
+ - embed-sdk: inbound `postMessage` now validates `event.origin`.
72
+
73
+ **Correctness / data-loss**
74
+
75
+ - parser: `lengthUnitScale` survives the worker transport; the nested STEP list
76
+ parser is string-aware (commas/parens inside quoted values no longer mis-split).
77
+ - mutations: deleting a property from a session-created pset and replaying
78
+ `UPDATE_ATTRIBUTE` / `CREATE_PROPERTY_SET` mutations now work.
79
+ - export: merged-export ID remapping no longer rewrites `#N` inside quoted strings.
80
+ - drawing-2d: GPU section cutter triangle upload/readback use correct WGSL std-layout
81
+ offsets and strides.
82
+ - ifcx: cyclic children no longer abort the parse; spatial children round-trip; the
83
+ mesh transform guards a zero/non-finite homogeneous `w`.
84
+ - data / cache: a `NULL` string property value stays `null` instead of becoming `""`.
85
+ - pointcloud, bcf, server-client, query, viewer-core, viewer store/federation: assorted
86
+ decoding, federation-id, and selection-state fixes.
87
+
88
+ **Resource / memory leaks**
89
+
90
+ - geometry, query (DuckDB), renderer (GPU buffers), collab (federation presence),
91
+ sandbox (host log capture + runtime), mcp (clash mesh cache), server-bin (signal
92
+ listeners), and the viewer renderer on unmount now release resources deterministically.
93
+
94
+ **Hardening (apps, not published)**
95
+
96
+ - server: a dedicated `server-release` Cargo profile (`panic = "unwind"`) plus a
97
+ `CatchPanicLayer` contain a malformed-IFC parse panic to the offending request
98
+ instead of aborting the whole server.
99
+ - desktop (Tauri): a Content-Security-Policy is set, and unused `shell:*` /
100
+ `fs:allow-write|mkdir|remove` capabilities (and the unused shell plugin) are removed.
101
+
102
+ **Second pass** (additional verified findings)
103
+
104
+ - collab-server: S3 log load now follows `ListObjectsV2` pagination (no dropped frames);
105
+ awareness frames are size-capped + rate-limited; path-lock verify runs after role/rate-limit;
106
+ the blob route requires auth and `/metrics` can be token-gated.
107
+ - server-bin: downloaded binaries are SHA-256 verified against a release sidecar (fail-closed on
108
+ mismatch, warn-if-absent for older releases).
109
+ - extensions: inner-ring capability check fails _closed_ for unknown namespaces; signing
110
+ canonicalization is now injective (length-prefixed).
111
+ - correctness/leaks: mutations quantity type+unit preserved on replay; `findByProperty` boolean
112
+ comparisons; Parquet REAL columns kept as Float64; blob GC fail-safe on missing `uploadedAt`;
113
+ spatial-hierarchy + codegen cycle guards; BVH NaN edge; bSDD/playground caches bounded;
114
+ point-cloud GPU asset freed on federation error; mcp `parseColor` rejects non-hex; bcf/SVG/STEP
115
+ output escaping; and more.
116
+
3
117
  ## 1.15.2
4
118
 
5
119
  ### Patch Changes
package/INTEGRATION.md CHANGED
@@ -44,6 +44,12 @@ npm run generate:ifc4x3
44
44
 
45
45
  Generated files: `packages/codegen/generated/ifc4/` or `generated/ifc4x3/`
46
46
 
47
+ > **Runtime dependency:** the generated `serializers.ts` is a thin re-export of
48
+ > the schema-agnostic STEP serializer in `@ifc-lite/data` (it only binds the
49
+ > bundle's `SCHEMA_REGISTRY`). Any project that consumes a generated bundle must
50
+ > therefore have `@ifc-lite/data` installed. This keeps the serialization logic
51
+ > in one place so the per-schema copies can never drift.
52
+
47
53
  ### Step 2: Copy Generated Files to Parser
48
54
 
49
55
  Option A: **Direct Copy** (recommended for testing)
package/README.md CHANGED
@@ -1,61 +1,57 @@
1
1
  # @ifc-lite/codegen
2
2
 
3
- TypeScript code generator from IFC EXPRESS schemas.
3
+ TypeScript code generator for IFC EXPRESS schemas. Parses official `.exp` schema files from buildingSMART and emits typed TypeScript: 1000+ entity interfaces with full inheritance, schema metadata for runtime introspection, and exhaustive enum unions.
4
4
 
5
- ## Overview
5
+ This is a build-time tool — you don't depend on it at runtime. The generated output ships with `@ifc-lite/parser`.
6
6
 
7
- This package parses official IFC EXPRESS schema files (.exp) from buildingSMART and generates:
8
- - TypeScript entity interfaces with full inheritance
9
- - Schema registry with type metadata
10
- - Attribute definitions and type information
11
- - Enum definitions
7
+ ## Installation
12
8
 
13
- ## Why?
9
+ ```bash
10
+ npm install --save-dev @ifc-lite/codegen
11
+ ```
14
12
 
15
- Instead of manually implementing 1000+ IFC entity types, we generate them automatically from the official schemas. This gives us:
16
- - ✅ 100% schema coverage
17
- - ✅ Automatic updates when schemas change
18
- - ✅ Type-safe TypeScript
19
- - ✅ Consistent with IFC standard
13
+ ## Generate from the official IFC schema
14
+
15
+ ```bash
16
+ # IFC4 (776 entities)
17
+ npx ifc-lite-codegen ./schemas/IFC4.exp --out ./src/generated
20
18
 
21
- ## Usage
19
+ # IFC4X3 (876 entities, includes infrastructure: roads, bridges, alignments)
20
+ npx ifc-lite-codegen ./schemas/IFC4X3.exp --out ./src/generated
21
+ ```
22
22
 
23
- ### Generate code from schema
23
+ Generated files (one per output directory):
24
24
 
25
- ```bash
26
- npm run generate:ifc4 # Generate from IFC4 schema
27
- npm run generate:ifc4x3 # Generate from IFC4X3 schema
25
+ ```
26
+ src/generated/
27
+ ├── entities.ts ← TypeScript interfaces for every entity
28
+ ├── schema-registry.ts ← runtime metadata (parent, attributes, ...)
29
+ ├── types.ts ← enum unions and SELECT types
30
+ └── index.ts ← barrel export
28
31
  ```
29
32
 
30
- ### Programmatic usage
33
+ ## Programmatic usage
31
34
 
32
35
  ```typescript
33
36
  import { parseExpressSchema, generateTypeScript } from '@ifc-lite/codegen';
37
+ import { writeFile } from 'node:fs/promises';
34
38
 
35
39
  const schema = parseExpressSchema('./schemas/IFC4.exp');
36
- const code = generateTypeScript(schema);
37
- ```
38
40
 
39
- ## Architecture
41
+ console.log(`Parsed ${schema.entities.length} entities, ${schema.types.length} types`);
40
42
 
41
- ```
42
- IFC4.exp (EXPRESS schema)
43
- ↓
44
- ExpressParser
45
- ↓
46
- Schema AST (entities, types, enums)
47
- ↓
48
- TypeScriptGenerator
49
- ↓
50
- Generated files:
51
- - entities.ts (interfaces)
52
- - schema-registry.ts (metadata)
53
- - types.ts (enums, selects)
43
+ const generated = generateTypeScript(schema, {
44
+ inheritanceChain: true,
45
+ emitEnums: true,
46
+ });
47
+
48
+ await writeFile('./src/generated/entities.ts', generated.entities);
49
+ await writeFile('./src/generated/schema-registry.ts', generated.schemaRegistry);
54
50
  ```
55
51
 
56
- ## EXPRESS Schema Format
52
+ ## What you get
57
53
 
58
- EXPRESS is a data modeling language defined in ISO 10303-11. Example:
54
+ For an EXPRESS entity like:
59
55
 
60
56
  ```express
61
57
  ENTITY IfcWall
@@ -64,38 +60,38 @@ ENTITY IfcWall
64
60
  END_ENTITY;
65
61
  ```
66
62
 
67
- ## Generated Output
63
+ You get a TypeScript interface with full inheritance:
68
64
 
69
65
  ```typescript
70
66
  export interface IfcWall extends IfcBuildingElement {
71
67
  PredefinedType?: IfcWallTypeEnum;
72
68
  }
69
+ ```
70
+
71
+ Plus runtime metadata for the same entity:
73
72
 
74
- export const SCHEMA_REGISTRY = {
75
- IfcWall: {
76
- parent: 'IfcBuildingElement',
77
- attributes: [
78
- { name: 'PredefinedType', type: 'IfcWallTypeEnum', optional: true }
79
- ]
80
- }
73
+ ```typescript
74
+ SCHEMA_REGISTRY.IfcWall = {
75
+ parent: 'IfcBuildingElement',
76
+ inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', /* ... */, 'IfcWall'],
77
+ attributes: [
78
+ { name: 'PredefinedType', type: 'IfcWallTypeEnum', optional: true },
79
+ ],
80
+ allAttributes: [/* every inherited attribute, in inheritance order */],
81
81
  };
82
82
  ```
83
83
 
84
- ## Testing
85
-
86
- The generator includes comprehensive tests:
87
- - EXPRESS parser tests (tokenization, entity parsing, type parsing)
88
- - TypeScript generator tests (interface generation, inheritance)
89
- - Integration tests (generate from real schemas, validate output)
84
+ ## Why generate vs. hand-write
90
85
 
91
- ```bash
92
- npm test
93
- ```
86
+ - **Coverage:** 776 IFC4 entities and 876 IFC4X3 entities — manual implementation gets ~7% there.
87
+ - **Updates:** when buildingSMART releases a new schema, regenerate; no manual edits.
88
+ - **Consistency:** every entity follows the same shape. Types, names, optional-ness all match the spec exactly.
89
+ - **Type safety:** TypeScript catches schema-violating attribute access at compile time.
94
90
 
95
- ## Integration with Parser
91
+ ## API
96
92
 
97
- This package is **standalone** and does not depend on `@ifc-lite/parser`. Once the generated code is validated, it can be integrated into the parser package.
93
+ See the [API Reference](https://ltplus-ag.github.io/ifc-lite/api/typescript/#ifc-litecodegen).
98
94
 
99
95
  ## License
100
96
 
101
- MIT
97
+ [MPL-2.0](../../LICENSE)
@@ -1 +1 @@
1
- {"version":3,"file":"express-parser.d.ts","sourceRoot":"","sources":["../src/express-parser.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAqBjE;AAuSD;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,aAAa,GACpB,mBAAmB,EAAE,CA0BvB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,aAAa,GACpB,MAAM,EAAE,CAeV"}
1
+ {"version":3,"file":"express-parser.d.ts","sourceRoot":"","sources":["../src/express-parser.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAqBjE;AAuSD;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,aAAa,GACpB,mBAAmB,EAAE,CA8BvB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,aAAa,GACpB,MAAM,EAAE,CAkBV"}
@@ -286,8 +286,11 @@ export function getAllAttributes(entity, schema) {
286
286
  // Collect attributes by walking up the inheritance chain,
287
287
  // then reverse to get STEP order (parent-first / root → leaf)
288
288
  const levels = [];
289
+ // Guard against cyclic SUBTYPE OF chains in malformed schemas
290
+ const seen = new Set();
289
291
  let current = entity;
290
- while (current) {
292
+ while (current && !seen.has(current.name)) {
293
+ seen.add(current.name);
291
294
  if (current.attributes.length > 0) {
292
295
  levels.push(current.attributes);
293
296
  }
@@ -311,8 +314,11 @@ export function getAllAttributes(entity, schema) {
311
314
  */
312
315
  export function getInheritanceChain(entity, schema) {
313
316
  const chain = [];
317
+ // Guard against cyclic SUBTYPE OF chains in malformed schemas
318
+ const seen = new Set();
314
319
  let current = entity;
315
- while (current) {
320
+ while (current && !seen.has(current.name)) {
321
+ seen.add(current.name);
316
322
  chain.unshift(current.name); // Add to front
317
323
  if (current.supertype) {
318
324
  current = schema.entities.find(e => e.name === current.supertype);
@@ -1 +1 @@
1
- {"version":3,"file":"express-parser.js","sourceRoot":"","sources":["../src/express-parser.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAyE/D;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,kBAAkB;IAClB,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAElC,sBAAsB;IACtB,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACxD,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE5D,6BAA6B;IAC7B,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAEtC,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,QAAQ;QACR,KAAK;QACL,KAAK;QACL,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,OAAe;IACrC,uCAAuC;IACvC,OAAO,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,OAAe;IACpC,MAAM,QAAQ,GAAuB,EAAE,CAAC;IAExC,qCAAqC;IACrC,MAAM,WAAW,GAAG,yCAAyC,CAAC;IAE9D,IAAI,KAAK,CAAC;IACV,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACpD,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAE5B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,IAAY,EAAE,IAAY;IAC7C,MAAM,MAAM,GAAqB;QAC/B,IAAI;QACJ,UAAU,EAAE,KAAK;QACjB,UAAU,EAAE,EAAE;KACf,CAAC;IAEF,oBAAoB;IACpB,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,mBAAmB;IACnB,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC5D,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,CAAC,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,wCAAwC;IACxC,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjF,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,CAAC,WAAW,GAAG,cAAc,CAAC,CAAC,CAAC;aACnC,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,8EAA8E;IAC9E,IAAI,iBAAiB,GAAG,IAAI,CAAC;IAE7B,qCAAqC;IACrC,iGAAiG;IACjG,MAAM,cAAc,GAAG;QACrB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;KAC5B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAuB,CAAC;IAEhD,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,0BAA0B;QAC1B,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAM,CAAC,CAAC,CAAC;QACrE,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;IACvD,CAAC;IAED,wDAAwD;IACxD,2CAA2C;IAC3C,MAAM,cAAc,GAAG,6CAA6C,CAAC;IAErE,IAAI,SAAS,CAAC;IACd,OAAO,CAAC,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACrE,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,QAAQ,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAEpC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,oBAAoB;IACpB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;IACvF,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC;aAC9B,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,qBAAqB;IACrB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;IACxF,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC;aAChC,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,IAAY,EAAE,OAAe,EAAE,QAAiB;IACtE,MAAM,IAAI,GAAwB;QAChC,IAAI;QACJ,IAAI,EAAE,EAAE;QACR,QAAQ;QACR,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,KAAK;QACb,KAAK,EAAE,KAAK;KACb,CAAC;IAEF,gDAAgD;IAChD,mFAAmF;IACnF,gFAAgF;IAChF,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC5E,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,WAAW,GAAG;gBACjB,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACxD,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;aACzD,CAAC;YACF,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACtC,sCAAsC;YACtC,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,kCAAkC;YAClC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACnE,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC9E,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,GAAG;gBACjB,UAAU,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC1D,UAAU,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;aAC3D,CAAC;YACF,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACvC,sCAAsC;YACtC,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,kCAAkC;YAClC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACpE,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC1E,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,WAAW,GAAG;gBACjB,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACtD,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;aACvD,CAAC;YACF,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACrC,sCAAsC;YACtC,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,kCAAkC;YAClC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAClE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;IACtB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB,CAAC,OAAe;IAC5C,sCAAsC;IACtC,IAAI,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,EAAE,CAAC;QAC5C,iDAAiD;QACjD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;QAC3F,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAClC,sCAAsC;YACtC,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC;QACjD,CAAC;IACH,CAAC;IAED,mCAAmC;IACnC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,OAAe;IACjC,MAAM,KAAK,GAAqB,EAAE,CAAC;IAEnC,kEAAkE;IAClE,MAAM,SAAS,GAAG,kEAAkE,CAAC;IAErF,IAAI,KAAK,CAAC;IACV,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAClD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAEjC,iEAAiE;QACjE,MAAM,eAAe,GAAG,QAAQ,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACjE,MAAM,cAAc,GAAG,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;QAE9E,+BAA+B;QAC/B,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACtD,MAAM,UAAU,GAAG,UAAU;YAC3B,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;iBACV,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;iBAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YAC9B,CAAC,CAAC,SAAS,CAAC;QAEd,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,QAAQ;YACd,cAAc;YACd,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,OAAe;IACjC,MAAM,KAAK,GAAqB,EAAE,CAAC;IAEnC,+CAA+C;IAC/C,MAAM,SAAS,GAAG,+EAA+E,CAAC;IAElG,IAAI,KAAK,CAAC;IACV,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAClD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAE3B,4DAA4D;QAC5D,MAAM,MAAM,GAAG,SAAS;aACrB,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAE7B,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,QAAQ;YACd,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,OAAe;IACnC,MAAM,OAAO,GAAuB,EAAE,CAAC;IAEvC,uCAAuC;IACvC,MAAM,WAAW,GAAG,qEAAqE,CAAC;IAE1F,IAAI,KAAK,CAAC;IACV,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACpD,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAE1B,6DAA6D;QAC7D,MAAM,KAAK,GAAG,QAAQ;aACnB,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAE7B,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,UAAU;YAChB,KAAK;SACN,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAwB,EACxB,MAAqB;IAErB,0DAA0D;IAC1D,8DAA8D;IAC9D,MAAM,MAAM,GAA4B,EAAE,CAAC;IAE3C,IAAI,OAAO,GAAiC,MAAM,CAAC;IACnD,OAAO,OAAO,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAClC,CAAC;QAED,iBAAiB;QACjB,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAQ,CAAC,SAAS,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,SAAS,CAAC;QACtB,CAAC;IACH,CAAC;IAED,yDAAyD;IACzD,MAAM,UAAU,GAA0B,EAAE,CAAC;IAC7C,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAwB,EACxB,MAAqB;IAErB,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,OAAO,GAAiC,MAAM,CAAC;IACnD,OAAO,OAAO,EAAE,CAAC;QACf,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAE,eAAe;QAE7C,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAQ,CAAC,SAAS,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,SAAS,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"express-parser.js","sourceRoot":"","sources":["../src/express-parser.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,16 @@
1
1
  /**
2
2
  * Serialization Generator
3
3
  *
4
- * Generates TypeScript code for serializing IFC entities to STEP format.
4
+ * Emits the per-schema STEP serializer bundle file. The serialization LOGIC is
5
+ * schema-agnostic and lives once in `@ifc-lite/data`; this generator emits only
6
+ * a thin binding that re-exports those primitives and binds the bundle's
7
+ * `SCHEMA_REGISTRY` to the registry-coupled helpers. Keeping the logic in a
8
+ * single place means the generated copies can never drift from the runtime.
5
9
  */
6
10
  import type { ExpressSchema } from './express-parser.js';
7
11
  /**
8
- * Generate serialization support code
12
+ * Generate serialization support code — a thin re-export of the shared
13
+ * `@ifc-lite/data` STEP serializer with this schema's registry bound in.
9
14
  */
10
15
  export declare function generateSerializers(schema: ExpressSchema): string;
11
16
  //# sourceMappingURL=serialization-generator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"serialization-generator.d.ts","sourceRoot":"","sources":["../src/serialization-generator.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAyC,MAAM,qBAAqB,CAAC;AAGhG;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAsUjE"}
1
+ {"version":3,"file":"serialization-generator.d.ts","sourceRoot":"","sources":["../src/serialization-generator.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAqDjE"}