68a749f7af
The barrel src/actions/wholesale/index.ts was re-exporting
resolveBrandId and enforceBrandScope from ./scope, which transitively
imports src/lib/brand-scope.ts ("server-only"). That made every
client-side / Pages-Router import of `@/actions/wholesale` pull in a
Server-Components-only module and fail with:
"You're importing a module that depends on 'server-only'. This
API is only available in Server Components in the App Router, but
you are using it in the Pages Router."
Caught by `npm run build`, surfaced via
src/app/wholesale/employee/page.tsx → @/actions/wholesale → scope →
brand-scope.
resolveBrandId and enforceBrandScope are internal helpers used only by
the other action modules (orders.ts, customers.ts, products.ts) via
direct `./scope` imports. They were never part of the old wholesale.ts
public surface — added to the barrel in commit bd16900 by mistake.
Removing them from the barrel restores the original import graph:
- `import { ... } from "@/actions/wholesale"` → barrel → only types
and action functions, no server-only transitive imports
- Action modules still import `./scope` directly (unchanged)
Verified: `npm run build` now compiles successfully (fails only on the
pre-existing Stripe API version type errors that are unrelated to this
refactor). `npx vitest run` still 175/175 passing.
76 lines
1.9 KiB
TypeScript
76 lines
1.9 KiB
TypeScript
/**
|
|
* Barrel re-export for the wholesale action set.
|
|
*
|
|
* Source modules live next to this file:
|
|
* - orders.ts — order CRUD + dashboard stats
|
|
* - customers.ts — wholesale customer CRUD
|
|
* - products.ts — wholesale product CRUD
|
|
* - settings.ts — wholesale_settings + public read
|
|
* - deposits.ts — deposit recording + bulk actions
|
|
* - notifications.ts — email/SMS notification queue
|
|
* - webhooks.ts — outbound webhook settings + dispatch
|
|
* - scope.ts — internal brand-scoping helpers (NOT re-exported here)
|
|
* - types.ts — shared type definitions
|
|
*
|
|
* Existing imports of `@/actions/wholesale` keep working. New code should
|
|
* import directly from the focused modules to keep the dependency graph
|
|
* tight.
|
|
*/
|
|
|
|
export type {
|
|
WholesaleOrder,
|
|
WholesaleCustomer,
|
|
WholesaleProduct,
|
|
NotificationRecipient,
|
|
WholesaleSettings,
|
|
WholesaleDashboardStats,
|
|
WholesaleNotification,
|
|
WebhookSettings,
|
|
} from "./types";
|
|
|
|
export {
|
|
getWholesaleOrders,
|
|
getWholesalePickupOrders,
|
|
getWholesaleDashboardStats,
|
|
markWholesaleOrderFulfilled,
|
|
updateWholesaleOrderStatus,
|
|
deleteWholesaleOrder,
|
|
} from "./orders";
|
|
|
|
export {
|
|
getWholesaleCustomers,
|
|
saveWholesaleCustomer,
|
|
deleteWholesaleCustomer,
|
|
} from "./customers";
|
|
|
|
export {
|
|
getWholesaleProducts,
|
|
saveWholesaleProduct,
|
|
deleteWholesaleProduct,
|
|
} from "./products";
|
|
|
|
export {
|
|
getWholesaleSettings,
|
|
getWholesaleSettingsPublic,
|
|
saveWholesaleSettings,
|
|
} from "./settings";
|
|
|
|
export {
|
|
recordWholesaleDeposit,
|
|
bulkFulfillWholesaleOrders,
|
|
bulkRecordWholesaleDeposit,
|
|
} from "./deposits";
|
|
|
|
export {
|
|
getWholesaleNotificationStats,
|
|
getWholesalePendingNotifications,
|
|
markWholesaleNotificationSent,
|
|
enqueueWholesaleNotification,
|
|
} from "./notifications";
|
|
|
|
export {
|
|
getWebhookSettings,
|
|
saveWebhookSettings,
|
|
enqueueWholesaleWebhook,
|
|
getRecentWebhookActivity,
|
|
} from "./webhooks"; |