<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[fetch() in a design]]></title><description><![CDATA[<p dir="auto">On the web gui, I would like to use async functions like fetch  to download files.<br />
It works until the worker processing the return value has this error:</p>
<pre><code>Error: bad output from script: expected geom3/geom2/path2 objects

Error: bad output from script: expected geom3/geom2/path2 objects
at instanciateDesign (blob:https://openjscad.xyz/566edeb4-489d-4374-9a66-507d4bc78551:8:556)
at rebuildSolids (blob:https://openjscad.xyz/566edeb4-489d-4374-9a66-507d4bc78551:11:712)
at e.onmessage (blob:https://openjscad.xyz/566edeb4-489d-4374-9a66-507d4bc78551:14:159)
</code></pre>
<p dir="auto">Note that the output is actually a geom3, confirmed in the console.<br />
I could use the debugger and it seems that the fulfilled promise may need to be awaited in instanciateDesign or so. Has there been success using fetch in a design ?</p>
<p dir="auto">Here is the design example with the async parts commented:</p>
<pre><code class="language-js">const jscad = require('@jscad/modeling')
const { deserializers } = require('@jscad/io')
const { translate, scale, rotateZ } = jscad.transforms

//const main = async () =&gt; {
const main = () =&gt; {
  const url = 'https://raw.githubusercontent.com/jscad/OpenJSCAD.org/master/packages/io/x3d-deserializer/tests/ElevationGrids.x3d'
  
  //const url = 'https://raw.githubusercontent.com/create3000/Library/main/Tests/Components/CADGeometry/CADGeometry.x3d'
  //const response = await fetch(url)
  //const cadX3D = await response.text()
  const cadX3D = x3d
  const cad = deserializers.x3d({ output: 'geometry' }, cadX3D)

  console.log(cad[1], jscad.geometries.geom3.isA(cad[1]))

  return cad[1]
}

module.exports = { main }

const x3d = `&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "https://www.web3d.org/specifications/x3d-3.0.dtd"&gt;
&lt;X3D profile='Interactive' version='3.0' xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation='https://www.web3d.org/specifications/x3d-3.0.xsd'&gt;
  &lt;head&gt;
    &lt;meta content='Figure16_7VertexColoredElevationGridMountain.x3d' name='title'/&gt;
  &lt;/head&gt;
  &lt;Scene&gt;

    &lt;Shape&gt;
      &lt;ElevationGrid&gt;
      &lt;/ElevationGrid&gt;
    &lt;/Shape&gt;

    &lt;Shape&gt;
      &lt;ElevationGrid creaseAngle='0.785' height='0.0 0.0 0.5 1.0 0.5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.5 0.5 0.0 0.0 0.0 0.0 0.0 0.5 0.5 3.0 1.0 0.5 0.0 1.0 0.0 0.0 0.5 2.0 4.5 2.5 1.0 1.5 0.5 1.0 2.5 3.0 4.5 5.5 3.5 3.0 1.0 0.0 0.5 2.0 2.0 2.5 3.5 4.0 2.0 0.5 0.0 0.0 0.0 0.5 1.5 1.0 2.0 3.0 1.5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.0 1.5 0.5 0.0 0.0 0.0 0.0 0.0 0.0 0.5 0.0 0.0' solid='false' xDimension='9' zDimension='9'&gt;
        &lt;Color color='0.0 0.3 1.0 0.0 0.3 1.0 0.0 0.5 0.1 0.2 0.6 0.0 0.0 0.5 0.1 0.0 0.3 1.0 0.0 0.3 1.0 0.0 0.3 1.0 0.0 0.3 1.0 0.0 0.3 1.0 0.0 0.3 1.0 0.0 0.3 1.0 0.0 0.3 1.0 0.5 0.4 0.0 0.0 0.5 0.1 0.0 0.3 1.0 0.0 0.3 1.0 0.0 0.3 1.0 0.0 0.3 1.0 0.0 0.3 1.0 0.0 0.5 0.1 0.0 0.5 0.1 0.5 0.4 0.0 0.2 0.6 0.0 0.0 0.5 0.1 0.0 0.3 1.0 0.2 0.6 0.0 0.0 0.3 1.0 0.0 0.3 1.0 0.0 0.5 0.1 0.4 0.3 0.1 0.7 0.7 0.7 0.5 0.4 0.0 0.2 0.6 0.1 0.3 0.6 0.6 0.0 0.5 0.1 0.2 0.6 0.0 0.5 0.4 0.0 0.5 0.4 0.0 0.7 0.7 0.7 0.8 0.8 0.8 0.5 0.5 0.7 0.5 0.5 0.7 0.2 0.6 0.0 0.0 0.3 1.0 0.0 0.5 0.1 0.2 0.6 0.1 0.2 0.6 0.1 0.2 0.6 0.1 0.5 0.5 0.7 0.7 0.7 0.7 0.5 0.4 0.0 0.0 0.5 0.1 0.0 0.3 1.0 0.0 0.5 0.1 0.0 0.3 1.0 0.0 0.5 0.1 0.2 0.6 0.1 0.2 0.6 0.0 0.5 0.4 0.0 0.5 0.5 0.7 0.2 0.6 0.0 0.0 0.3 1.0 0.0 0.3 1.0 0.0 0.3 1.0 0.0 0.3 1.0 0.0 0.3 1.0 0.0 0.3 1.0 0.0 0.5 0.1 0.5 0.4 0.0 0.2 0.6 0.0 0.0 0.5 0.1 0.0 0.3 1.0 0.0 0.3 1.0 0.0 0.3 1.0 0.0 0.3 1.0 0.0 0.3 1.0 0.0 0.3 1.0 0.0 0.5 0.1 0.0 0.3 1.0 0.0 0.3 1.0'/&gt;
      &lt;/ElevationGrid&gt;
    &lt;/Shape&gt;

    &lt;Shape&gt;
      &lt;ElevationGrid height='0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0' solid='false' xDimension='8' xSpacing='1.4285713' zDimension='8' zSpacing='0.7142857'/&gt;
    &lt;/Shape&gt;

    &lt;Shape&gt;
      &lt;ElevationGrid creaseAngle='0.785' height='0.00 0.59 0.95 0.95 0.59 0.00 -0.59 -0.95 -0.95 -0.59 0.00 0.59 0.95 0.95 0.59 0.00 -0.59 -0.95 -0.95 -0.59 0.00 0.59 0.95 0.95 0.59 0.00 -0.59 -0.95 -0.95 -0.59 0.00 0.59 0.95 0.95 0.59 0.00 -0.59 -0.95 -0.95 -0.59' solid='false' zDimension='20' zSpacing='4'/&gt;
    &lt;/Shape&gt;

  &lt;/Scene&gt;
&lt;/X3D&gt;`
</code></pre>
]]></description><link>https://openjscad.nodebb.com/topic/413/fetch-in-a-design</link><generator>RSS for Node</generator><lastBuildDate>Sun, 06 Sep 2026 17:55:34 GMT</lastBuildDate><atom:link href="https://openjscad.nodebb.com/topic/413.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 03 Sep 2023 04:15:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to fetch() in a design on Thu, 07 Sep 2023 05:53:12 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/andreas-plesch" aria-label="Profile: Andreas-Plesch">@<bdi>Andreas-Plesch</bdi></a> jscad.app is just a new prototype, not yet part of official jscad, I did not implement /remote ... it is meant for fetching remote scripts you can report issues on jscadui git or ask on discord.</p>
]]></description><link>https://openjscad.nodebb.com/post/1369</link><guid isPermaLink="true">https://openjscad.nodebb.com/post/1369</guid><dc:creator><![CDATA[hrgdavor]]></dc:creator><pubDate>Thu, 07 Sep 2023 05:53:12 GMT</pubDate></item><item><title><![CDATA[Reply to fetch() in a design on Thu, 07 Sep 2023 02:45:02 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/hrgdavor" aria-label="Profile: hrgdavor">@<bdi>hrgdavor</bdi></a> Thanks.</p>
<p dir="auto">It looks there is server processing of the path<br />
<a href="https://jscad.app/remote" rel="nofollow ugc">https://jscad.app/remote</a><br />
Is that working ?</p>
]]></description><link>https://openjscad.nodebb.com/post/1368</link><guid isPermaLink="true">https://openjscad.nodebb.com/post/1368</guid><dc:creator><![CDATA[Andreas Plesch]]></dc:creator><pubDate>Thu, 07 Sep 2023 02:45:02 GMT</pubDate></item><item><title><![CDATA[Reply to fetch() in a design on Wed, 06 Sep 2023 08:33:00 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/andreas-plesch" aria-label="Profile: Andreas-Plesch">@<bdi>Andreas-Plesch</bdi></a> there is also this<br />
<a href="https://github.com/hrgdavor/jscadui/tree/main/apps/model-page" rel="nofollow ugc">https://github.com/hrgdavor/jscadui/tree/main/apps/model-page</a></p>
<p dir="auto">I made this as an example for some users that asdek on discord and published sample here <a href="https://3d.hrg.hr/tmp/darvin/" rel="nofollow ugc">https://3d.hrg.hr/tmp/darvin/</a></p>
]]></description><link>https://openjscad.nodebb.com/post/1367</link><guid isPermaLink="true">https://openjscad.nodebb.com/post/1367</guid><dc:creator><![CDATA[hrgdavor]]></dc:creator><pubDate>Wed, 06 Sep 2023 08:33:00 GMT</pubDate></item><item><title><![CDATA[Reply to fetch() in a design on Wed, 06 Sep 2023 02:41:57 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/z3dev" aria-label="Profile: z3dev">@<bdi>z3dev</bdi></a> There are security issues with fetching and then executing arbitrary js code. On the other hand this seems to be have been a choice when designs became imperative code which need to be executed. I think it may already possible to craft a design which includes security sensitive code.<br />
Thank you for the hint of dropping a project folder (zip?) on the website.<br />
This makes it easy to have larger projects. Ultimately, it shifts the responsibility of transferring code squarely to the user who still could be tricked by social engineering ('instructions' on some web page) to upload malicious code manually. It may not be that different from fetching from some source but cannot be prevented.<br />
Is there a template for creating an 'app' without building, eg. a static web page (no server) with just script elements or imports using the web as a platform ?</p>
<p dir="auto"><a href="https://raw.githack.com/jscad/OpenJSCAD.org/master/packages/utils/regl-renderer/demo.html" rel="nofollow ugc">https://raw.githack.com/jscad/OpenJSCAD.org/master/packages/utils/regl-renderer/demo.html</a></p>
<p dir="auto">seems close using unpkg.</p>
]]></description><link>https://openjscad.nodebb.com/post/1366</link><guid isPermaLink="true">https://openjscad.nodebb.com/post/1366</guid><dc:creator><![CDATA[Andreas Plesch]]></dc:creator><pubDate>Wed, 06 Sep 2023 02:41:57 GMT</pubDate></item><item><title><![CDATA[Reply to fetch() in a design on Tue, 05 Sep 2023 11:33:04 GMT]]></title><description><![CDATA[<p dir="auto">Correct. There are several reasons but in general any kind of fetching has security issues. Be careful what you wish for.</p>
<p dir="auto">If you believe that designs are secure then a fetch/evaluate could be performed. But there should be an option to 'believe'.</p>
<p dir="auto">For those wondering what should be allowed. Create a project (with multiple source files or external formats), and drag-n-drop to the website. In this case, you control the content 100%.</p>
<p dir="auto"><a href="https://openjscad.xyz/dokuwiki/doku.php?id=en:design_guide_anatomy" rel="nofollow ugc">https://openjscad.xyz/dokuwiki/doku.php?id=en:design_guide_anatomy</a></p>
]]></description><link>https://openjscad.nodebb.com/post/1365</link><guid isPermaLink="true">https://openjscad.nodebb.com/post/1365</guid><dc:creator><![CDATA[z3dev]]></dc:creator><pubDate>Tue, 05 Sep 2023 11:33:04 GMT</pubDate></item><item><title><![CDATA[Reply to fetch() in a design on Mon, 04 Sep 2023 20:10:06 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/andreas-plesch" aria-label="Profile: Andreas-Plesch">@<bdi>Andreas-Plesch</bdi></a> Some examples:</p>
<pre><code class="language-js">const jscad = require('@jscad/modeling')
const { deserializers } = require('@jscad/io')
const { translate, scale, rotateX } = jscad.transforms

