@machineblocks/render-target 0.0.0-stage → 0.1.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 (89) hide show
  1. package/blocks/com/machineblocks/bml/target/render/Library.bml +55 -0
  2. package/blocks/com/machineblocks/bml/target/render/README.bml +37 -0
  3. package/blocks/com/machineblocks/bml/target/render/documentation/AssemblyPatterns.bml +47 -0
  4. package/blocks/com/machineblocks/bml/target/render/documentation/CompositeRendering.bml +60 -0
  5. package/blocks/com/machineblocks/bml/target/render/documentation/Customizer.bml +62 -0
  6. package/blocks/com/machineblocks/bml/target/render/documentation/DomainBoundary.bml +43 -0
  7. package/blocks/com/machineblocks/bml/target/render/documentation/ExpressionRenderer.bml +58 -0
  8. package/blocks/com/machineblocks/bml/target/render/documentation/FileStructure.bml +42 -0
  9. package/blocks/com/machineblocks/bml/target/render/documentation/FqnNaming.bml +85 -0
  10. package/blocks/com/machineblocks/bml/target/render/documentation/HelperFunctions.bml +57 -0
  11. package/blocks/com/machineblocks/bml/target/render/documentation/Imports.bml +49 -0
  12. package/blocks/com/machineblocks/bml/target/render/documentation/Introduction.bml +43 -0
  13. package/blocks/com/machineblocks/bml/target/render/documentation/LeafOptimization.bml +44 -0
  14. package/blocks/com/machineblocks/bml/target/render/documentation/NativeMappings.bml +58 -0
  15. package/blocks/com/machineblocks/bml/target/render/documentation/Presets.bml +50 -0
  16. package/blocks/com/machineblocks/bml/target/render/documentation/PropertyRenderer.bml +50 -0
  17. package/blocks/com/machineblocks/bml/target/render/documentation/RendererPipeline.bml +51 -0
  18. package/blocks/com/machineblocks/bml/target/render/documentation/SerializationRules.bml +84 -0
  19. package/blocks/com/machineblocks/bml/target/render/documentation/SetRendering.bml +77 -0
  20. package/blocks/com/machineblocks/bml/target/render/documentation/SettingsFormat.bml +80 -0
  21. package/blocks/com/machineblocks/bml/target/render/documentation/SourceMaps.bml +33 -0
  22. package/blocks/com/machineblocks/bml/target/render/documentation/TargetRegistration.bml +61 -0
  23. package/blocks/com/machineblocks/bml/target/render/documentation/V1Scope.bml +44 -0
  24. package/dist/composite.d.ts +8 -0
  25. package/dist/composite.d.ts.map +1 -0
  26. package/dist/composite.js +232 -0
  27. package/dist/composite.js.map +1 -0
  28. package/dist/composition.d.ts +6 -0
  29. package/dist/composition.d.ts.map +1 -0
  30. package/dist/composition.js +40 -0
  31. package/dist/composition.js.map +1 -0
  32. package/dist/diagnostics.d.ts +22 -0
  33. package/dist/diagnostics.d.ts.map +1 -0
  34. package/dist/diagnostics.js +29 -0
  35. package/dist/diagnostics.js.map +1 -0
  36. package/dist/dispatch.d.ts +13 -0
  37. package/dist/dispatch.d.ts.map +1 -0
  38. package/dist/dispatch.js +46 -0
  39. package/dist/dispatch.js.map +1 -0
  40. package/dist/index.d.ts +10 -0
  41. package/dist/index.d.ts.map +1 -0
  42. package/dist/index.js +8 -0
  43. package/dist/index.js.map +1 -0
  44. package/dist/leaf.d.ts +4 -0
  45. package/dist/leaf.d.ts.map +1 -0
  46. package/dist/leaf.js +92 -0
  47. package/dist/leaf.js.map +1 -0
  48. package/dist/machineblocks-render-target.d.ts +14 -0
  49. package/dist/machineblocks-render-target.d.ts.map +1 -0
  50. package/dist/machineblocks-render-target.js +63 -0
  51. package/dist/machineblocks-render-target.js.map +1 -0
  52. package/dist/naming.d.ts +29 -0
  53. package/dist/naming.d.ts.map +1 -0
  54. package/dist/naming.js +120 -0
  55. package/dist/naming.js.map +1 -0
  56. package/dist/options.d.ts +8 -0
  57. package/dist/options.d.ts.map +1 -0
  58. package/dist/options.js +26 -0
  59. package/dist/options.js.map +1 -0
  60. package/dist/paths.d.ts +6 -0
  61. package/dist/paths.d.ts.map +1 -0
  62. package/dist/paths.js +55 -0
  63. package/dist/paths.js.map +1 -0
  64. package/dist/presets.d.ts +6 -0
  65. package/dist/presets.d.ts.map +1 -0
  66. package/dist/presets.js +105 -0
  67. package/dist/presets.js.map +1 -0
  68. package/dist/processors.d.ts +24 -0
  69. package/dist/processors.d.ts.map +1 -0
  70. package/dist/processors.js +72 -0
  71. package/dist/processors.js.map +1 -0
  72. package/dist/serialize.d.ts +7 -0
  73. package/dist/serialize.d.ts.map +1 -0
  74. package/dist/serialize.js +42 -0
  75. package/dist/serialize.js.map +1 -0
  76. package/dist/set-file.d.ts +5 -0
  77. package/dist/set-file.d.ts.map +1 -0
  78. package/dist/set-file.js +199 -0
  79. package/dist/set-file.js.map +1 -0
  80. package/dist/source-map.d.ts +13 -0
  81. package/dist/source-map.d.ts.map +1 -0
  82. package/dist/source-map.js +41 -0
  83. package/dist/source-map.js.map +1 -0
  84. package/dist/version.d.ts +8 -0
  85. package/dist/version.d.ts.map +1 -0
  86. package/dist/version.js +8 -0
  87. package/dist/version.js.map +1 -0
  88. package/package.json +41 -4
  89. package/README.md +0 -3
