woodml-parser 1.0.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 (82) hide show
  1. package/README.md +181 -0
  2. package/dist/cli.d.ts +7 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +554 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/cost.d.ts +94 -0
  7. package/dist/cost.d.ts.map +1 -0
  8. package/dist/cost.js +340 -0
  9. package/dist/cost.js.map +1 -0
  10. package/dist/cost.test.d.ts +2 -0
  11. package/dist/cost.test.d.ts.map +1 -0
  12. package/dist/cost.test.js +241 -0
  13. package/dist/cost.test.js.map +1 -0
  14. package/dist/example.d.ts +6 -0
  15. package/dist/example.d.ts.map +1 -0
  16. package/dist/example.js +136 -0
  17. package/dist/example.js.map +1 -0
  18. package/dist/formulas.d.ts +23 -0
  19. package/dist/formulas.d.ts.map +1 -0
  20. package/dist/formulas.js +442 -0
  21. package/dist/formulas.js.map +1 -0
  22. package/dist/formulas.test.d.ts +5 -0
  23. package/dist/formulas.test.d.ts.map +1 -0
  24. package/dist/formulas.test.js +360 -0
  25. package/dist/formulas.test.js.map +1 -0
  26. package/dist/index.d.ts +23 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +93 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/integration.test.d.ts +6 -0
  31. package/dist/integration.test.d.ts.map +1 -0
  32. package/dist/integration.test.js +271 -0
  33. package/dist/integration.test.js.map +1 -0
  34. package/dist/optimizer.d.ts +119 -0
  35. package/dist/optimizer.d.ts.map +1 -0
  36. package/dist/optimizer.js +423 -0
  37. package/dist/optimizer.js.map +1 -0
  38. package/dist/optimizer.test.d.ts +2 -0
  39. package/dist/optimizer.test.d.ts.map +1 -0
  40. package/dist/optimizer.test.js +225 -0
  41. package/dist/optimizer.test.js.map +1 -0
  42. package/dist/parser.d.ts +59 -0
  43. package/dist/parser.d.ts.map +1 -0
  44. package/dist/parser.js +305 -0
  45. package/dist/parser.js.map +1 -0
  46. package/dist/parser.test.d.ts +5 -0
  47. package/dist/parser.test.d.ts.map +1 -0
  48. package/dist/parser.test.js +486 -0
  49. package/dist/parser.test.js.map +1 -0
  50. package/dist/pdf.d.ts +36 -0
  51. package/dist/pdf.d.ts.map +1 -0
  52. package/dist/pdf.js +316 -0
  53. package/dist/pdf.js.map +1 -0
  54. package/dist/svg.d.ts +73 -0
  55. package/dist/svg.d.ts.map +1 -0
  56. package/dist/svg.js +613 -0
  57. package/dist/svg.js.map +1 -0
  58. package/dist/svg.test.d.ts +5 -0
  59. package/dist/svg.test.d.ts.map +1 -0
  60. package/dist/svg.test.js +333 -0
  61. package/dist/svg.test.js.map +1 -0
  62. package/dist/templates.d.ts +126 -0
  63. package/dist/templates.d.ts.map +1 -0
  64. package/dist/templates.js +448 -0
  65. package/dist/templates.js.map +1 -0
  66. package/dist/templates.test.d.ts +5 -0
  67. package/dist/templates.test.d.ts.map +1 -0
  68. package/dist/templates.test.js +630 -0
  69. package/dist/templates.test.js.map +1 -0
  70. package/dist/types.d.ts +250 -0
  71. package/dist/types.d.ts.map +1 -0
  72. package/dist/types.js +7 -0
  73. package/dist/types.js.map +1 -0
  74. package/dist/units.d.ts +53 -0
  75. package/dist/units.d.ts.map +1 -0
  76. package/dist/units.js +359 -0
  77. package/dist/units.js.map +1 -0
  78. package/dist/units.test.d.ts +5 -0
  79. package/dist/units.test.d.ts.map +1 -0
  80. package/dist/units.test.js +364 -0
  81. package/dist/units.test.js.map +1 -0
  82. package/package.json +46 -0