const main = async () =&gt; {
  //const url = 'https://raw.githubusercontent.com/jscad/OpenJSCAD.org/master/packages/io/x3d-deserializer/tests/ElevationGrids.x3d'
  
  //const url = 'https://raw.githubusercontent.com/create3000/Library/main/Tests/Components/CADGeometry/CADGeometry.x3d'
  //const url = 'https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter02GeometryPrimitives/GeometryPrimitiveNodes.x3d'
  //const url = 'https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter02GeometryPrimitives/GeometryPrimitiveSubstituteMeshes.x3d'
  //const url = 'https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter10Geometry2D/Summary2D.x3d'
  const url = 'https://www.web3d.org/x3d/content/examples/Basic/Medical/BonesAllSkeleton.x3d'
  const response = await fetch(url)
  const cadX3D = await response.text()
  // const cadX3D = x3d
  const cad = deserializers.x3d({ output: 'geometry' }, cadX3D)

  return rotateX(1.57, cad)
}

module.exports = { main }
</code></pre>
<p dir="auto"><img src="/assets/uploads/files/1693858177083-ed33a3fa-c8c0-4fb4-8acd-a7f77363dda6-image.png" alt="ed33a3fa-c8c0-4fb4-8acd-a7f77363dda6-image.png" class=" img-fluid img-markdown" /></p>
]]></description><link>https://openjscad.nodebb.com/post/1364</link><guid isPermaLink="true">https://openjscad.nodebb.com/post/1364</guid><dc:creator><![CDATA[Andreas Plesch]]></dc:creator><pubDate>Mon, 04 Sep 2023 20:10:06 GMT</pubDate></item><item><title><![CDATA[Reply to fetch() in a design on Mon, 04 Sep 2023 04:52:43 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/hrgdavor" aria-label="Profile: hrgdavor">@<bdi>hrgdavor</bdi></a> cool, thanks.</p>
]]></description><link>https://openjscad.nodebb.com/post/1363</link><guid isPermaLink="true">https://openjscad.nodebb.com/post/1363</guid><dc:creator><![CDATA[Andreas Plesch]]></dc:creator><pubDate>Mon, 04 Sep 2023 04:52:43 GMT</pubDate></item><item><title><![CDATA[Reply to fetch() in a design on Sun, 03 Sep 2023 20:16:01 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/andreas-plesch" aria-label="Profile: Andreas-Plesch">@<bdi>Andreas-Plesch</bdi></a> jscad.app has been just updated, and the example:</p>
<pre><code class="language-js">const jscad = require('@jscad/modeling')
const { deserializers } = require('@jscad/io')
const { translate, scale, rotateZ } = jscad.transforms

