Compare commits
6
Commits
595ba43195
...
178e6d3d2c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
178e6d3d2c | ||
|
|
9463c8d4da | ||
|
|
578a6e943a | ||
|
|
ade0f286d3 | ||
|
|
9e453666e5 | ||
|
|
abc06e438c |
No files matched your search
+13
-13
@@ -44,46 +44,46 @@
|
||||
"jpeg-js": "^0.4.4",
|
||||
"jsonc-parser": "^3.3.1",
|
||||
"jszip": "3.10.1",
|
||||
"lenis": "1.3.25",
|
||||
"lucide-react": "1.28.0",
|
||||
"lenis": "1.3.26",
|
||||
"lucide-react": "1.31.0",
|
||||
"lzma": "^2.3.2",
|
||||
"motion": "12.43.0",
|
||||
"music-metadata": "11.14.0",
|
||||
"mysql2": "3.23.2",
|
||||
"mysql2": "3.23.3",
|
||||
"next": "16.3.0",
|
||||
"next-auth": "5.0.0-beta.32",
|
||||
"next-intl": "4.13.5",
|
||||
"next-intl": "4.13.6",
|
||||
"otplib": "13.4.1",
|
||||
"pino": "10.3.1",
|
||||
"react": "19.2.8",
|
||||
"react-dom": "19.2.8",
|
||||
"react-hook-form": "7.84.0",
|
||||
"resend": "6.18.1",
|
||||
"react-hook-form": "7.85.0",
|
||||
"resend": "6.19.0",
|
||||
"server-only": "0.0.1",
|
||||
"sharp": "0.35.3",
|
||||
"sonner": "2.0.7",
|
||||
"sonner": "2.0.8",
|
||||
"tailwind-merge": "3.6.0",
|
||||
"zod": "4.4.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@biomejs/biome": "2.5.7",
|
||||
"@biomejs/biome": "2.5.8",
|
||||
"@tailwindcss/forms": "^0.5.11",
|
||||
"@tailwindcss/postcss": "^4.3.3",
|
||||
"@tailwindcss/typography": "^0.5.20",
|
||||
"@types/node": "^26.1.2",
|
||||
"@types/node": "^26.2.0",
|
||||
"@types/react": "19.2.18",
|
||||
"@types/react-dom": "19.2.4",
|
||||
"@vitest/coverage-v8": "4.1.10",
|
||||
"drizzle-kit": "^0.31.10",
|
||||
"husky": "^9.1.7",
|
||||
"knip": "6.31.0",
|
||||
"knip": "6.32.2",
|
||||
"lint-staged": "^17.3.0",
|
||||
"pino-pretty": "^13.1.3",
|
||||
"postcss": "^8.5.25",
|
||||
"postcss": "^8.5.26",
|
||||
"tailwindcss": "^4.3.3",
|
||||
"tsx": "^4.23.5",
|
||||
"tsx": "^4.23.12",
|
||||
"typescript": "^7.0.2",
|
||||
"vite": "8.2.0",
|
||||
"vite": "8.2.1",
|
||||
"vitest": "4.1.10"
|
||||
}
|
||||
}
|
||||
Generated
+185
-205
@@ -36,7 +36,7 @@ importers:
|
||||
version: 3.2.2([email protected])
|
||||
'@hookform/resolvers':
|
||||
specifier: 5.7.1
|
||||
version: 5.7.1(@standard-schema/[email protected])([email protected]4.0([email protected]))([email protected])
|
||||
version: 5.7.1(@standard-schema/[email protected])([email protected]5.0([email protected]))([email protected])
|
||||
'@next/bundle-analyzer':
|
||||
specifier: 16.3.0
|
||||
version: 16.3.0
|
||||
@@ -60,7 +60,7 @@ importers:
|
||||
version: 3.4.13
|
||||
drizzle-orm:
|
||||
specifier: 0.45.2
|
||||
version: 0.45.2([email protected].2(@types/[email protected]))
|
||||
version: 0.45.2([email protected].3(@types/[email protected]))
|
||||
hash-wasm:
|
||||
specifier: 4.12.0
|
||||
version: 4.12.0
|
||||
@@ -77,11 +77,11 @@ importers:
|
||||
specifier: 3.10.1
|
||||
version: 3.10.1
|
||||
lenis:
|
||||
specifier: 1.3.25
|
||||
version: 1.3.25([email protected])
|
||||
specifier: 1.3.26
|
||||
version: 1.3.26([email protected])
|
||||
lucide-react:
|
||||
specifier: 1.28.0
|
||||
version: 1.28.0([email protected])
|
||||
specifier: 1.31.0
|
||||
version: 1.31.0([email protected])
|
||||
lzma:
|
||||
specifier: ^2.3.2
|
||||
version: 2.3.2
|
||||
@@ -92,8 +92,8 @@ importers:
|
||||
specifier: 11.14.0
|
||||
version: 11.14.0([email protected])
|
||||
mysql2:
|
||||
specifier: 3.23.2
|
||||
version: 3.23.2(@types/[email protected])
|
||||
specifier: 3.23.3
|
||||
version: 3.23.3(@types/[email protected])
|
||||
next:
|
||||
specifier: 16.3.0
|
||||
version: 16.3.0(@types/[email protected])([email protected]([email protected]))([email protected])
|
||||
@@ -101,8 +101,8 @@ importers:
|
||||
specifier: 5.0.0-beta.32
|
||||
version: 5.0.0-beta.32([email protected](@types/[email protected])([email protected]([email protected]))([email protected]))([email protected])
|
||||
next-intl:
|
||||
specifier: 4.13.5
|
||||
version: 4.13.5([email protected](@types/[email protected])([email protected]([email protected]))([email protected]))([email protected])([email protected])
|
||||
specifier: 4.13.6
|
||||
version: 4.13.6([email protected](@types/[email protected])([email protected]([email protected]))([email protected]))([email protected])([email protected])
|
||||
otplib:
|
||||
specifier: 13.4.1
|
||||
version: 13.4.1
|
||||
@@ -116,11 +116,11 @@ importers:
|
||||
specifier: 19.2.8
|
||||
version: 19.2.8([email protected])
|
||||
react-hook-form:
|
||||
specifier: 7.84.0
|
||||
version: 7.84.0([email protected])
|
||||
specifier: 7.85.0
|
||||
version: 7.85.0([email protected])
|
||||
resend:
|
||||
specifier: 6.18.1
|
||||
version: 6.18.1
|
||||
specifier: 6.19.0
|
||||
version: 6.19.0
|
||||
server-only:
|
||||
specifier: 0.0.1
|
||||
version: 0.0.1
|
||||
@@ -128,8 +128,8 @@ importers:
|
||||
specifier: ^0.35.3
|
||||
version: 0.35.3(@types/[email protected])
|
||||
sonner:
|
||||
specifier: 2.0.7
|
||||
version: 2.0.7([email protected]([email protected]))([email protected])
|
||||
specifier: 2.0.8
|
||||
version: 2.0.8(@types/[email protected])([email protected]([email protected]))([email protected])
|
||||
tailwind-merge:
|
||||
specifier: 3.6.0
|
||||
version: 3.6.0
|
||||
@@ -138,8 +138,8 @@ importers:
|
||||
version: 4.4.3
|
||||
devDependencies:
|
||||
'@biomejs/biome':
|
||||
specifier: 2.5.7
|
||||
version: 2.5.7
|
||||
specifier: 2.5.8
|
||||
version: 2.5.8
|
||||
'@tailwindcss/forms':
|
||||
specifier: ^0.5.11
|
||||
version: 0.5.11([email protected])
|
||||
@@ -150,7 +150,7 @@ importers:
|
||||
specifier: ^0.5.20
|
||||
version: 0.5.20([email protected])
|
||||
'@types/node':
|
||||
specifier: ^26.1.2
|
||||
specifier: ^26.2.0
|
||||
version: 26.2.0
|
||||
'@types/react':
|
||||
specifier: 19.2.18
|
||||
@@ -168,8 +168,8 @@ importers:
|
||||
specifier: ^9.1.7
|
||||
version: 9.1.7
|
||||
knip:
|
||||
specifier: 6.31.0
|
||||
version: 6.31.0
|
||||
specifier: 6.32.2
|
||||
version: 6.32.2
|
||||
lint-staged:
|
||||
specifier: ^17.3.0
|
||||
version: 17.3.0
|
||||
@@ -183,17 +183,17 @@ importers:
|
||||
specifier: ^4.3.3
|
||||
version: 4.3.3
|
||||
tsx:
|
||||
specifier: ^4.23.5
|
||||
specifier: ^4.23.12
|
||||
version: 4.23.12
|
||||
typescript:
|
||||
specifier: ^7.0.2
|
||||
version: 7.0.2
|
||||
vite:
|
||||
specifier: 8.2.0
|
||||
version: 8.2.0(@types/[email protected])([email protected])([email protected])([email protected])([email protected])
|
||||
specifier: 8.2.1
|
||||
version: 8.2.1(@types/[email protected])([email protected])([email protected])([email protected])([email protected])
|
||||
vitest:
|
||||
specifier: 4.1.10
|
||||
version: 4.1.10(@types/[email protected])(@vitest/[email protected])([email protected].0(@types/[email protected])([email protected])([email protected])([email protected])([email protected]))
|
||||
version: 4.1.10(@types/[email protected])(@vitest/[email protected])([email protected].1(@types/[email protected])([email protected])([email protected])([email protected])([email protected]))
|
||||
|
||||
packages:
|
||||
|
||||
@@ -267,59 +267,59 @@ packages:
|
||||
resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
'@biomejs/[email protected].7':
|
||||
resolution: {integrity: sha512-zr8K/DcY5tYsQOQwqMJ0AWElo6QgmgNI7idXgXLhevVszlt8RGVpesEJPqx3ThazLaOwjJ5Y8fz3BtH5fGZNsw==}
|
||||
'@biomejs/[email protected].8':
|
||||
resolution: {integrity: sha512-aeAeeJB9fSDc7Gq+2GqpQxA0qBj6gj1k2R6L1cYqGePKP/baIq1WX8y6B+D+nRsO5ViQL22K/8IwbqERW0q1nw==}
|
||||
engines: {node: '>=14.21.3'}
|
||||
hasBin: true
|
||||
|
||||
'@biomejs/[email protected].7':
|
||||
resolution: {integrity: sha512-vxo/Ls3/PYdQWyLhYYcgMOCzQypAjcY+iihS8M0wW03l16TCLW4zqZzGo75gm1VdCMj38hTVZ31KBWrZ4G9dJw==}
|
||||
'@biomejs/[email protected].8':
|
||||
resolution: {integrity: sha512-mk1QON9PHllvvLN5gU3f4rMxeh4syK5p9OvKyWH6/W8ueh04uaC8TUXXByhGufWf/y5mQc03ZLM45zU+cmqMjA==}
|
||||
engines: {node: '>=14.21.3'}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
||||
'@biomejs/[email protected].7':
|
||||
resolution: {integrity: sha512-Cd3Ga61amT/Yl/0x8elP5hhGYaFy4bw6WuysTgf7oo8TA5tJ5A1k+DkVoJ2BHbTVil51gTX9VPzArnrlLJ3Kyg==}
|
||||
'@biomejs/[email protected].8':
|
||||
resolution: {integrity: sha512-bsGwFMBNyHPyiLSsQcZJxdoRrg1V4JL+d7wEsvUBczlP9U9lwM+7mzQHxI4o1mhBsTmdOBbAb6fHU3Z3snN45w==}
|
||||
engines: {node: '>=14.21.3'}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
||||
'@biomejs/[email protected].7':
|
||||
resolution: {integrity: sha512-xPI5yB6XlpDbNkS+bm1t42olw5c4l3UrlOmLg7KtLJvjvkNF/1V4tnUgfkylGIeb3u/T+BzMGYqgQhzjAoJzuQ==}
|
||||
'@biomejs/[email protected].8':
|
||||
resolution: {integrity: sha512-VcJNbstduTHx83NGAdhp78/JOcP45BZHXL7yNsfI1uGzdUgegAz2s+mSoT7wK6PBNzLoqG0zDOXaz/RQYVtSiw==}
|
||||
engines: {node: '>=14.21.3'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
libc: [musl]
|
||||
|
||||
'@biomejs/[email protected].7':
|
||||
resolution: {integrity: sha512-rR2QE0yF2GYSuYuKIa7pKvODGJqnOH+2eDREAM8wV+mWKSkMQKdAp4zXEZfTaxY8PMoNONnpgSWcBCyLDPDOKg==}
|
||||
'@biomejs/[email protected].8':
|
||||
resolution: {integrity: sha512-XmFiA0WPYFC+uiUDC8WRFzAIH9bo7vwQLav38Uoq4ETC+T/+uBi0TsYGJECkugY3r8USl3jc+Ae2/irAF6F2lQ==}
|
||||
engines: {node: '>=14.21.3'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@biomejs/[email protected].7':
|
||||
resolution: {integrity: sha512-rE5VZi+qtmPgQH+l7jVxYoZ18b/TiHEhulhMpjmCZH1PltSbjRcxNWywC3HZ9tYottG7ORkeTtoscBilKSBm0g==}
|
||||
'@biomejs/[email protected].8':
|
||||
resolution: {integrity: sha512-kKmiyokeISRGq2FLwvr+TzsgBusfxaZ0FZNLcOYOpCK/78tRrEjeEBLvq3xLZMpqbANgJdRPI7vZX8ZL37u9/w==}
|
||||
engines: {node: '>=14.21.3'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
libc: [musl]
|
||||
|
||||
'@biomejs/[email protected].7':
|
||||
resolution: {integrity: sha512-FQgqJhscrqJUFptGaRSUJWlXAExwWcDwLuK49dvKfkQ1bB5SEEyFssnsxQY83Xm6jR0EbbX3+8+D5bfvYqUG2Q==}
|
||||
'@biomejs/[email protected].8':
|
||||
resolution: {integrity: sha512-S5wcm9OBDvLHodD4PUaN488hCpco9QD/9ZxuYJiw4euWtr/oQvLR72z2ixItH8Wd5BCm6FZaeb+YNvOoM1xHtQ==}
|
||||
engines: {node: '>=14.21.3'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@biomejs/[email protected].7':
|
||||
resolution: {integrity: sha512-Oq4x0CCwP4jirrcTywXs5kOGZ4v5vuEP+gWrbtjApOA2CL9F3F9GlIdQIci8AKSCa/zURanMRpX/4wQ7Am6hHg==}
|
||||
'@biomejs/[email protected].8':
|
||||
resolution: {integrity: sha512-nILH0mzm3Hi3iEdd7o7GpB8kBR/mSQwfQG/tyBqyNrY2GFtcgwfV9nV8xLmbtUpMNY/Oi0Ml1XgfR4flOdq+AA==}
|
||||
engines: {node: '>=14.21.3'}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
|
||||
'@biomejs/[email protected].7':
|
||||
resolution: {integrity: sha512-V+0wu/nrj2S+MhP4EQ0uHNolP0IALEsz45pg0WoKkHfDeh0+ItHwP/p7bX5RPoMOl9NkpHYWdYPhIcy2mACHvQ==}
|
||||
'@biomejs/[email protected].8':
|
||||
resolution: {integrity: sha512-I2czzXTY61f3nFJxXoMDq80t7MivxDEnCjE+8sDKoFfcKMaoQdkqhIFQ3KyY0XLzeSpUBYeNAXgD+iOV/BU0VA==}
|
||||
engines: {node: '>=14.21.3'}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
@@ -905,136 +905,128 @@ packages:
|
||||
'@otplib/[email protected]':
|
||||
resolution: {integrity: sha512-xaIm7bvICMhoB2rZIR5luiaMdssWR5nY5nXnR1fdezUgZuEO58D6zrGzLp7pQuBmlpmL0HagnscDQFoskp9yiA==}
|
||||
|
||||
'@oxc-parser/[email protected]2.0':
|
||||
resolution: {integrity: sha512-ZiRGDutGsv1G6bL/ozy/koC0Sv39T1DqyoC4KD1DOy9ZoACm1O5UWhEK2c02Qdk+4lfLVkvFa/mQ0fm/4h1BtQ==}
|
||||
'@oxc-parser/[email protected]3.0':
|
||||
resolution: {integrity: sha512-n9uozULWflPqBtdmI8lAabLqGKNgLVNN0ZH8HfgCwpKGNtzRzauB76jTiW/3YLkcA7N1zskpi9GdVnZuu1SAvg==}
|
||||
engines: {node: ^20.19.0 || >=22.12.0}
|
||||
cpu: [arm]
|
||||
os: [android]
|
||||
|
||||
'@oxc-parser/[email protected]2.0':
|
||||
resolution: {integrity: sha512-WZkvGRLNQTz8lR9zP5nLjUdlroRCopBu3g9zF1p/laE6DzT1UbQo8Rdz5MWhaJUPYg/6gp+jo7HUgsyKaN1FtQ==}
|
||||
'@oxc-parser/[email protected]3.0':
|
||||
resolution: {integrity: sha512-9BbdjHETk6O3zH/DDid9IgBtF0GlpLabNKN231uraXpRDSfY+iiZxTP5bk1Z63GBownVdhdINFIeddmMz4MzpQ==}
|
||||
engines: {node: ^20.19.0 || >=22.12.0}
|
||||
cpu: [arm64]
|
||||
os: [android]
|
||||
|
||||
'@oxc-parser/[email protected]2.0':
|
||||
resolution: {integrity: sha512-l4khS8LQOOVYsGRVARo1gSaCT/aBSceUVXgtovWc2+drnxVuDr082WA3OCHVdVzIz5JIrP/y9CWsSKxBDNmYGg==}
|
||||
'@oxc-parser/[email protected]3.0':
|
||||
resolution: {integrity: sha512-gh+6ecoHUy4/sUcolBl/1qPXKBbYNxFY0Pk0ujgQvINTMSftJY7o4yb8gOkDJPeZeB8+a+u7xTe6umoP8N5HFA==}
|
||||
engines: {node: ^20.19.0 || >=22.12.0}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
||||
'@oxc-parser/[email protected]2.0':
|
||||
resolution: {integrity: sha512-QBsNF3nqlXmcH2B1YOPqQYmCJoy4HuIjUxGbBO/k5JAJUl68ghU2psRY2zPk+RyBaWqKP/qfL4oaFgEMCdwskA==}
|
||||
'@oxc-parser/[email protected]3.0':
|
||||
resolution: {integrity: sha512-qd1hl2d+lXgHv/VQ/M9qm8TrMC5T4RqDBwtOnl+1D0QMjwcz+8AaB4JSg8STgeag0GP6a6L74XEGAsrTSJWNzQ==}
|
||||
engines: {node: ^20.19.0 || >=22.12.0}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
||||
'@oxc-parser/[email protected]2.0':
|
||||
resolution: {integrity: sha512-b7Q7m4Cqc6XqNhri3R+QhU+GVy646Pn+bkdhrDdWym/Fdi0ZUa+d73H9dm5H91JtbtAQ/z1d8XKMW3oOV8a4tQ==}
|
||||
'@oxc-parser/[email protected]3.0':
|
||||
resolution: {integrity: sha512-M5XXcNa7aOqLPKTR41msfghKu2yQ4xWvCm11/gwU0JzOzHNk5sgW//rVEjJ+LO48+VDAMzXTSzurUVxIDKwozw==}
|
||||
engines: {node: ^20.19.0 || >=22.12.0}
|
||||
cpu: [x64]
|
||||
os: [freebsd]
|
||||
|
||||
'@oxc-parser/[email protected]2.0':
|
||||
resolution: {integrity: sha512-3riVS5IhdH3uCZj1Y9ftDQlR0dvLsIlw/edrRqk8JhgNd5K0XSs+UBtgh50N13CAlW9/TXj6sVGXaKNBocd0Yg==}
|
||||
'@oxc-parser/[email protected]3.0':
|
||||
resolution: {integrity: sha512-T/GXusuOkPNQhCQCSBbcU/N8j0rAypuDBl1IyFK+lyYT594XsVz80clPC/OtbSSpBGyJxj8uYEfctxVuxVYoww==}
|
||||
engines: {node: ^20.19.0 || >=22.12.0}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
|
||||
'@oxc-parser/[email protected]2.0':
|
||||
resolution: {integrity: sha512-NmXUOpgpTSkhl795TiXmWppTwmSJ92RC1qvD6e4XOF+slgmo3e6Ah+kEu+6AN8s7NAOEwqGmir58MgSQSWmBSA==}
|
||||
'@oxc-parser/[email protected]3.0':
|
||||
resolution: {integrity: sha512-oKu4RcBlXSqo3OC62dp6YTnQaZIurNDpCX3BnAM3+bJxt7s8J2TJKMnC0UYer1qhlRaDCg6wkTaTw+2IlsZ12w==}
|
||||
engines: {node: ^20.19.0 || >=22.12.0}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
|
||||
'@oxc-parser/[email protected]2.0':
|
||||
resolution: {integrity: sha512-gc0EXsKtXgerujmU2Bql3u1L1HsSQ2774R83idq/FoNMPVV/RY/1ErFsvnit7KoiP/sLvzQixeUo4Ut0ic0wmw==}
|
||||
'@oxc-parser/[email protected]3.0':
|
||||
resolution: {integrity: sha512-WJBbD186AZmMGaSIhlktC+rPl8L3peCTXAh88Ih9uEvK0en2mPojGyCGYiL6mHtV1RPV3JyfJW5t6n5hh0lXhA==}
|
||||
engines: {node: ^20.19.0 || >=22.12.0}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@oxc-parser/[email protected]2.0':
|
||||
resolution: {integrity: sha512-F2XvmWSE0uWpie+jHKKIFgdVOe9ypGhkEZxKx5DuW215K6cbAC274yYaPkcM7EqY4Df3Weyhpcz3lsURyH2LVg==}
|
||||
'@oxc-parser/[email protected]3.0':
|
||||
resolution: {integrity: sha512-t1AcYOwEzgceadT4v5e+vaCCb0AncCA3v5AyzfBAz/tMq11qzVccXKzNHtkWdjBsgvTKwRkaUF3QvT4kot8vcQ==}
|
||||
engines: {node: ^20.19.0 || >=22.12.0}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
libc: [musl]
|
||||
|
||||
'@oxc-parser/[email protected]2.0':
|
||||
resolution: {integrity: sha512-wLMbT21U/QxknQsk+VvNF0b9D2/aGWhcaQQQ+VYlE8FwD5+GoWZIPPXNzyHmkYyhm0KB3itL+TBavjMatqNnYA==}
|
||||
'@oxc-parser/[email protected]3.0':
|
||||
resolution: {integrity: sha512-RsnO/NoD8376LMJq8JS8TwI0ieNaFRTuNe2GVJntQg6gwZNMENZsEbknHdVwjpOmxdGLGodcwaGSbAeRr5Bgjw==}
|
||||
engines: {node: ^20.19.0 || >=22.12.0}
|
||||
cpu: [ppc64]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@oxc-parser/[email protected]2.0':
|
||||
resolution: {integrity: sha512-+G8F/4ckwT7FCJV4H2bt09xEzJbjNCfuL4Sp1AYNaFtFMVtgIGMuJlteT82U+K0UIZ/DzAR/LDlMFnEuajG7Kw==}
|
||||
'@oxc-parser/[email protected]3.0':
|
||||
resolution: {integrity: sha512-48fSVfR9TZi5CASZFyv0VC6z6BCoeihFsX031mAD/oSH7d9PYsPgIqza7d9mjP7Z2KTEpTFyH6SIu0Ui6R1vdg==}
|
||||
engines: {node: ^20.19.0 || >=22.12.0}
|
||||
cpu: [riscv64]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@oxc-parser/[email protected]2.0':
|
||||
resolution: {integrity: sha512-hTsHtTLxMAfCo+rpF5K3qZJKW2NpPN/CHd4mYB3y7XlSdspHkd2gehDIofP64AacA9nWQw2tY3O7wR6UY8IVOA==}
|
||||
'@oxc-parser/[email protected]3.0':
|
||||
resolution: {integrity: sha512-T8CpdD+SfE01DnIOD4HpVxu0ZJOfMJ/VhCvikKfaXAxkZ+9veyLM/D2hpi7Y2hFUyPmVQO3FNZHmYzV/WlVR4g==}
|
||||
engines: {node: ^20.19.0 || >=22.12.0}
|
||||
cpu: [riscv64]
|
||||
os: [linux]
|
||||
libc: [musl]
|
||||
|
||||
'@oxc-parser/[email protected]2.0':
|
||||
resolution: {integrity: sha512-6y7qYY3TCUDYjqswImdTGl92y+KA/80twALegQPN27kfY+bG7Ib1+L3jbmrCZQx6wrVnai9IPsEZp07I0hx7JQ==}
|
||||
'@oxc-parser/[email protected]3.0':
|
||||
resolution: {integrity: sha512-QLdeMsCcacenPEFsfxnBUDF1y6opyz5+fmOz9bfD5Y7fiGCMupUCuB3KTPQhNwshIG1P9fPqar9MHxuBDd4bwQ==}
|
||||
engines: {node: ^20.19.0 || >=22.12.0}
|
||||
cpu: [s390x]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@oxc-parser/[email protected]2.0':
|
||||
resolution: {integrity: sha512-i69kAWU+2LgoH5bR+zWiiu+UzAw7Oxkwv7COeJTeY19pn4e70nKQcr9Pm6cL2Z0Z54d+gl9qADlK/0yyuCPiBA==}
|
||||
'@oxc-parser/[email protected]3.0':
|
||||
resolution: {integrity: sha512-659ujfqLy6k7cuH3sbzhd8b+ztSq+i6E2E9pG78Q0BmHjAExfGIdgc8cGgMdwAozDXeZFHkJ+LXYJdWsaGdgyw==}
|
||||
engines: {node: ^20.19.0 || >=22.12.0}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@oxc-parser/[email protected]2.0':
|
||||
resolution: {integrity: sha512-4SQs678MmjYVrmhAgCWD4o0vpaFszXw9xLX5p2Z9MMFcltxiLkA88wQjh80YHjPrXtpyZ2CWI5m+1yNKM0m2Pw==}
|
||||
'@oxc-parser/[email protected]3.0':
|
||||
resolution: {integrity: sha512-/Mw/9j4TfZcnKphPrzOE6t4MMknXadcAAuVUlDRTF/ETWB5xOgQvOJV2Mh9We/bWxZdoxaGAdc+hy4GuYwQ2yQ==}
|
||||
engines: {node: ^20.19.0 || >=22.12.0}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
libc: [musl]
|
||||
|
||||
'@oxc-parser/[email protected]2.0':
|
||||
resolution: {integrity: sha512-YHpx9N7Ln3a++Tc8rv+H7mrK1zyJQOAwCFg8LZ3lTs1T5afGWeZrLPhPT9HLnIwSjCyJqPWVMIrMxbjcmBr2oQ==}
|
||||
'@oxc-parser/[email protected]3.0':
|
||||
resolution: {integrity: sha512-8rIKWR2BFuifbIK/1XB9wTaSdtuJ25dlE7ZQYDnEwj/2xH2vHsxnvIjHT3ZjSVuLLwGGlSslIG/fbOJ8TV8rTw==}
|
||||
engines: {node: ^20.19.0 || >=22.12.0}
|
||||
cpu: [arm64]
|
||||
os: [openharmony]
|
||||
|
||||
'@oxc-parser/binding-wasm32-wasi@0.142.0':
|
||||
resolution: {integrity: sha512-3pLDyY3+oogW73RM5uehNgAiR/Xfb7fvO2Q1Z1gIqZ2+50XDVQmBVlRkHXZTU4gKnQHpwETNsYQVsJ3joVB2iA==}
|
||||
engines: {node: ^20.19.0 || >=22.12.0}
|
||||
cpu: [wasm32]
|
||||
|
||||
'@oxc-parser/[email protected]':
|
||||
resolution: {integrity: sha512-Had/VeVY28Oyb0K+Q4FV8KCzoBycIh93oDK6pCbya9lkzdq+ikMHMgBubsdqqlybjJmQRawCQRrnBRHyQwYvcQ==}
|
||||
'@oxc-parser/binding-win32-arm64-msvc@0.143.0':
|
||||
resolution: {integrity: sha512-5U9kQYMfRRI6Zq7KDxgbIP0RMnKrfn3gLepRMgJuRkPSUALTiRCk9d/uyhb4lGDjUdzwK7mBkKqhLgzBPCmLpQ==}
|
||||
engines: {node: ^20.19.0 || >=22.12.0}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
|
||||
'@oxc-parser/[email protected]2.0':
|
||||
resolution: {integrity: sha512-GGi3+YphVHavvgs6gum2UXoNCqzHAmPt/nXkn8ZQZstV2Q1qZD1Mn8fz/nWrDkefHQtrG/+1/XrbMxsBTo6Svw==}
|
||||
'@oxc-parser/[email protected]3.0':
|
||||
resolution: {integrity: sha512-25P7AaHk4R88Yv2XH4gToDVmh0cOu+bEURQU10CRrmvgabfRArSGAP5osmwUKeSUHj0VS50upbpbRWWW/m7mHA==}
|
||||
engines: {node: ^20.19.0 || >=22.12.0}
|
||||
cpu: [ia32]
|
||||
os: [win32]
|
||||
|
||||
'@oxc-parser/[email protected]2.0':
|
||||
resolution: {integrity: sha512-Ny/Wv4Us1LGC/ljwNTp+Hx3r/pH15EFfeDF0p+n898gt+TtRd6C9SccHcuUhDiNTb8s5tt7jdeAMDRQZ4Vq6hg==}
|
||||
'@oxc-parser/[email protected]3.0':
|
||||
resolution: {integrity: sha512-ORMh3JE1s6V7ySicdRK7vgaDQnn5o+UHg9ct989PlWHbel8O9ARrmWXM6kZjrBMtNucxNayQ8g69G0VfWzhANw==}
|
||||
engines: {node: ^20.19.0 || >=22.12.0}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
|
||||
'@oxc-project/[email protected]':
|
||||
resolution: {integrity: sha512-7W+2q5AKQVU36fkaryontrHn3YDt1RyUYXatw9i5H8ocYe2sPKSFB6eS8WNPeRKiN1qAWWZUPm7gwFzJGrccqQ==}
|
||||
|
||||
'@oxc-project/[email protected]':
|
||||
resolution: {integrity: sha512-u6JZdLBTLotrNC9Vd6vPssINdzcCzleKAH6EJKImQb7GtYvX5keN2dxkoK44stCc4tffE6QQRtZTXVSzsLUlWA==}
|
||||
|
||||
@@ -2202,9 +2194,6 @@ packages:
|
||||
resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==}
|
||||
engines: {node: '>=6'}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-Dz/6HxkrxgNehhxLVeyv8sad9UzF2xBVeaKBQNDfJ5XiSXmp2gTR0eO0RWiT2NCKS5aGP9jjkOMggTN90qU50A==}
|
||||
|
||||
@@ -2309,13 +2298,13 @@ packages:
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==}
|
||||
|
||||
[email protected]1.0:
|
||||
resolution: {integrity: sha512-NbeIEmUS2VUMjAkbiSNOKPJeV9wpCsr0660sUyKyMQbk4Iom0++nTLInVp4MJ+LfR4kORnw67bDi5tvO7YLnzA==}
|
||||
[email protected]2.2:
|
||||
resolution: {integrity: sha512-WXTXbmocrw7gqm1A1TQvFN0OgJ7hUSU6E1g6SPRIzzHFogUBhXByc7cYeOFVtJ2uODg7DP4VbESYBYnfbtBYsg==}
|
||||
engines: {node: ^20.19.0 || >=22.12.0}
|
||||
hasBin: true
|
||||
|
||||
[email protected]5:
|
||||
resolution: {integrity: sha512-mOKxayErlaONK8fm4LN3XNd99Qu4plTpn9h9qf8wxzjGrJDzuD84FYzZ81HCd6ZsWp++VWVwOzL286Pf2s2u4A==}
|
||||
[email protected]6:
|
||||
resolution: {integrity: sha512-s/xTCZCxTFvHbAN1OzuhNaN5YPJH2ail0XAkctKW1b+RUAG4nUL5UHLXwNko1h8aEeT2jspBXegMgPJd8zcuag==}
|
||||
peerDependencies:
|
||||
'@nuxt/kit': '>=3.0.0'
|
||||
react: '>=17.0.0'
|
||||
@@ -2491,8 +2480,8 @@ packages:
|
||||
resolution: {integrity: sha512-DqC6n3QQ77zdFpCMASA1a3Jlb64Hv2N2DciFGkO/4L9+q/IpIAuRlKOvCXabtRW6cQf8usbmM6BE/TOPysCdIA==}
|
||||
engines: {bun: '>=1.0.0', deno: '>=1.30.0', node: '>=8.0.0'}
|
||||
|
||||
lucide-react@1.28.0:
|
||||
resolution: {integrity: sha512-fARAFJULsGuDDydjp6+6blekG/sBIM29TerzLjc9bQUKAcEfrSc4ZQKb25KRz4OMKd87cZTb5dgq0w/T6KufVg==}
|
||||
lucide-react@1.31.0:
|
||||
resolution: {integrity: sha512-G8u2eEtoHUnUa9f8lbvqDhCiORMnYLdUEo06EEG9MQvHQrInKcX3Pa2TH39MM5qyzRcWETxB0+aOwAPI1g1kEg==}
|
||||
peerDependencies:
|
||||
react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||
|
||||
@@ -2552,8 +2541,8 @@ packages:
|
||||
resolution: {integrity: sha512-RyOSq98kuVfXB1emJ+NjBF0av8Ph3oBuqNy+Z5sFFfLhjYrkBQEB53V8u+U0RNTVwNo20WoPUwNkfKwZfrOqmQ==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
[email protected].2:
|
||||
resolution: {integrity: sha512-fxh3HpQ8vJtu/Mmnd4Xsur19jGjHGzRLMxptiDtOkbX7EVBgnafGSGDx1WGGVmJLClVh2LeeBMMo24IFv8wCyQ==}
|
||||
[email protected].3:
|
||||
resolution: {integrity: sha512-ehp9HEKr4wVJaBOUVxNFa+CNrsCCCZ6363/jbGhb7WpEmSRNIXjHBjFs5K2s2cXn7j/RhDieejsQJ6nfUwD6vQ==}
|
||||
engines: {node: '>= 8.0'}
|
||||
peerDependencies:
|
||||
'@types/node': '>= 8'
|
||||
@@ -2590,8 +2579,8 @@ packages:
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-M2L8jtPEAXj0CPmXbiW66THdr3OnDqA9IsU1hqv3CdxtVow3Bl9eXPdT9Opeji7L4AFrUZ016dJOs+CoTw66OA==}
|
||||
|
||||
[email protected].5:
|
||||
resolution: {integrity: sha512-9tIeZmBgxS0yYw+NN0mOfLxrH/r1l9CF/A4noKCwUfTyGIHZHrUmBnvOhbNmI4TgN7Piraf+BmIDU9pnZzjF7A==}
|
||||
[email protected].6:
|
||||
resolution: {integrity: sha512-loS6tjWWkr/IP+EV1yXUm9URB54QmZOp4+ZsMZNmeYxY8IZxLvO2esUegnXIDxj5DpK/4BsxwDGfGhlqodpkCQ==}
|
||||
peerDependencies:
|
||||
next: ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0
|
||||
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0
|
||||
@@ -2645,8 +2634,8 @@ packages:
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-o5CxfDw6bh7hoDv0NUUIcc0RqzJ9ipfUrzeKheKJ+vs4rXZnDlA9n4a/7R1cDjpmLjKLix4BgNVRmoDkm5rLSQ==}
|
||||
|
||||
[email protected]2.0:
|
||||
resolution: {integrity: sha512-kKR+jPiRJYJDexVoziIg/FVGvr1fT1FZSSJOk6tVoMKKSlsf1Cso+cgGCJkOEDWOP174vRntCPFKg+AS7InWvw==}
|
||||
[email protected]3.0:
|
||||
resolution: {integrity: sha512-ov0NzaDCOInknS7mP1cwKdJERt3utPW8ldjtdUXQ8Ty0GEFD08wk422vCUN0d7pST6kqtV7dxoI9w1Zi0l/9TA==}
|
||||
engines: {node: ^20.19.0 || >=22.12.0}
|
||||
|
||||
[email protected]:
|
||||
@@ -2718,8 +2707,8 @@ packages:
|
||||
peerDependencies:
|
||||
react: ^19.2.8
|
||||
|
||||
[email protected]4.0:
|
||||
resolution: {integrity: sha512-+hWvQP6GLco56mDwrbU4XnHix8t1z90ltZsDIrREl+jnQFQxYLX8oAzqe/Xn8nHpmoXTY5M6oEXrAhbP1qevNQ==}
|
||||
[email protected]5.0:
|
||||
resolution: {integrity: sha512-U2MTriFXnclmV4rOE20p2DcRFv5WEg3FIcBFOKcOLFHDVvGIMPvLTkTWefUsonmlaVy23khVDxDWym6uJVGOzw==}
|
||||
engines: {node: '>=18.0.0'}
|
||||
peerDependencies:
|
||||
react: ^16.8.0 || ^17 || ^18 || ^19
|
||||
@@ -2775,8 +2764,8 @@ packages:
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-AgZ3UOZm3YndfrJ4OYjgrT7bmCm/1iqkjvEfH/oYjzh6PD2qw4QuT3jjnXIrpdt4MTpMXclMT3lXbmRY+XRakw==}
|
||||
|
||||
[email protected]8.1:
|
||||
resolution: {integrity: sha512-XN8XIaDdKF+ziSQ3K23ndUcyhP7U3ze2gky6SPgYkuAOq54mH4Wdhwm7QylEQ3zlz0NzdX7/l1AgmJUZbdPI/Q==}
|
||||
[email protected]9.0:
|
||||
resolution: {integrity: sha512-JnEdYnd9WyBDIzunsEZtUF8n3cBKM9SlmySaos/7wwi4sEXKG1Zz4M64VFAyk+278erX01Fq2wHQ3p7OIdPriA==}
|
||||
engines: {node: '>=20'}
|
||||
peerDependencies:
|
||||
'@react-email/render': '*'
|
||||
@@ -2842,11 +2831,15 @@ packages:
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q==}
|
||||
|
||||
[email protected].7:
|
||||
resolution: {integrity: sha512-W6ZN4p58k8aDKA4XPcx2hpIQXBRAgyiWVkYhT7CvK6D3iAu7xjvVyhQHg2/iaKJZ1XVJ4r7XuwGL+WGEK37i9w==}
|
||||
[email protected].8:
|
||||
resolution: {integrity: sha512-UM/ByIoFra8yzV75n1o0Puu0bw5U/9UNnDacrJNspekBewIfsQ3D6ez1nvlWpt7aTsO6rujQtifBpycwIivqlg==}
|
||||
peerDependencies:
|
||||
'@types/react': 19.2.18
|
||||
react: ^18.0.0 || ^19.0.0 || ^19.0.0-rc
|
||||
react-dom: ^18.0.0 || ^19.0.0 || ^19.0.0-rc
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
|
||||
@@ -3005,8 +2998,8 @@ packages:
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
|
||||
|
||||
[email protected].0:
|
||||
resolution: {integrity: sha512-pn+CFpM0lwDeKwmOq1ZaBK/9sjorZcgqxki6MbY/jPEVd9vichIlmlD4HmQ5wdP5EgqQCFRaACBxMC7uEGc6lQ==}
|
||||
[email protected].1:
|
||||
resolution: {integrity: sha512-EU/eS7BH3XROHh2YnBefjM6DBKA6ZeMZEYQbj7NLWg5wHYlhB8B/Mayd5XsgWq+NFYccDOTemRpdETWR6Ka/lw==}
|
||||
engines: {node: ^20.19.0 || >=22.12.0}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
@@ -3181,39 +3174,39 @@ snapshots:
|
||||
|
||||
'@bcoe/[email protected]': {}
|
||||
|
||||
'@biomejs/[email protected].7':
|
||||
'@biomejs/[email protected].8':
|
||||
optionalDependencies:
|
||||
'@biomejs/cli-darwin-arm64': 2.5.7
|
||||
'@biomejs/cli-darwin-x64': 2.5.7
|
||||
'@biomejs/cli-linux-arm64': 2.5.7
|
||||
'@biomejs/cli-linux-arm64-musl': 2.5.7
|
||||
'@biomejs/cli-linux-x64': 2.5.7
|
||||
'@biomejs/cli-linux-x64-musl': 2.5.7
|
||||
'@biomejs/cli-win32-arm64': 2.5.7
|
||||
'@biomejs/cli-win32-x64': 2.5.7
|
||||
'@biomejs/cli-darwin-arm64': 2.5.8
|
||||
'@biomejs/cli-darwin-x64': 2.5.8
|
||||
'@biomejs/cli-linux-arm64': 2.5.8
|
||||
'@biomejs/cli-linux-arm64-musl': 2.5.8
|
||||
'@biomejs/cli-linux-x64': 2.5.8
|
||||
'@biomejs/cli-linux-x64-musl': 2.5.8
|
||||
'@biomejs/cli-win32-arm64': 2.5.8
|
||||
'@biomejs/cli-win32-x64': 2.5.8
|
||||
|
||||
'@biomejs/[email protected].7':
|
||||
'@biomejs/[email protected].8':
|
||||
optional: true
|
||||
|
||||
'@biomejs/[email protected].7':
|
||||
'@biomejs/[email protected].8':
|
||||
optional: true
|
||||
|
||||
'@biomejs/[email protected].7':
|
||||
'@biomejs/[email protected].8':
|
||||
optional: true
|
||||
|
||||
'@biomejs/[email protected].7':
|
||||
'@biomejs/[email protected].8':
|
||||
optional: true
|
||||
|
||||
'@biomejs/[email protected].7':
|
||||
'@biomejs/[email protected].8':
|
||||
optional: true
|
||||
|
||||
'@biomejs/[email protected].7':
|
||||
'@biomejs/[email protected].8':
|
||||
optional: true
|
||||
|
||||
'@biomejs/[email protected].7':
|
||||
'@biomejs/[email protected].8':
|
||||
optional: true
|
||||
|
||||
'@biomejs/[email protected].7':
|
||||
'@biomejs/[email protected].8':
|
||||
optional: true
|
||||
|
||||
'@borewit/[email protected]': {}
|
||||
@@ -3385,10 +3378,10 @@ snapshots:
|
||||
dependencies:
|
||||
'@formatjs/fast-memoize': 3.1.7
|
||||
|
||||
'@hookform/[email protected](@standard-schema/[email protected])([email protected]4.0([email protected]))([email protected])':
|
||||
'@hookform/[email protected](@standard-schema/[email protected])([email protected]5.0([email protected]))([email protected])':
|
||||
dependencies:
|
||||
'@standard-schema/utils': 0.3.0
|
||||
react-hook-form: 7.84.0([email protected])
|
||||
react-hook-form: 7.85.0([email protected])
|
||||
optionalDependencies:
|
||||
'@standard-schema/spec': 1.1.0
|
||||
zod: 4.4.3
|
||||
@@ -3589,72 +3582,63 @@ snapshots:
|
||||
dependencies:
|
||||
'@otplib/core': 13.4.1
|
||||
|
||||
'@oxc-parser/[email protected]2.0':
|
||||
'@oxc-parser/[email protected]3.0':
|
||||
optional: true
|
||||
|
||||
'@oxc-parser/[email protected]2.0':
|
||||
'@oxc-parser/[email protected]3.0':
|
||||
optional: true
|
||||
|
||||
'@oxc-parser/[email protected]2.0':
|
||||
'@oxc-parser/[email protected]3.0':
|
||||
optional: true
|
||||
|
||||
'@oxc-parser/[email protected]2.0':
|
||||
'@oxc-parser/[email protected]3.0':
|
||||
optional: true
|
||||
|
||||
'@oxc-parser/[email protected]2.0':
|
||||
'@oxc-parser/[email protected]3.0':
|
||||
optional: true
|
||||
|
||||
'@oxc-parser/[email protected]2.0':
|
||||
'@oxc-parser/[email protected]3.0':
|
||||
optional: true
|
||||
|
||||
'@oxc-parser/[email protected]2.0':
|
||||
'@oxc-parser/[email protected]3.0':
|
||||
optional: true
|
||||
|
||||
'@oxc-parser/[email protected]2.0':
|
||||
'@oxc-parser/[email protected]3.0':
|
||||
optional: true
|
||||
|
||||
'@oxc-parser/[email protected]2.0':
|
||||
'@oxc-parser/[email protected]3.0':
|
||||
optional: true
|
||||
|
||||
'@oxc-parser/[email protected]2.0':
|
||||
'@oxc-parser/[email protected]3.0':
|
||||
optional: true
|
||||
|
||||
'@oxc-parser/[email protected]2.0':
|
||||
'@oxc-parser/[email protected]3.0':
|
||||
optional: true
|
||||
|
||||
'@oxc-parser/[email protected]2.0':
|
||||
'@oxc-parser/[email protected]3.0':
|
||||
optional: true
|
||||
|
||||
'@oxc-parser/[email protected]2.0':
|
||||
'@oxc-parser/[email protected]3.0':
|
||||
optional: true
|
||||
|
||||
'@oxc-parser/[email protected]2.0':
|
||||
'@oxc-parser/[email protected]3.0':
|
||||
optional: true
|
||||
|
||||
'@oxc-parser/[email protected]2.0':
|
||||
'@oxc-parser/[email protected]3.0':
|
||||
optional: true
|
||||
|
||||
'@oxc-parser/[email protected]2.0':
|
||||
'@oxc-parser/[email protected]3.0':
|
||||
optional: true
|
||||
|
||||
'@oxc-parser/binding-wasm32-wasi@0.142.0':
|
||||
dependencies:
|
||||
'@emnapi/core': 1.11.2
|
||||
'@emnapi/runtime': 1.11.2
|
||||
'@napi-rs/wasm-runtime': 1.2.2(@emnapi/[email protected])(@emnapi/[email protected])
|
||||
'@oxc-parser/binding-win32-arm64-msvc@0.143.0':
|
||||
optional: true
|
||||
|
||||
'@oxc-parser/binding-win32-arm64[email protected]2.0':
|
||||
'@oxc-parser/binding-win32-ia32[email protected]3.0':
|
||||
optional: true
|
||||
|
||||
'@oxc-parser/binding-win32-ia32[email protected]2.0':
|
||||
'@oxc-parser/binding-win32-x64[email protected]3.0':
|
||||
optional: true
|
||||
|
||||
'@oxc-parser/[email protected]':
|
||||
optional: true
|
||||
|
||||
'@oxc-project/[email protected]': {}
|
||||
|
||||
'@oxc-project/[email protected]': {}
|
||||
|
||||
'@oxc-resolver/[email protected]':
|
||||
@@ -4232,7 +4216,7 @@ snapshots:
|
||||
obug: 2.1.4
|
||||
std-env: 4.2.0
|
||||
tinyrainbow: 3.1.1
|
||||
vitest: 4.1.10(@types/[email protected])(@vitest/[email protected])([email protected].0(@types/[email protected])([email protected])([email protected])([email protected])([email protected]))
|
||||
vitest: 4.1.10(@types/[email protected])(@vitest/[email protected])([email protected].1(@types/[email protected])([email protected])([email protected])([email protected])([email protected]))
|
||||
|
||||
'@vitest/[email protected]':
|
||||
dependencies:
|
||||
@@ -4243,13 +4227,13 @@ snapshots:
|
||||
chai: 6.2.2
|
||||
tinyrainbow: 3.1.1
|
||||
|
||||
'@vitest/[email protected]([email protected].0(@types/[email protected])([email protected])([email protected])([email protected])([email protected]))':
|
||||
'@vitest/[email protected]([email protected].1(@types/[email protected])([email protected])([email protected])([email protected])([email protected]))':
|
||||
dependencies:
|
||||
'@vitest/spy': 4.1.10
|
||||
estree-walker: 3.0.3
|
||||
magic-string: 0.30.21
|
||||
optionalDependencies:
|
||||
vite: 8.2.0(@types/[email protected])([email protected])([email protected])([email protected])([email protected])
|
||||
vite: 8.2.1(@types/[email protected])([email protected])([email protected])([email protected])([email protected])
|
||||
|
||||
'@vitest/[email protected]':
|
||||
dependencies:
|
||||
@@ -4370,9 +4354,9 @@ snapshots:
|
||||
esbuild: 0.25.12
|
||||
tsx: 4.23.12
|
||||
|
||||
[email protected]([email protected].2(@types/[email protected])):
|
||||
[email protected]([email protected].3(@types/[email protected])):
|
||||
optionalDependencies:
|
||||
mysql2: 3.23.2(@types/[email protected])
|
||||
mysql2: 3.23.3(@types/[email protected])
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
@@ -4469,10 +4453,6 @@ snapshots:
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]:
|
||||
dependencies:
|
||||
resolve-pkg-maps: 1.0.0
|
||||
|
||||
[email protected]:
|
||||
dependencies:
|
||||
resolve-pkg-maps: 1.0.0
|
||||
@@ -4567,13 +4547,13 @@ snapshots:
|
||||
readable-stream: 2.3.8
|
||||
setimmediate: 1.0.5
|
||||
|
||||
[email protected]1.0:
|
||||
[email protected]2.2:
|
||||
dependencies:
|
||||
fdir: 6.5.0([email protected])
|
||||
formatly: 0.3.0
|
||||
get-tsconfig: 4.14.0
|
||||
get-tsconfig: 4.14.1
|
||||
jiti: 2.7.0
|
||||
oxc-parser: 0.142.0
|
||||
oxc-parser: 0.143.0
|
||||
oxc-resolver: 11.24.2
|
||||
picomatch: 4.0.5
|
||||
smol-toml: 1.7.1
|
||||
@@ -4583,7 +4563,7 @@ snapshots:
|
||||
yaml: 2.9.0
|
||||
zod: 4.4.3
|
||||
|
||||
[email protected]5([email protected]):
|
||||
[email protected]6([email protected]):
|
||||
optionalDependencies:
|
||||
react: 19.2.8
|
||||
|
||||
@@ -4701,7 +4681,7 @@ snapshots:
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
lucide-react@1.28.0([email protected]):
|
||||
lucide-react@1.31.0([email protected]):
|
||||
dependencies:
|
||||
react: 19.2.8
|
||||
|
||||
@@ -4760,11 +4740,10 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
[email protected].2(@types/[email protected]):
|
||||
[email protected].3(@types/[email protected]):
|
||||
dependencies:
|
||||
'@types/node': 26.2.0
|
||||
aws-ssl-profiles: 1.1.2
|
||||
denque: 2.1.0
|
||||
generate-function: 2.3.1
|
||||
iconv-lite: 0.7.3
|
||||
long: 5.3.2
|
||||
@@ -4788,7 +4767,7 @@ snapshots:
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected].5([email protected](@types/[email protected])([email protected]([email protected]))([email protected]))([email protected])([email protected]):
|
||||
[email protected].6([email protected](@types/[email protected])([email protected]([email protected]))([email protected]))([email protected])([email protected]):
|
||||
dependencies:
|
||||
'@formatjs/intl-localematcher': 0.8.13
|
||||
'@parcel/watcher': 2.6.0
|
||||
@@ -4853,30 +4832,29 @@ snapshots:
|
||||
'@otplib/totp': 13.4.1
|
||||
'@otplib/uri': 13.4.1
|
||||
|
||||
[email protected]2.0:
|
||||
[email protected]3.0:
|
||||
dependencies:
|
||||
'@oxc-project/types': 0.142.0
|
||||
'@oxc-project/types': 0.143.0
|
||||
optionalDependencies:
|
||||
'@oxc-parser/binding-android-arm-eabi': 0.142.0
|
||||
'@oxc-parser/binding-android-arm64': 0.142.0
|
||||
'@oxc-parser/binding-darwin-arm64': 0.142.0
|
||||
'@oxc-parser/binding-darwin-x64': 0.142.0
|
||||
'@oxc-parser/binding-freebsd-x64': 0.142.0
|
||||
'@oxc-parser/binding-linux-arm-gnueabihf': 0.142.0
|
||||
'@oxc-parser/binding-linux-arm-musleabihf': 0.142.0
|
||||
'@oxc-parser/binding-linux-arm64-gnu': 0.142.0
|
||||
'@oxc-parser/binding-linux-arm64-musl': 0.142.0
|
||||
'@oxc-parser/binding-linux-ppc64-gnu': 0.142.0
|
||||
'@oxc-parser/binding-linux-riscv64-gnu': 0.142.0
|
||||
'@oxc-parser/binding-linux-riscv64-musl': 0.142.0
|
||||
'@oxc-parser/binding-linux-s390x-gnu': 0.142.0
|
||||
'@oxc-parser/binding-linux-x64-gnu': 0.142.0
|
||||
'@oxc-parser/binding-linux-x64-musl': 0.142.0
|
||||
'@oxc-parser/binding-openharmony-arm64': 0.142.0
|
||||
'@oxc-parser/binding-wasm32-wasi': 0.142.0
|
||||
'@oxc-parser/binding-win32-arm64-msvc': 0.142.0
|
||||
'@oxc-parser/binding-win32-ia32-msvc': 0.142.0
|
||||
'@oxc-parser/binding-win32-x64-msvc': 0.142.0
|
||||
'@oxc-parser/binding-android-arm-eabi': 0.143.0
|
||||
'@oxc-parser/binding-android-arm64': 0.143.0
|
||||
'@oxc-parser/binding-darwin-arm64': 0.143.0
|
||||
'@oxc-parser/binding-darwin-x64': 0.143.0
|
||||
'@oxc-parser/binding-freebsd-x64': 0.143.0
|
||||
'@oxc-parser/binding-linux-arm-gnueabihf': 0.143.0
|
||||
'@oxc-parser/binding-linux-arm-musleabihf': 0.143.0
|
||||
'@oxc-parser/binding-linux-arm64-gnu': 0.143.0
|
||||
'@oxc-parser/binding-linux-arm64-musl': 0.143.0
|
||||
'@oxc-parser/binding-linux-ppc64-gnu': 0.143.0
|
||||
'@oxc-parser/binding-linux-riscv64-gnu': 0.143.0
|
||||
'@oxc-parser/binding-linux-riscv64-musl': 0.143.0
|
||||
'@oxc-parser/binding-linux-s390x-gnu': 0.143.0
|
||||
'@oxc-parser/binding-linux-x64-gnu': 0.143.0
|
||||
'@oxc-parser/binding-linux-x64-musl': 0.143.0
|
||||
'@oxc-parser/binding-openharmony-arm64': 0.143.0
|
||||
'@oxc-parser/binding-win32-arm64-msvc': 0.143.0
|
||||
'@oxc-parser/binding-win32-ia32-msvc': 0.143.0
|
||||
'@oxc-parser/binding-win32-x64-msvc': 0.143.0
|
||||
|
||||
[email protected]:
|
||||
optionalDependencies:
|
||||
@@ -4981,7 +4959,7 @@ snapshots:
|
||||
react: 19.2.8
|
||||
scheduler: 0.27.0
|
||||
|
||||
[email protected]4.0([email protected]):
|
||||
[email protected]5.0([email protected]):
|
||||
dependencies:
|
||||
react: 19.2.8
|
||||
|
||||
@@ -5032,7 +5010,7 @@ snapshots:
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]8.1:
|
||||
[email protected]9.0:
|
||||
dependencies:
|
||||
postal-mime: 2.7.5
|
||||
standardwebhooks: 1.0.0
|
||||
@@ -5122,10 +5100,12 @@ snapshots:
|
||||
dependencies:
|
||||
atomic-sleep: 1.0.0
|
||||
|
||||
[email protected].7([email protected]([email protected]))([email protected]):
|
||||
[email protected].8(@types/[email protected])([email protected]([email protected]))([email protected]):
|
||||
dependencies:
|
||||
react: 19.2.8
|
||||
react-dom: 19.2.8([email protected])
|
||||
optionalDependencies:
|
||||
'@types/react': 19.2.18
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
@@ -5267,7 +5247,7 @@ snapshots:
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected].0(@types/[email protected])([email protected])([email protected])([email protected])([email protected]):
|
||||
[email protected].1(@types/[email protected])([email protected])([email protected])([email protected])([email protected]):
|
||||
dependencies:
|
||||
lightningcss: 1.33.0
|
||||
picomatch: 4.0.5
|
||||
@@ -5282,10 +5262,10 @@ snapshots:
|
||||
tsx: 4.23.12
|
||||
yaml: 2.9.0
|
||||
|
||||
[email protected](@types/[email protected])(@vitest/[email protected])([email protected].0(@types/[email protected])([email protected])([email protected])([email protected])([email protected])):
|
||||
[email protected](@types/[email protected])(@vitest/[email protected])([email protected].1(@types/[email protected])([email protected])([email protected])([email protected])([email protected])):
|
||||
dependencies:
|
||||
'@vitest/expect': 4.1.10
|
||||
'@vitest/mocker': 4.1.10([email protected].0(@types/[email protected])([email protected])([email protected])([email protected])([email protected]))
|
||||
'@vitest/mocker': 4.1.10([email protected].1(@types/[email protected])([email protected])([email protected])([email protected])([email protected]))
|
||||
'@vitest/pretty-format': 4.1.10
|
||||
'@vitest/runner': 4.1.10
|
||||
'@vitest/snapshot': 4.1.10
|
||||
@@ -5302,7 +5282,7 @@ snapshots:
|
||||
tinyexec: 1.3.0
|
||||
tinyglobby: 0.2.17
|
||||
tinyrainbow: 3.1.1
|
||||
vite: 8.2.0(@types/[email protected])([email protected])([email protected])([email protected])([email protected])
|
||||
vite: 8.2.1(@types/[email protected])([email protected])([email protected])([email protected])([email protected])
|
||||
why-is-node-running: 2.3.0
|
||||
optionalDependencies:
|
||||
'@types/node': 26.2.0
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import "./load-env";
|
||||
import { readdirSync, readFileSync } from "node:fs";
|
||||
import { dirname, resolve } from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import "./load-env";
|
||||
import { Cron } from "croner";
|
||||
import { lt, sql } from "drizzle-orm";
|
||||
import { env } from "../src/env";
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
import { existsSync } from "node:fs";
|
||||
import { dirname, resolve } from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
|
||||
const __dirname = dirname(fileURLToPath(import.meta.url));
|
||||
const ROOT = resolve(__dirname, "..");
|
||||
|
||||
// Standalone scripts (tsx) don't auto-load .env like Next.js does, so the
|
||||
// deploy step symlinks ${LIVE}/.env into the stage but nothing ever read it.
|
||||
// Node's loadEnvFile() never overrides already-set variables, so real shell
|
||||
// env wins; we load .env.local first so it takes precedence over .env.
|
||||
function loadEnvFile(): void {
|
||||
for (const name of [".env.local", ".env"]) {
|
||||
const file = resolve(ROOT, name);
|
||||
if (existsSync(file)) process.loadEnvFile(file);
|
||||
}
|
||||
}
|
||||
|
||||
loadEnvFile();
|
||||
+31
-12
@@ -1,5 +1,5 @@
|
||||
const fs = require("node:fs");
|
||||
const JSON5 = require("json5");
|
||||
const { parse, printParseErrorCode } = require("jsonc-parser");
|
||||
|
||||
const exampleFile = process.argv[2];
|
||||
const targetFile = process.argv[3];
|
||||
@@ -26,28 +26,47 @@ function deepMerge(target, source) {
|
||||
return result;
|
||||
}
|
||||
|
||||
function parseJsonc(file) {
|
||||
if (!fs.existsSync(file)) {
|
||||
return undefined;
|
||||
}
|
||||
const content = fs.readFileSync(file, "utf-8");
|
||||
const errors = [];
|
||||
const value = parse(content, errors, {
|
||||
allowTrailingComma: true,
|
||||
allowEmptyContent: true,
|
||||
});
|
||||
if (errors.length > 0) {
|
||||
console.error(
|
||||
`[merge-config] parse error in ${file}: ${errors
|
||||
.map((e) => printParseErrorCode(e.error))
|
||||
.join(", ")}`,
|
||||
);
|
||||
return undefined;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
let example;
|
||||
try {
|
||||
const content = fs.readFileSync(exampleFile, "utf-8");
|
||||
example = JSON5.parse(content);
|
||||
example = parseJsonc(exampleFile);
|
||||
} catch {
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
if (example === undefined) {
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
let current = {};
|
||||
try {
|
||||
if (fs.existsSync(targetFile)) {
|
||||
const content = fs.readFileSync(targetFile, "utf-8");
|
||||
current = JSON5.parse(content);
|
||||
const parsed = parseJsonc(targetFile);
|
||||
if (parsed !== undefined && parsed !== null) {
|
||||
current = parsed;
|
||||
}
|
||||
} catch {
|
||||
current = {};
|
||||
}
|
||||
|
||||
const merged = deepMerge(current, example);
|
||||
|
||||
const isJson5 = targetFile.endsWith(".json5");
|
||||
const output = isJson5
|
||||
? JSON5.stringify(merged, null, 4)
|
||||
: JSON.stringify(merged, null, 4);
|
||||
fs.writeFileSync(targetFile, `${output}\n`);
|
||||
fs.writeFileSync(targetFile, `${JSON.stringify(merged, null, 4)}\n`);
|
||||
+195
-49
@@ -116,6 +116,13 @@ BACKUP_DIR="${NITRO_BACKUP_DIR:-$EMULATOR_DIR/Database/Database Updates/backups}
|
||||
NITRO_CLIENT="${NITRO_CLIENT_SRC:-/var/www/Nitro-V3}"
|
||||
NITRO_RENDERER="${NITRO_RENDERER_SRC:-/var/www/Nitro_Render_V3}"
|
||||
NITRO_BRANCH="${NITRO_BRANCH:-}"
|
||||
# Dedicated per-repo yarn cache folders. The renderer + client installs run in
|
||||
# parallel and yarn 1.22 has no cache locking, so a single shared cache gets
|
||||
# corrupted and node_modules is left incomplete (vite/pixi.js missing) while
|
||||
# yarn still exits 0. Isolating each repo's cache via --cache-folder prevents
|
||||
# that race entirely.
|
||||
YARN_CACHE_DIR="${NITRO_YARN_CACHE_DIR:-/var/www/.yarn-cache}"
|
||||
mkdir -p "$YARN_CACHE_DIR" 2>/dev/null || true
|
||||
MIN_DISK_GB="${NITRO_MIN_DISK_GB:-5}"
|
||||
HEALTH_RETRIES="${NITRO_HEALTH_RETRIES:-12}"
|
||||
HEALTH_INTERVAL="${NITRO_HEALTH_INTERVAL:-5}"
|
||||
@@ -689,6 +696,9 @@ acquire_lock() {
|
||||
}
|
||||
|
||||
release_lock() {
|
||||
# Parallel job subshells inherit fd 9; releasing it here would drop the
|
||||
# main process's lock while the other jobs are still running.
|
||||
[ -n "$PARALLEL_JOB" ] && return 0
|
||||
flock -u 9 2>/dev/null || true
|
||||
rm -f "$LOCK_FILE" 2>/dev/null || true
|
||||
}
|
||||
@@ -712,7 +722,6 @@ die() {
|
||||
cursor_show
|
||||
exit 1
|
||||
}
|
||||
|
||||
cursor_hide() { tput civis 2>/dev/null || true; }
|
||||
cursor_show() { tput cnorm 2>/dev/null || true; }
|
||||
clear_line() { printf "\r\033[K"; }
|
||||
@@ -843,7 +852,12 @@ print(json.dumps(payload))
|
||||
cleanup_notify_failure() { $NOTIFY_FAILED && return; NOTIFY_FAILED=true; notify "FAILED" "$1"; }
|
||||
|
||||
cleanup_on_exit() {
|
||||
local ec=$?; cursor_show; release_lock
|
||||
local ec=$?
|
||||
# Parallel job subshells must never run the full cleanup (rollback,
|
||||
# lock release, notify); only the main process owns those. Their status
|
||||
# is captured by parallel_wait instead.
|
||||
if [ -n "$PARALLEL_JOB" ]; then return $ec; fi
|
||||
cursor_show; release_lock
|
||||
if [ $ec -ne 0 ] && [ "$ROLLBACK_NEEDED" = true ]; then
|
||||
echo -e "\n ${C_BG_RED}${C_WHITE}${C_BOLD} $(_t "ROLLBACK") ${C_RESET}"
|
||||
echo -e " $(_t "Restoring config back-ups from") $CONFIG_BACKUP_DIR/rollback..."
|
||||
@@ -853,7 +867,13 @@ cleanup_on_exit() {
|
||||
fi
|
||||
restore_binaries
|
||||
fi
|
||||
[ $ec -ne 0 ] && cleanup_notify_failure "Exit code $ec"
|
||||
# Preserve the real exit status: the last command in an EXIT trap defines
|
||||
# the script's exit code, so never let a guard/notify call overwrite it.
|
||||
if [ $ec -ne 0 ]; then
|
||||
cleanup_notify_failure "Exit code $ec"
|
||||
return $ec
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
trap cleanup_on_exit EXIT
|
||||
trap 'release_lock; cursor_show; exit 1' SIGINT SIGTERM
|
||||
@@ -891,17 +911,22 @@ detect_best_branch() {
|
||||
|
||||
git_update() {
|
||||
local repo="$1" branch="$2"
|
||||
local name; name=$(basename "$repo")
|
||||
local rc=1
|
||||
(
|
||||
cd "$repo" || { warn "Cannot access $repo"; exit 1; }
|
||||
# Only stash when the working tree is dirty, to avoid losing nothing
|
||||
# and to keep the pull fast-forwardable.
|
||||
cd "$repo" || { warn "Cannot access $repo"; exit 2; }
|
||||
# Only stash TRACKED changes (never untracked files — runtime config
|
||||
# data in public/configuration/ must stay in place) and only when the
|
||||
# working tree is dirty, to keep the pull fast-forwardable. The stash is
|
||||
# left in the repo (recoverable via `git stash list`), never dropped.
|
||||
if ! git diff --quiet 2>/dev/null || ! git diff --cached --quiet 2>/dev/null; then
|
||||
git stash --include-untracked 2>/dev/null || true
|
||||
git stash push -m "auto-update $(date +%F-%T)" 2>/dev/null \
|
||||
&& warn "Local tracked changes in $(basename "$repo") stashed (see 'git stash list')"
|
||||
fi
|
||||
local old_head; old_head=$(git rev-parse HEAD 2>/dev/null || echo "")
|
||||
local rb; rb=$(detect_best_branch "$repo" "$branch")
|
||||
[ "$rb" != "$branch" ] && info "Branch '$branch' not in $(basename "$repo"), using '$rb'"
|
||||
git checkout "$rb" 2>/dev/null || { warn "Cannot checkout '$rb' in $(basename "$repo")"; exit 1; }
|
||||
git checkout "$rb" 2>/dev/null || { warn "Cannot checkout '$rb' in $(basename "$repo")"; exit 2; }
|
||||
local pulled=1
|
||||
for attempt in 1 2 3; do
|
||||
if git pull --ff-only origin "$rb" 2>/dev/null; then
|
||||
@@ -912,17 +937,66 @@ git_update() {
|
||||
warn "Pull attempt %s failed in %s, retrying..." "$attempt" "$(basename "$repo")" >&2
|
||||
sleep 2
|
||||
done
|
||||
[ "$pulled" -ne 0 ] && { warn "Pull failed in $(basename "$repo")"; exit 1; }
|
||||
[ "$(git rev-parse HEAD 2>/dev/null)" != "$old_head" ]
|
||||
if [ "$pulled" -ne 0 ]; then
|
||||
warn "Pull failed in $(basename "$repo")"
|
||||
echo "git error: pull failed" > "$PARALLEL_STATE_DIR/giterror-$name"
|
||||
exit 2
|
||||
fi
|
||||
# Remember the pre-update commit so a later build failure can reset the
|
||||
# repo back to it; otherwise the next run would see HEAD==origin and
|
||||
# silently skip the never-built change.
|
||||
echo "$old_head" > "$PARALLEL_STATE_DIR/oldhead-$name"
|
||||
[ "$(git rev-parse HEAD 2>/dev/null)" != "$old_head" ] && exit 0
|
||||
exit 1
|
||||
)
|
||||
rc=$?
|
||||
# Return 0 = new commits fetched, 1 = nothing to do, 2 = real git error.
|
||||
return $rc
|
||||
}
|
||||
|
||||
clean_node_modules() {
|
||||
if [ ! -f "package.json" ]; then
|
||||
warn "clean_node_modules: no package.json found, skipping"
|
||||
return
|
||||
# Reverse a successful pull after a failed build, so the change is picked up
|
||||
# again on the next run instead of being silently skipped (HEAD would otherwise
|
||||
# equal origin and git_update would report "already up to date").
|
||||
git_revert_repo() {
|
||||
local repo="$1"
|
||||
local name; name=$(basename "$repo")
|
||||
[ -f "$PARALLEL_STATE_DIR/oldhead-$name" ] || return 0
|
||||
local prev; prev=$(cat "$PARALLEL_STATE_DIR/oldhead-$name" 2>/dev/null)
|
||||
[ -n "$prev" ] || return 0
|
||||
if git -C "$repo" reset --hard "$prev" >/dev/null 2>&1; then
|
||||
warn "Reverted $(basename "$repo") to $prev (build failed)"
|
||||
else
|
||||
warn "Could not revert $(basename "$repo") to $prev"
|
||||
fi
|
||||
rm -rf "node_modules" 2>/dev/null || sudo rm -rf "$(pwd)/node_modules" 2>/dev/null || true
|
||||
rm -f "$PARALLEL_STATE_DIR/oldhead-$name" 2>/dev/null || true
|
||||
}
|
||||
|
||||
# yarn install scoped to a per-repo cache folder. Parallel installs (renderer +
|
||||
# client) must never share a cache — yarn 1 corrupts the shared cache, leaving
|
||||
# node_modules incomplete (vite/pixi.js missing) while still exiting 0.
|
||||
# $1 = repo dir; remaining args forwarded to yarn. Runs inside the repo and
|
||||
# always returns the caller to SCRIPT_DIR so cwd never leaks between repos.
|
||||
yarn_install_repo() {
|
||||
local repo="$1"; shift
|
||||
local cache_dir="$YARN_CACHE_DIR/$(basename "$repo")"
|
||||
mkdir -p "$cache_dir" 2>/dev/null || true
|
||||
cd "$repo" 2>/dev/null || { warn "Cannot cd into %s" "$repo"; return 1; }
|
||||
# NODE_ENV may be exported as "production" via .env (the CMS runs in prod),
|
||||
# which makes yarn 1 skip devDependencies — vite is a devDep, so builds
|
||||
# would fail with "vite: not found". Force a non-production env so the full
|
||||
# dependency tree (including dev deps) is always installed.
|
||||
NODE_ENV=development yarn install --cache-folder "$cache_dir" "$@" >> "$LOG_FILE" 2>&1
|
||||
local rc=$?
|
||||
cd "$SCRIPT_DIR" 2>/dev/null || true
|
||||
return $rc
|
||||
}
|
||||
|
||||
# Nuke a repo's own yarn cache and node_modules for a truly clean reinstall.
|
||||
# Parallel installs may have corrupted the cache, so it must be discarded too.
|
||||
yarn_reset_repo() {
|
||||
local repo="$1"
|
||||
rm -rf "$repo/node_modules" "$YARN_CACHE_DIR/$(basename "$repo")" 2>/dev/null || true
|
||||
mkdir -p "$YARN_CACHE_DIR/$(basename "$repo")" 2>/dev/null || true
|
||||
}
|
||||
|
||||
# =============================================================================
|
||||
@@ -934,11 +1008,39 @@ PARALLEL_NAMES=()
|
||||
PARALLEL_FAILED=()
|
||||
PARALLEL_RESULTS=()
|
||||
|
||||
# Each parallel job runs in a subshell, so variable changes (HAD_UPDATES,
|
||||
# UPDATED_REPOS, NITRO_BUILT) made inside update_renderer/update_client would
|
||||
# otherwise be lost. Jobs persist their state to a per-job file which
|
||||
# parallel_wait re-reads back into the parent shell.
|
||||
PARALLEL_STATE_DIR="${TMPDIR:-/tmp}/nitro-parallel-$$"
|
||||
mkdir -p "$PARALLEL_STATE_DIR" 2>/dev/null || true
|
||||
|
||||
parallel_run() {
|
||||
local name="$1"; shift
|
||||
PARALLEL_NAMES+=("$name")
|
||||
(
|
||||
# This subshell inherits the parent's EXIT trap and lock fd 9. Mark it
|
||||
# so cleanup_on_exit/release_lock become no-ops here: the main process
|
||||
# owns rollback, lock release and notifications.
|
||||
PARALLEL_JOB=1
|
||||
# Snapshot inherited state so we only persist the delta back: the
|
||||
# emulator (run before the parallel phase) may already be in
|
||||
# UPDATED_REPOS, so emitting the full array would duplicate it.
|
||||
local _orig="${UPDATED_REPOS[*]:-}"
|
||||
"$@" >/dev/null 2>&1
|
||||
local rc=$?
|
||||
{
|
||||
# Note: exit status is captured via `wait`; only fold state vars back.
|
||||
echo "HAD_UPDATES=$HAD_UPDATES"
|
||||
echo "NITRO_BUILT=$NITRO_BUILT"
|
||||
for r in "${UPDATED_REPOS[@]:-}"; do
|
||||
case " $_orig " in
|
||||
*" $r "*) ;;
|
||||
*) printf 'UPDATED_REPOS+=(\047%s\047)\n' "$r" ;;
|
||||
esac
|
||||
done
|
||||
} > "$PARALLEL_STATE_DIR/$name"
|
||||
exit $rc
|
||||
) &
|
||||
PARALLEL_PIDS+=($!)
|
||||
}
|
||||
@@ -956,10 +1058,17 @@ parallel_wait() {
|
||||
PARALLEL_RESULTS+=("__PARALLEL_FAIL__${name}")
|
||||
PARALLEL_FAILED+=("$name")
|
||||
fi
|
||||
# Fold the job's persisted state back into the parent shell so the
|
||||
# summary reflects renderer/client updates, not just the emulator.
|
||||
if [ -f "$PARALLEL_STATE_DIR/$name" ]; then
|
||||
. "$PARALLEL_STATE_DIR/$name"
|
||||
rm -f "$PARALLEL_STATE_DIR/$name"
|
||||
fi
|
||||
i=$((i+1))
|
||||
done
|
||||
PARALLEL_PIDS=()
|
||||
PARALLEL_NAMES=()
|
||||
rm -rf "$PARALLEL_STATE_DIR" 2>/dev/null || true
|
||||
}
|
||||
|
||||
parallel_failed() {
|
||||
@@ -1087,7 +1196,15 @@ preflight_check() {
|
||||
# =============================================================================
|
||||
update_emulator() {
|
||||
step 2 8 "Update & Build Emulator"
|
||||
local grc=1
|
||||
if git_update "$EMULATOR_REPO" "$NITRO_BRANCH"; then
|
||||
grc=0
|
||||
else
|
||||
grc=$?
|
||||
fi
|
||||
if [ $grc -eq 2 ]; then
|
||||
die "Emulator update failed (git error)"
|
||||
elif [ $grc -eq 0 ]; then
|
||||
HAD_UPDATES=true; UPDATED_REPOS+=("Emulator")
|
||||
cd "$EMULATOR_MODULE"
|
||||
backup_binaries
|
||||
@@ -1103,6 +1220,7 @@ update_emulator() {
|
||||
else
|
||||
spinner_stop fail
|
||||
tail -30 "$LOG_FILE" | grep -E '(ERROR|FAILURE|BUILD)' || true
|
||||
git_revert_repo "$EMULATOR_REPO"
|
||||
die "Maven build failed (see: %s)" "$LOG_FILE"
|
||||
fi
|
||||
local jar=$(find target -maxdepth 1 -name 'Polaris-*-jar-with-dependencies.jar' -printf '%T@ %p\n' 2>/dev/null | sort -rn | sed -n '1s/^[0-9.]* //p' | xargs -r basename 2>/dev/null || echo "")
|
||||
@@ -1126,21 +1244,32 @@ EOJ
|
||||
|
||||
update_renderer() {
|
||||
step 3 8 "Update Nitro_Render_V3"
|
||||
local grc=1
|
||||
if git_update "$NITRO_RENDERER" "$NITRO_BRANCH"; then
|
||||
grc=0
|
||||
else
|
||||
grc=$?
|
||||
fi
|
||||
if [ $grc -eq 2 ]; then
|
||||
# Let the caller fail the parallel group; the state file records it.
|
||||
warn "Renderer update failed (git error)"
|
||||
return 1
|
||||
elif [ $grc -eq 0 ]; then
|
||||
HAD_UPDATES=true; UPDATED_REPOS+=("Nitro_Render_V3")
|
||||
cd "$NITRO_RENDERER"
|
||||
spinner_start "Installing deps..."
|
||||
if ! yarn install --frozen-lockfile --prefer-offline >> "$LOG_FILE" 2>&1; then
|
||||
if ! yarn_install_repo "$NITRO_RENDERER" --frozen-lockfile --prefer-offline; then
|
||||
warn "Renderer: yarn install failed — cleaning node_modules and retrying"
|
||||
clean_node_modules
|
||||
yarn install >> "$LOG_FILE" 2>&1 || { spinner_stop fail; die "yarn install failed (see: %s)" "$LOG_FILE"; }
|
||||
yarn_reset_repo "$NITRO_RENDERER"
|
||||
yarn_install_repo "$NITRO_RENDERER" || { spinner_stop fail; git_revert_repo "$NITRO_RENDERER"; die "yarn install failed (see: %s)" "$LOG_FILE"; }
|
||||
fi
|
||||
cd "$NITRO_RENDERER"
|
||||
if [ ! -d node_modules/pixi.js ]; then
|
||||
warn "Renderer: node_modules incomplete — cleaning and doing full install"
|
||||
clean_node_modules
|
||||
# Parallel yarn installs (renderer + client) can corrupt the shared
|
||||
# yarn cache, so force a clean fetch with --no-cache as a last resort.
|
||||
yarn install --no-cache >> "$LOG_FILE" 2>&1 || { spinner_stop fail; die "yarn install failed (see: %s)" "$LOG_FILE"; }
|
||||
warn "Renderer: node_modules incomplete — resetting repo cache and doing full install"
|
||||
# Parallel yarn installs can corrupt a shared cache; resetting the
|
||||
# repo's own cache folder guarantees a clean fetch from the registry.
|
||||
yarn_reset_repo "$NITRO_RENDERER"
|
||||
yarn_install_repo "$NITRO_RENDERER" || { spinner_stop fail; git_revert_repo "$NITRO_RENDERER"; die "yarn install failed (see: %s)" "$LOG_FILE"; }
|
||||
fi
|
||||
spinner_stop ok; ok "Renderer dependencies installed"
|
||||
else
|
||||
@@ -1152,7 +1281,16 @@ update_renderer() {
|
||||
|
||||
update_client() {
|
||||
step 4 8 "Update & Build Nitro-V3"
|
||||
local grc=1
|
||||
if git_update "$NITRO_CLIENT" "$NITRO_BRANCH"; then
|
||||
grc=0
|
||||
else
|
||||
grc=$?
|
||||
fi
|
||||
if [ $grc -eq 2 ]; then
|
||||
warn "Nitro-V3 update failed (git error)"
|
||||
return 1
|
||||
elif [ $grc -eq 0 ]; then
|
||||
HAD_UPDATES=true; NITRO_BUILT=true; UPDATED_REPOS+=("Nitro-V3")
|
||||
cd "$NITRO_CLIENT"
|
||||
backup_binaries
|
||||
@@ -1160,17 +1298,19 @@ update_client() {
|
||||
spinner_start "Installing deps..."
|
||||
# yarn 1 can "succeed" while leaving node_modules incomplete, so verify
|
||||
# that the vite build binary actually exists before attempting a build.
|
||||
if ! yarn install --frozen-lockfile --prefer-offline >> "$LOG_FILE" 2>&1; then
|
||||
if ! yarn_install_repo "$NITRO_CLIENT" --frozen-lockfile --prefer-offline; then
|
||||
warn "Nitro-V3: yarn install failed — cleaning node_modules and retrying"
|
||||
clean_node_modules
|
||||
yarn install >> "$LOG_FILE" 2>&1 || { spinner_stop fail; die "yarn install failed (see: %s)" "$LOG_FILE"; }
|
||||
yarn_reset_repo "$NITRO_CLIENT"
|
||||
yarn_install_repo "$NITRO_CLIENT" || { spinner_stop fail; git_revert_repo "$NITRO_CLIENT"; die "yarn install failed (see: %s)" "$LOG_FILE"; }
|
||||
fi
|
||||
cd "$NITRO_CLIENT"
|
||||
if [ ! -x node_modules/.bin/vite ]; then
|
||||
warn "Nitro-V3: vite missing after install — cleaning node_modules and doing full install"
|
||||
clean_node_modules
|
||||
# Parallel yarn installs (renderer + client) can corrupt the shared
|
||||
# yarn cache, so force a clean fetch with --no-cache as a last resort.
|
||||
yarn install --no-cache >> "$LOG_FILE" 2>&1 || { spinner_stop fail; die "yarn install failed (see: %s)" "$LOG_FILE"; }
|
||||
warn "Nitro-V3: vite missing after install — resetting repo cache and doing full install"
|
||||
# Parallel yarn installs can corrupt a shared cache; resetting the
|
||||
# repo's own cache folder guarantees a clean fetch from the registry.
|
||||
yarn_reset_repo "$NITRO_CLIENT"
|
||||
yarn_install_repo "$NITRO_CLIENT" || { spinner_stop fail; git_revert_repo "$NITRO_CLIENT"; die "yarn install failed (see: %s)" "$LOG_FILE"; }
|
||||
cd "$NITRO_CLIENT"
|
||||
fi
|
||||
spinner_stop ok
|
||||
spinner_start "Building frontend..."
|
||||
@@ -1179,6 +1319,7 @@ update_client() {
|
||||
else
|
||||
spinner_stop fail
|
||||
tail -30 "$LOG_FILE" || true
|
||||
git_revert_repo "$NITRO_CLIENT"
|
||||
die "yarn build failed (see: %s)" "$LOG_FILE"
|
||||
fi
|
||||
else
|
||||
@@ -1293,6 +1434,9 @@ do_cleanup() {
|
||||
ok "Old config backups pruned"
|
||||
fi
|
||||
[ -d "$BACKUP_DIR" ] && find "$BACKUP_DIR" -maxdepth 1 -name '*.sql' -printf '%T@ %p\n' 2>/dev/null | sort -rn | tail -n +6 | sed 's/^[0-9.]* //' | xargs -r rm -f || true
|
||||
# NOTE: the per-repo yarn cache ($YARN_CACHE_DIR) is intentionally kept
|
||||
# between updates — it is what makes parallel installs fast and reliable.
|
||||
# It is only removed on an explicit "Clean" (menu) action.
|
||||
yarn cache clean 2>/dev/null || true
|
||||
rm -rf /tmp/nitro-* /tmp/epicnext-* 2>/dev/null || true
|
||||
# Clean old Maven build artifacts (older than 7 days)
|
||||
@@ -1459,7 +1603,9 @@ cmd_update() {
|
||||
echo ""
|
||||
acquire_lock
|
||||
DRY_RUN=${DRY_RUN:-false}
|
||||
info "Site: %s | Branch: %s | Mode: %s" "${NITRO_SITE_URL:-?}" "$NITRO_BRANCH" "${SELECTIVE_UPDATE:-full}${DRY_RUN:+ [DRY-RUN]}"
|
||||
local mode_label="${SELECTIVE_UPDATE:-full}"
|
||||
[ "$DRY_RUN" = true ] && mode_label="$mode_label [DRY-RUN]"
|
||||
info "Site: %s | Branch: %s | Mode: %s" "${NITRO_SITE_URL:-?}" "$NITRO_BRANCH" "$mode_label"
|
||||
info "Log: %s" "$LOG_FILE"
|
||||
if [ "$DRY_RUN" = true ]; then
|
||||
info "Dry-run: would update repos, run DB backups, build, sync configs, cleanup, restart services"
|
||||
@@ -1485,17 +1631,17 @@ cmd_update() {
|
||||
*)
|
||||
RUN_ROLLBACK=true
|
||||
update_emulator
|
||||
if [ "$HAD_UPDATES" = true ]; then
|
||||
parallel_run "renderer" update_renderer
|
||||
parallel_run "client" update_client
|
||||
parallel_wait
|
||||
if ! parallel_failed; then
|
||||
warn "Parallel build(s) failed: %s — aborting before restart" "${PARALLEL_FAILED[*]}"
|
||||
ROLLBACK_NEEDED=true
|
||||
die "Build failure in: %s" "${PARALLEL_FAILED[*]}"
|
||||
fi
|
||||
else
|
||||
info "No repo updates; skipping parallel builds"
|
||||
# Always attempt the renderer + client builds in parallel. Each
|
||||
# update_* function runs git_update itself and skips when its repo
|
||||
# is already up to date, so gating these on the emulator's update
|
||||
# status would wrongly skip them when only client/renderer changed.
|
||||
parallel_run "renderer" update_renderer
|
||||
parallel_run "client" update_client
|
||||
parallel_wait
|
||||
if ! parallel_failed; then
|
||||
warn "Parallel build(s) failed: %s — aborting before restart" "${PARALLEL_FAILED[*]}"
|
||||
ROLLBACK_NEEDED=true
|
||||
die "Build failure in: %s" "${PARALLEL_FAILED[*]}"
|
||||
fi
|
||||
sync_configs
|
||||
do_cleanup
|
||||
@@ -1735,14 +1881,14 @@ cmd_flyaway_repair() {
|
||||
# Reinstall dependencies if package.json exists
|
||||
if [ -f "$repo/package.json" ]; then
|
||||
spinner_start "Installing deps for %s..." "$name"
|
||||
if yarn install --frozen-lockfile --prefer-offline 2>/dev/null; then
|
||||
if yarn_install_repo "$repo" --frozen-lockfile --prefer-offline 2>/dev/null; then
|
||||
spinner_stop ok
|
||||
ok "Deps reinstalled for %s" "$name"
|
||||
else
|
||||
spinner_stop fail
|
||||
warn "yarn install failed for %s — cleaning node_modules and retrying" "$name"
|
||||
rm -rf "$repo/node_modules" 2>/dev/null || true
|
||||
yarn install --frozen-lockfile --prefer-offline 2>/dev/null || warn "yarn install still failed for %s" "$name"
|
||||
warn "yarn install failed for %s — resetting repo and retrying" "$name"
|
||||
yarn_reset_repo "$repo"
|
||||
yarn_install_repo "$repo" --frozen-lockfile --prefer-offline 2>/dev/null || warn "yarn install still failed for %s" "$name"
|
||||
fi
|
||||
fi
|
||||
repaired=$((repaired + 1))
|
||||
@@ -1917,11 +2063,11 @@ cmd_clean() {
|
||||
echo -e " ${C_BOLD}7)${C_RESET} $(_t "Maven") ${C_BOLD}0)${C_RESET} $(_t "Return")"
|
||||
echo -en "\n $(_t "Select:") "; local c; read -rt 30 c
|
||||
case "$c" in
|
||||
1) yarn cache clean 2>/dev/null && ok "Yarn cleaned" ;;
|
||||
1) yarn cache clean 2>/dev/null; rm -rf "$YARN_CACHE_DIR" 2>/dev/null; ok "Yarn cleaned" ;;
|
||||
2) cd "$SCRIPT_DIR" && rm -rf .next 2>/dev/null && ok "Next.js cache cleared" ;;
|
||||
3) redis-cli FLUSHALL 2>/dev/null && ok "Redis flushed" || warn "Redis N/A" ;;
|
||||
4) find "$EMULATOR_DIR" -name "*.log" -mtime +14 -exec rm -f {} \; 2>/dev/null; ok "Logs cleaned" ;;
|
||||
5) yarn cache clean 2>/dev/null; find "$EMULATOR_DIR" -name "*.log" -mtime +14 -exec rm -f {} \; 2>/dev/null; rm -rf /tmp/nitro-* /tmp/epicnext-* 2>/dev/null; ok "Full cleanup" ;;
|
||||
5) yarn cache clean 2>/dev/null; rm -rf "$YARN_CACHE_DIR" 2>/dev/null; find "$EMULATOR_DIR" -name "*.log" -mtime +14 -exec rm -f {} \; 2>/dev/null; rm -rf /tmp/nitro-* /tmp/epicnext-* 2>/dev/null; ok "Full cleanup" ;;
|
||||
6) command -v docker &>/dev/null && docker system prune -f 2>/dev/null && ok "Docker pruned" || warn "Docker N/A" ;;
|
||||
7) find "$EMULATOR_MODULE" -maxdepth 3 -name '*.jar' -mtime +7 -exec rm -f {} \; 2>/dev/null; ok "Old Maven artifacts cleaned" ;;
|
||||
esac
|
||||
|
||||
Reference in new issue
Block a user