From 545c5f550f14b9d9af9da789f549944d9b335bd4 Mon Sep 17 00:00:00 2001 From: Glen Whitney Date: Tue, 5 Sep 2023 01:50:52 +0000 Subject: [PATCH] feat: Convert VRML 1 files with vrml1to97 (#13) Now that the vrml1to97 package has been published, uses it to convert any VRML 1 files it encounters. Also uses the new x_ite module Resolves #12 Reviewed-on: https://code.studioinfinity.org/glen/archematics/pulls/13 Co-authored-by: Glen Whitney Co-committed-by: Glen Whitney --- package.json5 | 7 ++++++- pnpm-lock.yaml | 10 ++++++++++ src/giveAwrl.civet | 35 +++++++++++++++++------------------ src/tsconfig.json | 9 --------- 4 files changed, 33 insertions(+), 28 deletions(-) delete mode 100644 src/tsconfig.json diff --git a/package.json5 b/package.json5 index 312dcd9..bc431b4 100644 --- a/package.json5 +++ b/package.json5 @@ -4,7 +4,9 @@ description: 'Uncovering lost digital mathematical treasures', scripts: { test: 'echo "Error: no test specified" && exit 1', - build: 'civet --js -c src/*.civet -o public/js/.js', + build_js: 'civet --js -c src/*.civet -o public/js/.js', + build_deps: 'cp -r node_modules/vrml1to97 public/js/deps', + build: 'pnpm --sequential /build_/', start: 'node public/js', go: 'pnpm --sequential "/build|start/"', serve: 'pnpm build && http-server', @@ -25,4 +27,7 @@ '@danielx/civet': '^0.6.26', 'http-server': '^14.1.1', }, + dependencies: { + vrml1to97: '^0.1.0', + }, } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7811c92..596e3a2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,11 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +dependencies: + vrml1to97: + specifier: ^0.1.0 + version: 0.1.0 + devDependencies: '@danielx/civet': specifier: ^0.6.26 @@ -303,6 +308,11 @@ packages: resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==} dev: true + /vrml1to97@0.1.0: + resolution: {integrity: sha512-D+nE1qYhldWlsSYF2br9Dylmn6zO1BBJimXO5SJ+wlnYo0pKRpQUepc8b0Rz1jWMjXjfP4UPx6s+UZNA9YDoDA==} + hasBin: true + dev: false + /whatwg-encoding@2.0.0: resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} engines: {node: '>=12'} diff --git a/src/giveAwrl.civet b/src/giveAwrl.civet index 508dead..3345bf0 100644 --- a/src/giveAwrl.civet +++ b/src/giveAwrl.civet @@ -1,21 +1,20 @@ import https://code.jquery.com/jquery-3.7.1.js +X3D from https://create3000.github.io/code/x_ite/latest/x_ite.mjs +{convert} from ./deps/vrml1to97/index.js certainlyHandled := '.x3d .gltf .glb .obj .stl .ply'.split ' ' -jQuery.getScript 'https://create3000.github.io/code/x_ite/latest/x_ite.js', - async => - canvas := X3D.createBrowser() - site := $('a[href^="http"]') - url := site.attr 'href' - if certainlyHandled.some((ext) => url.includes ext) - canvas.setAttribute 'src', site.attr 'href' - else if url.includes '.wrl' - // Need to obtain the text and check what level it is - response := await fetch url - text := await response.text() - if /#\s*VRML\s*V?1./i.test(text) - console.log('VRML 1 not yet supported') - else - browser := X3D.getBrowser canvas - scene := await browser.createX3DFromString text - browser.replaceWorld(scene) - site.after(canvas) +canvas := X3D.createBrowser() +site := $('a[href^="http"]') +url := site.attr 'href' +if certainlyHandled.some((ext) => url.includes ext) + canvas.setAttribute 'src', site.attr 'href' +else if url.includes '.wrl' + // Need to obtain the text and check what level it is + response := await fetch url + text .= await response.text() + if /#\s*VRML\s*V?1./i.test(text) + text = convert(text) + browser := X3D.getBrowser canvas + scene := await browser.createX3DFromString text + browser.replaceWorld(scene) +site.after(canvas) diff --git a/src/tsconfig.json b/src/tsconfig.json deleted file mode 100644 index dbfd749..0000000 --- a/src/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "compilerOptions": { - "strict": true, - "lib": ["esnext"], - "forceConsistentCasingInFileNames": true, - "resolveJsonModule": true, - "esModuleInterop": true - } -}