const main = async () =&gt; {
  const url = 'https://raw.githubusercontent.com/jscad/OpenJSCAD.org/master/packages/io/x3d-deserializer/tests/ElevationGrids.x3d'
  
  const response = await fetch(url)
  const cadX3D = await response.text()
  const cad = deserializers.x3d({ output: 'geometry' }, cadX3D)

  console.log(cad[1], jscad.geometries.geom3.isA(cad[1]))

  return cad[1]
}

module.exports = { main }
</code></pre>
<p dir="auto">works now</p>
]]></description><link>https://openjscad.nodebb.com/post/1362</link><guid isPermaLink="true">https://openjscad.nodebb.com/post/1362</guid><dc:creator><![CDATA[hrgdavor]]></dc:creator><pubDate>Sun, 03 Sep 2023 20:16:01 GMT</pubDate></item><item><title><![CDATA[Reply to fetch() in a design on Sun, 03 Sep 2023 18:10:00 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/hrgdavor" aria-label="Profile: hrgdavor">@<bdi>hrgdavor</bdi></a> I was also thinking of the <code>output:'script'</code> option for most/all deserializers that generates jscad script code to run. The generated code already includes all requires (see <a href="https://github.com/jscad/OpenJSCAD.org/blob/master/packages/io/obj-deserializer/index.js#L183" rel="nofollow ugc">https://github.com/jscad/OpenJSCAD.org/blob/master/packages/io/obj-deserializer/index.js#L183</a> for example). It may be possible to treat the generated code as a drop-in replacement for directly loaded jscad script urls.</p>
]]></description><link>https://openjscad.nodebb.com/post/1361</link><guid isPermaLink="true">https://openjscad.nodebb.com/post/1361</guid><dc:creator><![CDATA[Andreas Plesch]]></dc:creator><pubDate>Sun, 03 Sep 2023 18:10:00 GMT</pubDate></item><item><title><![CDATA[Reply to fetch() in a design on Sun, 03 Sep 2023 17:31:15 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/andreas-plesch" aria-label="Profile: Andreas-Plesch">@<bdi>Andreas-Plesch</bdi></a> jscadui project also aims to simplify for users to create their own flavor of jscad app, or demo page for their parametric creations.</p>
<p dir="auto">talking about it, it may be cool if jscad app reacts to drag and drop of an url .... we then create a sample script that shows how to read model from ulr and how to start manipulating it</p>
<pre><code class="language-js">const jscad = require('@jscad/modeling')
const { deserialize } = require('@jscad/io')
const { translate, scale, rotateZ } = jscad.transforms

