diff --git a/.pnp.cjs b/.pnp.cjs index 0e98b5e7..0713ad9d 100755 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -41,7 +41,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@emotion/react", "virtual:f05aa4e4719fd537ba4da07d5553d5af64c7f1fdd299ee20cc573ded517ff6989f4f9dcaf607519cf1ea35a7fc8484d64ed69e9ea31b5a59302d59cb203ae9e8#npm:11.11.1"],\ ["@next/env", "npm:13.4.10"],\ ["@playwright/test", "npm:1.36.1"],\ - ["@resvg/resvg-js", "npm:2.4.1"],\ ["@sentry/nextjs", "virtual:f05aa4e4719fd537ba4da07d5553d5af64c7f1fdd299ee20cc573ded517ff6989f4f9dcaf607519cf1ea35a7fc8484d64ed69e9ea31b5a59302d59cb203ae9e8#npm:7.58.1"],\ ["@storybook/addon-essentials", "virtual:f05aa4e4719fd537ba4da07d5553d5af64c7f1fdd299ee20cc573ded517ff6989f4f9dcaf607519cf1ea35a7fc8484d64ed69e9ea31b5a59302d59cb203ae9e8#npm:7.0.27"],\ ["@storybook/addon-interactions", "virtual:f05aa4e4719fd537ba4da07d5553d5af64c7f1fdd299ee20cc573ded517ff6989f4f9dcaf607519cf1ea35a7fc8484d64ed69e9ea31b5a59302d59cb203ae9e8#npm:7.0.27"],\ @@ -102,7 +101,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["react-copy-to-clipboard", "virtual:f05aa4e4719fd537ba4da07d5553d5af64c7f1fdd299ee20cc573ded517ff6989f4f9dcaf607519cf1ea35a7fc8484d64ed69e9ea31b5a59302d59cb203ae9e8#npm:5.1.0"],\ ["react-dom", "virtual:f05aa4e4719fd537ba4da07d5553d5af64c7f1fdd299ee20cc573ded517ff6989f4f9dcaf607519cf1ea35a7fc8484d64ed69e9ea31b5a59302d59cb203ae9e8#npm:18.2.0"],\ ["react-hotjar", "npm:6.1.0"],\ - ["satori", "npm:0.10.1"],\ ["sharp", "npm:0.32.3"],\ ["storybook", "npm:7.0.27"],\ ["styled-jsx", "virtual:f05aa4e4719fd537ba4da07d5553d5af64c7f1fdd299ee20cc573ded517ff6989f4f9dcaf607519cf1ea35a7fc8484d64ed69e9ea31b5a59302d59cb203ae9e8#npm:5.1.2"],\ @@ -140,7 +138,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@emotion/react", "virtual:f05aa4e4719fd537ba4da07d5553d5af64c7f1fdd299ee20cc573ded517ff6989f4f9dcaf607519cf1ea35a7fc8484d64ed69e9ea31b5a59302d59cb203ae9e8#npm:11.11.1"],\ ["@next/env", "npm:13.4.10"],\ ["@playwright/test", "npm:1.36.1"],\ - ["@resvg/resvg-js", "npm:2.4.1"],\ ["@sentry/nextjs", "virtual:f05aa4e4719fd537ba4da07d5553d5af64c7f1fdd299ee20cc573ded517ff6989f4f9dcaf607519cf1ea35a7fc8484d64ed69e9ea31b5a59302d59cb203ae9e8#npm:7.58.1"],\ ["@storybook/addon-essentials", "virtual:f05aa4e4719fd537ba4da07d5553d5af64c7f1fdd299ee20cc573ded517ff6989f4f9dcaf607519cf1ea35a7fc8484d64ed69e9ea31b5a59302d59cb203ae9e8#npm:7.0.27"],\ ["@storybook/addon-interactions", "virtual:f05aa4e4719fd537ba4da07d5553d5af64c7f1fdd299ee20cc573ded517ff6989f4f9dcaf607519cf1ea35a7fc8484d64ed69e9ea31b5a59302d59cb203ae9e8#npm:7.0.27"],\ @@ -201,7 +198,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["react-copy-to-clipboard", "virtual:f05aa4e4719fd537ba4da07d5553d5af64c7f1fdd299ee20cc573ded517ff6989f4f9dcaf607519cf1ea35a7fc8484d64ed69e9ea31b5a59302d59cb203ae9e8#npm:5.1.0"],\ ["react-dom", "virtual:f05aa4e4719fd537ba4da07d5553d5af64c7f1fdd299ee20cc573ded517ff6989f4f9dcaf607519cf1ea35a7fc8484d64ed69e9ea31b5a59302d59cb203ae9e8#npm:18.2.0"],\ ["react-hotjar", "npm:6.1.0"],\ - ["satori", "npm:0.10.1"],\ ["sharp", "npm:0.32.3"],\ ["storybook", "npm:7.0.27"],\ ["styled-jsx", "virtual:f05aa4e4719fd537ba4da07d5553d5af64c7f1fdd299ee20cc573ded517ff6989f4f9dcaf607519cf1ea35a7fc8484d64ed69e9ea31b5a59302d59cb203ae9e8#npm:5.1.2"],\ @@ -6185,135 +6181,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ - ["@resvg/resvg-js", [\ - ["npm:2.4.1", {\ - "packageLocation": "./.yarn/cache/@resvg-resvg-js-npm-2.4.1-3421962d4a-6e1b52704a.zip/node_modules/@resvg/resvg-js/",\ - "packageDependencies": [\ - ["@resvg/resvg-js", "npm:2.4.1"],\ - ["@resvg/resvg-js-android-arm-eabi", "npm:2.4.1"],\ - ["@resvg/resvg-js-android-arm64", "npm:2.4.1"],\ - ["@resvg/resvg-js-darwin-arm64", "npm:2.4.1"],\ - ["@resvg/resvg-js-darwin-x64", "npm:2.4.1"],\ - ["@resvg/resvg-js-linux-arm-gnueabihf", "npm:2.4.1"],\ - ["@resvg/resvg-js-linux-arm64-gnu", "npm:2.4.1"],\ - ["@resvg/resvg-js-linux-arm64-musl", "npm:2.4.1"],\ - ["@resvg/resvg-js-linux-x64-gnu", "npm:2.4.1"],\ - ["@resvg/resvg-js-linux-x64-musl", "npm:2.4.1"],\ - ["@resvg/resvg-js-win32-arm64-msvc", "npm:2.4.1"],\ - ["@resvg/resvg-js-win32-ia32-msvc", "npm:2.4.1"],\ - ["@resvg/resvg-js-win32-x64-msvc", "npm:2.4.1"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["@resvg/resvg-js-android-arm-eabi", [\ - ["npm:2.4.1", {\ - "packageLocation": "./.yarn/unplugged/@resvg-resvg-js-android-arm-eabi-npm-2.4.1-a650ec7580/node_modules/@resvg/resvg-js-android-arm-eabi/",\ - "packageDependencies": [\ - ["@resvg/resvg-js-android-arm-eabi", "npm:2.4.1"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["@resvg/resvg-js-android-arm64", [\ - ["npm:2.4.1", {\ - "packageLocation": "./.yarn/unplugged/@resvg-resvg-js-android-arm64-npm-2.4.1-83bd593596/node_modules/@resvg/resvg-js-android-arm64/",\ - "packageDependencies": [\ - ["@resvg/resvg-js-android-arm64", "npm:2.4.1"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["@resvg/resvg-js-darwin-arm64", [\ - ["npm:2.4.1", {\ - "packageLocation": "./.yarn/unplugged/@resvg-resvg-js-darwin-arm64-npm-2.4.1-dd62527c57/node_modules/@resvg/resvg-js-darwin-arm64/",\ - "packageDependencies": [\ - ["@resvg/resvg-js-darwin-arm64", "npm:2.4.1"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["@resvg/resvg-js-darwin-x64", [\ - ["npm:2.4.1", {\ - "packageLocation": "./.yarn/unplugged/@resvg-resvg-js-darwin-x64-npm-2.4.1-903f4a0a80/node_modules/@resvg/resvg-js-darwin-x64/",\ - "packageDependencies": [\ - ["@resvg/resvg-js-darwin-x64", "npm:2.4.1"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["@resvg/resvg-js-linux-arm-gnueabihf", [\ - ["npm:2.4.1", {\ - "packageLocation": "./.yarn/unplugged/@resvg-resvg-js-linux-arm-gnueabihf-npm-2.4.1-7588b2638e/node_modules/@resvg/resvg-js-linux-arm-gnueabihf/",\ - "packageDependencies": [\ - ["@resvg/resvg-js-linux-arm-gnueabihf", "npm:2.4.1"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["@resvg/resvg-js-linux-arm64-gnu", [\ - ["npm:2.4.1", {\ - "packageLocation": "./.yarn/unplugged/@resvg-resvg-js-linux-arm64-gnu-npm-2.4.1-8e14df13f6/node_modules/@resvg/resvg-js-linux-arm64-gnu/",\ - "packageDependencies": [\ - ["@resvg/resvg-js-linux-arm64-gnu", "npm:2.4.1"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["@resvg/resvg-js-linux-arm64-musl", [\ - ["npm:2.4.1", {\ - "packageLocation": "./.yarn/unplugged/@resvg-resvg-js-linux-arm64-musl-npm-2.4.1-1ca99f5965/node_modules/@resvg/resvg-js-linux-arm64-musl/",\ - "packageDependencies": [\ - ["@resvg/resvg-js-linux-arm64-musl", "npm:2.4.1"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["@resvg/resvg-js-linux-x64-gnu", [\ - ["npm:2.4.1", {\ - "packageLocation": "./.yarn/unplugged/@resvg-resvg-js-linux-x64-gnu-npm-2.4.1-87156bac27/node_modules/@resvg/resvg-js-linux-x64-gnu/",\ - "packageDependencies": [\ - ["@resvg/resvg-js-linux-x64-gnu", "npm:2.4.1"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["@resvg/resvg-js-linux-x64-musl", [\ - ["npm:2.4.1", {\ - "packageLocation": "./.yarn/unplugged/@resvg-resvg-js-linux-x64-musl-npm-2.4.1-8ba788d0b4/node_modules/@resvg/resvg-js-linux-x64-musl/",\ - "packageDependencies": [\ - ["@resvg/resvg-js-linux-x64-musl", "npm:2.4.1"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["@resvg/resvg-js-win32-arm64-msvc", [\ - ["npm:2.4.1", {\ - "packageLocation": "./.yarn/unplugged/@resvg-resvg-js-win32-arm64-msvc-npm-2.4.1-61687899c1/node_modules/@resvg/resvg-js-win32-arm64-msvc/",\ - "packageDependencies": [\ - ["@resvg/resvg-js-win32-arm64-msvc", "npm:2.4.1"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["@resvg/resvg-js-win32-ia32-msvc", [\ - ["npm:2.4.1", {\ - "packageLocation": "./.yarn/unplugged/@resvg-resvg-js-win32-ia32-msvc-npm-2.4.1-f67eb8c4af/node_modules/@resvg/resvg-js-win32-ia32-msvc/",\ - "packageDependencies": [\ - ["@resvg/resvg-js-win32-ia32-msvc", "npm:2.4.1"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["@resvg/resvg-js-win32-x64-msvc", [\ - ["npm:2.4.1", {\ - "packageLocation": "./.yarn/unplugged/@resvg-resvg-js-win32-x64-msvc-npm-2.4.1-75256d6745/node_modules/@resvg/resvg-js-win32-x64-msvc/",\ - "packageDependencies": [\ - ["@resvg/resvg-js-win32-x64-msvc", "npm:2.4.1"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["@rollup/plugin-commonjs", [\ ["npm:24.0.0", {\ "packageLocation": "./.yarn/cache/@rollup-plugin-commonjs-npm-24.0.0-b18d79acac-e2a1bf295b.zip/node_modules/@rollup/plugin-commonjs/",\ @@ -6601,17 +6468,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ - ["@shuding/opentype.js", [\ - ["npm:1.4.0-beta.0", {\ - "packageLocation": "./.yarn/cache/@shuding-opentype.js-npm-1.4.0-beta.0-498d62cde8-af3478c40c.zip/node_modules/@shuding/opentype.js/",\ - "packageDependencies": [\ - ["@shuding/opentype.js", "npm:1.4.0-beta.0"],\ - ["fflate", "npm:0.7.4"],\ - ["string.prototype.codepointat", "npm:0.2.1"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["@sinclair/typebox", [\ ["npm:0.27.8", {\ "packageLocation": "./.yarn/cache/@sinclair-typebox-npm-0.27.8-23e206d653-00bd7362a3.zip/node_modules/@sinclair/typebox/",\ @@ -10736,13 +10592,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["base64-js", [\ - ["npm:0.0.8", {\ - "packageLocation": "./.yarn/cache/base64-js-npm-0.0.8-f2946f7960-e95d2fa4b9.zip/node_modules/base64-js/",\ - "packageDependencies": [\ - ["base64-js", "npm:0.0.8"]\ - ],\ - "linkType": "HARD"\ - }],\ ["npm:1.5.1", {\ "packageLocation": "./.yarn/cache/base64-js-npm-1.5.1-b2f7275641-669632eb37.zip/node_modules/base64-js/",\ "packageDependencies": [\ @@ -11254,15 +11103,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ - ["camelize", [\ - ["npm:1.0.1", {\ - "packageLocation": "./.yarn/cache/camelize-npm-1.0.1-d86ebe085a-91d8611d09.zip/node_modules/camelize/",\ - "packageDependencies": [\ - ["camelize", "npm:1.0.1"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["caniuse-lite", [\ ["npm:1.0.30001516", {\ "packageLocation": "./.yarn/cache/caniuse-lite-npm-1.0.30001516-399d435c2f-044adf3493.zip/node_modules/caniuse-lite/",\ @@ -12175,33 +12015,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ - ["css-background-parser", [\ - ["npm:0.1.0", {\ - "packageLocation": "./.yarn/cache/css-background-parser-npm-0.1.0-d1e94221f7-cf53bef8d5.zip/node_modules/css-background-parser/",\ - "packageDependencies": [\ - ["css-background-parser", "npm:0.1.0"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["css-box-shadow", [\ - ["npm:1.0.0-3", {\ - "packageLocation": "./.yarn/cache/css-box-shadow-npm-1.0.0-3-2a025ab419-1b7f15b291.zip/node_modules/css-box-shadow/",\ - "packageDependencies": [\ - ["css-box-shadow", "npm:1.0.0-3"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["css-color-keywords", [\ - ["npm:1.0.0", {\ - "packageLocation": "./.yarn/cache/css-color-keywords-npm-1.0.0-fc176df58b-8f125e3ad4.zip/node_modules/css-color-keywords/",\ - "packageDependencies": [\ - ["css-color-keywords", "npm:1.0.0"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["css-functions-list", [\ ["npm:3.2.0", {\ "packageLocation": "./.yarn/cache/css-functions-list-npm-3.2.0-a8774cac11-fe912ea852.zip/node_modules/css-functions-list/",\ @@ -12255,18 +12068,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ - ["css-to-react-native", [\ - ["npm:3.2.0", {\ - "packageLocation": "./.yarn/cache/css-to-react-native-npm-3.2.0-46e31a25e3-263be65e80.zip/node_modules/css-to-react-native/",\ - "packageDependencies": [\ - ["css-to-react-native", "npm:3.2.0"],\ - ["camelize", "npm:1.0.1"],\ - ["css-color-keywords", "npm:1.0.0"],\ - ["postcss-value-parser", "npm:4.2.0"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["css-tree", [\ ["npm:2.3.1", {\ "packageLocation": "./.yarn/cache/css-tree-npm-2.3.1-6540d78e26-493cc24b5c.zip/node_modules/css-tree/",\ @@ -12999,13 +12800,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["emoji-regex", [\ - ["npm:10.2.1", {\ - "packageLocation": "./.yarn/cache/emoji-regex-npm-10.2.1-463e5e2567-1aa2d16881.zip/node_modules/emoji-regex/",\ - "packageDependencies": [\ - ["emoji-regex", "npm:10.2.1"]\ - ],\ - "linkType": "HARD"\ - }],\ ["npm:8.0.0", {\ "packageLocation": "./.yarn/cache/emoji-regex-npm-8.0.0-213764015c-d4c5c39d5a.zip/node_modules/emoji-regex/",\ "packageDependencies": [\ @@ -14393,15 +14187,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ - ["fflate", [\ - ["npm:0.7.4", {\ - "packageLocation": "./.yarn/cache/fflate-npm-0.7.4-df9245ab05-b812ab2604.zip/node_modules/fflate/",\ - "packageDependencies": [\ - ["fflate", "npm:0.7.4"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["file-entry-cache", [\ ["npm:6.0.1", {\ "packageLocation": "./.yarn/cache/file-entry-cache-npm-6.0.1-31965cf0af-f49701feaa.zip/node_modules/file-entry-cache/",\ @@ -15511,15 +15296,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ - ["hex-rgb", [\ - ["npm:4.3.0", {\ - "packageLocation": "./.yarn/cache/hex-rgb-npm-4.3.0-5f12201aeb-e654648db8.zip/node_modules/hex-rgb/",\ - "packageDependencies": [\ - ["hex-rgb", "npm:4.3.0"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["highlight.js", [\ ["npm:10.7.3", {\ "packageLocation": "./.yarn/cache/highlight.js-npm-10.7.3-247e67d5c0-defeafcd54.zip/node_modules/highlight.js/",\ @@ -17246,17 +17022,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ - ["linebreak", [\ - ["npm:1.1.0", {\ - "packageLocation": "./.yarn/cache/linebreak-npm-1.1.0-d845ecba6a-65cb66900b.zip/node_modules/linebreak/",\ - "packageDependencies": [\ - ["linebreak", "npm:1.1.0"],\ - ["base64-js", "npm:0.0.8"],\ - ["unicode-trie", "npm:2.0.0"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["lines-and-columns", [\ ["npm:1.2.4", {\ "packageLocation": "./.yarn/cache/lines-and-columns-npm-1.2.4-d6c7cc5799-0c37f9f7fa.zip/node_modules/lines-and-columns/",\ @@ -19235,17 +19000,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ - ["parse-css-color", [\ - ["npm:0.2.1", {\ - "packageLocation": "./.yarn/cache/parse-css-color-npm-0.2.1-383d1ca16d-3751e81fe9.zip/node_modules/parse-css-color/",\ - "packageDependencies": [\ - ["parse-css-color", "npm:0.2.1"],\ - ["color-name", "npm:1.1.4"],\ - ["hex-rgb", "npm:4.3.0"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["parse-entities", [\ ["npm:2.0.0", {\ "packageLocation": "./.yarn/cache/parse-entities-npm-2.0.0-b7b4f46ff6-7addfd3e7d.zip/node_modules/parse-entities/",\ @@ -21447,25 +21201,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ - ["satori", [\ - ["npm:0.10.1", {\ - "packageLocation": "./.yarn/cache/satori-npm-0.10.1-182931b85d-fd6df0f800.zip/node_modules/satori/",\ - "packageDependencies": [\ - ["satori", "npm:0.10.1"],\ - ["@shuding/opentype.js", "npm:1.4.0-beta.0"],\ - ["css-background-parser", "npm:0.1.0"],\ - ["css-box-shadow", "npm:1.0.0-3"],\ - ["css-to-react-native", "npm:3.2.0"],\ - ["emoji-regex", "npm:10.2.1"],\ - ["escape-html", "npm:1.0.3"],\ - ["linebreak", "npm:1.1.0"],\ - ["parse-css-color", "npm:0.2.1"],\ - ["postcss-value-parser", "npm:4.2.0"],\ - ["yoga-wasm-web", "npm:0.3.3"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["saxes", [\ ["npm:6.0.0", {\ "packageLocation": "./.yarn/cache/saxes-npm-6.0.0-31558949f5-d3fa3e2aaf.zip/node_modules/saxes/",\ @@ -22257,15 +21992,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ - ["string.prototype.codepointat", [\ - ["npm:0.2.1", {\ - "packageLocation": "./.yarn/cache/string.prototype.codepointat-npm-0.2.1-82003deaf5-bafa15844d.zip/node_modules/string.prototype.codepointat/",\ - "packageDependencies": [\ - ["string.prototype.codepointat", "npm:0.2.1"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["string.prototype.matchall", [\ ["npm:4.0.8", {\ "packageLocation": "./.yarn/cache/string.prototype.matchall-npm-4.0.8-1feb1531b6-952da3a818.zip/node_modules/string.prototype.matchall/",\ @@ -23069,15 +22795,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ - ["tiny-inflate", [\ - ["npm:1.0.3", {\ - "packageLocation": "./.yarn/cache/tiny-inflate-npm-1.0.3-a7419a5c65-4086a1f893.zip/node_modules/tiny-inflate/",\ - "packageDependencies": [\ - ["tiny-inflate", "npm:1.0.3"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["tinybench", [\ ["npm:2.5.0", {\ "packageLocation": "./.yarn/cache/tinybench-npm-2.5.0-a523c3609f-284bb9428f.zip/node_modules/tinybench/",\ @@ -23824,17 +23541,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ - ["unicode-trie", [\ - ["npm:2.0.0", {\ - "packageLocation": "./.yarn/cache/unicode-trie-npm-2.0.0-54e0a4dd52-19e637ce20.zip/node_modules/unicode-trie/",\ - "packageDependencies": [\ - ["unicode-trie", "npm:2.0.0"],\ - ["pako", "npm:0.2.9"],\ - ["tiny-inflate", "npm:1.0.3"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["unique-filename", [\ ["npm:3.0.0", {\ "packageLocation": "./.yarn/cache/unique-filename-npm-3.0.0-77d68e0a45-8e2f59b356.zip/node_modules/unique-filename/",\ @@ -24969,15 +24675,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "HARD"\ }]\ - ]],\ - ["yoga-wasm-web", [\ - ["npm:0.3.3", {\ - "packageLocation": "./.yarn/cache/yoga-wasm-web-npm-0.3.3-3f063ab1a0-ff65192a83.zip/node_modules/yoga-wasm-web/",\ - "packageDependencies": [\ - ["yoga-wasm-web", "npm:0.3.3"]\ - ],\ - "linkType": "HARD"\ - }]\ ]]\ ]\ }'), {basePath: basePath || __dirname}); diff --git a/.yarn/cache/@resvg-resvg-js-darwin-arm64-npm-2.4.1-dd62527c57-8.zip b/.yarn/cache/@resvg-resvg-js-darwin-arm64-npm-2.4.1-dd62527c57-8.zip deleted file mode 100644 index e6a45aa4..00000000 Binary files a/.yarn/cache/@resvg-resvg-js-darwin-arm64-npm-2.4.1-dd62527c57-8.zip and /dev/null differ diff --git a/.yarn/cache/@resvg-resvg-js-npm-2.4.1-3421962d4a-6e1b52704a.zip b/.yarn/cache/@resvg-resvg-js-npm-2.4.1-3421962d4a-6e1b52704a.zip deleted file mode 100644 index a3a32af4..00000000 Binary files a/.yarn/cache/@resvg-resvg-js-npm-2.4.1-3421962d4a-6e1b52704a.zip and /dev/null differ diff --git a/.yarn/cache/@shuding-opentype.js-npm-1.4.0-beta.0-498d62cde8-af3478c40c.zip b/.yarn/cache/@shuding-opentype.js-npm-1.4.0-beta.0-498d62cde8-af3478c40c.zip deleted file mode 100644 index 96aa5098..00000000 Binary files a/.yarn/cache/@shuding-opentype.js-npm-1.4.0-beta.0-498d62cde8-af3478c40c.zip and /dev/null differ diff --git a/.yarn/cache/base64-js-npm-0.0.8-f2946f7960-e95d2fa4b9.zip b/.yarn/cache/base64-js-npm-0.0.8-f2946f7960-e95d2fa4b9.zip deleted file mode 100644 index 6ca32726..00000000 Binary files a/.yarn/cache/base64-js-npm-0.0.8-f2946f7960-e95d2fa4b9.zip and /dev/null differ diff --git a/.yarn/cache/camelize-npm-1.0.1-d86ebe085a-91d8611d09.zip b/.yarn/cache/camelize-npm-1.0.1-d86ebe085a-91d8611d09.zip deleted file mode 100644 index 81cef64d..00000000 Binary files a/.yarn/cache/camelize-npm-1.0.1-d86ebe085a-91d8611d09.zip and /dev/null differ diff --git a/.yarn/cache/css-background-parser-npm-0.1.0-d1e94221f7-cf53bef8d5.zip b/.yarn/cache/css-background-parser-npm-0.1.0-d1e94221f7-cf53bef8d5.zip deleted file mode 100644 index d75a2650..00000000 Binary files a/.yarn/cache/css-background-parser-npm-0.1.0-d1e94221f7-cf53bef8d5.zip and /dev/null differ diff --git a/.yarn/cache/css-box-shadow-npm-1.0.0-3-2a025ab419-1b7f15b291.zip b/.yarn/cache/css-box-shadow-npm-1.0.0-3-2a025ab419-1b7f15b291.zip deleted file mode 100644 index 78858862..00000000 Binary files a/.yarn/cache/css-box-shadow-npm-1.0.0-3-2a025ab419-1b7f15b291.zip and /dev/null differ diff --git a/.yarn/cache/css-color-keywords-npm-1.0.0-fc176df58b-8f125e3ad4.zip b/.yarn/cache/css-color-keywords-npm-1.0.0-fc176df58b-8f125e3ad4.zip deleted file mode 100644 index 9886779c..00000000 Binary files a/.yarn/cache/css-color-keywords-npm-1.0.0-fc176df58b-8f125e3ad4.zip and /dev/null differ diff --git a/.yarn/cache/css-to-react-native-npm-3.2.0-46e31a25e3-263be65e80.zip b/.yarn/cache/css-to-react-native-npm-3.2.0-46e31a25e3-263be65e80.zip deleted file mode 100644 index 48e96509..00000000 Binary files a/.yarn/cache/css-to-react-native-npm-3.2.0-46e31a25e3-263be65e80.zip and /dev/null differ diff --git a/.yarn/cache/emoji-regex-npm-10.2.1-463e5e2567-1aa2d16881.zip b/.yarn/cache/emoji-regex-npm-10.2.1-463e5e2567-1aa2d16881.zip deleted file mode 100644 index 75c10d7a..00000000 Binary files a/.yarn/cache/emoji-regex-npm-10.2.1-463e5e2567-1aa2d16881.zip and /dev/null differ diff --git a/.yarn/cache/fflate-npm-0.7.4-df9245ab05-b812ab2604.zip b/.yarn/cache/fflate-npm-0.7.4-df9245ab05-b812ab2604.zip deleted file mode 100644 index 982b446b..00000000 Binary files a/.yarn/cache/fflate-npm-0.7.4-df9245ab05-b812ab2604.zip and /dev/null differ diff --git a/.yarn/cache/hex-rgb-npm-4.3.0-5f12201aeb-e654648db8.zip b/.yarn/cache/hex-rgb-npm-4.3.0-5f12201aeb-e654648db8.zip deleted file mode 100644 index 1268d7c5..00000000 Binary files a/.yarn/cache/hex-rgb-npm-4.3.0-5f12201aeb-e654648db8.zip and /dev/null differ diff --git a/.yarn/cache/linebreak-npm-1.1.0-d845ecba6a-65cb66900b.zip b/.yarn/cache/linebreak-npm-1.1.0-d845ecba6a-65cb66900b.zip deleted file mode 100644 index e4364f84..00000000 Binary files a/.yarn/cache/linebreak-npm-1.1.0-d845ecba6a-65cb66900b.zip and /dev/null differ diff --git a/.yarn/cache/parse-css-color-npm-0.2.1-383d1ca16d-3751e81fe9.zip b/.yarn/cache/parse-css-color-npm-0.2.1-383d1ca16d-3751e81fe9.zip deleted file mode 100644 index 83f97f98..00000000 Binary files a/.yarn/cache/parse-css-color-npm-0.2.1-383d1ca16d-3751e81fe9.zip and /dev/null differ diff --git a/.yarn/cache/satori-npm-0.10.1-182931b85d-fd6df0f800.zip b/.yarn/cache/satori-npm-0.10.1-182931b85d-fd6df0f800.zip deleted file mode 100644 index 4910d15f..00000000 Binary files a/.yarn/cache/satori-npm-0.10.1-182931b85d-fd6df0f800.zip and /dev/null differ diff --git a/.yarn/cache/string.prototype.codepointat-npm-0.2.1-82003deaf5-bafa15844d.zip b/.yarn/cache/string.prototype.codepointat-npm-0.2.1-82003deaf5-bafa15844d.zip deleted file mode 100644 index e1c9a304..00000000 Binary files a/.yarn/cache/string.prototype.codepointat-npm-0.2.1-82003deaf5-bafa15844d.zip and /dev/null differ diff --git a/.yarn/cache/tiny-inflate-npm-1.0.3-a7419a5c65-4086a1f893.zip b/.yarn/cache/tiny-inflate-npm-1.0.3-a7419a5c65-4086a1f893.zip deleted file mode 100644 index 094ecc0e..00000000 Binary files a/.yarn/cache/tiny-inflate-npm-1.0.3-a7419a5c65-4086a1f893.zip and /dev/null differ diff --git a/.yarn/cache/unicode-trie-npm-2.0.0-54e0a4dd52-19e637ce20.zip b/.yarn/cache/unicode-trie-npm-2.0.0-54e0a4dd52-19e637ce20.zip deleted file mode 100644 index eaa1d677..00000000 Binary files a/.yarn/cache/unicode-trie-npm-2.0.0-54e0a4dd52-19e637ce20.zip and /dev/null differ diff --git a/.yarn/cache/yoga-wasm-web-npm-0.3.3-3f063ab1a0-ff65192a83.zip b/.yarn/cache/yoga-wasm-web-npm-0.3.3-3f063ab1a0-ff65192a83.zip deleted file mode 100644 index d1342f8a..00000000 Binary files a/.yarn/cache/yoga-wasm-web-npm-0.3.3-3f063ab1a0-ff65192a83.zip and /dev/null differ diff --git a/README.md b/README.md index 012f8740..822f5dc8 100644 --- a/README.md +++ b/README.md @@ -75,7 +75,7 @@ 사용자 지표를 수집 및 분석하여 이탈율을 줄이고, 사용자 경험을 개선했어요. * Sentry 부착으로 에러 로그를 수집하고, 디버깅에 유리한 환경을 구성했어요 * SSR 을 활용한 SEO 개인화를 진행했어요. -* Satori를 사용한 이미지 동적 생성으로 사용자가 이미지를 다운받을 수 있게 만들었어요. +* API Route를 사용해 이미지를 동적으로 생성해 사용자가 이미지를 다운받을 수 있게 만들었어요. * Stylelint를 사용해 스타일링 컨벤션을 확립했어요. * Vitest를 활용해 TDD로 개발했어요. diff --git a/next.config.js b/next.config.js index 8fcb24c2..68b88832 100644 --- a/next.config.js +++ b/next.config.js @@ -16,7 +16,7 @@ const nextConfig = { appDir: false, forceSwcTransforms: true, }, - pageExtensions: ['page.tsx', 'page.ts'], + pageExtensions: ['page.tsx', 'page.ts', 'api.tsx', 'api.ts'], swcMinify: true, compiler: { emotion: true, diff --git a/package.json b/package.json index e698dd86..202bbc14 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,6 @@ "@egjs/flicking-plugins": "^4.7.0", "@egjs/react-flicking": "^4.10.9", "@emotion/react": "^11.10.6", - "@resvg/resvg-js": "^2.4.1", "@sentry/nextjs": "^7.49.0", "@tanstack/react-query": "^4.29.3", "@vercel/analytics": "^1.0.1", @@ -58,7 +57,6 @@ "react": "18.2.0", "react-dom": "18.2.0", "react-hotjar": "^6.1.0", - "satori": "^0.10.1", "sharp": "^0.32.1" }, "packageManager": "yarn@3.5.0", diff --git a/src/pages/api/auth/[...nextauth].page.ts b/src/pages/api/auth/[...nextauth].api.ts similarity index 100% rename from src/pages/api/auth/[...nextauth].page.ts rename to src/pages/api/auth/[...nextauth].api.ts diff --git a/src/pages/api/dna-image.api.tsx b/src/pages/api/dna-image.api.tsx new file mode 100644 index 00000000..ca0e435b --- /dev/null +++ b/src/pages/api/dna-image.api.tsx @@ -0,0 +1,112 @@ +/* eslint-disable unicorn/filename-case */ +import { ImageResponse, type NextRequest } from 'next/server'; + +import { type Group } from '~/utils/resultLogic'; + +type ImageOptions = ConstructorParameters[1]; + +export const config = { + runtime: 'edge', +}; + +export default async function handler(req: NextRequest) { + try { + const { searchParams } = new URL(req.url); + const group = searchParams.get('group'); + const nickname = searchParams.get('nickname'); + const position = searchParams.get('position'); + + const notoSansScFont700 = await fetchFont('Noto+Sans+KR', 700); + if (!notoSansScFont700) { + throw new Error('Failed to fetch font'); + } + + // TODO: 이미지 크기 및 위치 조절 + const imageOptions: ImageOptions = { + width: 375, + height: 666, + fonts: [ + { + name: 'Noto Sans KR', + data: notoSansScFont700, + weight: 700, + style: 'normal', + }, + ], + }; + + return new ImageResponse( + ( +
+ {/* eslint-disable-next-line @next/next/no-img-element */} + {'dna_' + + {nickname} + + + {position} + +
+ ), + imageOptions, + ); + } catch (error: unknown) { + return new Response('Failed to generate image', { status: 500 }); + } +} + +async function fetchFont(fontFamily = 'Noto+Sans+KR', fontWeight = 700): Promise { + const fontUrl = `https://fonts.googleapis.com/css2?family=${fontFamily}:wght@${fontWeight}`; + + const css = await (await fetch(fontUrl)).text(); + + const resource = css.match(/src: url\((.+)\) format\('(opentype|truetype)'\)/); + + if (!resource) return null; + + const res = await fetch(resource[1]); + + return res.arrayBuffer(); +} + +const HOISTING_IMAGE_BY_GROUP: Record = { + A: `https://github.com/depromeet/na-lab-client/assets/49177223/0b224b08-3858-4305-8323-1a6082dbb4f7`, + B: `https://github.com/depromeet/na-lab-client/assets/49177223/fec4951a-270f-40e8-8520-43eecb89416f`, + C: `https://github.com/depromeet/na-lab-client/assets/49177223/faefd0ee-7048-4578-8ec5-b70713e6efd9`, + D: `https://github.com/depromeet/na-lab-client/assets/49177223/4dbecfeb-5492-4c6b-b4a7-cd933cd5621e`, + E: `https://github.com/depromeet/na-lab-client/assets/49177223/1eb9e7e4-801d-475a-8037-aa35a2776441`, + F: `https://github.com/depromeet/na-lab-client/assets/49177223/8667e31c-9722-490b-9def-3b952d115275`, +}; diff --git a/src/pages/dna/DNAImageDownloadModal.tsx b/src/pages/dna/DNAImageDownloadModal.tsx new file mode 100644 index 00000000..67ff66ee --- /dev/null +++ b/src/pages/dna/DNAImageDownloadModal.tsx @@ -0,0 +1,62 @@ +/* eslint-disable unicorn/filename-case */ +import { css } from '@emotion/react'; +import { m } from 'framer-motion'; + +import Modal from '~/components/modal/Modal'; +import { HEAD_2_BOLD } from '~/styles/typo'; + +const DNAImageDownloadModal = ({ + imageSrc, + onClose, + isShowing, +}: { + imageSrc: string; + onClose: () => void; + isShowing: boolean; +}) => { + return ( + + + +

꾹 눌러서 이미지를 저장하세요

+ + dna +
+
+ ); +}; + +export default DNAImageDownloadModal; + +const imageDownloadModalHeaderCss = css` + background-color: transparent; + border-bottom: none; +`; + +const imageDownloadModalCss = css` + overflow-y: auto; + display: flex; + flex-direction: column; + gap: 16px; + align-items: center; + + h1 { + ${HEAD_2_BOLD}; + user-select: none; + } + + img { + user-select: none; + width: 80%; + } +`; diff --git a/src/pages/dna/LoadedDna.tsx b/src/pages/dna/LoadedDna.tsx index 899b096d..b87ed8ce 100644 --- a/src/pages/dna/LoadedDna.tsx +++ b/src/pages/dna/LoadedDna.tsx @@ -1,15 +1,13 @@ -/* eslint-disable @next/next/no-img-element */ import { type FC, useState } from 'react'; +import dynamic from 'next/dynamic'; import Image from 'next/image'; import { css, type Theme } from '@emotion/react'; import { useQueryClient } from '@tanstack/react-query'; -import { m } from 'framer-motion'; import { type Softskills } from '~/components/graphic/softskills/type'; import Header from '~/components/header/Header'; import DownloadCircleIcon from '~/components/icons/DownloadCircleIcon'; import HomeIcon from '~/components/icons/HomeIcon'; -import Modal from '~/components/modal/Modal'; import useToast from '~/components/toast/useToast'; import { type DNA } from '~/constants/dna'; import BookmarkSection from '~/features/dna/BookmarkSection'; @@ -23,12 +21,13 @@ import { getUserInfoBySurveyIdQueryKey } from '~/hooks/api/user/useGetUserInfoBy import useInternalRouter from '~/hooks/router/useInternalRouter'; import { BODY_1, HEAD_2_BOLD } from '~/styles/typo'; import { getBrowser, isAndroid, isIos } from '~/utils/agent'; -import { type CreateImage } from '~/utils/createImage'; import { imageDownloadPC } from '~/utils/image'; import { type Group } from '~/utils/resultLogic'; import { type DnaOwnerStatus } from './type'; +const DNAImageDownloadModal = dynamic(() => import('./DNAImageDownloadModal'), { ssr: false }); + interface Image { webp: string; png: string; @@ -51,7 +50,6 @@ interface Props { userInfo: ReturnType['data']; topTendencies: Softskills[]; bookmarkedFeedbacks: QuestionFeedback[]; - downloadableImage: CreateImage; } const LoadedDna: FC = ({ @@ -62,7 +60,6 @@ const LoadedDna: FC = ({ userInfo, topTendencies, bookmarkedFeedbacks, - downloadableImage, }) => { const { fireToast } = useToast(); @@ -76,8 +73,6 @@ const LoadedDna: FC = ({ const [isImageModalShowing, setIsImageModalShowing] = useState(false); const onDownloadClick = async () => { - const imageObj = JSON.parse(downloadableImage.base64); - const imageBase64 = 'data:image/png;base64,' + imageObj.base64 ?? ''; const browser = getBrowser(); // TODO: share 갤러리에 저장 기능 되살리기 @@ -99,7 +94,10 @@ const LoadedDna: FC = ({ return; } - imageDownloadPC(imageBase64, 'dna'); + imageDownloadPC( + `/api/dna-image?group=${group}&nickname=${userInfo?.nickname}&position=${userInfo?.position}`, + 'dna', + ); fireToast({ content: '이미지 다운로드 되었습니다.', higherThanCTA: true }); }; @@ -181,7 +179,7 @@ const LoadedDna: FC = ({ setIsImageModalShowing(false)} /> @@ -243,7 +241,6 @@ const ulCss = css` const subTitleCss = css` ${HEAD_2_BOLD}; - color: var(--gray-500-text-secondary, #394258); `; @@ -252,61 +249,3 @@ const downloadIconCss = css` right: -2px; bottom: -5px; `; - -const DNAImageDownloadModal = ({ - downloadableBase64, - onClose, - isShowing, -}: { - downloadableBase64: string; - onClose: () => void; - isShowing: boolean; -}) => { - const imageObj = JSON.parse(downloadableBase64); - const imageBase64 = 'data:image/png;base64,' + imageObj.base64 ?? ''; - - return ( - - - -

