@ifc-lite/cli 0.6.1 → 0.7.0

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 (48) hide show
  1. package/dist/commands/bcf.js.map +1 -1
  2. package/dist/commands/create.d.ts +3 -0
  3. package/dist/commands/create.d.ts.map +1 -1
  4. package/dist/commands/create.js +4 -2
  5. package/dist/commands/create.js.map +1 -1
  6. package/dist/commands/create.test.d.ts +2 -0
  7. package/dist/commands/create.test.d.ts.map +1 -0
  8. package/dist/commands/create.test.js +87 -0
  9. package/dist/commands/create.test.js.map +1 -0
  10. package/dist/commands/export.d.ts.map +1 -1
  11. package/dist/commands/export.js.map +1 -1
  12. package/dist/commands/ids.d.ts.map +1 -1
  13. package/dist/commands/ids.js +35 -4
  14. package/dist/commands/ids.js.map +1 -1
  15. package/dist/commands/mutate.d.ts +36 -0
  16. package/dist/commands/mutate.d.ts.map +1 -1
  17. package/dist/commands/mutate.js +5 -5
  18. package/dist/commands/mutate.js.map +1 -1
  19. package/dist/commands/mutate.test.d.ts +2 -0
  20. package/dist/commands/mutate.test.d.ts.map +1 -0
  21. package/dist/commands/mutate.test.js +283 -0
  22. package/dist/commands/mutate.test.js.map +1 -0
  23. package/dist/commands/query-aggregation.d.ts +19 -0
  24. package/dist/commands/query-aggregation.d.ts.map +1 -0
  25. package/dist/commands/query-aggregation.js +121 -0
  26. package/dist/commands/query-aggregation.js.map +1 -0
  27. package/dist/commands/query-output.d.ts +11 -0
  28. package/dist/commands/query-output.d.ts.map +1 -0
  29. package/dist/commands/query-output.js +349 -0
  30. package/dist/commands/query-output.js.map +1 -0
  31. package/dist/commands/query.d.ts.map +1 -1
  32. package/dist/commands/query.js +3 -453
  33. package/dist/commands/query.js.map +1 -1
  34. package/dist/headless-backend.d.ts +17 -2
  35. package/dist/headless-backend.d.ts.map +1 -1
  36. package/dist/headless-backend.js +141 -14
  37. package/dist/headless-backend.js.map +1 -1
  38. package/dist/headless-backend.test.d.ts +2 -0
  39. package/dist/headless-backend.test.d.ts.map +1 -0
  40. package/dist/headless-backend.test.js +91 -0
  41. package/dist/headless-backend.test.js.map +1 -0
  42. package/dist/loader.d.ts.map +1 -1
  43. package/dist/loader.js.map +1 -1
  44. package/dist/output.test.d.ts +2 -0
  45. package/dist/output.test.d.ts.map +1 -0
  46. package/dist/output.test.js +136 -0
  47. package/dist/output.test.js.map +1 -0
  48. package/package.json +20 -19
