@ifc-lite/codegen 1.15.4 → 1.15.6

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.
Files changed (38) hide show
  1. package/README.md +18 -15
  2. package/package.json +16 -6
  3. package/.turbo/turbo-build.log +0 -4
  4. package/CHANGELOG.md +0 -165
  5. package/INTEGRATION.md +0 -360
  6. package/generated/ifc4/entities.ts +0 -7400
  7. package/generated/ifc4/enums.ts +0 -2467
  8. package/generated/ifc4/index.ts +0 -17
  9. package/generated/ifc4/schema-registry.ts +0 -63186
  10. package/generated/ifc4/selects.ts +0 -315
  11. package/generated/ifc4/serializers.ts +0 -51
  12. package/generated/ifc4/test-compile.ts +0 -49
  13. package/generated/ifc4/type-ids.ts +0 -1682
  14. package/generated/ifc4/types.ts +0 -401
  15. package/generated/ifc4x3/entities.ts +0 -8300
  16. package/generated/ifc4x3/enums.ts +0 -3096
  17. package/generated/ifc4x3/index.ts +0 -17
  18. package/generated/ifc4x3/schema-registry.ts +0 -71489
  19. package/generated/ifc4x3/selects.ts +0 -312
  20. package/generated/ifc4x3/serializers.ts +0 -51
  21. package/generated/ifc4x3/test-compile.ts +0 -49
  22. package/generated/ifc4x3/type-ids.ts +0 -1882
  23. package/generated/ifc4x3/types.ts +0 -407
  24. package/src/cli.ts +0 -72
  25. package/src/crc32.ts +0 -77
  26. package/src/express-parser.ts +0 -457
  27. package/src/generator.ts +0 -268
  28. package/src/index.ts +0 -57
  29. package/src/rust-generator.ts +0 -714
  30. package/src/serialization-generator.ts +0 -74
  31. package/src/type-ids-generator.ts +0 -166
  32. package/src/typescript-generator.ts +0 -631
  33. package/test/express-parser.test.ts +0 -363
  34. package/test/integration.test.ts +0 -246
  35. package/test/serialization-generator.test.ts +0 -65
  36. package/test/typescript-generator.test.ts +0 -348
  37. package/tsconfig.json +0 -21
  38. package/vitest.config.ts +0 -18
