fix jszip for production

This commit is contained in:
Stewart Allen 2025-07-14 18:15:14 -04:00
commit 9674b50be0
10 changed files with 64 additions and 21 deletions

1
.gitignore vendored
View file

@ -5,6 +5,7 @@ app.json
build
data
dist
jszip-esm.js
logs
mod
node_modules

2
app.js
View file

@ -341,7 +341,7 @@ const redirList = [
function handleVersion(req, res, next) {
let vstr = oversion || dversion || version;
if (!req.app.ispre && !redirList.indexOf(req.app.path) >= 0 && req.url.indexOf(vstr) < 0) {
if (!req.app.ispre && redirList.indexOf(req.app.path) === 0 && req.url.indexOf(vstr) < 0) {
if (req.url.indexOf("?") > 0) {
return http.redirect(res, `${req.url},ver:${vstr}`);
} else {

View file

@ -0,0 +1,7 @@
import * as JSZip from "../node_modules/jszip/dist/jszip.js";
export default JSZip;
export {
JSZip
};

38
bin/webpack-jszip-esm.js Normal file
View file

@ -0,0 +1,38 @@
const path = require('path');
module.exports = {
mode: 'production',
entry: path.resolve(__dirname, './webpack-jszip-bundle.js'),
output: {
path: path.resolve(__dirname, '../src/ext'),
filename: 'jszip-esm.js',
library: {
type: 'module'
},
module: true
},
experiments: {
outputModule: true
},
resolve: {
extensions: ['.mjs', '.js'],
},
module: {
rules: [
{
test: /\.m?js$/,
resolve: {
fullySpecified: false,
},
},
],
},
optimization: {
minimize: false
},
performance: {
hints: false,
maxAssetSize: 2 * 1024 * 1024,
maxEntrypointSize: 2 * 1024 * 1024,
},
};

View file

@ -49,9 +49,11 @@
"earcut": "^3.0.1",
"express-useragent": "^1.0.13",
"fast-glob": "^3.3.3",
"i": "^0.3.7",
"jszip": "^3.7.1",
"manifold-3d": "^3.1.1",
"moment": "^2.29.4",
"npm": "^11.4.2",
"prettier": "^3.5.3",
"react-responsive-carousel": "^3.2.23",
"serve-static": "^1.14.1",
@ -79,7 +81,7 @@
"webpack-cli": "^5.1.4"
},
"scripts": {
"setup": "npm i && npm run clean && npm run dev -- --dryrun && npm run webpack3",
"setup": "npm i && npm run clean && npm run dev -- --dryrun && npm run webpack-ext",
"build": "npm run prebuild && electron-builder",
"build-nopublish": "npm run prebuild && electron-builder --publish never",
"build-debug": "npm run prebuild && DEBUG=electron-builder electron-builder",
@ -94,8 +96,8 @@
"docs-build": "docusaurus build --config conf/docusaurus.config.js",
"docs-serve": "docusaurus serve --config conf/docusaurus.config.js",
"docs-check": "prettier --config ./conf/prettier.config.js ./docs --check",
"dev": "npm run webpack3 && gs-app-server --debug --single",
"prod": "npm run webpack prod && gs-app-server",
"dev": "npm run webpack-ext && gs-app-server --debug --single",
"prod": "npm run webpack-ext && npm run webpack-src prod && gs-app-server",
"prod-dryrun": "gs-app-server --dryrun",
"start": "npm run prebuild prod && electron .",
"start-dev": "npm run prebuild prod && electron . --devel",
@ -103,11 +105,13 @@
"start-ddb": "npm run prebuild && electron . --devel --debugg",
"mk-links": "find src web -type l | xargs -I{} sh -c 'echo \"{},$(readlink {})\"' > conf/links.csv",
"mac-verify": "spctl --assess -vv --type install dist/*/*.app",
"prebuild": "npm run setup && npm run webpack prod && node bin/electron-pre.js",
"prebuild": "npm run setup && npm run webpack-src prod && node bin/electron-pre.js",
"postbuild": "node bin/electron-post.js",
"preinstall": "node bin/install-pre.js",
"webpack": "npm run webpack3 && node bin/esbuild.config.mjs",
"webpack3": "npx webpack --config bin/webpack-three-esm.js"
"webpack-ext": "npm run webpack-three && npm run webpack-zip",
"webpack-src": "node bin/esbuild.config.mjs",
"webpack-three": "npx webpack --config bin/webpack-three-esm.js",
"webpack-zip": "npx webpack --config bin/webpack-three-esm.js"
},
"main": "app-el.js",
"build": {

View file

@ -1,7 +0,0 @@
/** Copyright Stewart Allen <sa@grid.space> -- All Rights Reserved */
//import original library
import * as JSZip from "./jszip.js";
//export object attached to the window object
export default JSZip;

View file

@ -1872,7 +1872,7 @@ function init_lang() {
}
export function run() {
init_lang();
client.start();
init_lang();
return api;
}

View file

@ -9,7 +9,7 @@ import { space } from '../../moto/space.js';
import { local } from '../../data/local.js';
import { utils } from './utils.js';
import { version } from '../../moto/license.js';
import JSZip from '../../ext/jszip.esm.js';
import { JSZip } from '../../ext/jszip-esm.js';
const { areEqual, ls2o, js2o } = utils;
const { COLOR } = consts;
@ -660,7 +660,7 @@ function settingsImportUrl(url, ask) {
function settingsImportZip(data, ask) {
let alert = api.show.alert("Importing Workspace");
JSZip.loadAsync(data).then(zip => {
new JSZip().loadAsync(data).then(zip => {
for (let [key,value] of Object.entries(zip.files)) {
if (key === "workspace.json") {
value.async("string").then(json => {

View file

@ -3,7 +3,6 @@
import '../../add/array.js';
import '../../add/class.js';
import '../../add/three.js';
import '../../ext/jszip.js';
import { base } from '../../geo/base.js';
import { codec } from '../core/codec.js';
@ -17,6 +16,7 @@ import { wasm_ctrl } from '../../geo/wasm.js';
import { version } from '../../moto/license.js';
import { Widget, newWidget } from '../core/widget.js';
import { load } from "../../load/png.js";
import { JSZip } from '../../ext/jszip-esm.js';
import { CAM } from '../mode/cam/driver-be.js';
import { DRAG } from '../mode/drag/driver.js';

View file

@ -3,7 +3,7 @@
'use strict';
import { THREE } from '../ext/three.js';
import JSZip from '../ext/jszip.esm.js';
import { JSZip } from '../ext/jszip-esm.js';
let { BufferAttribute, Matrix4 } = THREE;
@ -218,7 +218,7 @@ function extractItems(records) {
*/
export function parseAsync(data) {
return new Promise(async (resolve, reject) => {
let zip = await JSZip.loadAsync(data);
let zip = await new JSZip().loadAsync(data);
let models = {};
for (let [key, value] of Object.entries(zip.files)) {
if (key.endsWith(".model")) {