@@ -0,0 +1,136 @@
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
+ import { describe, it, expect } from 'vitest';
5
+ import { getFlag, getAllFlags, hasFlag, getPositionalArgs, formatTable, validateViewerPort, } from './output.js';
6
+ describe('getFlag', () => {
7
+ it('returns value for a present flag', () => {
8
+ expect(getFlag(['--type', 'IfcWall', '--limit', '10'], '--type')).toBe('IfcWall');
9
+ expect(getFlag(['--type', 'IfcWall', '--limit', '10'], '--limit')).toBe('10');
10
+ });
11
+ it('returns undefined for a missing flag', () => {
12
+ expect(getFlag(['--type', 'IfcWall'], '--limit')).toBeUndefined();
13
+ });
14
+ it('returns undefined when flag is last arg (no value follows)', () => {
15
+ expect(getFlag(['--type'], '--type')).toBeUndefined();
16
+ });
17
+ it('returns the first occurrence when flag is repeated', () => {
18
+ expect(getFlag(['--set', 'A', '--set', 'B'], '--set')).toBe('A');
19
+ });
20
+ it('handles flag value that looks like a flag', () => {
21
+ // getFlag just takes the next positional token regardless
22
+ expect(getFlag(['--out', '--verbose'], '--out')).toBe('--verbose');
23
+ });
24
+ });
25
+ describe('getAllFlags', () => {
26
+ it('collects all values for a repeated flag', () => {
27
+ expect(getAllFlags(['--set', 'A', '--set', 'B', '--set', 'C'], '--set')).toEqual(['A', 'B', 'C']);
28
+ });
29
+ it('returns empty array when flag is absent', () => {
30
+ expect(getAllFlags(['--type', 'IfcWall'], '--set')).toEqual([]);
31
+ });
32
+ it('skips flag at end without a value', () => {
33
+ expect(getAllFlags(['--set', 'A', '--set'], '--set')).toEqual(['A']);
34
+ });
35
+ it('handles interleaved flags correctly', () => {
36
+ expect(getAllFlags(['--set', 'X', '--other', 'Y', '--set', 'Z'], '--set')).toEqual(['X', 'Z']);
37
+ });
38
+ });
39
+ describe('hasFlag', () => {
40
+ it('returns true when flag is present', () => {
41
+ expect(hasFlag(['--json', '--verbose'], '--json')).toBe(true);
42
+ });
43
+ it('returns false when flag is absent', () => {
44
+ expect(hasFlag(['--json'], '--verbose')).toBe(false);
45
+ });
46
+ it('does not match partial flag names', () => {
47
+ expect(hasFlag(['--json-output'], '--json')).toBe(false);
48
+ });
49
+ });
50
+ describe('getPositionalArgs', () => {
51
+ it('extracts non-flag arguments', () => {
52
+ expect(getPositionalArgs(['model.ifc', '--type', 'IfcWall', '--json'])).toEqual(['model.ifc']);
53
+ });
54
+ it('returns all args when there are no flags', () => {
55
+ expect(getPositionalArgs(['file1.ifc', 'file2.ifc'])).toEqual(['file1.ifc', 'file2.ifc']);
56
+ });
57
+ it('returns empty array when all args are flags', () => {
58
+ expect(getPositionalArgs(['--json', '--verbose'])).toEqual([]);
59
+ });
60
+ it('skips flag values (next arg after a flag)', () => {
61
+ expect(getPositionalArgs(['input.ifc', '--out', 'output.ifc'])).toEqual(['input.ifc']);
62
+ });
63
+ it('handles --no- flags without consuming next arg', () => {
64
+ // --no- flags are boolean, they should not consume the next positional arg
65
+ expect(getPositionalArgs(['input.ifc', '--no-header', 'extra.ifc'])).toEqual(['input.ifc', 'extra.ifc']);
66
+ });
67
+ it('handles flag at end of args list', () => {
68
+ expect(getPositionalArgs(['input.ifc', '--json'])).toEqual(['input.ifc']);
69
+ });
70
+ });
71
+ describe('validateViewerPort', () => {
72
+ it('returns undefined for undefined input', () => {
73
+ expect(validateViewerPort(undefined)).toBeUndefined();
74
+ });
75
+ it('returns a valid port number', () => {
76
+ expect(validateViewerPort('3000')).toBe(3000);
77
+ expect(validateViewerPort('1')).toBe(1);
78
+ expect(validateViewerPort('65535')).toBe(65535);
79
+ expect(validateViewerPort('8080')).toBe(8080);
80
+ });
81
+ it('calls fatal for port 0', () => {
82
+ expect(() => validateViewerPort('0')).toThrow();
83
+ });
84
+ it('calls fatal for port above 65535', () => {
85
+ expect(() => validateViewerPort('70000')).toThrow();
86
+ });
87
+ it('calls fatal for negative port', () => {
88
+ expect(() => validateViewerPort('-1')).toThrow();
89
+ });
90
+ it('calls fatal for non-numeric input', () => {
91
+ expect(() => validateViewerPort('abc')).toThrow();
92
+ });
93
+ it('calls fatal for empty string', () => {
94
+ expect(() => validateViewerPort('')).toThrow();
95
+ });
96
+ it('parses integer portion from floating point string', () => {
97
+ // parseInt('3.5', 10) returns 3, which is valid
98
+ expect(validateViewerPort('3.5')).toBe(3);
99
+ });
100
+ });
101
+ describe('formatTable', () => {
102
+ it('formats a basic table with headers and rows', () => {
103
+ const result = formatTable(['Name', 'Type'], [['Wall-1', 'IfcWall'], ['Slab-1', 'IfcSlab']]);
104
+ const lines = result.split('\n');
105
+ expect(lines).toHaveLength(4); // header + separator + 2 rows
106
+ expect(lines[0]).toContain('Name');
107
+ expect(lines[0]).toContain('Type');
108
+ expect(lines[2]).toContain('Wall-1');
109
+ expect(lines[2]).toContain('IfcWall');
110
+ expect(lines[3]).toContain('Slab-1');
111
+ expect(lines[3]).toContain('IfcSlab');
112
+ });
113
+ it('handles empty rows', () => {
114
+ const result = formatTable(['Col1', 'Col2'], []);
115
+ const lines = result.split('\n');
116
+ expect(lines).toHaveLength(2); // header + separator only
117
+ });
118
+ it('truncates cells exceeding 60 characters', () => {
119
+ const longString = 'A'.repeat(80);
120
+ const result = formatTable(['Name'], [[longString]]);
121
+ const lines = result.split('\n');
122
+ // The cell content should be sliced to at most 60 chars
123
+ const dataLine = lines[2];
124
+ // The actual cell text within the row should be at most 60 chars
125
+ expect(dataLine.length).toBeLessThanOrEqual(64); // 60 + padding/borders
126
+ });
127
+ it('handles missing cells in rows gracefully', () => {
128
+ // Row has fewer cells than headers
129
+ const result = formatTable(['A', 'B', 'C'], [['x']]);
130
+ const lines = result.split('\n');
131
+ expect(lines).toHaveLength(3);
132
+ // Should not throw, missing cells default to empty string
133
+ expect(lines[2]).toContain('x');
134
+ });
135
+ });
136
+ //# sourceMappingURL=output.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.test.js","sourceRoot":"","sources":["../src/output.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ifc-lite/cli",
3
- "version": "0.6.1",
3
+ "version": "0.7.0",
4
4
  "description": "CLI toolkit for IFC files — query, validate, export, create, and script BIM data",
