diff --git a/.github/workflows/build-tag.yml b/.github/workflows/build-tag.yml index ca51181cbd..425888e6ce 100644 --- a/.github/workflows/build-tag.yml +++ b/.github/workflows/build-tag.yml @@ -11,7 +11,7 @@ jobs: secrets: inherit with: gh_ref: ${{ github.ref_name }} - build_wasm: "no" + build_wasm: "yes" build_storybook: "yes" build-docker: diff --git a/CHANGES.md b/CHANGES.md index 54df8056ee..b9e4471cfa 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -93,6 +93,7 @@ example. It's still usable as before, we just removed the example. - Fix unpublish library modal not scrolling a long file list [Taiga #12285](https://tree.taiga.io/project/penpot/issue/12285) - Fix incorrect interaction betwen hower and scroll on assets sidebar [Taiga #12389](https://tree.taiga.io/project/penpot/issue/12389) - Fix switch variants with paths [Taiga #12841](https://tree.taiga.io/project/penpot/issue/12841) +- Fix referencing typography tokens on font-family tokens [Taiga #12492](https://tree.taiga.io/project/penpot/issue/12492) ## 2.11.1 diff --git a/backend/resources/app/onboarding.edn b/backend/resources/app/onboarding.edn index 9efda9bb9f..78d5ddf4c1 100644 --- a/backend/resources/app/onboarding.edn +++ b/backend/resources/app/onboarding.edn @@ -3,7 +3,7 @@ :file-uri "https://github.com/penpot/penpot-files/raw/refs/heads/main/Tokens%20starter%20kit.penpot"} {:id "penpot-design-system" :name "Penpot Design System | Pencil" - :file-uri "https://github.com/penpot/penpot-files/raw/refs/heads/main/penpot-app.penpot"} + :file-uri "https://github.com/penpot/penpot-files/raw/refs/heads/main/Pencil-Penpot-Design-System.penpot"} {:id "wireframing-kit" :name "Wireframe library" :file-uri "https://github.com/penpot/penpot-files/raw/refs/heads/main/Wireframing%20kit%20v1.1.penpot"} diff --git a/exporter/package.json b/exporter/package.json index 7422f99a04..455f8df300 100644 --- a/exporter/package.json +++ b/exporter/package.json @@ -21,6 +21,7 @@ "raw-body": "^3.0.1", "source-map-support": "^0.5.21", "svgo": "penpot/svgo#v3.1", + "undici": "^7.16.0", "xml-js": "^1.6.11", "xregexp": "^5.1.2" }, diff --git a/exporter/scripts/wait-and-start.sh b/exporter/scripts/wait-and-start.sh index c3848228dc..f9638eb06d 100755 --- a/exporter/scripts/wait-and-start.sh +++ b/exporter/scripts/wait-and-start.sh @@ -7,5 +7,4 @@ bb -i '(babashka.wait/wait-for-port "localhost" 9630)'; bb -i '(babashka.wait/wait-for-path "target/app.js")'; sleep 2; -export NODE_TLS_REJECT_UNAUTHORIZED=0 exec node target/app.js diff --git a/exporter/src/app/handlers/export_shapes.cljs b/exporter/src/app/handlers/export_shapes.cljs index 82f1d78855..29a92df61e 100644 --- a/exporter/src/app/handlers/export_shapes.cljs +++ b/exporter/src/app/handlers/export_shapes.cljs @@ -107,12 +107,12 @@ :on-progress on-progress) append (fn [{:keys [filename path] :as resource}] - (rsc/add-to-zip! zip path (str/replace filename sanitize-file-regex "_"))) + (rsc/add-to-zip zip path (str/replace filename sanitize-file-regex "_"))) proc (->> exports (map (fn [export] (rd/render export append))) (p/all) - (p/fnly (fn [_] (.finalize zip))) + (p/mcat (fn [_] (rsc/close-zip zip))) (p/fmap (constantly resource)) (p/mcat (partial rsc/upload-resource auth-token)) (p/fmap (fn [resource] diff --git a/exporter/src/app/handlers/resources.cljs b/exporter/src/app/handlers/resources.cljs index 32c968c0fb..8b0a55ba35 100644 --- a/exporter/src/app/handlers/resources.cljs +++ b/exporter/src/app/handlers/resources.cljs @@ -11,6 +11,7 @@ ["node:fs" :as fs] ["node:fs/promises" :as fsp] ["node:path" :as path] + ["undici" :as http] [app.common.exceptions :as ex] [app.common.transit :as t] [app.common.uri :as u] @@ -53,30 +54,40 @@ (.pipe zip out) zip)) -(defn add-to-zip! +(defn add-to-zip [zip path name] (.file ^js zip path #js {:name name})) -(defn close-zip! +(defn close-zip [zip] - (.finalize ^js zip)) + (p/create (fn [resolve] + (.on ^js zip "close" resolve) + (.finalize ^js zip)))) (defn upload-resource [auth-token resource] (->> (fsp/readFile (:path resource)) (p/fmap (fn [buffer] + (js/console.log buffer) (new js/Blob #js [buffer] #js {:type (:mtype resource)}))) (p/mcat (fn [blob] - (let [fdata (new js/FormData) - uri (-> (cf/get :public-uri) - (u/ensure-path-slash) - (u/join "api/management/methods/upload-tempfile") - (str))] + (let [fdata (new http/FormData) + agent (new http/Agent #js {:connect #js {:rejectUnauthorized false}}) + headers #js {"X-Shared-Key" cf/management-key + "Authorization" (str "Bearer " auth-token)} + + request #js {:headers headers + :method "POST" + :body fdata + :dispatcher agent} + uri (-> (cf/get :public-uri) + (u/ensure-path-slash) + (u/join "api/management/methods/upload-tempfile") + (str))] + (.append fdata "content" blob (:filename resource)) - (js/fetch uri #js {:headers #js {"X-Shared-Key" cf/management-key - "Authorization" (str "Bearer " auth-token)} - :method "POST" - :body fdata})))) + (http/fetch uri request)))) + (p/mcat (fn [response] (if (not= (.-status response) 200) (ex/raise :type :internal diff --git a/exporter/src/app/util/shell.cljs b/exporter/src/app/util/shell.cljs index 717ca21073..d52b458501 100644 --- a/exporter/src/app/util/shell.cljs +++ b/exporter/src/app/util/shell.cljs @@ -75,7 +75,8 @@ [path] (->> (.stat fs/promises path) (p/fmap (fn [data] - {:created-at (inst-ms (.-ctime ^js data)) + {:path path + :created-at (inst-ms (.-ctime ^js data)) :size (.-size data)})) (p/merr (fn [_cause] (p/resolved nil))))) diff --git a/exporter/yarn.lock b/exporter/yarn.lock index 7d487e04a7..67c96e0b64 100644 --- a/exporter/yarn.lock +++ b/exporter/yarn.lock @@ -582,6 +582,7 @@ __metadata: raw-body: "npm:^3.0.1" source-map-support: "npm:^0.5.21" svgo: "penpot/svgo#v3.1" + undici: "npm:^7.16.0" ws: "npm:^8.18.3" xml-js: "npm:^1.6.11" xregexp: "npm:^5.1.2" @@ -1513,6 +1514,13 @@ __metadata: languageName: node linkType: hard +"undici@npm:^7.16.0": + version: 7.16.0 + resolution: "undici@npm:7.16.0" + checksum: 10c0/efd867792e9f233facf9efa0a087e2d9c3e4415c0b234061b9b40307ca4fa01d945fee4d43c7b564e1b80e0d519bcc682f9f6e0de13c717146c00a80e2f1fb0f + languageName: node + linkType: hard + "unique-filename@npm:^4.0.0": version: 4.0.0 resolution: "unique-filename@npm:4.0.0" diff --git a/frontend/scripts/build b/frontend/scripts/build index 97d8cc856b..e0cdb0d070 100755 --- a/frontend/scripts/build +++ b/frontend/scripts/build @@ -20,21 +20,24 @@ echo $PATH set -ex corepack enable; -corepack install || exit 1; +corepack install; yarn install || exit 1; -rm -rf resources/public; rm -rf target/dist; +rm -rf resources/public; + +mkdir -p resources/public; + +pushd ../render-wasm; +./build +popd yarn run build:app:main --config-merge "{:release-version \"${CURRENT_HASH}-${TS}\"}" $EXTRA_PARAMS; - -if [ "$INCLUDE_WASM" = "yes" ]; then - yarn run build:wasm || exit 1; -fi - yarn run build:app:libs || exit 1; yarn run build:app:assets || exit 1; +sed -i "s/\.\/render.js/.\/render.js?version=$CURRENT_VERSION/g" resources/public/js/worker/main*.js + mkdir -p target/dist; rsync -avr resources/public/ target/dist/ diff --git a/frontend/shadow-cljs.edn b/frontend/shadow-cljs.edn index ac9b01366f..e9bee8f835 100644 --- a/frontend/shadow-cljs.edn +++ b/frontend/shadow-cljs.edn @@ -94,7 +94,7 @@ {:main {:entries [app.worker] :web-worker true - :prepend-js "importScripts('/js/worker/render.js');" + :prepend-js "importScripts('./render.js');" :depends-on #{}}} :js-options diff --git a/frontend/src/app/main/ui/delete_shared.scss b/frontend/src/app/main/ui/delete_shared.scss index 8e06bb4720..d0f08a50e8 100644 --- a/frontend/src/app/main/ui/delete_shared.scss +++ b/frontend/src/app/main/ui/delete_shared.scss @@ -45,7 +45,7 @@ .element-list { @include t.use-typography("body-large"); color: var(--modal-text-foreground-color); - overflow-y: scroll; + overflow-y: auto; margin-block: 0; } diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs index 6e74d9708f..13c5ebaaba 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs @@ -68,7 +68,7 @@ (mf/defc color-token-row* {::mf/private true} - [{:keys [active-tokens color-token color on-swatch-click-token detach-token open-modal-from-token]}] + [{:keys [active-tokens applied-token-name color on-swatch-click-token detach-token open-modal-from-token]}] (let [;; `active-tokens` may be provided as a `delay` (lazy computation). ;; In that case we must deref it (`@active-tokens`) to force evaluation ;; and obtain the actual value. If it’s already realized (not a delay), @@ -77,21 +77,22 @@ @active-tokens active-tokens) - color-tokens (:color active-tokens) + active-color-tokens (:color active-tokens) - token (some #(when (= (:name %) color-token) %) color-tokens) + token (some #(when (= (:name %) applied-token-name) %) active-color-tokens) on-detach-token (mf/use-fn - (mf/deps detach-token token color-token) + (mf/deps detach-token token applied-token-name) (fn [] - (let [token (or token color-token)] + (let [token (or token applied-token-name)] (detach-token token)))) has-errors (some? (:errors token)) token-name (:name token) resolved (:resolved-value token) - not-active (and (some? active-tokens) (nil? token)) + not-active (and (empty? active-tokens) + (nil? token)) id (dm/str (:id token) "-name") swatch-tooltip-content (cond not-active @@ -109,7 +110,7 @@ #(mf/html [:div [:span (dm/str (tr "workspace.tokens.token-name") ": ")] - [:span {:class (stl/css :token-name-tooltip)} color-token]]))] + [:span {:class (stl/css :token-name-tooltip)} applied-token-name]]))] [:div {:class (stl/css :color-info)} [:div {:class (stl/css-case :token-color-wrapper true @@ -128,7 +129,7 @@ :class (stl/css :token-tooltip)} [:div {:class (stl/css :token-name) :aria-labelledby id} - (or token-name color-token)]] + (or token-name applied-token-name)]] [:div {:class (stl/css :token-actions)} [:> icon-button* {:variant "action" @@ -146,7 +147,11 @@ on-change on-reorder on-detach on-open on-close on-remove origin on-detach-token disable-drag on-focus on-blur select-only select-on-focus on-token-change applied-token]}] - (let [token-color (contains? cfg/flags :token-color) + (let [;; TODO: Remove this workaround fixing `get-attrs*` fn on sidebar/options/shapes/multiple.cljs + applied-token (if (= :multiple applied-token) + nil + applied-token) + token-color (contains? cfg/flags :token-color) libraries (mf/deref refs/files) color-without-hash (mf/use-memo @@ -177,7 +182,6 @@ (-> (deref active-tokens*) (select-keys (get tk/tokens-by-input origin)) (not-empty))))) - on-focus' (mf/use-fn (mf/deps on-focus) @@ -352,7 +356,7 @@ (cond (and token-color applied-token) [:> color-token-row* {:active-tokens tokens - :color-token applied-token + :applied-token-name applied-token :color (dissoc color :ref-id :ref-file) :on-swatch-click-token on-swatch-click-token :detach-token detach-token diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs index 1e3207d80e..4f9e167363 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs @@ -63,7 +63,8 @@ :data {:index index}) [nil nil]) - stroke-color-token (:stroke-color applied-tokens) + stroke-color-token + (:stroke-color applied-tokens) on-color-change-refactor (mf/use-fn diff --git a/render-wasm/_build_env b/render-wasm/_build_env index 3be4d13957..d18526caa1 100644 --- a/render-wasm/_build_env +++ b/render-wasm/_build_env @@ -63,6 +63,12 @@ function clean { cargo clean; } +function setup { + corepack enable; + corepack install; + yarn install; +} + function build { cargo build $CARGO_PARAMS; } @@ -70,12 +76,14 @@ function build { function copy_artifacts { DEST=$1; + mkdir -p $DEST; + cp target/wasm32-unknown-emscripten/$BUILD_MODE/render_wasm.js $DEST/$BUILD_NAME.js; cp target/wasm32-unknown-emscripten/$BUILD_MODE/render_wasm.wasm $DEST/$BUILD_NAME.wasm; sed -i "s/render_wasm.wasm/$BUILD_NAME.wasm?version=$CURRENT_VERSION/g" $DEST/$BUILD_NAME.js; - npx esbuild target/wasm32-unknown-emscripten/$BUILD_MODE/render_wasm.js \ + yarn esbuild target/wasm32-unknown-emscripten/$BUILD_MODE/render_wasm.js \ --log-level=error \ --outfile=$DEST/worker/render.js \ --platform=neutral \ diff --git a/render-wasm/build b/render-wasm/build index 44ee13abb5..7d95f16088 100755 --- a/render-wasm/build +++ b/render-wasm/build @@ -2,8 +2,6 @@ EMSDK_QUIET=1 . /opt/emsdk/emsdk_env.sh -set -x - _BUILD_NAME="${_BUILD_NAME:-render_wasm}" _SCRIPT_DIR=$(dirname $0); @@ -11,8 +9,9 @@ pushd $_SCRIPT_DIR; . ./_build_env -set -x; +set -ex; +setup; build; copy_artifacts "../frontend/resources/public/js"; copy_shared_artifact; diff --git a/render-wasm/package.json b/render-wasm/package.json new file mode 100644 index 0000000000..61cb22d1c6 --- /dev/null +++ b/render-wasm/package.json @@ -0,0 +1,17 @@ +{ + "name": "penpot-render-wasm", + "version": "1.20.0", + "license": "MPL-2.0", + "author": "Kaleidos INC", + "private": true, + "packageManager": "yarn@4.10.3+sha512.c38cafb5c7bb273f3926d04e55e1d8c9dfa7d9c3ea1f36a4868fa028b9e5f72298f0b7f401ad5eb921749eb012eb1c3bb74bf7503df3ee43fd600d14a018266f", + "repository": { + "type": "git", + "url": "https://github.com/penpot/penpot" + }, + "type": "module", + "devDependencies": { + "@types/node": "^20.12.7", + "esbuild": "^0.25.9" + } +} diff --git a/render-wasm/watch b/render-wasm/watch index cfe8336aab..64cf7b86e5 100755 --- a/render-wasm/watch +++ b/render-wasm/watch @@ -1,5 +1,4 @@ #!/usr/bin/env bash -set -x _SCRIPT_DIR=$(dirname $0); pushd $_SCRIPT_DIR; diff --git a/render-wasm/yarn.lock b/render-wasm/yarn.lock new file mode 100644 index 0000000000..b3e85c6033 --- /dev/null +++ b/render-wasm/yarn.lock @@ -0,0 +1,302 @@ +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +__metadata: + version: 8 + cacheKey: 10c0 + +"@esbuild/aix-ppc64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/aix-ppc64@npm:0.25.12" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/android-arm64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/android-arm64@npm:0.25.12" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/android-arm@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/android-arm@npm:0.25.12" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@esbuild/android-x64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/android-x64@npm:0.25.12" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/darwin-arm64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/darwin-arm64@npm:0.25.12" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/darwin-x64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/darwin-x64@npm:0.25.12" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/freebsd-arm64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/freebsd-arm64@npm:0.25.12" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/freebsd-x64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/freebsd-x64@npm:0.25.12" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/linux-arm64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/linux-arm64@npm:0.25.12" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/linux-arm@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/linux-arm@npm:0.25.12" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@esbuild/linux-ia32@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/linux-ia32@npm:0.25.12" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/linux-loong64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/linux-loong64@npm:0.25.12" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + +"@esbuild/linux-mips64el@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/linux-mips64el@npm:0.25.12" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + +"@esbuild/linux-ppc64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/linux-ppc64@npm:0.25.12" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/linux-riscv64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/linux-riscv64@npm:0.25.12" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + +"@esbuild/linux-s390x@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/linux-s390x@npm:0.25.12" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + +"@esbuild/linux-x64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/linux-x64@npm:0.25.12" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/netbsd-arm64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/netbsd-arm64@npm:0.25.12" + conditions: os=netbsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/netbsd-x64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/netbsd-x64@npm:0.25.12" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openbsd-arm64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/openbsd-arm64@npm:0.25.12" + conditions: os=openbsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/openbsd-x64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/openbsd-x64@npm:0.25.12" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openharmony-arm64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/openharmony-arm64@npm:0.25.12" + conditions: os=openharmony & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/sunos-x64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/sunos-x64@npm:0.25.12" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/win32-arm64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/win32-arm64@npm:0.25.12" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/win32-ia32@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/win32-ia32@npm:0.25.12" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/win32-x64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/win32-x64@npm:0.25.12" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@types/node@npm:^20.12.7": + version: 20.19.26 + resolution: "@types/node@npm:20.19.26" + dependencies: + undici-types: "npm:~6.21.0" + checksum: 10c0/68e7d92dd2b7bddff9dffabb9c740e655906ceac428dcf070915cdcae720579e4d72261c55ed7eccbfa907a75cbb1ff3a9148ea49878a07a72d5dd6c9e06d9d7 + languageName: node + linkType: hard + +"esbuild@npm:^0.25.9": + version: 0.25.12 + resolution: "esbuild@npm:0.25.12" + dependencies: + "@esbuild/aix-ppc64": "npm:0.25.12" + "@esbuild/android-arm": "npm:0.25.12" + "@esbuild/android-arm64": "npm:0.25.12" + "@esbuild/android-x64": "npm:0.25.12" + "@esbuild/darwin-arm64": "npm:0.25.12" + "@esbuild/darwin-x64": "npm:0.25.12" + "@esbuild/freebsd-arm64": "npm:0.25.12" + "@esbuild/freebsd-x64": "npm:0.25.12" + "@esbuild/linux-arm": "npm:0.25.12" + "@esbuild/linux-arm64": "npm:0.25.12" + "@esbuild/linux-ia32": "npm:0.25.12" + "@esbuild/linux-loong64": "npm:0.25.12" + "@esbuild/linux-mips64el": "npm:0.25.12" + "@esbuild/linux-ppc64": "npm:0.25.12" + "@esbuild/linux-riscv64": "npm:0.25.12" + "@esbuild/linux-s390x": "npm:0.25.12" + "@esbuild/linux-x64": "npm:0.25.12" + "@esbuild/netbsd-arm64": "npm:0.25.12" + "@esbuild/netbsd-x64": "npm:0.25.12" + "@esbuild/openbsd-arm64": "npm:0.25.12" + "@esbuild/openbsd-x64": "npm:0.25.12" + "@esbuild/openharmony-arm64": "npm:0.25.12" + "@esbuild/sunos-x64": "npm:0.25.12" + "@esbuild/win32-arm64": "npm:0.25.12" + "@esbuild/win32-ia32": "npm:0.25.12" + "@esbuild/win32-x64": "npm:0.25.12" + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-arm64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-arm64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/openharmony-arm64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 10c0/c205357531423220a9de8e1e6c6514242bc9b1666e762cd67ccdf8fdfdc3f1d0bd76f8d9383958b97ad4c953efdb7b6e8c1f9ca5951cd2b7c5235e8755b34a6b + languageName: node + linkType: hard + +"penpot-render-wasm@workspace:.": + version: 0.0.0-use.local + resolution: "penpot-render-wasm@workspace:." + dependencies: + "@types/node": "npm:^20.12.7" + esbuild: "npm:^0.25.9" + languageName: unknown + linkType: soft + +"undici-types@npm:~6.21.0": + version: 6.21.0 + resolution: "undici-types@npm:6.21.0" + checksum: 10c0/c01ed51829b10aa72fc3ce64b747f8e74ae9b60eafa19a7b46ef624403508a54c526ffab06a14a26b3120d055e1104d7abe7c9017e83ced038ea5cf52f8d5e04 + languageName: node + linkType: hard