꾹 눌러서 이미지를 저장하세요

- - dna -
-
- ); -}; - -const imageDownloadModalHeaderCss = css` - background-color: transparent; - border-bottom: none; -`; - -const imageDownloadModalCss = css` - overflow-y: auto; - display: flex; - flex-direction: column; - gap: 16px; - align-items: center; - - h1 { - ${HEAD_2_BOLD}; - - user-select: none; - } - - img { - user-select: none; - width: 80%; - } -`; diff --git a/src/pages/dna/[id].page.tsx b/src/pages/dna/[id].page.tsx index 995e3927..e53ec49b 100644 --- a/src/pages/dna/[id].page.tsx +++ b/src/pages/dna/[id].page.tsx @@ -18,7 +18,6 @@ import { type NextPageWithLayout, type WithSeoProps, } from '~/types/page'; -import { type CreateImage, createImage } from '~/utils/createImage'; import { getResultGroup, type Group } from '~/utils/resultLogic'; import LoadedDna from './LoadedDna'; @@ -26,7 +25,7 @@ import { type DnaOwnerStatus } from './type'; const Dna: NextPageWithLayout> = ({ surveyId, - downloadableImage, + seo: { title, description, ogImage }, }) => { const { data: userInfo, isLoading } = useGetUserInfoBySurveyId(String(surveyId), { enabled: Boolean(surveyId) }); @@ -49,7 +48,6 @@ const Dna: NextPageWithLayout> = ({ userInfo={userInfo} topTendencies={tendencies} bookmarkedFeedbacks={bookmarkedFeedbacks} - downloadableImage={downloadableImage} /> )} @@ -63,7 +61,6 @@ Dna.getLayout = (page: ReactElement) => {page} { - const API = `https://fonts.googleapis.com/css2?family=${fontFamily}:wght@${fontWeight}`; - - const css = await ( - await fetch(API, { - headers: { - 'User-Agent': - 'Mozilla/5.0 (BB10; Touch) AppleWebKit/537.1+ (KHTML, like Gecko) Version/10.0.0.1337 Mobile Safari/537.1+', - }, - }) - ).text(); - - const resource = css.match(/src: url\((.+)\) format\('(opentype|truetype)'\)/); - - if (!resource) return null; - - const res = await fetch(resource[1]); - - return res.arrayBuffer(); -} - -const HOISTING_IMAGE_BY_GROUP: Record = { - A: `https://github.com/depromeet/na-lab-client/assets/49177223/0b224b08-3858-4305-8323-1a6082dbb4f7`, - B: `https://github.com/depromeet/na-lab-client/assets/49177223/fec4951a-270f-40e8-8520-43eecb89416f`, - C: `https://github.com/depromeet/na-lab-client/assets/49177223/faefd0ee-7048-4578-8ec5-b70713e6efd9`, - D: `https://github.com/depromeet/na-lab-client/assets/49177223/4dbecfeb-5492-4c6b-b4a7-cd933cd5621e`, - E: `https://github.com/depromeet/na-lab-client/assets/49177223/1eb9e7e4-801d-475a-8037-aa35a2776441`, - F: `https://github.com/depromeet/na-lab-client/assets/49177223/8667e31c-9722-490b-9def-3b952d115275`, -}; - -export interface CreateImage { - base64: string; -} - -export const createImage = async ({ - group, - userInfo, -}: { - group: Group; - userInfo: { - nickname: string; - position: string; - }; -}): Promise => { - const notoSansScFont700 = await fetchFont('Noto+Sans+KR', 700); - if (!notoSansScFont700) - return { - base64: '', - }; - - const imageOptions: SatoriOptions = { - width: 375, - height: 666, - fonts: [ - { - name: 'Noto Sans KR', - data: notoSansScFont700, - weight: 700, - style: 'normal', - }, - ], - }; - - // group 계산 필요 - const { image: ogImage } = await createOGImage( -
- {'dna_' - - {userInfo.nickname} - - - {userInfo.position} - -
, - imageOptions, - ); - - const imageData = JSON.stringify({ base64: ogImage.toString('base64') }); - - return { base64: imageData }; -}; diff --git a/yarn.lock b/yarn.lock index 177a55b7..0a9815a3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -22,7 +22,6 @@ __metadata: "@emotion/react": ^11.10.6 "@next/env": ^13.4.5 "@playwright/test": ^1.32.3 - "@resvg/resvg-js": ^2.4.1 "@sentry/nextjs": ^7.49.0 "@storybook/addon-essentials": ^7.0.6 "@storybook/addon-interactions": ^7.0.6 @@ -83,7 +82,6 @@ __metadata: react-copy-to-clipboard: ^5.1.0 react-dom: 18.2.0 react-hotjar: ^6.1.0 - satori: ^0.10.1 sharp: ^0.32.1 storybook: ^7.0.6 styled-jsx: ^5.1.2 @@ -3392,135 +3390,6 @@ __metadata: languageName: node linkType: hard -"@resvg/resvg-js-android-arm-eabi@npm:2.4.1": - version: 2.4.1 - resolution: "@resvg/resvg-js-android-arm-eabi@npm:2.4.1" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - -"@resvg/resvg-js-android-arm64@npm:2.4.1": - version: 2.4.1 - resolution: "@resvg/resvg-js-android-arm64@npm:2.4.1" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"@resvg/resvg-js-darwin-arm64@npm:2.4.1": - version: 2.4.1 - resolution: "@resvg/resvg-js-darwin-arm64@npm:2.4.1" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@resvg/resvg-js-darwin-x64@npm:2.4.1": - version: 2.4.1 - resolution: "@resvg/resvg-js-darwin-x64@npm:2.4.1" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"@resvg/resvg-js-linux-arm-gnueabihf@npm:2.4.1": - version: 2.4.1 - resolution: "@resvg/resvg-js-linux-arm-gnueabihf@npm:2.4.1" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@resvg/resvg-js-linux-arm64-gnu@npm:2.4.1": - version: 2.4.1 - resolution: "@resvg/resvg-js-linux-arm64-gnu@npm:2.4.1" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - -"@resvg/resvg-js-linux-arm64-musl@npm:2.4.1": - version: 2.4.1 - resolution: "@resvg/resvg-js-linux-arm64-musl@npm:2.4.1" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - -"@resvg/resvg-js-linux-x64-gnu@npm:2.4.1": - version: 2.4.1 - resolution: "@resvg/resvg-js-linux-x64-gnu@npm:2.4.1" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - -"@resvg/resvg-js-linux-x64-musl@npm:2.4.1": - version: 2.4.1 - resolution: "@resvg/resvg-js-linux-x64-musl@npm:2.4.1" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - -"@resvg/resvg-js-win32-arm64-msvc@npm:2.4.1": - version: 2.4.1 - resolution: "@resvg/resvg-js-win32-arm64-msvc@npm:2.4.1" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"@resvg/resvg-js-win32-ia32-msvc@npm:2.4.1": - version: 2.4.1 - resolution: "@resvg/resvg-js-win32-ia32-msvc@npm:2.4.1" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - -"@resvg/resvg-js-win32-x64-msvc@npm:2.4.1": - version: 2.4.1 - resolution: "@resvg/resvg-js-win32-x64-msvc@npm:2.4.1" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"@resvg/resvg-js@npm:^2.4.1": - version: 2.4.1 - resolution: "@resvg/resvg-js@npm:2.4.1" - dependencies: - "@resvg/resvg-js-android-arm-eabi": 2.4.1 - "@resvg/resvg-js-android-arm64": 2.4.1 - "@resvg/resvg-js-darwin-arm64": 2.4.1 - "@resvg/resvg-js-darwin-x64": 2.4.1 - "@resvg/resvg-js-linux-arm-gnueabihf": 2.4.1 - "@resvg/resvg-js-linux-arm64-gnu": 2.4.1 - "@resvg/resvg-js-linux-arm64-musl": 2.4.1 - "@resvg/resvg-js-linux-x64-gnu": 2.4.1 - "@resvg/resvg-js-linux-x64-musl": 2.4.1 - "@resvg/resvg-js-win32-arm64-msvc": 2.4.1 - "@resvg/resvg-js-win32-ia32-msvc": 2.4.1 - "@resvg/resvg-js-win32-x64-msvc": 2.4.1 - dependenciesMeta: - "@resvg/resvg-js-android-arm-eabi": - optional: true - "@resvg/resvg-js-android-arm64": - optional: true - "@resvg/resvg-js-darwin-arm64": - optional: true - "@resvg/resvg-js-darwin-x64": - optional: true - "@resvg/resvg-js-linux-arm-gnueabihf": - optional: true - "@resvg/resvg-js-linux-arm64-gnu": - optional: true - "@resvg/resvg-js-linux-arm64-musl": - optional: true - "@resvg/resvg-js-linux-x64-gnu": - optional: true - "@resvg/resvg-js-linux-x64-musl": - optional: true - "@resvg/resvg-js-win32-arm64-msvc": - optional: true - "@resvg/resvg-js-win32-ia32-msvc": - optional: true - "@resvg/resvg-js-win32-x64-msvc": - optional: true - checksum: 6e1b52704acea4ffbc23b6e73951bbac1aff59733cda6344812d6d542cf356d34f83a66fdc33094903eb1077ceb0ebbecc210917e81e4263a337b26e779fd1a1 - languageName: node - linkType: hard - "@rollup/plugin-commonjs@npm:24.0.0": version: 24.0.0 resolution: "@rollup/plugin-commonjs@npm:24.0.0" @@ -3737,18 +3606,6 @@ __metadata: languageName: node linkType: hard -"@shuding/opentype.js@npm:1.4.0-beta.0": - version: 1.4.0-beta.0 - resolution: "@shuding/opentype.js@npm:1.4.0-beta.0" - dependencies: - fflate: ^0.7.3 - string.prototype.codepointat: ^0.2.1 - bin: - ot: bin/ot - checksum: af3478c40c068c7f6b6050b274a10837fcd1417c072b6af2b9d4fa48b8efe0bc93ec4b5f80b186678672f7d293027151389c66a4c5a156b48b810b8e8f3f5cdf - languageName: node - linkType: hard - "@sinclair/typebox@npm:^0.27.8": version: 0.27.8 resolution: "@sinclair/typebox@npm:0.27.8" @@ -6875,13 +6732,6 @@ __metadata: languageName: node linkType: hard -"base64-js@npm:0.0.8": - version: 0.0.8 - resolution: "base64-js@npm:0.0.8" - checksum: e95d2fa4b9000789fedd1e1ebac7830a70f5b1c06c72b2cf7862a48335af5d42229c0deda5085b2c8e403e479b612a55cd682bd4438838980d07cfc21c91e750 - languageName: node - linkType: hard - "base64-js@npm:^1.3.1": version: 1.5.1 resolution: "base64-js@npm:1.5.1" @@ -7343,13 +7193,6 @@ __metadata: languageName: node linkType: hard -"camelize@npm:^1.0.0": - version: 1.0.1 - resolution: "camelize@npm:1.0.1" - checksum: 91d8611d09af725e422a23993890d22b2b72b4cabf7239651856950c76b4bf53fe0d0da7c5e4db05180e898e4e647220e78c9fbc976113bd96d603d1fcbfcb99 - languageName: node - linkType: hard - "caniuse-lite@npm:^1.0.30001406, caniuse-lite@npm:^1.0.30001503": version: 1.0.30001516 resolution: "caniuse-lite@npm:1.0.30001516" @@ -7694,7 +7537,7 @@ __metadata: languageName: node linkType: hard -"color-name@npm:^1.0.0, color-name@npm:^1.1.4, color-name@npm:~1.1.4": +"color-name@npm:^1.0.0, color-name@npm:~1.1.4": version: 1.1.4 resolution: "color-name@npm:1.1.4" checksum: b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610 @@ -8157,27 +8000,6 @@ __metadata: languageName: node linkType: hard -"css-background-parser@npm:^0.1.0": - version: 0.1.0 - resolution: "css-background-parser@npm:0.1.0" - checksum: cf53bef8d5df8538af7179f787fe04f4ac53c60089b338bf167b3e18be13817e395d48e303ca13493927b6fc11b4c24db2b144054c8ed3a55a044c6d177a08a5 - languageName: node - linkType: hard - -"css-box-shadow@npm:1.0.0-3": - version: 1.0.0-3 - resolution: "css-box-shadow@npm:1.0.0-3" - checksum: 1b7f15b291261023bb57e8718849951f313ee54e5cc3c72a90fac8d141138ea73562ad28006533f4ed92cb672ccbba2d6483ecb187a6c7f800936b006ba27925 - languageName: node - linkType: hard - -"css-color-keywords@npm:^1.0.0": - version: 1.0.0 - resolution: "css-color-keywords@npm:1.0.0" - checksum: 8f125e3ad477bd03c77b533044bd9e8a6f7c0da52d49bbc0bbe38327b3829d6ba04d368ca49dd9ff3b667d2fc8f1698d891c198bbf8feade1a5501bf5a296408 - languageName: node - linkType: hard - "css-functions-list@npm:^3.1.0": version: 3.2.0 resolution: "css-functions-list@npm:3.2.0" @@ -8216,17 +8038,6 @@ __metadata: languageName: node linkType: hard -"css-to-react-native@npm:^3.0.0": - version: 3.2.0 - resolution: "css-to-react-native@npm:3.2.0" - dependencies: - camelize: ^1.0.0 - css-color-keywords: ^1.0.0 - postcss-value-parser: ^4.0.2 - checksum: 263be65e805aef02c3f20c064665c998a8c35293e1505dbe6e3054fb186b01a9897ac6cf121f9840e5a9dfe3fb3994f6fcd0af84a865f1df78ba5bf89e77adce - languageName: node - linkType: hard - "css-tree@npm:^2.3.1": version: 2.3.1 resolution: "css-tree@npm:2.3.1" @@ -8840,13 +8651,6 @@ __metadata: languageName: node linkType: hard -"emoji-regex@npm:^10.2.1": - version: 10.2.1 - resolution: "emoji-regex@npm:10.2.1" - checksum: 1aa2d16881c56531fdfc03d0b36f5c2b6221cc4097499a5665b88b711dc3fb4d5b8804f0ca6f00c56e5dcf89bac75f0487eee85da1da77df3a33accc6ecbe426 - languageName: node - linkType: hard - "emoji-regex@npm:^8.0.0": version: 8.0.0 resolution: "emoji-regex@npm:8.0.0" @@ -9257,7 +9061,7 @@ __metadata: languageName: node linkType: hard -"escape-html@npm:^1.0.3, escape-html@npm:~1.0.3": +"escape-html@npm:~1.0.3": version: 1.0.3 resolution: "escape-html@npm:1.0.3" checksum: 6213ca9ae00d0ab8bccb6d8d4e0a98e76237b2410302cf7df70aaa6591d509a2a37ce8998008cbecae8fc8ffaadf3fb0229535e6a145f3ce0b211d060decbb24 @@ -10011,13 +9815,6 @@ __metadata: languageName: node linkType: hard -"fflate@npm:^0.7.3": - version: 0.7.4 - resolution: "fflate@npm:0.7.4" - checksum: b812ab26047432db70ff4c73eb45ad53bd0774575b4818b9c61c2921e89ec65d1259f06ec1618f2ac55e6a2f2e29b6dc09173d213b46580bc69efae5344bf8f1 - languageName: node - linkType: hard - "file-entry-cache@npm:^6.0.1": version: 6.0.1 resolution: "file-entry-cache@npm:6.0.1" @@ -11011,13 +10808,6 @@ __metadata: languageName: node linkType: hard -"hex-rgb@npm:^4.1.0": - version: 4.3.0 - resolution: "hex-rgb@npm:4.3.0" - checksum: e654648db8647446f0111c68690d9b340eb192a93c8b2c6789a2b8deb5c20e757515ae209c5ae67074acfddf8575f9fc645d4ffaa0596d859457b08e180d791d - languageName: node - linkType: hard - "highlight.js@npm:^10.4.1, highlight.js@npm:~10.7.0": version: 10.7.3 resolution: "highlight.js@npm:10.7.3" @@ -12489,16 +12279,6 @@ __metadata: languageName: node linkType: hard -"linebreak@npm:^1.1.0": - version: 1.1.0 - resolution: "linebreak@npm:1.1.0" - dependencies: - base64-js: 0.0.8 - unicode-trie: ^2.0.0 - checksum: 65cb66900b4b60d99bb761fb4143d8673ad5dd57dd850fcd921fe425a5a8e3c4416ebee76a68058a90d88b5033a50b210f522558a7e0c7d95ca907b5a2b52520 - languageName: node - linkType: hard - "lines-and-columns@npm:^1.1.6": version: 1.2.4 resolution: "lines-and-columns@npm:1.2.4" @@ -14168,7 +13948,7 @@ __metadata: languageName: node linkType: hard -"pako@npm:^0.2.5, pako@npm:~0.2.0": +"pako@npm:~0.2.0": version: 0.2.9 resolution: "pako@npm:0.2.9" checksum: 055f9487cd57fbb78df84315873bbdd089ba286f3499daed47d2effdc6253e981f5db6898c23486de76d4a781559f890d643bd3a49f70f1b4a18019c98aa5125 @@ -14214,16 +13994,6 @@ __metadata: languageName: node linkType: hard -"parse-css-color@npm:^0.2.1": - version: 0.2.1 - resolution: "parse-css-color@npm:0.2.1" - dependencies: - color-name: ^1.1.4 - hex-rgb: ^4.1.0 - checksum: 3751e81fe904b491612ee4c92235b476d16419b88a0da2822319b657ff35311f5ffc13cd092bd385d17319058dc2188e5bcbee7d476516a77b90f6aa556d88d9 - languageName: node - linkType: hard - "parse-entities@npm:^2.0.0": version: 2.0.0 resolution: "parse-entities@npm:2.0.0" @@ -14646,7 +14416,7 @@ __metadata: languageName: node linkType: hard -"postcss-value-parser@npm:^4.0.2, postcss-value-parser@npm:^4.1.0, postcss-value-parser@npm:^4.2.0": +"postcss-value-parser@npm:^4.1.0, postcss-value-parser@npm:^4.2.0": version: 4.2.0 resolution: "postcss-value-parser@npm:4.2.0" checksum: 819ffab0c9d51cf0acbabf8996dffbfafbafa57afc0e4c98db88b67f2094cb44488758f06e5da95d7036f19556a4a732525e84289a425f4f6fd8e412a9d7442f @@ -16036,24 +15806,6 @@ __metadata: languageName: node linkType: hard -"satori@npm:^0.10.1": - version: 0.10.1 - resolution: "satori@npm:0.10.1" - dependencies: - "@shuding/opentype.js": 1.4.0-beta.0 - css-background-parser: ^0.1.0 - css-box-shadow: 1.0.0-3 - css-to-react-native: ^3.0.0 - emoji-regex: ^10.2.1 - escape-html: ^1.0.3 - linebreak: ^1.1.0 - parse-css-color: ^0.2.1 - postcss-value-parser: ^4.2.0 - yoga-wasm-web: ^0.3.3 - checksum: fd6df0f80002bb1387bbec413f0d07414c1c1d6825abecf79a59f17283ca87db88c6928898ff494230946b9ee4773e389e71e6c4ed8ce5964323ef3baf2ed884 - languageName: node - linkType: hard - "saxes@npm:^6.0.0": version: 6.0.0 resolution: "saxes@npm:6.0.0" @@ -16772,13 +16524,6 @@ __metadata: languageName: node linkType: hard -"string.prototype.codepointat@npm:^0.2.1": - version: 0.2.1 - resolution: "string.prototype.codepointat@npm:0.2.1" - checksum: bafa15844d7ea5bed24a01fa8954327c0c49226cefe68ab70573f1338f6a4680587db962724924f2cceb91abe408e11bd38c80095f25ee080f136a6c9d300f00 - languageName: node - linkType: hard - "string.prototype.matchall@npm:^4.0.8": version: 4.0.8 resolution: "string.prototype.matchall@npm:4.0.8" @@ -17402,13 +17147,6 @@ __metadata: languageName: node linkType: hard -"tiny-inflate@npm:^1.0.0": - version: 1.0.3 - resolution: "tiny-inflate@npm:1.0.3" - checksum: 4086a1f8938dafa4a20c63b099aeb47bf8fef5aca991bf4ea4b35dd2684fa52363b2c19b3e76660311e7613cb7c4f063bc48751b9bdf9555e498d997c30bc2d6 - languageName: node - linkType: hard - "tinybench@npm:^2.5.0": version: 2.5.0 resolution: "tinybench@npm:2.5.0" @@ -18006,16 +17744,6 @@ __metadata: languageName: node linkType: hard -"unicode-trie@npm:^2.0.0": - version: 2.0.0 - resolution: "unicode-trie@npm:2.0.0" - dependencies: - pako: ^0.2.5 - tiny-inflate: ^1.0.0 - checksum: 19e637ce20953ec1fbfa9087abef4746a50352679b833be27924e4ba7ad753cc4073b74263747ccfccb5e38b30b17468cbb96f361eb49903ff8602396280b5a4 - languageName: node - linkType: hard - "unique-filename@npm:^3.0.0": version: 3.0.0 resolution: "unique-filename@npm:3.0.0" @@ -18899,10 +18627,3 @@ __metadata: checksum: 2cac84540f65c64ccc1683c267edce396b26b1e931aa429660aefac8fbe0188167b7aee815a3c22fa59a28a58d898d1a2b1825048f834d8d629f4c2a5d443801 languageName: node linkType: hard - -"yoga-wasm-web@npm:^0.3.3": - version: 0.3.3 - resolution: "yoga-wasm-web@npm:0.3.3" - checksum: ff65192a832975ff531a1b6eae160c2da859c250feaa58b6389b684f9b48f53fda849a7ea49d12d241198309e671e6bd230a44e7155af9573d7843ac48831c98 - languageName: node - linkType: hard