diff --git a/package-lock.json b/package-lock.json index 450753c..2686240 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,17 +8,22 @@ "name": "apparel-designer", "version": "1.0.0", "dependencies": { + "@huggingface/transformers": "^3.4.0", "canvas": "^3.0.0", "cors": "^2.8.5", "express": "^4.18.2", "express-rate-limit": "^7.4.0", - "goods-editor": "git+ssh://git@git.kadil.dev:222/khalidadil/goods-editor-module.git#v0.1.0-alpha.2", + "goods-editor": "git+ssh://git@git.kadil.dev:222/khalidadil/goods-editor-module.git#v0.2.0-alpha.0", + "konva": "^10.0.0", "multer": "^2.0.0", "pino": "^9.5.0", "pino-http": "^10.3.0", "react": "^19.2.5", "react-dom": "^19.2.5", + "react-filerobot-image-editor": "^4.8.1", + "react-konva": "^19.2.3", "sharp": "^0.33.2", + "use-image": "^1.1.1", "uuid": "^9.0.1" }, "devDependencies": { @@ -6439,27 +6444,27 @@ } }, "node_modules/goods-editor": { - "version": "0.1.0-alpha.2", - "resolved": "git+ssh://git@git.kadil.dev:222/khalidadil/goods-editor-module.git#8da0362f1c97ed7951175a3a40c84b5f2090c0fd", + "version": "0.2.0-alpha.0", + "resolved": "git+ssh://git@git.kadil.dev:222/khalidadil/goods-editor-module.git#e4b7c820ad3775c3671164950ed6dbb78895693a", "dependencies": { "@emotion/is-prop-valid": "^1.4.0", - "@huggingface/transformers": "^3.4.0", - "konva": "^10.0.0", - "react-filerobot-image-editor": "^4.8.1", - "react-konva": "^19.2.3", "react-select": "^5.8.0", "styled-components": "^6.4.1", - "use-image": "^1.1.1", "uuid": "^9.0.1" }, "engines": { "node": ">=20.0.0" }, "peerDependencies": { + "@huggingface/transformers": ">=3.0.0", "canvas": "^3.0.0", + "konva": ">=9.0.0", "react": ">=18.0.0", "react-dom": ">=18.0.0", - "sharp": "^0.33.0" + "react-filerobot-image-editor": ">=4.0.0", + "react-konva": ">=18.0.0", + "sharp": "^0.33.0", + "use-image": ">=1.1.0" }, "peerDependenciesMeta": { "canvas": { @@ -11104,6 +11109,22 @@ "dev": true, "license": "ISC" }, + "node_modules/yaml": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz", + "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==", + "extraneous": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, "node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", diff --git a/package.json b/package.json index 77e75c2..19ab20d 100644 --- a/package.json +++ b/package.json @@ -14,17 +14,22 @@ "test": "echo 'Editor tests live in the goods-editor module. Run them from there.' && exit 0" }, "dependencies": { - "goods-editor": "git+ssh://git@git.kadil.dev:222/khalidadil/goods-editor-module.git#v0.1.0-alpha.2", + "goods-editor": "git+ssh://git@git.kadil.dev:222/khalidadil/goods-editor-module.git#v0.2.0-alpha.0", + "@huggingface/transformers": "^3.4.0", "canvas": "^3.0.0", "cors": "^2.8.5", "express": "^4.18.2", "express-rate-limit": "^7.4.0", + "konva": "^10.0.0", "multer": "^2.0.0", "pino": "^9.5.0", "pino-http": "^10.3.0", "react": "^19.2.5", "react-dom": "^19.2.5", + "react-filerobot-image-editor": "^4.8.1", + "react-konva": "^19.2.3", "sharp": "^0.33.2", + "use-image": "^1.1.1", "uuid": "^9.0.1" }, "devDependencies": { diff --git a/vite.config.js b/vite.config.js index 0272a5c..b9b89e2 100644 --- a/vite.config.js +++ b/vite.config.js @@ -119,14 +119,20 @@ export default defineConfig({ // which precaching would undo. They're served via the // `sticker-library` runtimeCaching rule below instead. globIgnores: ['**/stickers/**'], - // Note: we deliberately do NOT raise `maximumFileSizeToCacheInBytes` + // We deliberately do NOT raise `maximumFileSizeToCacheInBytes` // here. The default 2 MiB cap is a useful regression alarm — if // a future change pushes any chunk past it, the build fails loudly // and we know to either split further or investigate why a chunk - // grew. Earlier this file overrode the cap to 5 MiB because the - // pre-split bundle was 2.32 MB; that override was removed once - // `build.rollupOptions.output.manualChunks` (below in this config) - // brought every chunk under the default cap. + // grew. + // + // History: this file briefly overrode the cap to 3 MiB when the + // goods-editor module shipped its dist with konva, react-konva, + // use-image, react-filerobot-image-editor, and + // @huggingface/transformers inlined (~2.14 MiB chunk). That + // override was removed when the module externalized those deps + // (goods-editor v0.2.0-alpha.0+) and they became host-resolved + // peer deps, letting the host's manualChunks rules split them + // into separate sub-2-MiB chunks. runtimeCaching: [ { urlPattern: /^https:\/\/cdn\.huggingface\.co\/.*/i, @@ -328,6 +334,15 @@ export default defineConfig({ // used only when the user opens the advanced // image editor. Worth its own chunk so the // rest of the app doesn't pay for it. + // goods-editor/ The editor module's own bundle. By far the + // largest single piece of UI code (the entire + // editor surface). Lives in its own chunk so + // host-only deploys don't bust its cache — it + // only changes when we bump the module's tag + // in package.json. Without this split, it sits + // inside `index` and pushes the index chunk + // past 2 MiB, which fails the workbox precache + // check. // index/ Everything else: app code, react-select, // styled-components, zod, uuid, plus all // the small utilities. This stays the @@ -365,6 +380,7 @@ export default defineConfig({ ['konva', 'konva', 'react-konva', 'use-image'], ['react-vendor', 'react', 'react-dom'], ['filerobot', 'react-filerobot-image-editor'], + ['goods-editor', 'goods-editor'], ]; for (const [chunk, ...packages] of groups) { for (const pkg of packages) {