const main = async () =&gt; {
const object = await deserialize('https://raw.githubusercontent.com/jscad/OpenJSCAD.org/master/packages/io/x3d-deserializer/tests/ElevationGrids.x3d')
  
  // you can do some jscad operations on the loaded object and return 
  // that instead the generated return below

  // sample script returns the deserialized object
  return object
}

module.exports = { main }
</code></pre>
]]></description><link>https://openjscad.nodebb.com/post/1360</link><guid isPermaLink="true">https://openjscad.nodebb.com/post/1360</guid><dc:creator><![CDATA[hrgdavor]]></dc:creator><pubDate>Sun, 03 Sep 2023 17:31:15 GMT</pubDate></item><item><title><![CDATA[Reply to fetch() in a design on Sun, 03 Sep 2023 16:57:50 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/hrgdavor" aria-label="Profile: hrgdavor">@<bdi>hrgdavor</bdi></a> It is great to see that there is good progress. I would probably already prefer the app.</p>
<p dir="auto">A related idea is to allow importing of any supported file format via drag and drop and/or url. The editor would be populated by the generated script. Probably easier said than done. It may not be too different from loading jscad script format directly.</p>
]]></description><link>https://openjscad.nodebb.com/post/1359</link><guid isPermaLink="true">https://openjscad.nodebb.com/post/1359</guid><dc:creator><![CDATA[Andreas Plesch]]></dc:creator><pubDate>Sun, 03 Sep 2023 16:57:50 GMT</pubDate></item><item><title><![CDATA[Reply to fetch() in a design on Sun, 03 Sep 2023 15:09:25 GMT]]></title><description><![CDATA[<p dir="auto">latest prototype of <a href="https://jscad.app" rel="nofollow ugc">https://jscad.app</a> supports async/promises main method.</p>
<pre><code class="language-js">const jscad = require('@jscad/modeling')
const { deserializers } = require('@jscad/io')
const { translate, scale, rotateZ } = jscad.transforms