@@ -0,0 +1,42 @@
1
+ const IDENTIFIER = /^[A-Za-z_][A-Za-z0-9_]*$/;
2
+ export function isIdentifier(raw) {
3
+ return IDENTIFIER.test(raw.trim());
4
+ }
5
+ export function scadString(value) {
6
+ return `"${value.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"`;
7
+ }
8
+ /** Customizer JSON stores every value as a string. Strings stay unquoted. */
9
+ export function presetParameterValue(value) {
10
+ const raw = value.value;
11
+ if (typeof raw === "string") {
12
+ return raw;
13
+ }
14
+ if (typeof raw === "boolean" || typeof raw === "number") {
15
+ return String(raw);
16
+ }
17
+ if (isSizeXYZ(raw)) {
18
+ return `[${raw.x}, ${raw.y}, ${raw.z}]`;
19
+ }
20
+ return undefined;
21
+ }
22
+ export function serializeLiteral(value) {
23
+ const raw = value.value;
24
+ if (typeof raw === "boolean" || typeof raw === "number") {
25
+ return String(raw);
26
+ }
27
+ if (typeof raw === "string") {
28
+ return scadString(raw);
29
+ }
30
+ if (isSizeXYZ(raw)) {
31
+ return `[${raw.x}, ${raw.y}, ${raw.z}]`;
32
+ }
33
+ return undefined;
34
+ }
35
+ function isSizeXYZ(value) {
36
+ if (value === null || typeof value !== "object") {
37
+ return false;
38
+ }
39
+ const record = value;
40
+ return typeof record.x === "number" && typeof record.y === "number" && typeof record.z === "number";
41
+ }
42
+ //# sourceMappingURL=serialize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialize.js","sourceRoot":"","sources":["../src/serialize.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,GAAG,0BAA0B,CAAC;AAE9C,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;AAClE,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,oBAAoB,CAAC,KAAmB;IACtD,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC;IACxB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,GAAG,CAAC;IACb,CAAC;IACD,IAAI,OAAO,GAAG,KAAK,SAAS,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACxD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IACD,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;QACnB,OAAO,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;IAC1C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAmB;IAClD,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC;IACxB,IAAI,OAAO,GAAG,KAAK,SAAS,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACxD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IACD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;QACnB,OAAO,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;IAC1C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,OAAO,OAAO,MAAM,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,CAAC,KAAK,QAAQ,CAAC;AACtG,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { BlockDefinition } from "@blockml/bom";
2
+ import type { RenderOutput } from "@blockml/compiler";
3
+ import { type ManifestationMapping } from "./naming.js";
4
+ export declare function renderSetFile(block: BlockDefinition, outputRelativePath: string, outputBasePath: string, mbLibPath: string, mapping: ManifestationMapping): RenderOutput;
5
+ //# sourceMappingURL=set-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-file.d.ts","sourceRoot":"","sources":["../src/set-file.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAA+B,MAAM,cAAc,CAAC;AACjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAItD,OAAO,EAAsE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAa5H,wBAAgB,aAAa,CAC3B,KAAK,EAAE,eAAe,EACtB,kBAAkB,EAAE,MAAM,EAC1B,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,oBAAoB,GAC5B,YAAY,CA+Hd"}
@@ -0,0 +1,199 @@
1
+ import { compositionChildren } from "./composition.js";
2
+ import { SET_PART_INCOMPLETE, errorOutput } from "./diagnostics.js";
3
+ import { dirnamePosix, joinPosix, relativePosix } from "./paths.js";
4
+ import { mapManifestation, moduleNameForManifestation, pathForManifestation } from "./naming.js";
5
+ import { serializeLiteral } from "./serialize.js";
6
+ import { withSourceMap } from "./source-map.js";
7
+ import { RENDER_TARGET_VERSION } from "./version.js";
8
+ export function renderSetFile(block, outputRelativePath, outputBasePath, mbLibPath, mapping) {
9
+ const source = block.source ?? { file: "", line: 1, column: 1 };
10
+ const placements = [];
11
+ for (const child of compositionChildren(block, "parts")) {
12
+ if (child.kind !== "blockInstance") {
13
+ continue;
14
+ }
15
+ const placement = placementOf(child.instance, source);
16
+ if ("files" in placement) {
17
+ return placement;
18
+ }
19
+ placements.push(placement);
20
+ }
21
+ const ordered = orderBySteps(block, placements);
22
+ const root = mapManifestation(block.type, mapping, "selected");
23
+ if (!root.ok) {
24
+ return errorOutput(root.code, root.message, source);
25
+ }
26
+ const moduleName = moduleNameForManifestation(root.fqn);
27
+ const filename = outputRelativePath.split("/").pop() ?? `${block.name}.scad`;
28
+ const outputDir = dirnamePosix(joinPosix(outputBasePath, outputRelativePath));
29
+ const typeManifestations = new Map();
30
+ for (const placement of ordered) {
31
+ if (typeManifestations.has(placement.typeFqn)) {
32
+ continue;
33
+ }
34
+ const manifested = mapManifestation(placement.typeFqn, mapping, "reference");
35
+ if (!manifested.ok) {
36
+ return errorOutput(manifested.code, manifested.message, source);
37
+ }
38
+ typeManifestations.set(placement.typeFqn, manifested.fqn);
39
+ }
40
+ const imports = [
41
+ `use <${relativePosix(outputDir, joinPosix(mbLibPath, "lib/block.scad"))}>;`,
42
+ `include <${relativePosix(outputDir, joinPosix(mbLibPath, "config/mb_config.scad"))}>;`,
43
+ ...distinctTypeImports(ordered, outputDir, outputBasePath, typeManifestations),
44
+ ];
45
+ const firstId = ordered[0]?.id ?? "00001";
46
+ const baseColor = block.members.find((member) => member.kind === "property" && member.name === "baseColor");
47
+ const baseColorValue = baseColor && baseColor.kind === "property" && baseColor.value?.kind === "literal" && typeof baseColor.value.value === "string"
48
+ ? baseColor.value.value
49
+ : "#EAC645";
50
+ const steps = ordered
51
+ .map((placement) => ` ["${placement.id}", ${placement.size}, "${placement.direction}", ${placement.offset}]`)
52
+ .join(",\n");
53
+ const instanceCalls = ordered.map((placement) => ` ${moduleName}__Instance_${placement.id}();`).join("\n");
54
+ const stepCalls = ordered
55
+ .map((placement, index) => ` if (step >= ${index}) ${moduleName}__Instance_${placement.id}();`)
56
+ .join("\n");
57
+ const dispatch = ordered
58
+ .map((placement, index) => {
59
+ const keyword = index === 0 ? "if" : "else if";
60
+ return ` ${keyword} (instanceId == "${placement.id}") ${moduleName}__Instance_${placement.id}();`;
61
+ })
62
+ .join("\n");
63
+ const instanceModules = ordered
64
+ .map((placement) => `module ${moduleName}__Instance_${placement.id}() {
65
+ ${moduleNameForManifestation(manifestedType(placement.typeFqn, typeManifestations))}();
66
+ }`)
67
+ .join("\n\n");
68
+ const content = `/**
69
+ * MachineBlocks.com Block File
70
+ *
71
+ * Name: ${block.name}
72
+ * Filename: ${filename}
73
+ * Package: ${block.type}
74
+ * Generated by: machineblocks-render-target (${RENDER_TARGET_VERSION})
75
+ */
76
+
77
+ /* Imports */
78
+ ${imports.join("\n")}
79
+
80
+ /* Customization */
81
+ mode = "total"; // [total:Total, print:3D Print, step:Step, instance:Instance]
82
+ step = 0; // [0:9]
83
+ instanceId = "${firstId}";
84
+ assembly = "merged"; // [unassembled:Unassembled, assembled:Assembled, merged:Merged]
85
+ baseColor = "${baseColorValue}";
86
+
87
+ /* Main Module Call */
88
+ ${moduleName}(config = mb_config);
89
+
90
+ /* Main Module Definition */
91
+ module ${moduleName}(config = undef) {
92
+ STEPS = [
93
+ ${steps}
94
+ ];
95
+ mb_block(
96
+ config = config,
97
+ settings = [
98
+ ["size", mb_set_bounding_box(STEPS)]
99
+ ]
100
+ );
101
+ if (mode == "total") ${moduleName}__Total();
102
+ else if (mode == "print") ${moduleName}__Print();
103
+ else if (mode == "step") ${moduleName}__Step();
104
+ else if (mode == "instance") ${moduleName}__Instance();
105
+ }
106
+
107
+ /* Optional Sub Modules */
108
+ module ${moduleName}__Total() {
109
+ ${instanceCalls}
110
+ }
111
+
112
+ module ${moduleName}__Print() {
113
+ ${instanceCalls}
114
+ }
115
+
116
+ module ${moduleName}__Step() {
117
+ ${stepCalls}
118
+ }
119
+
120
+ module ${moduleName}__Instance() {
121
+ ${dispatch}
122
+ }
123
+
124
+ ${instanceModules}
125
+
126
+ /* Optional Helper Modules */
127
+ /* Optional Global Functions */
128
+ `;
129
+ return { files: [withSourceMap(block, { path: outputRelativePath, content })] };
130
+ }
131
+ function placementOf(instance, source) {
132
+ const id = literalString(instance.id);
133
+ const sizeMember = instance.memberValues.size;
134
+ const size = sizeMember?.kind === "literal" ? serializeLiteral(sizeMember) : undefined;
135
+ if (!id || !size) {
136
+ return errorOutput(SET_PART_INCOMPLETE, "A placed part needs an id and a size.", instance.source ?? source);
137
+ }
138
+ const direction = literalString(instance.memberValues.direction) ?? "west";
139
+ const offsetMember = instance.memberValues.offset;
140
+ const offset = offsetMember?.kind === "literal" ? serializeLiteral(offsetMember) ?? "[0, 0, 0]" : "[0, 0, 0]";
141
+ return { id, typeFqn: instance.typeFqn, size, direction, offset };
142
+ }
143
+ function orderBySteps(block, placements) {
144
+ const steps = compositionChildren(block, "steps").flatMap((child) => {
145
+ if (child.kind !== "blockInstance") {
146
+ return [];
147
+ }
148
+ const part = literalString(child.instance.memberValues.part) ?? literalString(child.instance.id);
149
+ return part ? [part] : [];
150
+ });
151
+ if (steps.length === 0) {
152
+ return [...placements];
153
+ }
154
+ const byId = new Map(placements.map((placement) => [placement.id, placement]));
155
+ const ordered = [];
156
+ for (const id of steps) {
157
+ const placement = byId.get(id);
158
+ if (placement) {
159
+ ordered.push(placement);
160
+ }
161
+ }
162
+ for (const placement of placements) {
163
+ if (!ordered.includes(placement)) {
164
+ ordered.push(placement);
165
+ }
166
+ }
167
+ return ordered;
168
+ }
169
+ function manifestedType(typeFqn, typeManifestations) {
170
+ const manifestation = typeManifestations.get(typeFqn);
171
+ if (!manifestation) {
172
+ throw new Error(`Missing manifestation for ${typeFqn}`);
173
+ }
174
+ return manifestation;
175
+ }
176
+ function distinctTypeImports(placements, outputDir, outputBasePath, typeManifestations) {
177
+ const seen = new Set();
178
+ const lines = [];
179
+ for (const placement of placements) {
180
+ if (seen.has(placement.typeFqn)) {
181
+ continue;
182
+ }
183
+ seen.add(placement.typeFqn);
184
+ const manifestation = typeManifestations.get(placement.typeFqn);
185
+ if (!manifestation) {
186
+ continue;
187
+ }
188
+ const target = joinPosix(outputBasePath, pathForManifestation(manifestation, "scad"));
189
+ lines.push(`use <${relativePosix(outputDir, target)}>;`);
190
+ }
191
+ return lines;
192
+ }
193
+ function literalString(value) {
194
+ if (!value || value.kind !== "literal" || typeof value.value !== "string") {
195
+ return undefined;
196
+ }
197
+ return value.value;
198
+ }
199
+ //# sourceMappingURL=set-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-file.js","sourceRoot":"","sources":["../src/set-file.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,oBAAoB,EAA6B,MAAM,aAAa,CAAC;AAC5H,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAUrD,MAAM,UAAU,aAAa,CAC3B,KAAsB,EACtB,kBAA0B,EAC1B,cAAsB,EACtB,SAAiB,EACjB,OAA6B;IAE7B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IAChE,MAAM,UAAU,GAAgB,EAAE,CAAC;IACnC,KAAK,MAAM,KAAK,IAAI,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;QACxD,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YACnC,SAAS;QACX,CAAC;QACD,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACtD,IAAI,OAAO,IAAI,SAAS,EAAE,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IACD,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAC/D,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACb,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IACD,MAAM,UAAU,GAAG,0BAA0B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,KAAK,CAAC,IAAI,OAAO,CAAC;IAC7E,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAC9E,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACrD,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;QAChC,IAAI,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9C,SAAS;QACX,CAAC;QACD,MAAM,UAAU,GAAG,gBAAgB,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QAC7E,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;YACnB,OAAO,WAAW,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAClE,CAAC;QACD,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,OAAO,GAAG;QACd,QAAQ,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,IAAI;QAC5E,YAAY,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC,IAAI;QACvF,GAAG,mBAAmB,CAAC,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,kBAAkB,CAAC;KAC/E,CAAC;IACF,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,OAAO,CAAC;IAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;IAC5G,MAAM,cAAc,GAClB,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,UAAU,IAAI,SAAS,CAAC,KAAK,EAAE,IAAI,KAAK,SAAS,IAAI,OAAO,SAAS,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ;QAC5H,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK;QACvB,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,KAAK,GAAG,OAAO;SAClB,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,aAAa,SAAS,CAAC,EAAE,MAAM,SAAS,CAAC,IAAI,MAAM,SAAS,CAAC,SAAS,MAAM,SAAS,CAAC,MAAM,GAAG,CAAC;SACnH,IAAI,CAAC,KAAK,CAAC,CAAC;IACf,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,UAAU,cAAc,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9G,MAAM,SAAS,GAAG,OAAO;SACtB,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,mBAAmB,KAAK,KAAK,UAAU,cAAc,SAAS,CAAC,EAAE,KAAK,CAAC;SACjG,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,MAAM,QAAQ,GAAG,OAAO;SACrB,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;QACxB,MAAM,OAAO,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/C,OAAO,OAAO,OAAO,oBAAoB,SAAS,CAAC,EAAE,MAAM,UAAU,cAAc,SAAS,CAAC,EAAE,KAAK,CAAC;IACvG,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,MAAM,eAAe,GAAG,OAAO;SAC5B,GAAG,CACF,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,UAAU,cAAc,SAAS,CAAC,EAAE;MAC7D,0BAA0B,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;EACrF,CACG;SACA,IAAI,CAAC,MAAM,CAAC,CAAC;IAEhB,MAAM,OAAO,GAAG;;;WAGP,KAAK,CAAC,IAAI;eACN,QAAQ;cACT,KAAK,CAAC,IAAI;gDACwB,qBAAqB;;;;EAInE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;gBAKJ,OAAO;;eAER,cAAc;;;EAG3B,UAAU;;;SAGH,UAAU;;EAEjB,KAAK;;;;;;;;2BAQoB,UAAU;gCACL,UAAU;+BACX,UAAU;mCACN,UAAU;;;;SAIpC,UAAU;EACjB,aAAa;;;SAGN,UAAU;EACjB,aAAa;;;SAGN,UAAU;EACjB,SAAS;;;SAGF,UAAU;EACjB,QAAQ;;;EAGR,eAAe;;;;CAIhB,CAAC;IAEA,OAAO,EAAE,KAAK,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC;AAClF,CAAC;AAED,SAAS,WAAW,CAClB,QAAuB,EACvB,MAAsD;IAEtD,MAAM,EAAE,GAAG,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACtC,MAAM,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC;IAC9C,MAAM,IAAI,GAAG,UAAU,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvF,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,WAAW,CAAC,mBAAmB,EAAE,uCAAuC,EAAE,QAAQ,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC;IAC9G,CAAC;IACD,MAAM,SAAS,GAAG,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC;IAC3E,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC;IAClD,MAAM,MAAM,GAAG,YAAY,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC;IAC9G,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;AACpE,CAAC;AAED,SAAS,YAAY,CAAC,KAAsB,EAAE,UAAgC;IAC5E,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAClE,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YACnC,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACjG,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;IACH,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC;IACzB,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAC/E,MAAM,OAAO,GAAgB,EAAE,CAAC;IAChC,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,cAAc,CAAC,OAAe,EAAE,kBAA+C;IACtF,MAAM,aAAa,GAAG,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,6BAA6B,OAAO,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,mBAAmB,CAC1B,UAAgC,EAChC,SAAiB,EACjB,cAAsB,EACtB,kBAA+C;IAE/C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,SAAS;QACX,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC5B,MAAM,aAAa,GAAG,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAChE,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,SAAS,CAAC,cAAc,EAAE,oBAAoB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;QACtF,KAAK,CAAC,IAAI,CAAC,QAAQ,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,KAA6F;IAClH,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC1E,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,KAAK,CAAC,KAAK,CAAC;AACrB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { BlockDefinition } from "@blockml/bom";
2
+ export declare function encodeVlq(value: number): string;
3
+ /** One mappings group per generated line, all pointing at the block definition. */
4
+ export declare function sourceMapFor(content: string, filename: string, block: BlockDefinition): string;
5
+ export declare function withSourceMap(block: BlockDefinition, file: {
6
+ path: string;
7
+ content: string;
8
+ }): {
9
+ path: string;
10
+ content: string;
11
+ sourceMap: string;
12
+ };
13
+ //# sourceMappingURL=source-map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-map.d.ts","sourceRoot":"","sources":["../src/source-map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAIpD,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAgB/C;AAED,mFAAmF;AACnF,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,MAAM,CAoB9F;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAGtD"}
@@ -0,0 +1,41 @@
1
+ const CHARSET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
2
+ export function encodeVlq(value) {
3
+ let vlq = value < 0 ? (-value << 1) + 1 : value << 1;
4
+ let encoded = "";
5
+ do {
6
+ let digit = vlq & 31;
7
+ vlq >>>= 5;
8
+ if (vlq > 0) {
9
+ digit |= 32;
10
+ }
11
+ const char = CHARSET[digit];
12
+ if (char === undefined) {
13
+ break;
14
+ }
15
+ encoded += char;
16
+ } while (vlq > 0);
17
+ return encoded;
18
+ }
19
+ /** One mappings group per generated line, all pointing at the block definition. */
20
+ export function sourceMapFor(content, filename, block) {
21
+ const lines = content.endsWith("\n") ? content.slice(0, -1).split("\n") : content.split("\n");
22
+ const source = block.source;
23
+ const sourceFile = source?.file && source.file.length > 0 ? source.file : filename;
24
+ const line = Math.max((source?.line ?? 1) - 1, 0);
25
+ const column = Math.max((source?.column ?? 1) - 1, 0);
26
+ const first = `${encodeVlq(0)}${encodeVlq(0)}${encodeVlq(line)}${encodeVlq(column)}`;
27
+ const rest = `${encodeVlq(0)}${encodeVlq(0)}${encodeVlq(0)}${encodeVlq(0)}`;
28
+ const mappings = lines.map((_, index) => (index === 0 ? first : rest)).join(";");
29
+ return JSON.stringify({
30
+ version: 3,
31
+ file: filename,
32
+ sources: [sourceFile],
33
+ names: [],
34
+ mappings,
35
+ }, null, 2);
36
+ }
37
+ export function withSourceMap(block, file) {
38
+ const filename = file.path.split("/").pop() ?? file.path;
39
+ return { ...file, sourceMap: sourceMapFor(file.content, filename, block) };
40
+ }
41
+ //# sourceMappingURL=source-map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-map.js","sourceRoot":"","sources":["../src/source-map.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /** Tracks packages/machineblocks-render-target/package.json. */
2
+ export declare const RENDER_TARGET_VERSION = "0.1.0";
3
+ export declare const TARGET_NAME = "machineblocks-v3-scad";
4
+ export declare const BLOCK_FQN = "com.machineblocks.bml.core.Block";
5
+ export declare const SET_FQN = "com.machineblocks.bml.core.Set";
6
+ export declare const NATIVE_BLOCK_FQN = "com.machineblocks.bml.core.NativeBlock";
7
+ export declare const SIZE_XYZ_FQN = "com.machineblocks.bml.type.SizeXYZ";
8
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,eAAO,MAAM,qBAAqB,UAAU,CAAC;AAE7C,eAAO,MAAM,WAAW,0BAA0B,CAAC;AAEnD,eAAO,MAAM,SAAS,qCAAqC,CAAC;AAC5D,eAAO,MAAM,OAAO,mCAAmC,CAAC;AACxD,eAAO,MAAM,gBAAgB,2CAA2C,CAAC;AACzE,eAAO,MAAM,YAAY,uCAAuC,CAAC"}
@@ -0,0 +1,8 @@
1
+ /** Tracks packages/machineblocks-render-target/package.json. */
2
+ export const RENDER_TARGET_VERSION = "0.1.0";
3
+ export const TARGET_NAME = "machineblocks-v3-scad";
4
+ export const BLOCK_FQN = "com.machineblocks.bml.core.Block";
5
+ export const SET_FQN = "com.machineblocks.bml.core.Set";
6
+ export const NATIVE_BLOCK_FQN = "com.machineblocks.bml.core.NativeBlock";
7
+ export const SIZE_XYZ_FQN = "com.machineblocks.bml.type.SizeXYZ";
8
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAO,CAAC;AAE7C,MAAM,CAAC,MAAM,WAAW,GAAG,uBAAuB,CAAC;AAEnD,MAAM,CAAC,MAAM,SAAS,GAAG,kCAAkC,CAAC;AAC5D,MAAM,CAAC,MAAM,OAAO,GAAG,gCAAgC,CAAC;AACxD,MAAM,CAAC,MAAM,gBAAgB,GAAG,wCAAwC,CAAC;AACzE,MAAM,CAAC,MAAM,YAAY,GAAG,oCAAoC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,43 @@
1
1
  {
2
2
  "name": "@machineblocks/render-target",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.1.0",
4
+ "description": "MachineBlocks BlockML compiler target — render BML to MachineBlocks V3 OpenSCAD",
5
+ "license": "Apache-2.0",
6
+ "publishConfig": {
7
+ "access": "public"
8
+ },
9
+ "type": "module",
10
+ "sideEffects": false,
11
+ "blockml": {
12
+ "library": "./blocks/com/machineblocks/bml/target/render/Library.bml"
13
+ },
14
+ "exports": {
15
+ ".": {
16
+ "types": "./dist/index.d.ts",
17
+ "import": "./dist/index.js"
18
+ }
19
+ },
20
+ "files": [
21
+ "dist",
22
+ "blocks"
23
+ ],
24
+ "scripts": {
25
+ "build": "tsc --build",
26
+ "prepublishOnly": "npm run build",
27
+ "test": "vitest run --root ../.. packages/machineblocks-render-target/test"
28
+ },
29
+ "dependencies": {
30
+ "@blockml/block-render-engine": "^0.1.0",
31
+ "@blockml/bom": "^0.9.13",
32
+ "@blockml/compiler": "^0.9.13",
33
+ "@blockml/core": "^1.4.2",
34
+ "@machineblocks/core": "^3.0.0-A4"
35
+ },
36
+ "devDependencies": {
37
+ "@blockml/framework": "^0.9.13",
38
+ "@blockml/parser": "^0.9.13"
39
+ },
40
+ "engines": {
41
+ "node": ">=20"
42
+ }
43
+ }
package/README.md DELETED
@@ -1,3 +0,0 @@
1
- # Temporary Holding Version
2
-
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.