From 82b579563694f32d6fe531f191c10412d11f0898 Mon Sep 17 00:00:00 2001 From: David Nguyen Date: Sat, 8 Feb 2025 20:35:20 +1100 Subject: [PATCH] fix: build --- apps/remix/.bin/build.sh | 28 + apps/remix/package.json | 19 +- apps/remix/react-router.config.ts | 1 - apps/remix/rollup.config.mjs | 49 + apps/remix/server/main.js | 24 + apps/remix/server/main.ts | 17 - apps/remix/server/{index.ts => router.ts} | 6 +- apps/remix/server/utils/get-loader-session.ts | 2 +- apps/remix/tsconfig.json | 11 +- apps/remix/vite.config.ts | 59 +- package-lock.json | 976 +++++++++++++++++- .../stripe/get-checkout-session.ts | 4 - .../server-only/stripe/get-portal-session.ts | 4 - packages/email/components.ts | 34 +- .../lib/client-only/providers/i18n-server.tsx | 4 +- packages/lib/constants/crypto.ts | 38 +- packages/lib/jobs/client/index.ts | 3 + .../document-meta/upsert-document-meta.ts | 2 - .../server-only/document/create-document.ts | 2 - .../server-only/document/delete-document.ts | 2 - .../document/super-delete-document.ts | 2 - .../lib/server-only/document/update-title.ts | 2 - .../field/remove-signed-field-with-token.ts | 2 - .../field/sign-field-with-token.ts | 2 - .../server-only/pdf/insert-field-in-pdf.ts | 10 +- .../get-active-subscriptions-by-user-id.ts | 2 - .../get-subscriptions-by-user-id.ts | 2 - .../template/create-template-direct-link.ts | 2 - .../template/delete-template-direct-link.ts | 2 - .../server-only/template/delete-template.ts | 2 - .../template/toggle-template-direct-link.ts | 2 - .../server-only/template/update-template.ts | 2 - packages/lib/utils/i18n.ts | 3 +- packages/prisma/package.json | 2 +- 34 files changed, 1175 insertions(+), 147 deletions(-) create mode 100755 apps/remix/.bin/build.sh create mode 100644 apps/remix/rollup.config.mjs create mode 100644 apps/remix/server/main.js delete mode 100644 apps/remix/server/main.ts rename apps/remix/server/{index.ts => router.ts} (95%) create mode 100644 packages/lib/jobs/client/index.ts diff --git a/apps/remix/.bin/build.sh b/apps/remix/.bin/build.sh new file mode 100755 index 000000000..37c5df64c --- /dev/null +++ b/apps/remix/.bin/build.sh @@ -0,0 +1,28 @@ +#!/usr/bin/env bash + +# Exit on error. +set -eo pipefail + +cd "$(dirname "$0")/.." + +start_time=$(date +%s) + +echo "[Build]: Extracting and compiling translations" +npm run translate --prefix ../../ + +echo "[Build]: Building app" +npm run build:app + +echo "[Build]: Building server" +npm run build:server + +# Copy over the entry point for the server. +cp server/main.js build/server/main.js + +# Copy over all web.js translations +cp -r ../../packages/lib/translations build/server/hono/packages/lib/translations + +# Time taken +end_time=$(date +%s) + +echo "[Build]: Done in $((end_time - start_time)) seconds" diff --git a/apps/remix/package.json b/apps/remix/package.json index 5990e32bd..d3061fbcd 100644 --- a/apps/remix/package.json +++ b/apps/remix/package.json @@ -3,9 +3,11 @@ "private": true, "type": "module", "scripts": { - "build": "cross-env NODE_ENV=production react-router build", + "build": "sh .bin/build.sh", + "build:app": "cross-env NODE_ENV=production react-router build", + "build:server": "cross-env NODE_ENV=production rollup -c rollup.config.mjs", "dev": "react-router dev", - "start": "cross-env NODE_ENV=production node dist/server/index.js", + "start": "cross-env NODE_ENV=production node build/server/main.js", "clean": "rimraf .react-router && rimraf node_modules", "typecheck": "react-router typegen && tsc", "copy:pdfjs": "node ../../scripts/copy-pdfjs.cjs" @@ -55,7 +57,7 @@ "react-dropzone": "^14.2.3", "react-hook-form": "^7.43.9", "react-hotkeys-hook": "^4.4.1", - "react-icons": "^4.11.0", + "react-icons": "^5.4.0", "react-rnd": "^10.4.1", "react-router": "^7.1.5", "recharts": "^2.7.2", @@ -69,9 +71,16 @@ "uqr": "^0.1.2" }, "devDependencies": { + "@babel/core": "^7.26.7", + "@babel/preset-typescript": "^7.26.0", + "@lingui/babel-plugin-lingui-macro": "^5.2.0", "@lingui/vite-plugin": "^5.2.0", "@react-router/dev": "^7.1.1", "@react-router/remix-routes-option-adapter": "^7.1.5", + "@rollup/plugin-babel": "^6.0.4", + "@rollup/plugin-commonjs": "^28.0.2", + "@rollup/plugin-node-resolve": "^16.0.0", + "@rollup/plugin-typescript": "^12.1.2", "@simplewebauthn/types": "^9.0.1", "@types/formidable": "^2.0.6", "@types/luxon": "^3.3.1", @@ -80,8 +89,10 @@ "@types/react-dom": "^18", "@types/ua-parser-js": "^0.7.39", "cross-env": "^7.0.3", + "esbuild": "0.24.2", "remix-flat-routes": "^0.8.4", - "tsx": "^4.11.0", + "rollup": "^4.34.5", + "tsx": "^4.19.2", "typescript": "5.6.2", "vite": "^6.1.0", "vite-plugin-babel-macros": "^1.0.6", diff --git a/apps/remix/react-router.config.ts b/apps/remix/react-router.config.ts index 73ed5e29d..b8878e3c5 100644 --- a/apps/remix/react-router.config.ts +++ b/apps/remix/react-router.config.ts @@ -2,6 +2,5 @@ import type { Config } from '@react-router/dev/config'; export default { appDirectory: 'app', - // Server-side render by default, to enable SPA mode set this to `false` ssr: true, } satisfies Config; diff --git a/apps/remix/rollup.config.mjs b/apps/remix/rollup.config.mjs new file mode 100644 index 000000000..611cefe50 --- /dev/null +++ b/apps/remix/rollup.config.mjs @@ -0,0 +1,49 @@ +import babel from '@rollup/plugin-babel'; +import commonjs from '@rollup/plugin-commonjs'; +import resolve from '@rollup/plugin-node-resolve'; +import typescript from '@rollup/plugin-typescript'; +import path from 'node:path'; + +/** @type {import('rollup').RollupOptions} */ +const config = { + /** + * We specifically target the router.ts instead of the entry point so the rollup doesn't go through the + * already prebuilt RR7 server files. + */ + input: 'server/router.ts', + output: { + dir: 'build/server/hono', + format: 'esm', + sourcemap: true, + preserveModules: true, + preserveModulesRoot: '.', + }, + external: [/node_modules/], + plugins: [ + typescript({ + // noEmitOnError: true, + moduleResolution: 'bundler', + include: ['server/**/*', '../../packages/**/*', '../../packages/lib/translations/**/*'], + }), + resolve({ + rootDir: path.join(process.cwd(), '../..'), + preferBuiltins: true, + resolveOnly: [ + '@documenso/api/*', + '@documenso/auth/*', + '@documenso/lib/*', + '@documenso/trpc/*', + ], + extensions: ['.ts', '.tsx', '.js', '.jsx', '.json'], + }), + commonjs(), + babel({ + babelHelpers: 'bundled', + extensions: ['.js', '.ts', '.tsx'], + presets: ['@babel/preset-typescript'], + plugins: ['@lingui/babel-plugin-lingui-macro'], + }), + ], +}; + +export default config; diff --git a/apps/remix/server/main.js b/apps/remix/server/main.js new file mode 100644 index 000000000..f9ec71993 --- /dev/null +++ b/apps/remix/server/main.js @@ -0,0 +1,24 @@ +/** + * This is the main entry point for the server which will launch the RR7 application + * and spin up auth, api, etc. + * + * Note: + * This file will be copied to the build folder during build time. + * Running this file will not work without a build. + */ +import { serve } from '@hono/node-server'; +import { serveStatic } from '@hono/node-server/serve-static'; +import handle from 'hono-react-router-adapter/node'; + +import server from './hono/server/router.js'; +import * as build from './index.js'; + +server.use( + serveStatic({ + root: 'build/client', + }), +); + +const handler = handle(build, server); + +serve({ fetch: handler.fetch, port: 3000 }); diff --git a/apps/remix/server/main.ts b/apps/remix/server/main.ts deleted file mode 100644 index 1a27850a7..000000000 --- a/apps/remix/server/main.ts +++ /dev/null @@ -1,17 +0,0 @@ -// main.ts -import { serve } from '@hono/node-server'; -import { serveStatic } from '@hono/node-server/serve-static'; -import handle from 'hono-react-router-adapter/node'; - -import server from '.'; -import * as build from '../build/server'; - -server.use( - serveStatic({ - root: './build/client', - }), -); - -const handler = handle(build, server); - -serve({ fetch: handler.fetch, port: 3000 }); diff --git a/apps/remix/server/index.ts b/apps/remix/server/router.ts similarity index 95% rename from apps/remix/server/index.ts rename to apps/remix/server/router.ts index a3a99f0ef..82a0ff0b7 100644 --- a/apps/remix/server/index.ts +++ b/apps/remix/server/router.ts @@ -72,8 +72,12 @@ app throw new AppError('INVALID_DOCUMENT_FILE'); } + // Todo: Test this. if (!file.name.endsWith('.pdf')) { - file.name = `${file.name}.pdf`; + Object.defineProperty(file, 'name', { + writable: true, + value: `${file.name}.pdf`, + }); } const { type, data } = await putFile(file); diff --git a/apps/remix/server/utils/get-loader-session.ts b/apps/remix/server/utils/get-loader-session.ts index fa57e125a..956174098 100644 --- a/apps/remix/server/utils/get-loader-session.ts +++ b/apps/remix/server/utils/get-loader-session.ts @@ -1,7 +1,7 @@ import { getContext } from 'hono/context-storage'; import { redirect } from 'react-router'; -import type { HonoEnv } from 'server'; import type { AppContext } from 'server/context'; +import type { HonoEnv } from 'server/router'; import type { AppSession } from '@documenso/lib/client-only/providers/session'; diff --git a/apps/remix/tsconfig.json b/apps/remix/tsconfig.json index 23642ab9f..7587713dd 100644 --- a/apps/remix/tsconfig.json +++ b/apps/remix/tsconfig.json @@ -10,7 +10,16 @@ "rootDirs": [".", "./.react-router/types"], "baseUrl": ".", "paths": { - "~/*": ["./app/*"] + "~/*": ["./app/*"], + "@documenso/api": ["../../packages/api"], + "@documenso/assets": ["../../packages/assets"], + "@documenso/auth": ["../../packages/auth"], + "@documenso/ee": ["../../packages/ee"], + "@documenso/lib": ["../../packages/lib"], + "@documenso/prisma": ["../../packages/prisma"], + "@documenso/trpc": ["../../packages/trpc"], + "@documenso/ui": ["../../packages/ui"], + "@documenso/tailwind-config": ["../../packages/tailwind-config"] }, "esModuleInterop": true, "verbatimModuleSyntax": true, diff --git a/apps/remix/vite.config.ts b/apps/remix/vite.config.ts index 58469286c..56b3e0da3 100644 --- a/apps/remix/vite.config.ts +++ b/apps/remix/vite.config.ts @@ -32,49 +32,38 @@ export default defineConfig({ lingui(), tsconfigPaths(), serverAdapter({ - entry: 'server/index.ts', + entry: 'server/main.ts', }), ], ssr: { noExternal: ['react-dropzone', 'plausible-tracker', 'pdfjs-dist'], - external: ['@node-rs/bcrypt'], + external: ['@node-rs/bcrypt', '@prisma/client'], }, optimizeDeps: { + // include: ['react-icons'], exclude: ['@node-rs/bcrypt'], }, + resolve: { + alias: { + https: 'node:https', + '.prisma/client/default': '../../node_modules/.prisma/client/default.js', + '.prisma/client/index-browser': '../../node_modules/.prisma/client/index-browser.js', + }, + }, /** - * Throwing shit at a wall to see what sticks for building below onwards. + * Note: Re run rollup again to build the server afterwards. + * + * See rollup.config.mjs which is used for that. */ - // resolve: { - // alias: { - // // https: 'node:https', - // // '.prisma/client/default': '../../node_modules/.prisma/client/default.js', - // }, - // }, - // optimizeDeps: { - // include: [], - // }, - // ssr: { - // // noExternal: true, - // noExternal: [ - // '@documenso/assets', - // '@documenso/ee', - // '@documenso/lib', - // '@documenso/prisma', - // '@documenso/tailwind-config', - // '@documenso/trpc', - // '@documenso/ui', - // ], - // }, - // build: { - // rollupOptions: { - // external: [ - // '@node-rs/bcrypt', - // '@documenso/pdf-sign', - // 'nodemailer', - // 'playwright', - // '@aws-sdk/cloudfront-signer', - // ], - // }, - // }, + build: { + rollupOptions: { + external: [ + '@node-rs/bcrypt', + '@documenso/pdf-sign', + '@aws-sdk/cloudfront-signer', + 'nodemailer', + 'playwright', + ], + }, + }, }); diff --git a/package-lock.json b/package-lock.json index 6b1f63f1f..720846bce 100644 --- a/package-lock.json +++ b/package-lock.json @@ -140,7 +140,7 @@ "react-dropzone": "^14.2.3", "react-hook-form": "^7.43.9", "react-hotkeys-hook": "^4.4.1", - "react-icons": "^4.11.0", + "react-icons": "^5.4.0", "react-rnd": "^10.4.1", "react-router": "^7.1.5", "recharts": "^2.7.2", @@ -154,9 +154,16 @@ "uqr": "^0.1.2" }, "devDependencies": { + "@babel/core": "^7.26.7", + "@babel/preset-typescript": "^7.26.0", + "@lingui/babel-plugin-lingui-macro": "^5.2.0", "@lingui/vite-plugin": "^5.2.0", "@react-router/dev": "^7.1.1", "@react-router/remix-routes-option-adapter": "^7.1.5", + "@rollup/plugin-babel": "^6.0.4", + "@rollup/plugin-commonjs": "^28.0.2", + "@rollup/plugin-node-resolve": "^16.0.0", + "@rollup/plugin-typescript": "^12.1.2", "@simplewebauthn/types": "^9.0.1", "@types/formidable": "^2.0.6", "@types/luxon": "^3.3.1", @@ -165,14 +172,407 @@ "@types/react-dom": "^18", "@types/ua-parser-js": "^0.7.39", "cross-env": "^7.0.3", + "esbuild": "0.24.2", "remix-flat-routes": "^0.8.4", - "tsx": "^4.11.0", + "rollup": "^4.34.5", + "tsx": "^4.19.2", "typescript": "5.6.2", "vite": "^6.1.0", "vite-plugin-babel-macros": "^1.0.6", "vite-tsconfig-paths": "^5.1.4" } }, + "apps/remix/node_modules/@esbuild/aix-ppc64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz", + "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "apps/remix/node_modules/@esbuild/android-arm": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz", + "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "apps/remix/node_modules/@esbuild/android-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz", + "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "apps/remix/node_modules/@esbuild/android-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz", + "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "apps/remix/node_modules/@esbuild/darwin-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz", + "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "apps/remix/node_modules/@esbuild/darwin-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz", + "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "apps/remix/node_modules/@esbuild/freebsd-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz", + "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "apps/remix/node_modules/@esbuild/freebsd-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz", + "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "apps/remix/node_modules/@esbuild/linux-arm": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz", + "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "apps/remix/node_modules/@esbuild/linux-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz", + "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "apps/remix/node_modules/@esbuild/linux-ia32": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz", + "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "apps/remix/node_modules/@esbuild/linux-loong64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz", + "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "apps/remix/node_modules/@esbuild/linux-mips64el": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz", + "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "apps/remix/node_modules/@esbuild/linux-ppc64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz", + "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "apps/remix/node_modules/@esbuild/linux-riscv64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz", + "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "apps/remix/node_modules/@esbuild/linux-s390x": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz", + "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "apps/remix/node_modules/@esbuild/linux-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz", + "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "apps/remix/node_modules/@esbuild/netbsd-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz", + "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "apps/remix/node_modules/@esbuild/openbsd-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz", + "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "apps/remix/node_modules/@esbuild/sunos-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz", + "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "apps/remix/node_modules/@esbuild/win32-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz", + "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "apps/remix/node_modules/@esbuild/win32-ia32": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz", + "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "apps/remix/node_modules/@esbuild/win32-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz", + "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, "apps/remix/node_modules/@lingui/detect-locale": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@lingui/detect-locale/-/detect-locale-5.2.0.tgz", @@ -182,6 +582,352 @@ "node": ">=20.0.0" } }, + "apps/remix/node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.34.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.5.tgz", + "integrity": "sha512-JXmmQcKQtpf3Z6lvA8akkrHDZ5AEfgc2hLMix1/X5BhQbezBQ0AP5GYLdU8jsQRme8qr2sscCe3wizp7UT0L9g==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "apps/remix/node_modules/@rollup/rollup-android-arm64": { + "version": "4.34.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.5.tgz", + "integrity": "sha512-9/A8/ZBOprUjkrJoP9BBEq2vdSud6BPd3LChw09bJQiEZH5oN4kWIkHu90cA0Cj0cSF5cIaD76+0lA+d5KHmpQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "apps/remix/node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.34.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.5.tgz", + "integrity": "sha512-b9oCfgHKfc1AJEQ5sEpE8Kf6s7aeygj5bZAsl1hTpZc1V9cfZASFSXzzNj7o/BQNPbjmVkVxpCCLRhBfLXhJ5g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "apps/remix/node_modules/@rollup/rollup-darwin-x64": { + "version": "4.34.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.5.tgz", + "integrity": "sha512-Gz42gKBQPoFdMYdsVqkcpttYOO/0aP7f+1CgMaeZEz0gss7dop1TsO3hT77Iroz/TV7PdPUG/RYlj9EA39L4dw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "apps/remix/node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.34.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.5.tgz", + "integrity": "sha512-JPkafjkOFaupd8VQYsXfGFKC2pfMr7hwSYGkVGNwhbW0k0lHHyIdhCSNBendJ4O7YlT4yRyKXoms1TL7saO7SQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "apps/remix/node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.34.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.5.tgz", + "integrity": "sha512-j6Q8VFqyI8hZM33h1JC6DZK2w8ejkXqEMozTrtIEGfRVMpVZL3GrLOOYEUkAgUSpJ9sb2w+FEpjGj7IHRcQfdw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "apps/remix/node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.34.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.5.tgz", + "integrity": "sha512-6jyiXKF9Xq6x9yQjct5xrRT0VghJk5VzAfed3o0hgncwacZkzOdR0TXLRNjexsEXWN8tG7jWWwsVk7WeFi//gw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "apps/remix/node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.34.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.5.tgz", + "integrity": "sha512-cOTYe5tLcGAvGztRLIqx87LE7j/qjaAqFrrHsPFlnuhhhFO5LSr2AzvdQYuxomJMzMBrXkMRNl9bQEpDZ5bjLQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "apps/remix/node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.34.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.5.tgz", + "integrity": "sha512-KHlrd+YqmS7rriW+LBb1kQNYmd5w1sAIG3z7HEpnQOrg/skeYYv9DAcclGL9gpFdpnzmiAEkzsTT74kZWUtChQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "apps/remix/node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.34.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.5.tgz", + "integrity": "sha512-uOb6hzDqym4Sw+qw3+svS3SmwQGVUhyTdPKyHDdlYg1Z0aHjdNmjwRY7zw/90/UfBe/yD7Mv2mYKhQpOfy4RYA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "apps/remix/node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.34.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.5.tgz", + "integrity": "sha512-pARu8ZKANZH4wINLdHLKG69EPwJswM6A+Ox1a9LpiclRQoyjacFFTtXN3akKQ2ufJXDasO/pWvxKN9ZfCgEoFA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "apps/remix/node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.34.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.5.tgz", + "integrity": "sha512-crUWn12NRmCdao2YwS1GvlPCVypMBMJlexTaantaP2+dAMd2eZBErFcKG8hZYEHjSbbk2UoH1aTlyeA4iKLqSA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "apps/remix/node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.34.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.5.tgz", + "integrity": "sha512-XtD/oMhCdixi3x8rCNyDRMUsLo1Z+1UQcK+oR7AsjglGov9ETiT3TNFhUPzaGC1jH+uaMtPhxrVRUub+pnAKTg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "apps/remix/node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.34.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.5.tgz", + "integrity": "sha512-V3+BvgyHb21aF7lw0sc78Tv0+xLp4lm2OM7CKFVrBuppsMvtl/9O5y2OX4tdDT0EhIsDP/ObJPqDuEg1ZoTwSQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "apps/remix/node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.34.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.5.tgz", + "integrity": "sha512-SkCIXLGk42yldTcH8UXh++m0snVxp9DLf4meb1mWm0lC8jzxjFBwSLGtUSeLgQDsC05iBaIhyjNX46DlByrApQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "apps/remix/node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.34.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.5.tgz", + "integrity": "sha512-iUcH3FBtBN2/Ce0rI84suRhD0+bB5BVEffqOwsGaX5py5TuYLOQa7S7oVBP0NKtB5rub3i9IvZtMXiD96l5v0A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "apps/remix/node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.34.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.5.tgz", + "integrity": "sha512-PUbWd+h/h6rUowalDYIdc9S9LJXbQDMcJe0BjABl3oT3efYRgZ8aUe8ZZDSie7y+fz6Z+rueNfdorIbkWv5Eqg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "apps/remix/node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.34.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.5.tgz", + "integrity": "sha512-3vncGhOJiAUR85fnAXJyvSp2GaDWYByIQmW68ZAr+e8kIxgvJ1VaZbfHD5BO5X6hwRQdY6Um/XfA3l5c2lV+OQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "apps/remix/node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.34.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.5.tgz", + "integrity": "sha512-Mi8yVUlQOoeBpY72n75VLATptPGvj2lHa47rQdK9kZ4MoG5Ve86aVIU+PO3tBklTCBtILtdRfXS0EvIbXgmCAg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "apps/remix/node_modules/esbuild": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz", + "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.24.2", + "@esbuild/android-arm": "0.24.2", + "@esbuild/android-arm64": "0.24.2", + "@esbuild/android-x64": "0.24.2", + "@esbuild/darwin-arm64": "0.24.2", + "@esbuild/darwin-x64": "0.24.2", + "@esbuild/freebsd-arm64": "0.24.2", + "@esbuild/freebsd-x64": "0.24.2", + "@esbuild/linux-arm": "0.24.2", + "@esbuild/linux-arm64": "0.24.2", + "@esbuild/linux-ia32": "0.24.2", + "@esbuild/linux-loong64": "0.24.2", + "@esbuild/linux-mips64el": "0.24.2", + "@esbuild/linux-ppc64": "0.24.2", + "@esbuild/linux-riscv64": "0.24.2", + "@esbuild/linux-s390x": "0.24.2", + "@esbuild/linux-x64": "0.24.2", + "@esbuild/netbsd-arm64": "0.24.2", + "@esbuild/netbsd-x64": "0.24.2", + "@esbuild/openbsd-arm64": "0.24.2", + "@esbuild/openbsd-x64": "0.24.2", + "@esbuild/sunos-x64": "0.24.2", + "@esbuild/win32-arm64": "0.24.2", + "@esbuild/win32-ia32": "0.24.2", + "@esbuild/win32-x64": "0.24.2" + } + }, + "apps/remix/node_modules/rollup": { + "version": "4.34.5", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.5.tgz", + "integrity": "sha512-GyVCmpo9z/HYqFD8QWoBUnz1Q9xC22t8tPAZm/AvAcUg2U2/+DkboEvSioMwv042zE4I9N3FEhx7fiCT2YHzKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.34.5", + "@rollup/rollup-android-arm64": "4.34.5", + "@rollup/rollup-darwin-arm64": "4.34.5", + "@rollup/rollup-darwin-x64": "4.34.5", + "@rollup/rollup-freebsd-arm64": "4.34.5", + "@rollup/rollup-freebsd-x64": "4.34.5", + "@rollup/rollup-linux-arm-gnueabihf": "4.34.5", + "@rollup/rollup-linux-arm-musleabihf": "4.34.5", + "@rollup/rollup-linux-arm64-gnu": "4.34.5", + "@rollup/rollup-linux-arm64-musl": "4.34.5", + "@rollup/rollup-linux-loongarch64-gnu": "4.34.5", + "@rollup/rollup-linux-powerpc64le-gnu": "4.34.5", + "@rollup/rollup-linux-riscv64-gnu": "4.34.5", + "@rollup/rollup-linux-s390x-gnu": "4.34.5", + "@rollup/rollup-linux-x64-gnu": "4.34.5", + "@rollup/rollup-linux-x64-musl": "4.34.5", + "@rollup/rollup-win32-arm64-msvc": "4.34.5", + "@rollup/rollup-win32-ia32-msvc": "4.34.5", + "@rollup/rollup-win32-x64-msvc": "4.34.5", + "fsevents": "~2.3.2" + } + }, "node_modules/@alloc/quick-lru": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", @@ -8393,6 +9139,200 @@ "react-router": "7.1.5" } }, + "node_modules/@rollup/plugin-babel": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-6.0.4.tgz", + "integrity": "sha512-YF7Y52kFdFT/xVSuVdjkV5ZdX/3YtmX0QulG+x0taQOtJdHYzVU61aSSkAgVJ7NOv6qPkIYiJSgSWWN/DM5sGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.18.6", + "@rollup/pluginutils": "^5.0.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + }, + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-28.0.2.tgz", + "integrity": "sha512-BEFI2EDqzl+vA1rl97IDRZ61AIwGH093d9nz8+dThxJNH8oSoB7MjWvPCX3dkaK1/RCJ/1v/R1XB15FuSs0fQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "commondir": "^1.0.1", + "estree-walker": "^2.0.2", + "fdir": "^6.2.0", + "is-reference": "1.2.1", + "magic-string": "^0.30.3", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=16.0.0 || 14 >= 14.17" + }, + "peerDependencies": { + "rollup": "^2.68.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/plugin-commonjs/node_modules/fdir": { + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.3.tgz", + "integrity": "sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-16.0.0.tgz", + "integrity": "sha512-0FPvAeVUT/zdWoO0jnb/V5BlBsUSNfkIOtFHzMO4H9MOklrmQFY6FduVHKucNb/aTFxvnGhj4MNj/T1oNdDfNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.78.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-typescript": { + "version": "12.1.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-12.1.2.tgz", + "integrity": "sha512-cdtSp154H5sv637uMr1a8OTWB0L1SWDSm1rDGiyfcGcvQ6cuTs4MDk2BVEBGysUWago4OJN4EQZqOTl/QY3Jgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.1.0", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.14.0||^3.0.0||^4.0.0", + "tslib": "*", + "typescript": ">=3.7.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + }, + "tslib": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz", + "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/pluginutils/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.34.2", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.2.tgz", @@ -12584,6 +13524,13 @@ "@types/react": "^18.0.0" } }, + "node_modules/@types/resolve": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/responselike": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", @@ -22372,6 +23319,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "dev": true, + "license": "MIT" + }, "node_modules/is-network-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz", @@ -24448,6 +25402,16 @@ "node": ">=12" } }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, "node_modules/make-cancellable-promise": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/make-cancellable-promise/-/make-cancellable-promise-1.3.2.tgz", @@ -31554,9 +32518,9 @@ } }, "node_modules/react-icons": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.12.0.tgz", - "integrity": "sha512-IBaDuHiShdZqmfc/TwHu6+d6k2ltNCf3AszxNmjJc1KUfXdEeRJOKyNvLmAHaarhzGmTSVygNdyu8/opXv2gaw==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.4.0.tgz", + "integrity": "sha512-7eltJxgVt7X64oHh6wSWNwwbKTCtMfK35hcjvJS0yxEAhPM8oUKdS3+kqaW1vicIltw+kR2unHaa12S9pPALoQ==", "license": "MIT", "peerDependencies": { "react": "*" @@ -40716,7 +41680,7 @@ "dotenv-cli": "^7.3.0", "prisma-json-types-generator": "^3.2.2", "prisma-kysely": "^1.8.0", - "tsx": "^4.11.0", + "tsx": "^4.19.2", "typescript": "5.6.2", "zod-prisma-types": "3.1.9" } diff --git a/packages/ee/server-only/stripe/get-checkout-session.ts b/packages/ee/server-only/stripe/get-checkout-session.ts index 7c89c1f8c..5633b642d 100644 --- a/packages/ee/server-only/stripe/get-checkout-session.ts +++ b/packages/ee/server-only/stripe/get-checkout-session.ts @@ -1,5 +1,3 @@ -'use server'; - import type Stripe from 'stripe'; import { stripe } from '@documenso/lib/server-only/stripe'; @@ -17,8 +15,6 @@ export const getCheckoutSession = async ({ returnUrl, subscriptionMetadata, }: GetCheckoutSessionOptions) => { - 'use server'; - const session = await stripe.checkout.sessions.create({ customer: customerId, mode: 'subscription', diff --git a/packages/ee/server-only/stripe/get-portal-session.ts b/packages/ee/server-only/stripe/get-portal-session.ts index 275d166d8..ee0ce237e 100644 --- a/packages/ee/server-only/stripe/get-portal-session.ts +++ b/packages/ee/server-only/stripe/get-portal-session.ts @@ -1,5 +1,3 @@ -'use server'; - import { stripe } from '@documenso/lib/server-only/stripe'; export type GetPortalSessionOptions = { @@ -8,8 +6,6 @@ export type GetPortalSessionOptions = { }; export const getPortalSession = async ({ customerId, returnUrl }: GetPortalSessionOptions) => { - 'use server'; - const session = await stripe.billingPortal.sessions.create({ customer: customerId, return_url: returnUrl, diff --git a/packages/email/components.ts b/packages/email/components.ts index 552611c93..3765e7190 100644 --- a/packages/email/components.ts +++ b/packages/email/components.ts @@ -1,17 +1,17 @@ -export * from '@react-email/body'; -export * from '@react-email/button'; -export * from '@react-email/column'; -export * from '@react-email/container'; -export * from '@react-email/font'; -export * from '@react-email/head'; -export * from '@react-email/heading'; -export * from '@react-email/hr'; -export * from '@react-email/html'; -export * from '@react-email/img'; -export * from '@react-email/link'; -export * from '@react-email/preview'; -export * from '@react-email/render'; -export * from '@react-email/row'; -export * from '@react-email/section'; -export * from '@react-email/tailwind'; -export * from '@react-email/text'; +export { Body } from '@react-email/body'; +export { Button } from '@react-email/button'; +export { Column } from '@react-email/column'; +export { Container } from '@react-email/container'; +export { Font } from '@react-email/font'; +export { Head } from '@react-email/head'; +export { Heading } from '@react-email/heading'; +export { Hr } from '@react-email/hr'; +export { Html } from '@react-email/html'; +export { Img } from '@react-email/img'; +export { Link } from '@react-email/link'; +export { Preview } from '@react-email/preview'; +export { render } from '@react-email/render'; +export { Row } from '@react-email/row'; +export { Section } from '@react-email/section'; +export { Tailwind } from '@react-email/tailwind'; +export { Text } from '@react-email/text'; diff --git a/packages/lib/client-only/providers/i18n-server.tsx b/packages/lib/client-only/providers/i18n-server.tsx index 7ed8d1978..65f3af122 100644 --- a/packages/lib/client-only/providers/i18n-server.tsx +++ b/packages/lib/client-only/providers/i18n-server.tsx @@ -16,9 +16,7 @@ export async function loadCatalog(lang: SupportedLanguages): Promise<{ }> { const extension = env('NODE_ENV') === 'development' ? 'po' : 'js'; - // Todo - const { messages } = await import(`../../translations/${lang}/web.po`); - // const { messages } = await import(`../../translations/${lang}/web.${extension}`); + const { messages } = await import(`../../translations/${lang}/web.${extension}`); return { [lang]: messages, diff --git a/packages/lib/constants/crypto.ts b/packages/lib/constants/crypto.ts index a70f24c01..8bf232632 100644 --- a/packages/lib/constants/crypto.ts +++ b/packages/lib/constants/crypto.ts @@ -4,24 +4,24 @@ export const DOCUMENSO_ENCRYPTION_KEY = env('NEXT_PRIVATE_ENCRYPTION_KEY'); export const DOCUMENSO_ENCRYPTION_SECONDARY_KEY = env('NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY'); -if (typeof window === 'undefined') { - if (!DOCUMENSO_ENCRYPTION_KEY || !DOCUMENSO_ENCRYPTION_SECONDARY_KEY) { - throw new Error('Missing DOCUMENSO_ENCRYPTION_KEY or DOCUMENSO_ENCRYPTION_SECONDARY_KEY keys'); - } +// if (typeof window === 'undefined') { +// if (!DOCUMENSO_ENCRYPTION_KEY || !DOCUMENSO_ENCRYPTION_SECONDARY_KEY) { +// throw new Error('Missing DOCUMENSO_ENCRYPTION_KEY or DOCUMENSO_ENCRYPTION_SECONDARY_KEY keys'); +// } - if (DOCUMENSO_ENCRYPTION_KEY === DOCUMENSO_ENCRYPTION_SECONDARY_KEY) { - throw new Error( - 'DOCUMENSO_ENCRYPTION_KEY and DOCUMENSO_ENCRYPTION_SECONDARY_KEY cannot be equal', - ); - } -} +// if (DOCUMENSO_ENCRYPTION_KEY === DOCUMENSO_ENCRYPTION_SECONDARY_KEY) { +// throw new Error( +// 'DOCUMENSO_ENCRYPTION_KEY and DOCUMENSO_ENCRYPTION_SECONDARY_KEY cannot be equal', +// ); +// } +// } -if (DOCUMENSO_ENCRYPTION_KEY === 'CAFEBABE') { - console.warn('*********************************************************************'); - console.warn('*'); - console.warn('*'); - console.warn('Please change the encryption key from the default value of "CAFEBABE"'); - console.warn('*'); - console.warn('*'); - console.warn('*********************************************************************'); -} +// if (DOCUMENSO_ENCRYPTION_KEY === 'CAFEBABE') { +// console.warn('*********************************************************************'); +// console.warn('*'); +// console.warn('*'); +// console.warn('Please change the encryption key from the default value of "CAFEBABE"'); +// console.warn('*'); +// console.warn('*'); +// console.warn('*********************************************************************'); +// } diff --git a/packages/lib/jobs/client/index.ts b/packages/lib/jobs/client/index.ts new file mode 100644 index 000000000..0f84c8158 --- /dev/null +++ b/packages/lib/jobs/client/index.ts @@ -0,0 +1,3 @@ +// Empty file for build reasons. +// Vite build seems to assume jobs/client.ts = jobs/client/index.ts and therefore will throw an error that the file is missing. +// Could refactor the files, but this is easier. diff --git a/packages/lib/server-only/document-meta/upsert-document-meta.ts b/packages/lib/server-only/document-meta/upsert-document-meta.ts index c42d9fbcf..9238573d3 100644 --- a/packages/lib/server-only/document-meta/upsert-document-meta.ts +++ b/packages/lib/server-only/document-meta/upsert-document-meta.ts @@ -1,5 +1,3 @@ -'use server'; - import type { DocumentDistributionMethod, DocumentSigningOrder } from '@prisma/client'; import { DOCUMENT_AUDIT_LOG_TYPE } from '@documenso/lib/types/document-audit-logs'; diff --git a/packages/lib/server-only/document/create-document.ts b/packages/lib/server-only/document/create-document.ts index 58274cb91..e8c31f6ac 100644 --- a/packages/lib/server-only/document/create-document.ts +++ b/packages/lib/server-only/document/create-document.ts @@ -1,5 +1,3 @@ -'use server'; - import { DocumentSource, WebhookTriggerEvents } from '@prisma/client'; import type { Team, TeamGlobalSettings } from '@prisma/client'; import { TeamMemberRole } from '@prisma/client'; diff --git a/packages/lib/server-only/document/delete-document.ts b/packages/lib/server-only/document/delete-document.ts index 82771bf24..b1fb58c4c 100644 --- a/packages/lib/server-only/document/delete-document.ts +++ b/packages/lib/server-only/document/delete-document.ts @@ -1,5 +1,3 @@ -'use server'; - import { createElement } from 'react'; import { msg } from '@lingui/core/macro'; diff --git a/packages/lib/server-only/document/super-delete-document.ts b/packages/lib/server-only/document/super-delete-document.ts index 6387eb2e3..8be7df266 100644 --- a/packages/lib/server-only/document/super-delete-document.ts +++ b/packages/lib/server-only/document/super-delete-document.ts @@ -1,5 +1,3 @@ -'use server'; - import { createElement } from 'react'; import { msg } from '@lingui/core/macro'; diff --git a/packages/lib/server-only/document/update-title.ts b/packages/lib/server-only/document/update-title.ts index 43e7c2d91..28389a473 100644 --- a/packages/lib/server-only/document/update-title.ts +++ b/packages/lib/server-only/document/update-title.ts @@ -1,5 +1,3 @@ -'use server'; - import { DOCUMENT_AUDIT_LOG_TYPE } from '@documenso/lib/types/document-audit-logs'; import type { RequestMetadata } from '@documenso/lib/universal/extract-request-metadata'; import { createDocumentAuditLogData } from '@documenso/lib/utils/document-audit-logs'; diff --git a/packages/lib/server-only/field/remove-signed-field-with-token.ts b/packages/lib/server-only/field/remove-signed-field-with-token.ts index 36bf15ef7..39ea34e80 100644 --- a/packages/lib/server-only/field/remove-signed-field-with-token.ts +++ b/packages/lib/server-only/field/remove-signed-field-with-token.ts @@ -1,5 +1,3 @@ -'use server'; - import { DocumentStatus, SigningStatus } from '@prisma/client'; import { DOCUMENT_AUDIT_LOG_TYPE } from '@documenso/lib/types/document-audit-logs'; diff --git a/packages/lib/server-only/field/sign-field-with-token.ts b/packages/lib/server-only/field/sign-field-with-token.ts index f0d6700a1..48dd6d1f3 100644 --- a/packages/lib/server-only/field/sign-field-with-token.ts +++ b/packages/lib/server-only/field/sign-field-with-token.ts @@ -1,5 +1,3 @@ -'use server'; - import { DocumentStatus, FieldType, SigningStatus } from '@prisma/client'; import { DateTime } from 'luxon'; import { match } from 'ts-pattern'; diff --git a/packages/lib/server-only/pdf/insert-field-in-pdf.ts b/packages/lib/server-only/pdf/insert-field-in-pdf.ts index 2c31ca2d5..3c901c492 100644 --- a/packages/lib/server-only/pdf/insert-field-in-pdf.ts +++ b/packages/lib/server-only/pdf/insert-field-in-pdf.ts @@ -5,9 +5,6 @@ import type { PDFDocument } from 'pdf-lib'; import { RotationTypes, degrees, radiansToDegrees } from 'pdf-lib'; import { P, match } from 'ts-pattern'; -// Todo: Check if this is okay to do compared to the old approach. -import fontCaveat from '@documenso/assets/fonts/caveat.ttf?inline'; -import fontNoto from '@documenso/assets/fonts/noto-sans.ttf?inline'; import { DEFAULT_HANDWRITING_FONT_SIZE, DEFAULT_STANDARD_FONT_SIZE, @@ -29,6 +26,13 @@ import { ZTextFieldMeta, } from '../../types/field-meta'; +// Todo: Check if this is okay to do compared to the old approach. +// import fontCaveat from '@documenso/assets/fonts/caveat.ttf?inline'; +// import fontNoto from '@documenso/assets/fonts/noto-sans.ttf?inline'; + +const fontCaveat = ''; +const fontNoto = ''; + export const insertFieldInPDF = async (pdf: PDFDocument, field: FieldWithSignature) => { const isSignatureField = isSignatureFieldType(field.type); diff --git a/packages/lib/server-only/subscription/get-active-subscriptions-by-user-id.ts b/packages/lib/server-only/subscription/get-active-subscriptions-by-user-id.ts index 2ce07de27..dc73bb06e 100644 --- a/packages/lib/server-only/subscription/get-active-subscriptions-by-user-id.ts +++ b/packages/lib/server-only/subscription/get-active-subscriptions-by-user-id.ts @@ -1,5 +1,3 @@ -'use server'; - import { SubscriptionStatus } from '@prisma/client'; import { prisma } from '@documenso/prisma'; diff --git a/packages/lib/server-only/subscription/get-subscriptions-by-user-id.ts b/packages/lib/server-only/subscription/get-subscriptions-by-user-id.ts index 33f6255bd..264a30472 100644 --- a/packages/lib/server-only/subscription/get-subscriptions-by-user-id.ts +++ b/packages/lib/server-only/subscription/get-subscriptions-by-user-id.ts @@ -1,5 +1,3 @@ -'use server'; - import { prisma } from '@documenso/prisma'; export type GetSubscriptionsByUserIdOptions = { diff --git a/packages/lib/server-only/template/create-template-direct-link.ts b/packages/lib/server-only/template/create-template-direct-link.ts index 8db9ac216..c2de4c36f 100644 --- a/packages/lib/server-only/template/create-template-direct-link.ts +++ b/packages/lib/server-only/template/create-template-direct-link.ts @@ -1,5 +1,3 @@ -'use server'; - import type { Recipient } from '@prisma/client'; import { nanoid } from 'nanoid'; diff --git a/packages/lib/server-only/template/delete-template-direct-link.ts b/packages/lib/server-only/template/delete-template-direct-link.ts index 501b86338..2ab99194e 100644 --- a/packages/lib/server-only/template/delete-template-direct-link.ts +++ b/packages/lib/server-only/template/delete-template-direct-link.ts @@ -1,5 +1,3 @@ -'use server'; - import { generateAvaliableRecipientPlaceholder } from '@documenso/lib/utils/templates'; import { prisma } from '@documenso/prisma'; diff --git a/packages/lib/server-only/template/delete-template.ts b/packages/lib/server-only/template/delete-template.ts index 964f432b8..cf97d9f11 100644 --- a/packages/lib/server-only/template/delete-template.ts +++ b/packages/lib/server-only/template/delete-template.ts @@ -1,5 +1,3 @@ -'use server'; - import { prisma } from '@documenso/prisma'; export type DeleteTemplateOptions = { diff --git a/packages/lib/server-only/template/toggle-template-direct-link.ts b/packages/lib/server-only/template/toggle-template-direct-link.ts index aa9daa461..097d5fe79 100644 --- a/packages/lib/server-only/template/toggle-template-direct-link.ts +++ b/packages/lib/server-only/template/toggle-template-direct-link.ts @@ -1,5 +1,3 @@ -'use server'; - import { prisma } from '@documenso/prisma'; import { AppError, AppErrorCode } from '../../errors/app-error'; diff --git a/packages/lib/server-only/template/update-template.ts b/packages/lib/server-only/template/update-template.ts index f85924173..6bf41f7b2 100644 --- a/packages/lib/server-only/template/update-template.ts +++ b/packages/lib/server-only/template/update-template.ts @@ -1,5 +1,3 @@ -'use server'; - import type { DocumentVisibility, Template, TemplateMeta } from '@prisma/client'; import { isUserEnterprise } from '@documenso/ee/server-only/util/is-document-enterprise'; diff --git a/packages/lib/utils/i18n.ts b/packages/lib/utils/i18n.ts index 1c552645a..8dba1a3aa 100644 --- a/packages/lib/utils/i18n.ts +++ b/packages/lib/utils/i18n.ts @@ -10,8 +10,7 @@ export async function dynamicActivate(locale: string) { // Todo: Use extension (currently breaks). - // const { messages } = await import(`../translations/${locale}/web.${extension}`); - const { messages } = await import(`../translations/${locale}/web.po`); + const { messages } = await import(`../translations/${locale}/web.${extension}`); i18n.loadAndActivate({ locale, messages }); } diff --git a/packages/prisma/package.json b/packages/prisma/package.json index 79d6a2c9d..e03e99183 100644 --- a/packages/prisma/package.json +++ b/packages/prisma/package.json @@ -32,7 +32,7 @@ "dotenv-cli": "^7.3.0", "prisma-json-types-generator": "^3.2.2", "prisma-kysely": "^1.8.0", - "tsx": "^4.11.0", + "tsx": "^4.19.2", "typescript": "5.6.2", "zod-prisma-types": "3.1.9" }