const main = async () =&gt; {
  const url = 'https://raw.githubusercontent.com/jscad/OpenJSCAD.org/master/packages/io/x3d-deserializer/tests/ElevationGrids.x3d'
  
  //const url = 'https://raw.githubusercontent.com/create3000/Library/main/Tests/Components/CADGeometry/CADGeometry.x3d'
  const response = await fetch(url)
  const cadX3D = await response.text()
  // const cadX3D = x3d
  const cad = deserializers.x3d({ output: 'geometry' }, cadX3D)

  console.log(cad[1], jscad.geometries.geom3.isA(cad[1]))

  return cad[1]
}

module.exports = { main }
</code></pre>
<p dir="auto"><img src="/assets/uploads/files/1693753307281-4dd24ecb-835f-4f40-bfbf-b709735a3537-image.png" alt="4dd24ecb-835f-4f40-bfbf-b709735a3537-image.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">the version that works with above mentioned code is not live yet, you can test by runing locally (untili it is):<br />
<a href="https://github.com/hrgdavor/jscadui/tree/main/apps/jscad-web" rel="nofollow ugc">https://github.com/hrgdavor/jscadui/tree/main/apps/jscad-web</a></p>
<p dir="auto">IMPORTANT: jscad.app is playground for prototyping future version of openjscad web app, and is not part of of jscad officially yet, but most if not all features will make it to jscad when ready.</p>
]]></description><link>https://openjscad.nodebb.com/post/1358</link><guid isPermaLink="true">https://openjscad.nodebb.com/post/1358</guid><dc:creator><![CDATA[hrgdavor]]></dc:creator><pubDate>Sun, 03 Sep 2023 15:09:25 GMT</pubDate></item><item><title><![CDATA[Reply to fetch() in a design on Sun, 03 Sep 2023 12:48:00 GMT]]></title><description><![CDATA[<p dir="auto">The recommendation is to use synchronous XHR (which is being deprecated on the web). Here is a working example:</p>
<pre><code class="language-js">const jscad = require('@jscad/modeling')
const { deserializers } = require('@jscad/io')
const { translate, scale, rotateZ } = jscad.transforms