@@ -0,0 +1,360 @@
1
+ "use strict";
2
+ /**
3
+ * Unit Tests for WoodML Formulas Module
4
+ */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ const node_test_1 = require("node:test");
10
+ const node_assert_1 = __importDefault(require("node:assert"));
11
+ const formulas_1 = require("./formulas");
12
+ (0, node_test_1.describe)('createContext', () => {
13
+ (0, node_test_1.it)('should create context with numeric variables', () => {
14
+ const ctx = (0, formulas_1.createContext)({ quantity: 4, multiplier: 2 });
15
+ node_assert_1.default.strictEqual(ctx.variables.get('quantity'), 4);
16
+ node_assert_1.default.strictEqual(ctx.variables.get('multiplier'), 2);
17
+ });
18
+ (0, node_test_1.it)('should create context with dimension strings', () => {
19
+ const ctx = (0, formulas_1.createContext)({ width: '24"', height: '36"' });
20
+ const width = ctx.variables.get('width');
21
+ node_assert_1.default.strictEqual(width.value, 24);
22
+ node_assert_1.default.strictEqual(width.unit, 'imperial');
23
+ });
24
+ (0, node_test_1.it)('should use specified default unit', () => {
25
+ const ctx = (0, formulas_1.createContext)({ size: '100mm' }, 'metric');
26
+ node_assert_1.default.strictEqual(ctx.defaultUnit, 'metric');
27
+ });
28
+ });
29
+ (0, node_test_1.describe)('evaluateFormula', () => {
30
+ (0, node_test_1.describe)('basic arithmetic', () => {
31
+ (0, node_test_1.it)('should evaluate addition', () => {
32
+ const ctx = (0, formulas_1.createContext)({});
33
+ node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('5 + 3', ctx), 8);
34
+ });
35
+ (0, node_test_1.it)('should evaluate subtraction', () => {
36
+ const ctx = (0, formulas_1.createContext)({});
37
+ node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('10 - 4', ctx), 6);
38
+ });
39
+ (0, node_test_1.it)('should evaluate multiplication', () => {
40
+ const ctx = (0, formulas_1.createContext)({});
41
+ node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('6 * 7', ctx), 42);
42
+ });
43
+ (0, node_test_1.it)('should evaluate division', () => {
44
+ const ctx = (0, formulas_1.createContext)({});
45
+ node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('20 / 4', ctx), 5);
46
+ });
47
+ (0, node_test_1.it)('should evaluate exponentiation', () => {
48
+ const ctx = (0, formulas_1.createContext)({});
49
+ node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('2 ^ 3', ctx), 8);
50
+ });
51
+ (0, node_test_1.it)('should throw on division by zero', () => {
52
+ const ctx = (0, formulas_1.createContext)({});
53
+ node_assert_1.default.throws(() => (0, formulas_1.evaluateFormula)('10 / 0', ctx), /Division by zero/);
54
+ });
55
+ });
56
+ (0, node_test_1.describe)('operator precedence', () => {
57
+ (0, node_test_1.it)('should respect multiplication over addition', () => {
58
+ const ctx = (0, formulas_1.createContext)({});
59
+ node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('2 + 3 * 4', ctx), 14);
60
+ });
61
+ (0, node_test_1.it)('should respect parentheses', () => {
62
+ const ctx = (0, formulas_1.createContext)({});
63
+ node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('(2 + 3) * 4', ctx), 20);
64
+ });
65
+ (0, node_test_1.it)('should handle nested parentheses', () => {
66
+ const ctx = (0, formulas_1.createContext)({});
67
+ node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('((2 + 3) * (4 - 1))', ctx), 15);
68
+ });
69
+ (0, node_test_1.it)('should handle complex expressions', () => {
70
+ const ctx = (0, formulas_1.createContext)({});
71
+ node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('10 - 2 * 3 + 4 / 2', ctx), 6);
72
+ });
73
+ });
74
+ (0, node_test_1.describe)('unary operators', () => {
75
+ (0, node_test_1.it)('should handle negative numbers', () => {
76
+ const ctx = (0, formulas_1.createContext)({});
77
+ node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('-5', ctx), -5);
78
+ });
79
+ (0, node_test_1.it)('should handle negative in expression', () => {
80
+ const ctx = (0, formulas_1.createContext)({});
81
+ node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('10 + -3', ctx), 7);
82
+ });
83
+ (0, node_test_1.it)('should handle double negative', () => {
84
+ const ctx = (0, formulas_1.createContext)({});
85
+ node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('--5', ctx), 5);
86
+ });
87
+ });
88
+ (0, node_test_1.describe)('variables', () => {
89
+ (0, node_test_1.it)('should resolve numeric variables', () => {
90
+ const ctx = (0, formulas_1.createContext)({ x: 10, y: 5 });
91
+ node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('$x + $y', ctx), 15);
92
+ });
93
+ (0, node_test_1.it)('should resolve dimension variables', () => {
94
+ const ctx = (0, formulas_1.createContext)({ width: '24"' });
95
+ const result = (0, formulas_1.evaluateFormula)('$width', ctx);
96
+ node_assert_1.default.strictEqual(result.value, 24);
97
+ });
98
+ (0, node_test_1.it)('should use dimensions in calculations', () => {
99
+ const ctx = (0, formulas_1.createContext)({ width: '24"', depth: '12"' });
100
+ const result = (0, formulas_1.evaluateFormula)('$width + $depth', ctx);
101
+ node_assert_1.default.strictEqual(result.value, 36);
102
+ });
103
+ (0, node_test_1.it)('should throw on undefined variable', () => {
104
+ const ctx = (0, formulas_1.createContext)({});
105
+ node_assert_1.default.throws(() => (0, formulas_1.evaluateFormula)('$undefined', ctx), /Undefined variable/);
106
+ });
107
+ });
108
+ (0, node_test_1.describe)('dimensions in formulas', () => {
109
+ (0, node_test_1.it)('should parse dimensions in expressions', () => {
110
+ const ctx = (0, formulas_1.createContext)({});
111
+ const result = (0, formulas_1.evaluateFormula)('24" + 12"', ctx);
112
+ node_assert_1.default.strictEqual(result.value, 36);
113
+ });
114
+ (0, node_test_1.it)('should handle mixed units', () => {
115
+ const ctx = (0, formulas_1.createContext)({});
116
+ const result = (0, formulas_1.evaluateFormula)('24" + 25.4mm', ctx);
117
+ node_assert_1.default.strictEqual(result.value, 25); // 24 + 1 inch
118
+ });
119
+ (0, node_test_1.it)('should multiply dimension by number', () => {
120
+ const ctx = (0, formulas_1.createContext)({});
121
+ const result = (0, formulas_1.evaluateFormula)('12" * 2', ctx);
122
+ node_assert_1.default.strictEqual(result.value, 24);
123
+ });
124
+ (0, node_test_1.it)('should divide dimension by number', () => {
125
+ const ctx = (0, formulas_1.createContext)({});
126
+ const result = (0, formulas_1.evaluateFormula)('24" / 2', ctx);
127
+ node_assert_1.default.strictEqual(result.value, 12);
128
+ });
129
+ (0, node_test_1.it)('should return number when multiplying two dimensions', () => {
130
+ const ctx = (0, formulas_1.createContext)({});
131
+ const result = (0, formulas_1.evaluateFormula)('12" * 12"', ctx);
132
+ node_assert_1.default.strictEqual(typeof result, 'number');
133
+ node_assert_1.default.strictEqual(result, 144);
134
+ });
135
+ });
136
+ (0, node_test_1.describe)('math functions', () => {
137
+ (0, node_test_1.it)('should evaluate min', () => {
138
+ const ctx = (0, formulas_1.createContext)({});
139
+ node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('min(5, 3, 8)', ctx), 3);
140
+ });
141
+ (0, node_test_1.it)('should evaluate max', () => {
142
+ const ctx = (0, formulas_1.createContext)({});
143
+ node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('max(5, 3, 8)', ctx), 8);
144
+ });
145
+ (0, node_test_1.it)('should evaluate abs', () => {
146
+ const ctx = (0, formulas_1.createContext)({});
147
+ node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('abs(-5)', ctx), 5);
148
+ });
149
+ (0, node_test_1.it)('should evaluate sqrt', () => {
150
+ const ctx = (0, formulas_1.createContext)({});
151
+ node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('sqrt(16)', ctx), 4);
152
+ });
153
+ (0, node_test_1.it)('should evaluate round', () => {
154
+ const ctx = (0, formulas_1.createContext)({});
155
+ node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('round(3.7)', ctx), 4);
156
+ });
157
+ (0, node_test_1.it)('should evaluate round with precision', () => {
158
+ const ctx = (0, formulas_1.createContext)({});
159
+ node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('round(3.14159, 0.01)', ctx), 3.14);
160
+ });
161
+ (0, node_test_1.it)('should evaluate floor', () => {
162
+ const ctx = (0, formulas_1.createContext)({});
163
+ node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('floor(3.9)', ctx), 3);
164
+ });
165
+ (0, node_test_1.it)('should evaluate ceil', () => {
166
+ const ctx = (0, formulas_1.createContext)({});
167
+ node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('ceil(3.1)', ctx), 4);
168
+ });
169
+ });
170
+ (0, node_test_1.describe)('trigonometric functions', () => {
171
+ (0, node_test_1.it)('should evaluate sin (degrees)', () => {
172
+ const ctx = (0, formulas_1.createContext)({});
173
+ const result = (0, formulas_1.evaluateFormula)('sin(90)', ctx);
174
+ node_assert_1.default.ok(Math.abs(result - 1) < 0.0001);
175
+ });
176
+ (0, node_test_1.it)('should evaluate cos (degrees)', () => {
177
+ const ctx = (0, formulas_1.createContext)({});
178
+ const result = (0, formulas_1.evaluateFormula)('cos(0)', ctx);
179
+ node_assert_1.default.ok(Math.abs(result - 1) < 0.0001);
180
+ });
181
+ (0, node_test_1.it)('should evaluate tan (degrees)', () => {
182
+ const ctx = (0, formulas_1.createContext)({});
183
+ const result = (0, formulas_1.evaluateFormula)('tan(45)', ctx);
184
+ node_assert_1.default.ok(Math.abs(result - 1) < 0.0001);
185
+ });
186
+ (0, node_test_1.it)('should evaluate asin (returns degrees)', () => {
187
+ const ctx = (0, formulas_1.createContext)({});
188
+ const result = (0, formulas_1.evaluateFormula)('asin(1)', ctx);
189
+ node_assert_1.default.ok(Math.abs(result - 90) < 0.0001);
190
+ });
191
+ (0, node_test_1.it)('should evaluate acos (returns degrees)', () => {
192
+ const ctx = (0, formulas_1.createContext)({});
193
+ const result = (0, formulas_1.evaluateFormula)('acos(1)', ctx);
194
+ node_assert_1.default.ok(Math.abs(result) < 0.0001);
195
+ });
196
+ (0, node_test_1.it)('should evaluate atan (returns degrees)', () => {
197
+ const ctx = (0, formulas_1.createContext)({});
198
+ const result = (0, formulas_1.evaluateFormula)('atan(1)', ctx);
199
+ node_assert_1.default.ok(Math.abs(result - 45) < 0.0001);
200
+ });
201
+ });
202
+ (0, node_test_1.describe)('woodworking functions', () => {
203
+ (0, node_test_1.it)('should calculate board_feet', () => {
204
+ const ctx = (0, formulas_1.createContext)({});
205
+ // 96" x 6" x 1" = 4 board feet
206
+ const result = (0, formulas_1.evaluateFormula)('board_feet(96, 6, 1)', ctx);
207
+ node_assert_1.default.strictEqual(result, 4);
208
+ });
209
+ (0, node_test_1.it)('should calculate square_feet', () => {
210
+ const ctx = (0, formulas_1.createContext)({});
211
+ // 12" x 12" = 1 sq ft
212
+ const result = (0, formulas_1.evaluateFormula)('square_feet(12, 12)', ctx);
213
+ node_assert_1.default.strictEqual(result, 1);
214
+ });
215
+ (0, node_test_1.it)('should calculate miter_angle for hexagon', () => {
216
+ const ctx = (0, formulas_1.createContext)({});
217
+ // 6 sides = 60 degree miter
218
+ const result = (0, formulas_1.evaluateFormula)('miter_angle(6)', ctx);
219
+ node_assert_1.default.strictEqual(result, 60);
220
+ });
221
+ (0, node_test_1.it)('should calculate miter_angle for octagon', () => {
222
+ const ctx = (0, formulas_1.createContext)({});
223
+ // 8 sides = 67.5 degree miter
224
+ const result = (0, formulas_1.evaluateFormula)('miter_angle(8)', ctx);
225
+ node_assert_1.default.strictEqual(result, 67.5);
226
+ });
227
+ (0, node_test_1.it)('should calculate diagonal', () => {
228
+ const ctx = (0, formulas_1.createContext)({});
229
+ // 3-4-5 triangle
230
+ const result = (0, formulas_1.evaluateFormula)('diagonal(3, 4)', ctx);
231
+ node_assert_1.default.strictEqual(result.value, 5);
232
+ });
233
+ (0, node_test_1.it)('should return golden_ratio', () => {
234
+ const ctx = (0, formulas_1.createContext)({});
235
+ const result = (0, formulas_1.evaluateFormula)('golden_ratio()', ctx);
236
+ node_assert_1.default.ok(Math.abs(result - 1.618033988749895) < 0.0001);
237
+ });
238
+ (0, node_test_1.it)('should calculate fibonacci', () => {
239
+ const ctx = (0, formulas_1.createContext)({});
240
+ node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('fibonacci(0)', ctx), 0);
241
+ node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('fibonacci(1)', ctx), 1);
242
+ node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('fibonacci(5)', ctx), 5);
243
+ node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('fibonacci(10)', ctx), 55);
244
+ });
245
+ (0, node_test_1.it)('should calculate circle_circumference', () => {
246
+ const ctx = (0, formulas_1.createContext)({});
247
+ const result = (0, formulas_1.evaluateFormula)('circle_circumference(10)', ctx);
248
+ node_assert_1.default.ok(Math.abs(result.value - 31.4159) < 0.001);
249
+ });
250
+ (0, node_test_1.it)('should calculate circle_area', () => {
251
+ const ctx = (0, formulas_1.createContext)({});
252
+ // Diameter 10, radius 5, area = pi * 25 = 78.54
253
+ const result = (0, formulas_1.evaluateFormula)('circle_area(10)', ctx);
254
+ node_assert_1.default.ok(Math.abs(result - 78.5398) < 0.001);
255
+ });
256
+ (0, node_test_1.it)('should calculate circle_diameter from circumference', () => {
257
+ const ctx = (0, formulas_1.createContext)({});
258
+ const result = (0, formulas_1.evaluateFormula)('circle_diameter(31.4159)', ctx);
259
+ node_assert_1.default.ok(Math.abs(result.value - 10) < 0.001);
260
+ });
261
+ });
262
+ (0, node_test_1.describe)('nested function calls', () => {
263
+ (0, node_test_1.it)('should handle nested functions', () => {
264
+ const ctx = (0, formulas_1.createContext)({});
265
+ node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('max(min(5, 10), 3)', ctx), 5);
266
+ });
267
+ (0, node_test_1.it)('should handle functions in expressions', () => {
268
+ const ctx = (0, formulas_1.createContext)({});
269
+ node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('sqrt(16) + 2', ctx), 6);
270
+ });
271
+ });
272
+ (0, node_test_1.describe)('error handling', () => {
273
+ (0, node_test_1.it)('should throw on unknown function', () => {
274
+ const ctx = (0, formulas_1.createContext)({});
275
+ // 'unknown' isn't recognized as a function token, so it fails at tokenization
276
+ node_assert_1.default.throws(() => (0, formulas_1.evaluateFormula)('unknown(5)', ctx), /Unexpected character/);
277
+ });
278
+ (0, node_test_1.it)('should throw on unexpected token', () => {
279
+ const ctx = (0, formulas_1.createContext)({});
280
+ node_assert_1.default.throws(() => (0, formulas_1.evaluateFormula)('5 @ 3', ctx), /Unexpected character/);
281
+ });
282
+ (0, node_test_1.it)('should throw on unclosed parenthesis', () => {
283
+ const ctx = (0, formulas_1.createContext)({});
284
+ node_assert_1.default.throws(() => (0, formulas_1.evaluateFormula)('(5 + 3', ctx), /Expected closing parenthesis/);
285
+ });
286
+ });
287
+ });
288
+ (0, node_test_1.describe)('resolveFormulas', () => {
289
+ (0, node_test_1.it)('should resolve simple vars', () => {
290
+ const formulas = {
291
+ vars: {
292
+ width: '24"',
293
+ height: '36"',
294
+ },
295
+ };
296
+ const resolved = (0, formulas_1.resolveFormulas)(formulas);
297
+ const width = resolved.get('width');
298
+ const height = resolved.get('height');
299
+ node_assert_1.default.strictEqual(width.value, 24);
300
+ node_assert_1.default.strictEqual(height.value, 36);
301
+ });
302
+ (0, node_test_1.it)('should resolve computed values', () => {
303
+ const formulas = {
304
+ vars: {
305
+ width: '24"',
306
+ },
307
+ computed: {
308
+ double_width: '$width * 2',
309
+ },
310
+ };
311
+ const resolved = (0, formulas_1.resolveFormulas)(formulas);
312
+ const doubleWidth = resolved.get('double_width');
313
+ node_assert_1.default.strictEqual(doubleWidth.value, 48);
314
+ });
315
+ (0, node_test_1.it)('should resolve dependent computed values', () => {
316
+ const formulas = {
317
+ vars: {
318
+ base: '12"',
319
+ },
320
+ computed: {
321
+ double: '$base * 2',
322
+ quadruple: '$double * 2',
323
+ },
324
+ };
325
+ const resolved = (0, formulas_1.resolveFormulas)(formulas);
326
+ const quadruple = resolved.get('quadruple');
327
+ node_assert_1.default.strictEqual(quadruple.value, 48);
328
+ });
329
+ (0, node_test_1.it)('should handle numeric vars', () => {
330
+ const formulas = {
331
+ vars: {
332
+ quantity: '4',
333
+ multiplier: '2.5',
334
+ },
335
+ };
336
+ const resolved = (0, formulas_1.resolveFormulas)(formulas);
337
+ node_assert_1.default.strictEqual(resolved.get('quantity'), 4);
338
+ node_assert_1.default.strictEqual(resolved.get('multiplier'), 2.5);
339
+ });
340
+ (0, node_test_1.it)('should throw on circular references', () => {
341
+ const formulas = {
342
+ computed: {
343
+ a: '$b + 1',
344
+ b: '$a + 1',
345
+ },
346
+ };
347
+ node_assert_1.default.throws(() => (0, formulas_1.resolveFormulas)(formulas), /Circular reference/);
348
+ });
349
+ (0, node_test_1.it)('should use default unit system', () => {
350
+ const formulas = {
351
+ vars: {
352
+ size: '100mm',
353
+ },
354
+ };
355
+ const resolved = (0, formulas_1.resolveFormulas)(formulas, 'metric');
356
+ const size = resolved.get('size');
357
+ node_assert_1.default.strictEqual(size.unit, 'metric');
358
+ });
359
+ });
360
+ //# sourceMappingURL=formulas.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formulas.test.js","sourceRoot":"","sources":["../src/formulas.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * WoodML TypeScript Parser
3
+ * Reference implementation for parsing WoodML files
4
+ */
5
+ export * from './types';
6
+ export { parseDimension, toInches, toMillimeters, convertTo, formatImperial, formatMetric, formatDimension, decimalToFraction, parseDimensionalLumber, isVariableReference, extractVariableName, } from './units';
7
+ export { createContext, evaluateFormula, resolveFormulas, FormulaValue, FormulaContext, } from './formulas';
8
+ export { WoodMLParser, validateDocument, calculateBoardFeet, generateCutList, formatCutList, ValidationError, CutListItem, } from './parser';
9
+ export { TemplateParser, createTemplateParser, TemplateDefinition, TemplateParam, TemplatePart, TemplateInstance, InstantiatedTemplate, } from './templates';
10
+ export { SVGGenerator, generateSVG, generatePartSVG, SVGOptions, } from './svg';
11
+ export { estimateCost, formatCostEstimate, CostEstimate, CostEstimateOptions, LumberPricing, HardwarePricing, LumberCostItem, HardwareCostItem, FinishingCostItem, DEFAULT_LUMBER_PRICES, DEFAULT_HARDWARE_PRICES, } from './cost';
12
+ export { optimizeCutList, formatOptimizationResult, OptimizationOptions, OptimizationResult, OptimizedSheet, OptimizedBoard, PlacedPart, STANDARD_SHEET_SIZES, STANDARD_BOARD_LENGTHS, } from './optimizer';
13
+ export { generateCutSheetPDF, generateDiagramPDF, PDFOptions, PAGE_SIZES, } from './pdf';
14
+ import { WoodMLDocument, ResolvedDocument } from './types';
15
+ /**
16
+ * Parse a WoodML string
17
+ */
18
+ export declare function parse(source: string): WoodMLDocument;
19
+ /**
20
+ * Parse and resolve a WoodML string
21
+ */
22
+ export declare function parseAndResolve(source: string): ResolvedDocument;
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,cAAc,SAAS,CAAC;AAGxB,OAAO,EACL,cAAc,EACd,QAAQ,EACR,aAAa,EACb,SAAS,EACT,cAAc,EACd,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,aAAa,EACb,eAAe,EACf,eAAe,EACf,YAAY,EACZ,cAAc,GACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,eAAe,EACf,WAAW,GACZ,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,YAAY,EACZ,WAAW,EACX,eAAe,EACf,UAAU,GACX,MAAM,OAAO,CAAC;AAGf,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,QAAQ,CAAC;AAGhB,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,UAAU,EACV,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,UAAU,EACV,UAAU,GACX,MAAM,OAAO,CAAC;AAIf,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3D;;GAEG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAGpD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAGhE"}
package/dist/index.js ADDED
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ /**
3
+ * WoodML TypeScript Parser
4
+ * Reference implementation for parsing WoodML files
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
18
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
19
+ };
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.PAGE_SIZES = exports.generateDiagramPDF = exports.generateCutSheetPDF = exports.STANDARD_BOARD_LENGTHS = exports.STANDARD_SHEET_SIZES = exports.formatOptimizationResult = exports.optimizeCutList = exports.DEFAULT_HARDWARE_PRICES = exports.DEFAULT_LUMBER_PRICES = exports.formatCostEstimate = exports.estimateCost = exports.generatePartSVG = exports.generateSVG = exports.SVGGenerator = exports.createTemplateParser = exports.TemplateParser = exports.formatCutList = exports.generateCutList = exports.calculateBoardFeet = exports.validateDocument = exports.WoodMLParser = exports.resolveFormulas = exports.evaluateFormula = exports.createContext = exports.extractVariableName = exports.isVariableReference = exports.parseDimensionalLumber = exports.decimalToFraction = exports.formatDimension = exports.formatMetric = exports.formatImperial = exports.convertTo = exports.toMillimeters = exports.toInches = exports.parseDimension = void 0;
22
+ exports.parse = parse;
23
+ exports.parseAndResolve = parseAndResolve;
24
+ // Re-export all types
25
+ __exportStar(require("./types"), exports);
26
+ // Re-export unit functions
27
+ var units_1 = require("./units");
28
+ Object.defineProperty(exports, "parseDimension", { enumerable: true, get: function () { return units_1.parseDimension; } });
29
+ Object.defineProperty(exports, "toInches", { enumerable: true, get: function () { return units_1.toInches; } });
30
+ Object.defineProperty(exports, "toMillimeters", { enumerable: true, get: function () { return units_1.toMillimeters; } });
31
+ Object.defineProperty(exports, "convertTo", { enumerable: true, get: function () { return units_1.convertTo; } });
32
+ Object.defineProperty(exports, "formatImperial", { enumerable: true, get: function () { return units_1.formatImperial; } });
33
+ Object.defineProperty(exports, "formatMetric", { enumerable: true, get: function () { return units_1.formatMetric; } });
34
+ Object.defineProperty(exports, "formatDimension", { enumerable: true, get: function () { return units_1.formatDimension; } });
35
+ Object.defineProperty(exports, "decimalToFraction", { enumerable: true, get: function () { return units_1.decimalToFraction; } });
36
+ Object.defineProperty(exports, "parseDimensionalLumber", { enumerable: true, get: function () { return units_1.parseDimensionalLumber; } });
37
+ Object.defineProperty(exports, "isVariableReference", { enumerable: true, get: function () { return units_1.isVariableReference; } });
38
+ Object.defineProperty(exports, "extractVariableName", { enumerable: true, get: function () { return units_1.extractVariableName; } });
39
+ // Re-export formula functions
40
+ var formulas_1 = require("./formulas");
41
+ Object.defineProperty(exports, "createContext", { enumerable: true, get: function () { return formulas_1.createContext; } });
42
+ Object.defineProperty(exports, "evaluateFormula", { enumerable: true, get: function () { return formulas_1.evaluateFormula; } });
43
+ Object.defineProperty(exports, "resolveFormulas", { enumerable: true, get: function () { return formulas_1.resolveFormulas; } });
44
+ // Re-export parser
45
+ var parser_1 = require("./parser");
46
+ Object.defineProperty(exports, "WoodMLParser", { enumerable: true, get: function () { return parser_1.WoodMLParser; } });
47
+ Object.defineProperty(exports, "validateDocument", { enumerable: true, get: function () { return parser_1.validateDocument; } });
48
+ Object.defineProperty(exports, "calculateBoardFeet", { enumerable: true, get: function () { return parser_1.calculateBoardFeet; } });
49
+ Object.defineProperty(exports, "generateCutList", { enumerable: true, get: function () { return parser_1.generateCutList; } });
50
+ Object.defineProperty(exports, "formatCutList", { enumerable: true, get: function () { return parser_1.formatCutList; } });
51
+ // Re-export templates
52
+ var templates_1 = require("./templates");
53
+ Object.defineProperty(exports, "TemplateParser", { enumerable: true, get: function () { return templates_1.TemplateParser; } });
54
+ Object.defineProperty(exports, "createTemplateParser", { enumerable: true, get: function () { return templates_1.createTemplateParser; } });
55
+ // Re-export SVG generation
56
+ var svg_1 = require("./svg");
57
+ Object.defineProperty(exports, "SVGGenerator", { enumerable: true, get: function () { return svg_1.SVGGenerator; } });
58
+ Object.defineProperty(exports, "generateSVG", { enumerable: true, get: function () { return svg_1.generateSVG; } });
59
+ Object.defineProperty(exports, "generatePartSVG", { enumerable: true, get: function () { return svg_1.generatePartSVG; } });
60
+ // Re-export cost estimation
61
+ var cost_1 = require("./cost");
62
+ Object.defineProperty(exports, "estimateCost", { enumerable: true, get: function () { return cost_1.estimateCost; } });
63
+ Object.defineProperty(exports, "formatCostEstimate", { enumerable: true, get: function () { return cost_1.formatCostEstimate; } });
64
+ Object.defineProperty(exports, "DEFAULT_LUMBER_PRICES", { enumerable: true, get: function () { return cost_1.DEFAULT_LUMBER_PRICES; } });
65
+ Object.defineProperty(exports, "DEFAULT_HARDWARE_PRICES", { enumerable: true, get: function () { return cost_1.DEFAULT_HARDWARE_PRICES; } });
66
+ // Re-export cut list optimization
67
+ var optimizer_1 = require("./optimizer");
68
+ Object.defineProperty(exports, "optimizeCutList", { enumerable: true, get: function () { return optimizer_1.optimizeCutList; } });
69
+ Object.defineProperty(exports, "formatOptimizationResult", { enumerable: true, get: function () { return optimizer_1.formatOptimizationResult; } });
70
+ Object.defineProperty(exports, "STANDARD_SHEET_SIZES", { enumerable: true, get: function () { return optimizer_1.STANDARD_SHEET_SIZES; } });
71
+ Object.defineProperty(exports, "STANDARD_BOARD_LENGTHS", { enumerable: true, get: function () { return optimizer_1.STANDARD_BOARD_LENGTHS; } });
72
+ // Re-export PDF generation
73
+ var pdf_1 = require("./pdf");
74
+ Object.defineProperty(exports, "generateCutSheetPDF", { enumerable: true, get: function () { return pdf_1.generateCutSheetPDF; } });
75
+ Object.defineProperty(exports, "generateDiagramPDF", { enumerable: true, get: function () { return pdf_1.generateDiagramPDF; } });
76
+ Object.defineProperty(exports, "PAGE_SIZES", { enumerable: true, get: function () { return pdf_1.PAGE_SIZES; } });
77
+ // Convenience function
78
+ const parser_2 = require("./parser");
79
+ /**
80
+ * Parse a WoodML string
81
+ */
82
+ function parse(source) {
83
+ const parser = new parser_2.WoodMLParser();
84
+ return parser.parse(source);
85
+ }
86
+ /**
87
+ * Parse and resolve a WoodML string
88
+ */
89
+ function parseAndResolve(source) {
90
+ const parser = new parser_2.WoodMLParser();
91
+ return parser.parseAndResolve(source);
92
+ }
93
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;AAsGH,sBAGC;AAKD,0CAGC;AA/GD,sBAAsB;AACtB,0CAAwB;AAExB,2BAA2B;AAC3B,iCAYiB;AAXf,uGAAA,cAAc,OAAA;AACd,iGAAA,QAAQ,OAAA;AACR,sGAAA,aAAa,OAAA;AACb,kGAAA,SAAS,OAAA;AACT,uGAAA,cAAc,OAAA;AACd,qGAAA,YAAY,OAAA;AACZ,wGAAA,eAAe,OAAA;AACf,0GAAA,iBAAiB,OAAA;AACjB,+GAAA,sBAAsB,OAAA;AACtB,4GAAA,mBAAmB,OAAA;AACnB,4GAAA,mBAAmB,OAAA;AAGrB,8BAA8B;AAC9B,uCAMoB;AALlB,yGAAA,aAAa,OAAA;AACb,2GAAA,eAAe,OAAA;AACf,2GAAA,eAAe,OAAA;AAKjB,mBAAmB;AACnB,mCAQkB;AAPhB,sGAAA,YAAY,OAAA;AACZ,0GAAA,gBAAgB,OAAA;AAChB,4GAAA,kBAAkB,OAAA;AAClB,yGAAA,eAAe,OAAA;AACf,uGAAA,aAAa,OAAA;AAKf,sBAAsB;AACtB,yCAQqB;AAPnB,2GAAA,cAAc,OAAA;AACd,iHAAA,oBAAoB,OAAA;AAQtB,2BAA2B;AAC3B,6BAKe;AAJb,mGAAA,YAAY,OAAA;AACZ,kGAAA,WAAW,OAAA;AACX,sGAAA,eAAe,OAAA;AAIjB,4BAA4B;AAC5B,+BAYgB;AAXd,oGAAA,YAAY,OAAA;AACZ,0GAAA,kBAAkB,OAAA;AAQlB,6GAAA,qBAAqB,OAAA;AACrB,+GAAA,uBAAuB,OAAA;AAGzB,kCAAkC;AAClC,yCAUqB;AATnB,4GAAA,eAAe,OAAA;AACf,qHAAA,wBAAwB,OAAA;AAMxB,iHAAA,oBAAoB,OAAA;AACpB,mHAAA,sBAAsB,OAAA;AAGxB,2BAA2B;AAC3B,6BAKe;AAJb,0GAAA,mBAAmB,OAAA;AACnB,yGAAA,kBAAkB,OAAA;AAElB,iGAAA,UAAU,OAAA;AAGZ,uBAAuB;AACvB,qCAAwC;AAGxC;;GAEG;AACH,SAAgB,KAAK,CAAC,MAAc;IAClC,MAAM,MAAM,GAAG,IAAI,qBAAY,EAAE,CAAC;IAClC,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,MAAc;IAC5C,MAAM,MAAM,GAAG,IAAI,qBAAY,EAAE,CAAC;IAClC,OAAO,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;AACxC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Integration tests for WoodML parser
3
+ * Tests real-world example files end-to-end
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=integration.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration.test.d.ts","sourceRoot":"","sources":["../src/integration.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}