@@ -1,74 +0,0 @@
1
- /* This Source Code Form is subject to the terms of the Mozilla Public
2
- * License, v. 2.0. If a copy of the MPL was not distributed with this
3
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
-
5
- /**
6
- * Serialization Generator
7
- *
8
- * Emits the per-schema STEP serializer bundle file. The serialization LOGIC is
9
- * schema-agnostic and lives once in `@ifc-lite/data`; this generator emits only
10
- * a thin binding that re-exports those primitives and binds the bundle's
11
- * `SCHEMA_REGISTRY` to the registry-coupled helpers. Keeping the logic in a
12
- * single place means the generated copies can never drift from the runtime.
13
- */
14
-
15
- import type { ExpressSchema } from './express-parser.js';
16
-
17
- /**
18
- * Generate serialization support code — a thin re-export of the shared
19
- * `@ifc-lite/data` STEP serializer with this schema's registry bound in.
20
- */
21
- export function generateSerializers(schema: ExpressSchema): string {
22
- return `/* This Source Code Form is subject to the terms of the Mozilla Public
23
- * License, v. 2.0. If a copy of the MPL was not distributed with this
24
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
25
-
26
- /**
27
- * IFC Serialization Support
28
- * Generated from EXPRESS schema: ${schema.name}
29
- *
30
- * Thin binding over the shared, schema-agnostic STEP serializer in
31
- * \`@ifc-lite/data\`. All serialization logic lives there (single source of
32
- * truth); only this bundle's \`SCHEMA_REGISTRY\` is bound to the registry-coupled
33
- * helpers below.
34
- *
35
- * DO NOT EDIT - This file is auto-generated
36
- */
37
-
38
- import { SCHEMA_REGISTRY } from './schema-registry.js';
39
- import {
40
- generateHeader,
41
- generateStepFileWithRegistry,
42
- toStepLineWithRegistry,
43
- type StepEntity,
44
- } from '@ifc-lite/data';
45
-
46
- export {
47
- isEntityRef,
48
- isEnumValue,
49
- ref,
50
- enumVal,
51
- serializeValue,
52
- generateHeader,
53
- parseStepValue,
54
- } from '@ifc-lite/data';
55
- export type { StepValue, EntityRef, EnumValue, StepEntity } from '@ifc-lite/data';
56
-
57
- /**
58
- * Serialize an entity to a STEP line (bound to this bundle's schema).
59
- */
60
- export function toStepLine(entity: StepEntity): string {
61
- return toStepLineWithRegistry(SCHEMA_REGISTRY, entity);
62
- }
63
-
64
- /**
65
- * Generate complete STEP file content (bound to this bundle's schema).
66
- */
67
- export function generateStepFile(
68
- entities: StepEntity[],
69
- options: Parameters<typeof generateHeader>[0]
70
- ): string {
71
- return generateStepFileWithRegistry(SCHEMA_REGISTRY, entities, options);
72
- }
73
- `;
74
- }
@@ -1,166 +0,0 @@
1
- /* This Source Code Form is subject to the terms of the Mozilla Public
2
- * License, v. 2.0. If a copy of the MPL was not distributed with this
3
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
-
5
- /**
6
- * Type IDs Generator
7
- *
8
- * Generates TypeScript type ID constants and lookup maps.
9
- */
10
-
11
- import type { ExpressSchema } from './express-parser.js';
12
- import { crc32 } from './crc32.js';
13
-
14
- /**
15
- * Generate TypeScript type IDs file
16
- */
17
- export function generateTypeIds(schema: ExpressSchema): string {
18
- let code = `/* This Source Code Form is subject to the terms of the Mozilla Public
19
- * License, v. 2.0. If a copy of the MPL was not distributed with this
20
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
21
-
22
- /**
23
- * IFC Type IDs
24
- * Generated from EXPRESS schema: ${schema.name}
25
- *
26
- * CRC32 hashes for fast O(1) type lookup.
27
- *
28
- * DO NOT EDIT - This file is auto-generated
29
- */
30
-
31
- /**
32
- * CRC32 Type IDs for all IFC entities
33
- */
34
- export const TYPE_IDS = {
35
- `;
36
-
37
- // Generate type IDs for all entities
38
- for (const entity of schema.entities) {
39
- const id = crc32(entity.name);
40
- code += ` ${entity.name}: ${id},\n`;
41
- }
42
-
43
- code += `} as const;
44
-
45
- /**
46
- * Type for any valid type ID
47
- */
48
- export type TypeId = (typeof TYPE_IDS)[keyof typeof TYPE_IDS];
49
-
50
- /**
51
- * Reverse lookup: ID -> Name
52
- */
53
- export const TYPE_NAMES: Record<number, string> = {
54
- `;
55
-
56
- for (const entity of schema.entities) {
57
- const id = crc32(entity.name);
58
- code += ` ${id}: '${entity.name}',\n`;
59
- }
60
-
61
- code += `};
62
-
63
- /**
64
- * Get type ID from name (case-insensitive)
65
- */
66
- export function getTypeId(name: string): number | undefined {
67
- // Normalize to IfcXxx format
68
- const normalized = normalizeTypeName(name);
69
- return (TYPE_IDS as Record<string, number>)[normalized];
70
- }
71
-
72
- /**
73
- * Get type name from ID
74
- */
75
- export function getTypeName(id: number): string | undefined {
76
- return TYPE_NAMES[id];
77
- }
78
-
79
- /**
80
- * Check if a type ID exists
81
- */
82
- export function isValidTypeId(id: number): boolean {
83
- return id in TYPE_NAMES;
84
- }
85
-
86
- /**
87
- * Normalize type name to IfcXxx format
88
- */
89
- function normalizeTypeName(name: string): string {
90
- // Handle IFCWALL -> IfcWall
91
- if (name.toUpperCase().startsWith('IFC')) {
92
- const rest = name.substring(3);
93
- // Find the entity that matches case-insensitively
94
- const upperRest = rest.toUpperCase();
95
- for (const key of Object.keys(TYPE_IDS)) {
96
- if (key.substring(3).toUpperCase() === upperRest) {
97
- return key;
98
- }
99
- }
100
- }
101
- return name;
102
- }
103
-
104
- /**
105
- * Calculate CRC32 hash for any string
106
- * (Useful for unknown types)
107
- */
108
- export function crc32Hash(str: string): number {
109
- const upper = str.toUpperCase();
110
- let crc = 0xffffffff;
111
- for (let i = 0; i < upper.length; i++) {
112
- crc = CRC32_TABLE[(crc ^ upper.charCodeAt(i)) & 0xff] ^ (crc >>> 8);
113
- }
114
- return (crc ^ 0xffffffff) >>> 0;
115
- }
116
-
117
- // CRC32 lookup table
118
- const CRC32_TABLE = new Uint32Array([
119
- 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,
120
- 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
121
- 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,
122
- 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
123
- 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
124
- 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
125
- 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c,
126
- 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
127
- 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,
128
- 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
129
- 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106,
130
- 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
131
- 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,
132
- 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
133
- 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
134
- 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
135
- 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,
136
- 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
137
- 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cd9, 0x5005713c, 0x270241aa,
138
- 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
139
- 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,
140
- 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
141
- 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,
142
- 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
143
- 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
144
- 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
145
- 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,
146
- 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
147
- 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,
148
- 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
149
- 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,
150
- 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
151
- 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,
152
- 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
153
- 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
154
- 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
155
- 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,
156
- 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
157
- 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,
158
- 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
159
- 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd706b3,
160
- 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
161
- 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d,
162
- ]);
163
- `;
164
-
165
- return code;
166
- }