//const url = 'https://raw.githubusercontent.com/jscad/OpenJSCAD.org/master/packages/io/x3d-deserializer/tests/ElevationGrids.x3d'
  
const url = 'https://raw.githubusercontent.com/create3000/Library/main/Tests/Components/CADGeometry/CADGeometry.x3d'
 
const request = new XMLHttpRequest();
request.open("GET", url, false); // `false` makes the request synchronous
request.send(null);

const cadX3D = request.responseText
    
if (request.status === 200) {
  console.log(request.responseText);
}

const main = () =&gt; {
  const cad = deserializers.x3d({ output: 'geometry' }, cadX3D)

  console.log(cad[1], jscad.geometries.geom3.isA(cad[1]))

  return cad
}

module.exports = { main }
</code></pre>
]]></description><link>https://openjscad.nodebb.com/post/1357</link><guid isPermaLink="true">https://openjscad.nodebb.com/post/1357</guid><dc:creator><![CDATA[Andreas Plesch]]></dc:creator><pubDate>Sun, 03 Sep 2023 12:48:00 GMT</pubDate></item><item><title><![CDATA[Reply to fetch() in a design on Sun, 03 Sep 2023 12:28:45 GMT]]></title><description><![CDATA[<p dir="auto">I see that this has been discussed here:</p>
<p dir="auto"><a href="https://github.com/jscad/OpenJSCAD.org/issues/671" rel="nofollow ugc">https://github.com/jscad/OpenJSCAD.org/issues/671</a></p>
<p dir="auto">and here:</p>
<p dir="auto"><a href="https://github.com/jscad/OpenJSCAD.org/issues/396" rel="nofollow ugc">https://github.com/jscad/OpenJSCAD.org/issues/396</a></p>
<p dir="auto">There have been multiple attempts to support promises but the use of web workers seems to prevent it. It currently is not possible.</p>
]]></description><link>https://openjscad.nodebb.com/post/1356</link><guid isPermaLink="true">https://openjscad.nodebb.com/post/1356</guid><dc:creator><![CDATA[Andreas Plesch]]></dc:creator><pubDate>Sun, 03 Sep 2023 12:28:45 GMT</pubDate></item></channel></rss>