5
5
  "type": "module",
6
6
  "bin": {
@@ -19,23 +19,24 @@
19
19
  "README.md"
20
20
  ],
21
21
  "dependencies": {
22
- "@ifc-lite/parser": "^2.1.5",
23
- "@ifc-lite/query": "^1.14.5",
24
- "@ifc-lite/data": "^1.15.0",
25
- "@ifc-lite/sdk": "^1.14.5",
26
- "@ifc-lite/export": "^1.17.1",
27
- "@ifc-lite/ids": "^1.14.8",
28
- "@ifc-lite/bcf": "^1.15.1",
29
- "@ifc-lite/create": "^1.14.4",
30
- "@ifc-lite/encoding": "^1.14.5",
31
- "@ifc-lite/sandbox": "^1.14.4",
32
- "@ifc-lite/mutations": "^1.14.4",
33
- "@ifc-lite/wasm": "^1.16.0",
34
- "@ifc-lite/viewer-core": "^0.2.2"
22
+ "@ifc-lite/parser": "^2.2.0",
23
+ "@ifc-lite/query": "^1.14.7",
24
+ "@ifc-lite/data": "^1.15.2",
25
+ "@ifc-lite/sdk": "^1.15.0",
26
+ "@ifc-lite/export": "^1.18.0",
27
+ "@ifc-lite/ids": "^1.14.10",
28
+ "@ifc-lite/bcf": "^1.15.3",
29
+ "@ifc-lite/create": "^1.15.0",
30
+ "@ifc-lite/encoding": "^1.14.6",
31
+ "@ifc-lite/sandbox": "^1.15.0",
32
+ "@ifc-lite/mutations": "^1.15.0",
33
+ "@ifc-lite/wasm": "^1.16.7",
34
+ "@ifc-lite/viewer-core": "^0.2.3"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@types/node": "^20.0.0",
38
- "typescript": "^5.3.0"
38
+ "typescript": "^5.3.0",
39
+ "vitest": "^3.2.1"
39
40
  },
40
41
  "engines": {
41
42
  "node": ">=18.0.0"
@@ -62,9 +63,9 @@
62
63
  "access": "public"
63
64
  },
64
65
  "scripts": {
65
- "prebuild": "pnpm --filter @ifc-lite/cli^... build",
66
- "build": "tsc",
67
- "dev": "tsc --watch",
68
- "start": "node dist/index.js"
66
+ "build": "pnpm exec tsc",
67
+ "dev": "pnpm exec tsc --watch",
68
+ "start": "node dist/index.js",
69
+ "test": "vitest run"
69
70
  }
70
71
  }