From dd7c54d913fc7701f9ecb46fd0ae2bfdbc9aab60 Mon Sep 17 00:00:00 2001 From: Hyko Date: Sun, 12 Apr 2026 20:45:55 -0400 Subject: [PATCH] feat: add modules/storage export and bundle config files - Add `./modules/storage` package export pointing to `modules.storage.js` - Add `modules/*/config.js` to tsup build entries for server-only configs - Add `@zen/core/modules/storage` to external dependencies in tsup config - Add `src/modules/modules.storage.js` to the second tsup build target - Update storage handler to import via `@zen/core/modules/storage` alias - Rename unused `request` param to `_request` in `handleGetFile` --- package.json | 3 +++ src/core/api/handlers/storage.js | 4 ++-- tsup.config.js | 6 ++++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 81e7d33..d8d758c 100644 --- a/package.json +++ b/package.json @@ -133,6 +133,9 @@ "./modules/actions": { "import": "./dist/modules/modules.actions.js" }, + "./modules/storage": { + "import": "./dist/modules/modules.storage.js" + }, "./modules/posts/crud": { "import": "./dist/modules/posts/crud.js" }, diff --git a/src/core/api/handlers/storage.js b/src/core/api/handlers/storage.js index 1af4279..5dfa236 100644 --- a/src/core/api/handlers/storage.js +++ b/src/core/api/handlers/storage.js @@ -6,7 +6,7 @@ import { validateSession } from '../../../features/auth/lib/session.js'; import { cookies } from 'next/headers'; import { getSessionCookieName } from '../../../shared/lib/appConfig.js'; -import { getAllStoragePublicPrefixes } from '../../../../modules/modules.storage.js'; +import { getAllStoragePublicPrefixes } from '@zen/core/modules/storage'; import { getFile } from '@zen/core/storage'; // Get cookie name from environment or use default @@ -18,7 +18,7 @@ const COOKIE_NAME = getSessionCookieName(); * @param {string} fileKey - The file key/path in storage * @returns {Promise} File response or error object */ -export async function handleGetFile(request, fileKey) { +export async function handleGetFile(_request, fileKey) { try { // Reject any path that contains traversal sequences, empty segments, or // absolute path indicators before splitting or passing to the storage backend. diff --git a/tsup.config.js b/tsup.config.js index 93e766d..07dbe6e 100644 --- a/tsup.config.js +++ b/tsup.config.js @@ -28,10 +28,11 @@ export default defineConfig([ 'src/modules/init.js', 'src/modules/pages.js', 'src/modules/modules.metadata.js', - // Module actions, API and CRUD (bundled to resolve relative imports) + // Module actions, API, CRUD and server-only config (bundled to resolve relative imports) 'src/modules/*/actions.js', 'src/modules/*/api.js', 'src/modules/*/crud.js', + 'src/modules/*/config.js', 'src/shared/lib/metadata/index.js', ], format: ['esm'], @@ -39,7 +40,7 @@ export default defineConfig([ splitting: false, sourcemap: false, clean: true, - external: ['react', 'react-dom', 'next', 'pg', 'dotenv', 'dotenv/config', 'resend', '@react-email/components', 'node-cron', 'readline', 'crypto', 'url', 'fs', 'path', 'net', 'dns', 'tls', '@zen/core/database', '@zen/core/email', '@zen/core/email/templates', '@zen/core/storage', '@zen/core/toast', '@zen/core/modules/actions', '@aws-sdk/client-s3', '@aws-sdk/s3-request-presigner'], + external: ['react', 'react-dom', 'next', 'pg', 'dotenv', 'dotenv/config', 'resend', '@react-email/components', 'node-cron', 'readline', 'crypto', 'url', 'fs', 'path', 'net', 'dns', 'tls', '@zen/core/database', '@zen/core/email', '@zen/core/email/templates', '@zen/core/storage', '@zen/core/toast', '@zen/core/modules/actions', '@zen/core/modules/storage', '@aws-sdk/client-s3', '@aws-sdk/s3-request-presigner'], noExternal: [], bundle: true, banner: { @@ -63,6 +64,7 @@ export default defineConfig([ 'src/features/admin/navigation.server.js', 'src/modules/page.js', 'src/modules/modules.actions.js', + 'src/modules/modules.storage.js', ], format: ['esm'], dts: false,