diff --git a/.eslintrc.json b/.eslintrc.json index 4dc25875..63cf7bea 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -5,6 +5,7 @@ "env": { "browser": true, "commonjs": true, + "node": true, "es6": true }, "parser": "@babel/eslint-parser", diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 7fb29f85..75f637e5 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -4,6 +4,7 @@ on: push: branches: - tauri + - feature/tauri #- master #- main @@ -33,31 +34,62 @@ jobs: node-version: [18.x] #, macos-latest #windows-latest, - platform: [ubuntu-18.04] + platform: [ubuntu-latest, windows-latest] include: - - os: ubuntu-latest - rust_target: x86_64-unknown-linux-gnu - #- os: windows-latest - # rust_target: x86_64-pc-windows-msvc - #- os: macos-latest - # rust_target: x86_64-apple-darwin - #- os: macos-latest - # rust_target: aarch64-apple-darwin + #- os: ubuntu-18.04 + # rust_target: x86_64-unknown-linux-gnu + - os: windows-latest + rust_target: x86_64-pc-windows-msvc + #- os: macos-latest + # rust_target: x86_64-apple-darwin + #- os: macos-latest + # rust_target: aarch64-apple-darwin runs-on: ${{ matrix.platform }} steps: - name: Checkout repository uses: actions/checkout@v3 with: token: ${{ env.GITHUB_TOKEN }} + - name: Build the App (Linux) + if: matrix.platform == 'ubuntu-latest' + uses: addnab/docker-run-action@v3 + with: + image: ghcr.io/zanzythebar/tauridocker:latest + options: -v ${{ github.workspace }}:/workspace + run: | + echo "::group::install node dependencies" + npm install -g pnpm + npm install -g typescript + pnpm install + echo "::group::tauri build" + pnpm tauri build + echo "::endgroup::" + - name: Archive the App (Linux) + if: matrix.platform == 'ubuntu-latest' + uses: actions/upload-artifact@v3 + with: + name: production-files + path: | + src-tauri/target/release/bundle/deb/*.deb + src-tauri/target/release/bundle/appimage/*.AppImage + retention-days: 5 + if-no-files-found: error + - name: Verify build (Linux) + if: matrix.platform == 'ubuntu-latest' + run: | + ls -la src-tauri/target/release/bundle/appimage + ls -la src-tauri/target/release/bundle/deb - - name: Node.js setup ${{ matrix.node-version }} + - name: Node.js setup ${{ matrix.node-version }} (Windows & MacOS) + if: matrix.platform == 'windows-latest' || matrix.platform == 'macos-latest' uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} #cache: "pnpm" # node-version-file: '.nvmrc' - - name: "Setup Rust" + - name: Setup Rust (Windows & MacOS) + if: matrix.platform == 'windows-latest' || matrix.platform == 'macos-latest' uses: actions-rs/toolchain@v1 with: default: true @@ -65,23 +97,16 @@ jobs: profile: minimal toolchain: stable target: ${{ matrix.platform.rust_target }} - - uses: Swatinem/rust-cache@v2 + + - name: Cache Rust (Windows & MacOS) + if: matrix.platform == 'windows-latest' || matrix.platform == 'macos-latest' + uses: Swatinem/rust-cache@v2 with: workspaces: "./src-tauri -> target" - - name: Install dependencies (ubuntu only) - if: matrix.platform == 'ubuntu-latest' - run: | - sudo apt-get update - sudo apt-get install -y libgtk-3-dev webkit2gtk-4.0 libappindicator3-dev librsvg2-dev patchelf - - - name: Install dependencies (PNPM) - run: | - npm install -g pnpm - npm install -g typescript - pnpm install - - - uses: JonasKruckenberg/tauri-build@v1.2.3 + - name: Build the app (Windows & MacOS) + if: matrix.platform == 'windows-latest' || matrix.platform == 'macos-latest' + uses: JonasKruckenberg/tauri-build@v1.2.3 id: tauri_build env: GITHUB_TOKEN: ${{ env.GITHUB_TOKEN }} @@ -94,25 +119,13 @@ jobs: with: target: ${{ matrix.platform.rust_target }} - - uses: actions/upload-artifact@v3 + - name: Archive the App (Windows & MacOS) + if: matrix.platform == 'windows-latest' || matrix.platform == 'macos-latest' + uses: actions/upload-artifact@v3 with: name: production-files path: "${{ join(fromJSON(steps.tauri_build.outputs.artifacts), '\n') }}" - #- name: Build the app - # uses: tauri-apps/tauri-action@v0 - # env: - # GITHUB_TOKEN: ${{ env.GITHUB_TOKEN }} - # TAURI_PRIVATE_KEY: ${{ env.TAURI_PRIVATE_KEY }} - # TAURI_KEY_PASSWORD: ${{ env.TAURI_KEY_PASSWORD }} - # with: - # # tauri-action replaces \_\_VERSION\_\_ with the app version - # tagName: eyetrackvr-v__VERSION__ - # releaseName: "EyeTrackApp v__VERSION__" # name of the release - # releaseBody: "See the assets to download this version and install." # message to include in the release - # releaseDraft: true # set to false to publish the release as a finished product - # prerelease: false # set to true to mark the release as a pre-release - deploy: runs-on: ubuntu-latest name: Deploy diff --git a/CHANGELOG.md b/CHANGELOG.md index 3953c53f..57487a90 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,52 @@ [![semantic versioning](https://img.shields.io/badge/semantic%20versioning-2.0.0-green.svg)](https://semver.org) > All notable changes to this project will be documented in this file +## [1.0.0-tauri.4](https://github.com/ZanzyTHEbar/jsketcher/compare/v1.0.0-tauri.3...v1.0.0-tauri.4) (2023-05-11) + + +### 🐛 Bug Fixes + +* wasm not loading in webkit ([0e74582](https://github.com/ZanzyTHEbar/jsketcher/commit/0e7458284831c946c6a0b0b4e4ded96bd4ceffa7)) + +## [1.0.0-tauri.3](https://github.com/ZanzyTHEbar/jsketcher/compare/v1.0.0-tauri.2...v1.0.0-tauri.3) (2023-05-11) + + +### 🍕 Features + +* update rust deps ([b809c28](https://github.com/ZanzyTHEbar/jsketcher/commit/b809c28b8cba7a3354cf1f8f8f9917d1f1c9e653)) + +## [1.0.0-tauri.2](https://github.com/ZanzyTHEbar/jsketcher/compare/v1.0.0-tauri.1...v1.0.0-tauri.2) (2023-05-11) + + +### 🐛 Bug Fixes + +* appimage failing to build ([8dc6217](https://github.com/ZanzyTHEbar/jsketcher/commit/8dc62170a9be15f1ab1f20d9b7db5f3fa8e371b5)) +* test ubuntu 18.04 ([8f55f4d](https://github.com/ZanzyTHEbar/jsketcher/commit/8f55f4d1c1a0bc036441453266c5c5d3ea9c4c65)) +* test ubuntu 18.04 ([0afd146](https://github.com/ZanzyTHEbar/jsketcher/commit/0afd14642bb12107622bc39db41417c6f7d23c61)) + + +### 🍕 Features + +* update ci to use docker container ([7bcacb0](https://github.com/ZanzyTHEbar/jsketcher/commit/7bcacb0251eb934bd020022433641475782c240e)) +* update ci to use docker container ([98de939](https://github.com/ZanzyTHEbar/jsketcher/commit/98de93981f3cb6bda3763a4eb4ce85b201145c78)) +* update ci to use docker container ([0750c00](https://github.com/ZanzyTHEbar/jsketcher/commit/0750c006f3f49f5f22205f4a6303e33627ddcbe2)) +* update ci to use docker container ([715780f](https://github.com/ZanzyTHEbar/jsketcher/commit/715780f8f6b106b6f1e0e5f19f6145d940aa79ec)) +* update ci to use docker container ([ccbacdb](https://github.com/ZanzyTHEbar/jsketcher/commit/ccbacdba32268fb8990d2b5455329014ef04d3ca)) +* update ci to use docker container ([60aa80d](https://github.com/ZanzyTHEbar/jsketcher/commit/60aa80d636affd2334526cc4569940cf9ceb77c5)) +* update ci to use docker container ([f629258](https://github.com/ZanzyTHEbar/jsketcher/commit/f629258426c7b3a52b4cdce2a120652d3e9727f6)) +* update ci to use docker container ([278cf82](https://github.com/ZanzyTHEbar/jsketcher/commit/278cf82ceaae8e76231780ab571e53e8658a3463)) +* update ci to use docker container ([02ec38c](https://github.com/ZanzyTHEbar/jsketcher/commit/02ec38c1b7f9ef6b2af5df22ca4b7ae9ceb86151)) +* update ci to use docker container ([8fb7924](https://github.com/ZanzyTHEbar/jsketcher/commit/8fb7924dc295aad48f798fd024f8a9394a53d4ba)) +* update ci to use docker container ([d0493b3](https://github.com/ZanzyTHEbar/jsketcher/commit/d0493b3e0ca956b2a5ade8c3c2deac0f78b7d16a)) +* update ci to use docker container ([09fbb4f](https://github.com/ZanzyTHEbar/jsketcher/commit/09fbb4f9b9b714a013207133963cc5de5934ca3e)) +* update ci to use docker container ([c7e39b9](https://github.com/ZanzyTHEbar/jsketcher/commit/c7e39b92f79f6d6d8fa5553e36008eb82f1da8be)) +* update ci to use docker container ([d9221a7](https://github.com/ZanzyTHEbar/jsketcher/commit/d9221a77fe581532de86b9f05a198ccca447781a)) +* update ci to use docker container ([9e96489](https://github.com/ZanzyTHEbar/jsketcher/commit/9e96489eb762a06f5256a838af90cb6e7035f387)) +* update ci to use docker container ([765b708](https://github.com/ZanzyTHEbar/jsketcher/commit/765b708a19fb8fbcb1c2c98395c0570a6b3eef0a)) +* update ci to use docker container ([484b722](https://github.com/ZanzyTHEbar/jsketcher/commit/484b722a49be1c8259e93121b6cea5e1b438f865)) +* update ci to use docker container ([1023d90](https://github.com/ZanzyTHEbar/jsketcher/commit/1023d905291e6d92dd19f23c1abd031fe2ae242b)) +* update ci to use docker container ([1d9fd84](https://github.com/ZanzyTHEbar/jsketcher/commit/1d9fd84aa23984ae9450f940bc2533447ef46d95)) + ## 1.0.0-tauri.1 (2023-05-09) diff --git a/Gruntfile.js b/Gruntfile.js index 2713d14b..d237612d 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -4,11 +4,11 @@ const webpackConfig = require('./webpack.config'); const del = require('del'); const libAssets = require("./build/libAssets"); const glob = require("glob"); -const {marked} = require("marked"); +const { marked } = require("marked"); const Handlebars = require("handlebars"); const exec = require('child_process').exec; -module.exports = function(grunt) { +module.exports = function (grunt) { grunt.loadNpmTasks('grunt-contrib-copy'); grunt.loadNpmTasks('grunt-contrib-watch'); @@ -44,11 +44,11 @@ module.exports = function(grunt) { }, resources: { - expand: true, - cwd: 'web', - src: '**', - dest: 'dist/', - filter: dirFilter(['web/app', 'web/test']) + expand: true, + cwd: 'web', + src: '**', + dest: 'dist/', + filter: dirFilter(['web/app', 'web/test']) }, docs: { @@ -59,12 +59,12 @@ module.exports = function(grunt) { }, } }); - - grunt.registerTask('clean', function() { + + grunt.registerTask('clean', function () { del.sync('dist'); }); - grunt.registerTask('build', function() { + grunt.registerTask('build', function () { const done = this.async(); webpack(webpackConfig, function (error) { if (error) { @@ -75,17 +75,18 @@ module.exports = function(grunt) { }); }); - grunt.registerTask('show-revision', function() { + grunt.registerTask('show-revision', function () { const done = this.async(); - exec('git rev-parse --short HEAD', (err, stdout, stderr) => { + if (process.env.CI_BUILD_REF) exec('git rev-parse --short HEAD', (err, stdout, stderr) => { grunt.log.writeln(stdout); done(); }); }); - grunt.registerTask('mark-revision', function() { + grunt.registerTask('mark-revision', function () { const done = this.async(); - exec('git rev-parse HEAD > dist/.rev', function (err, stdout, stderr) { + + if (process.env.CI_BUILD_REF) exec('git rev-parse HEAD > dist/.rev', function (err, stdout, stderr) { done(err); }); }); @@ -94,7 +95,7 @@ module.exports = function(grunt) { grunt.registerTask('gen-docs', ['copy:docs', 'process-markdown']); - grunt.registerTask('process-markdown', function() { + grunt.registerTask('process-markdown', function () { const done = this.async(); const mainTemplate = Handlebars.compile(grunt.file.read("modules/doc/doc-layout.handlebars")); @@ -120,7 +121,7 @@ module.exports = function(grunt) { let link = file.substring(file.indexOf('/') + 1); //drop web prefix workbench.operations.push({ operationName, - href: '../../../../../../' + convertMdPathToHtml(link) + href: '../../../../../../' + convertMdPathToHtml(link) }); }); @@ -138,7 +139,7 @@ module.exports = function(grunt) { grunt.file.write(dest, htmlContent); - console.log("generated "+ dest); + console.log("generated " + dest); }) done(); }); @@ -148,11 +149,11 @@ module.exports = function(grunt) { }; function convertMdPathToHtml(mdPath) { - return mdPath.substring(0, mdPath.length-('.md'.length)) + '.html'; + return mdPath.substring(0, mdPath.length - ('.md'.length)) + '.html'; } function fixLinks(htmlContent) { - return htmlContent.replace(/href=['"](.+)['"]/g, function(expr, link){ + return htmlContent.replace(/href=['"](.+)['"]/g, function (expr, link) { return 'href="' + convertMdPathToHtml(link) + '"'; }); } \ No newline at end of file diff --git a/jsketcher.code-workspace b/jsketcher.code-workspace deleted file mode 100644 index 8e02ae54..00000000 --- a/jsketcher.code-workspace +++ /dev/null @@ -1,93 +0,0 @@ -{ - "folders": [ - { - "name": "modules", - "path": "./modules" - }, - { - "name": "web", - "path": "./web" - }, - { - "name": "repo", - "path": "." - } - ], - "settings": { - "files.autoSave": "afterDelay", - "rust-analyzer.checkOnSave.enable": true, - "rust-analyzer.checkOnSave.command": "clippy", - "rust-analyzer.checkOnSave.allTargets": true, - "rust-analyzer.files.watcher": "client", - "rust-analyzer.files.excludeDirs": [ - "**/target", - "**/node_modules", - "**/dist", - "**/build", - "**/public", - "**/assets", - "**/src-tauri/target", - "**/scripts", - "**/src/components", - "**/src/interfaces", - "**/src/pages", - "**/src/static", - "**/src/styles", - "**/src/utils" - ], - "editor.defaultFormatter": "esbenp.prettier-vscode", - "[toml]": { - "editor.defaultFormatter": "tamasfe.even-better-toml" - }, - "[jsonc]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[javascript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[typescript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "liveServer.settings.multiRootWorkspaceName": "ETVR", - "[typescriptreact]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[css]": { - "editor.defaultFormatter": "vscode.css-language-features" - }, - "[shellscript]": { - "editor.defaultFormatter": "shakram02.bash-beautify" - }, - "cSpell.words": [ - "APPCONFIG", - "APPDATA", - "clippy", - "clsx", - "Coeff", - "dnsquery", - "esbenp", - "eyetrack", - "fullname", - "hashset", - "hookable", - "Iinternal", - "iocp", - "kobalte", - "nanos", - "notif", - "notififcation", - "notifs", - "partytown", - "ratelimit", - "reqwest", - "shakram", - "solidjs", - "soundfile", - "tamasfe", - "undici", - "vorbis", - "webserial", - "Xmark" - ] - } -} diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 70ed3876..484759ad 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -58,7 +58,7 @@ checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" [[package]] name = "app" -version = "0.1.0" +version = "1.0.0" dependencies = [ "serde", "serde_json", @@ -162,9 +162,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.12.1" +version = "3.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b1ce199063694f33ffb7dd4e0ee620741495c32833cde5aa08f02a0bf96f0c8" +checksum = "3c6ed94e98ecff0c12dd1b04c15ec0d7d9458ca8fe806cea6f12954efe74c63b" [[package]] name = "bytemuck" @@ -1376,9 +1376,9 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" [[package]] name = "js-sys" -version = "0.3.61" +version = "0.3.62" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" +checksum = "68c16e1bfd491478ab155fd8b4896b86f9ede344949b641e61501e07c2b8b4d5" dependencies = [ "wasm-bindgen", ] @@ -2232,18 +2232,18 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.162" +version = "1.0.163" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71b2f6e1ab5c2b98c05f0f35b236b22e8df7ead6ffbf51d7808da7f8817e7ab6" +checksum = "2113ab51b87a539ae008b5c6c02dc020ffa39afd2d83cffcb3f4eb2722cebec2" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.162" +version = "1.0.163" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2a0814352fd64b58489904a44ea8d90cb1a91dcb6b4f5ebabc32c8318e93cb6" +checksum = "8c805777e3930c8883389c602315a24224bcc738b63905ef87cd1420353ea93e" dependencies = [ "proc-macro2", "quote", @@ -2865,9 +2865,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.28.0" +version = "1.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3c786bf8134e5a3a166db9b29ab8f48134739014a3eca7bc6bfa95d673b136f" +checksum = "0aa32867d44e6f2ce3385e89dceb990188b8bb0fb25b0cf576647a6f98ac5105" dependencies = [ "autocfg", "bytes", @@ -3124,9 +3124,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.84" +version = "0.2.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" +checksum = "5b6cb788c4e39112fbe1822277ef6fb3c55cd86b95cb3d3c4c1c9597e4ac74b4" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -3134,24 +3134,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.84" +version = "0.2.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" +checksum = "35e522ed4105a9d626d885b35d62501b30d9666283a5c8be12c14a8bdafe7822" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.15", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.84" +version = "0.2.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" +checksum = "358a79a0cb89d21db8120cbfb91392335913e4890665b1a7981d9e956903b434" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3159,22 +3159,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.84" +version = "0.2.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" +checksum = "4783ce29f09b9d93134d41297aded3a712b7b979e9c6f28c32cb88c973a94869" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.15", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.84" +version = "0.2.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" +checksum = "a901d592cafaa4d711bc324edfaff879ac700b19c3dfd60058d2b445be2691eb" [[package]] name = "webkit2gtk" diff --git a/web/app/cad/craft/e0/occtBundle.ts b/web/app/cad/craft/e0/occtBundle.ts index a0c1e023..c09d4ef5 100644 --- a/web/app/cad/craft/e0/occtBundle.ts +++ b/web/app/cad/craft/e0/occtBundle.ts @@ -1,16 +1,14 @@ -import {GenericWASMEngine_V1} from "engine/impl/wasm/GenericWASMEngine_V1"; -import {CraftEngine} from "./craftEngine"; -import {createOCCService, OCCService} from "cad/craft/e0/occService"; +import { GenericWASMEngine_V1 } from "engine/impl/wasm/GenericWASMEngine_V1"; +import { CraftEngine } from "./craftEngine"; +import { createOCCService, OCCService } from "cad/craft/e0/occService"; export interface OCCBundleContext { - craftEngine: CraftEngine; // to be removed occService: OCCService; } export function activate(ctx) { - loadWasm(ctx); const wasmEngine = new GenericWASMEngine_V1(); @@ -22,42 +20,39 @@ export function activate(ctx) { ctx.occService = createOCCService(ctx); } -function instantiateEngine(importObject, callback) { - const url = './lib-assets/jsketcher-occ-engine/occt.wasm'; +//* work around until tauri v2 +async function instantiateEngine(importObject, callback) { + const url = "./lib-assets/jsketcher-occ-engine/occt.wasm"; - WebAssembly.instantiateStreaming(fetch(url), importObject).then(results => { - callback(results.instance); - }); + const response = await fetch(url); + const buffer = await response.arrayBuffer(); + + const obj = await WebAssembly.instantiate(buffer, importObject); + callback(obj.instance); } function loadWasm(ctx) { - ctx.services.lifecycle.startAsyncInitializingJob('e0:loader'); + ctx.services.lifecycle.startAsyncInitializingJob("e0:loader"); // @ts-ignore window.Module = { // locateFile: function(file) { // return SERVER_PATH + file; // }, - onRuntimeInitialized: function() { + onRuntimeInitialized: function () { Module._InitCommands(); - ctx.services.lifecycle.finishAsyncInitializingJob('e0:loader'); + ctx.services.lifecycle.finishAsyncInitializingJob("e0:loader"); }, instantiateWasm: function (importObject, fncReceiveInstance) { instantiateEngine(importObject, fncReceiveInstance); return {}; - } + }, } as any; - const mainScript = document.createElement('script'); - mainScript.setAttribute('src', './lib-assets/jsketcher-occ-engine/occt.js'); - mainScript.setAttribute('async', 'async'); + const mainScript = document.createElement("script"); + mainScript.setAttribute("src", "./lib-assets/jsketcher-occ-engine/occt.js"); + mainScript.setAttribute("async", "async"); document.head.appendChild(mainScript); } export const BundleName = "@OCCT"; - - - - - -