@rovela-ai/sdk 0.1.18 → 0.1.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/api/auth.js +5 -11
- package/dist/admin/api/auth.js.map +1 -1
- package/dist/admin/api/categories.js +43 -50
- package/dist/admin/api/categories.js.map +1 -1
- package/dist/admin/api/check.js +6 -9
- package/dist/admin/api/check.js.map +1 -1
- package/dist/admin/api/customers.js +17 -21
- package/dist/admin/api/customers.js.map +1 -1
- package/dist/admin/api/index.js +10 -38
- package/dist/admin/api/index.js.map +1 -1
- package/dist/admin/api/orders.js +30 -35
- package/dist/admin/api/orders.js.map +1 -1
- package/dist/admin/api/products.js +56 -66
- package/dist/admin/api/products.js.map +1 -1
- package/dist/admin/api/refund.js +26 -29
- package/dist/admin/api/refund.js.map +1 -1
- package/dist/admin/api/settings.js +17 -21
- package/dist/admin/api/settings.js.map +1 -1
- package/dist/admin/api/setup.js +17 -20
- package/dist/admin/api/setup.js.map +1 -1
- package/dist/admin/api/stats.js +14 -17
- package/dist/admin/api/stats.js.map +1 -1
- package/dist/admin/components/AdminGuard.js +13 -17
- package/dist/admin/components/AdminGuard.js.map +1 -1
- package/dist/admin/components/AdminHeader.js +8 -11
- package/dist/admin/components/AdminHeader.js.map +1 -1
- package/dist/admin/components/AdminLayout.js +5 -8
- package/dist/admin/components/AdminLayout.js.map +1 -1
- package/dist/admin/components/AdminLoginForm.js +11 -14
- package/dist/admin/components/AdminLoginForm.js.map +1 -1
- package/dist/admin/components/AdminNav.js +11 -14
- package/dist/admin/components/AdminNav.js.map +1 -1
- package/dist/admin/components/AdminSetupForm.js +11 -14
- package/dist/admin/components/AdminSetupForm.js.map +1 -1
- package/dist/admin/components/InventoryEditor.js +16 -19
- package/dist/admin/components/InventoryEditor.js.map +1 -1
- package/dist/admin/components/LowStockAlert.js +6 -9
- package/dist/admin/components/LowStockAlert.js.map +1 -1
- package/dist/admin/components/OrderDetails.js +15 -18
- package/dist/admin/components/OrderDetails.js.map +1 -1
- package/dist/admin/components/OrderTable.js +13 -16
- package/dist/admin/components/OrderTable.js.map +1 -1
- package/dist/admin/components/ProductForm.js +17 -20
- package/dist/admin/components/ProductForm.js.map +1 -1
- package/dist/admin/components/ProductTable.js +15 -18
- package/dist/admin/components/ProductTable.js.map +1 -1
- package/dist/admin/components/RecentOrders.js +6 -9
- package/dist/admin/components/RecentOrders.js.map +1 -1
- package/dist/admin/components/RefundDialog.js +12 -15
- package/dist/admin/components/RefundDialog.js.map +1 -1
- package/dist/admin/components/StatsCards.js +7 -10
- package/dist/admin/components/StatsCards.js.map +1 -1
- package/dist/admin/components/StoreSettings.js +10 -13
- package/dist/admin/components/StoreSettings.js.map +1 -1
- package/dist/admin/components/index.js +16 -35
- package/dist/admin/components/index.js.map +1 -1
- package/dist/admin/config.js +12 -54
- package/dist/admin/config.js.map +1 -1
- package/dist/admin/hooks/index.js +4 -11
- package/dist/admin/hooks/index.js.map +1 -1
- package/dist/admin/hooks/useAdminAuth.js +9 -12
- package/dist/admin/hooks/useAdminAuth.js.map +1 -1
- package/dist/admin/hooks/useAdminOrders.js +11 -14
- package/dist/admin/hooks/useAdminOrders.js.map +1 -1
- package/dist/admin/hooks/useAdminProducts.js +13 -16
- package/dist/admin/hooks/useAdminProducts.js.map +1 -1
- package/dist/admin/hooks/useAdminStats.js +11 -14
- package/dist/admin/hooks/useAdminStats.js.map +1 -1
- package/dist/admin/index.js +13 -66
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/server/admin-service.js +39 -83
- package/dist/admin/server/admin-service.js.map +1 -1
- package/dist/admin/server/index.js +3 -13
- package/dist/admin/server/index.js.map +1 -1
- package/dist/admin/types.js +1 -2
- package/dist/admin/types.js.map +1 -1
- package/dist/auth/api/auth.js +6 -14
- package/dist/auth/api/auth.js.map +1 -1
- package/dist/auth/api/forgot-password.js +8 -11
- package/dist/auth/api/forgot-password.js.map +1 -1
- package/dist/auth/api/index.js +6 -18
- package/dist/auth/api/index.js.map +1 -1
- package/dist/auth/api/register.js +17 -20
- package/dist/auth/api/register.js.map +1 -1
- package/dist/auth/api/resend-verification.js +9 -12
- package/dist/auth/api/resend-verification.js.map +1 -1
- package/dist/auth/api/reset-password.js +18 -22
- package/dist/auth/api/reset-password.js.map +1 -1
- package/dist/auth/api/verify-email.js +14 -18
- package/dist/auth/api/verify-email.js.map +1 -1
- package/dist/auth/components/AuthGuard.js +13 -17
- package/dist/auth/components/AuthGuard.js.map +1 -1
- package/dist/auth/components/ForgotPasswordForm.js +11 -14
- package/dist/auth/components/ForgotPasswordForm.js.map +1 -1
- package/dist/auth/components/ResetPasswordForm.js +18 -21
- package/dist/auth/components/ResetPasswordForm.js.map +1 -1
- package/dist/auth/components/SignInForm.js +13 -16
- package/dist/auth/components/SignInForm.js.map +1 -1
- package/dist/auth/components/SignUpForm.js +15 -18
- package/dist/auth/components/SignUpForm.js.map +1 -1
- package/dist/auth/components/UserMenu.js +13 -16
- package/dist/auth/components/UserMenu.js.map +1 -1
- package/dist/auth/components/VerifyEmailNotice.js +10 -13
- package/dist/auth/components/VerifyEmailNotice.js.map +1 -1
- package/dist/auth/components/index.js +7 -18
- package/dist/auth/components/index.js.map +1 -1
- package/dist/auth/config.js +9 -49
- package/dist/auth/config.js.map +1 -1
- package/dist/auth/hooks/index.js +1 -5
- package/dist/auth/hooks/index.js.map +1 -1
- package/dist/auth/hooks/useAuth.js +14 -17
- package/dist/auth/hooks/useAuth.js.map +1 -1
- package/dist/auth/index.js +15 -37
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/server/customer-service.js +39 -83
- package/dist/auth/server/customer-service.js.map +1 -1
- package/dist/auth/server/email-sender.js +11 -17
- package/dist/auth/server/email-sender.js.map +1 -1
- package/dist/auth/server/index.js +5 -36
- package/dist/auth/server/index.js.map +1 -1
- package/dist/auth/server/password-reset-service.js +30 -70
- package/dist/auth/server/password-reset-service.js.map +1 -1
- package/dist/auth/server/password.js +9 -18
- package/dist/auth/server/password.js.map +1 -1
- package/dist/auth/server/verification-service.js +35 -76
- package/dist/auth/server/verification-service.js.map +1 -1
- package/dist/auth/types.js +1 -2
- package/dist/auth/types.js.map +1 -1
- package/dist/cart/CartProvider.js +13 -17
- package/dist/cart/CartProvider.js.map +1 -1
- package/dist/cart/components/AddToCartButton.js +16 -19
- package/dist/cart/components/AddToCartButton.js.map +1 -1
- package/dist/cart/components/CartDrawer.js +17 -23
- package/dist/cart/components/CartDrawer.js.map +1 -1
- package/dist/cart/components/CartIcon.js +9 -12
- package/dist/cart/components/CartIcon.js.map +1 -1
- package/dist/cart/components/CartItem.js +7 -13
- package/dist/cart/components/CartItem.js.map +1 -1
- package/dist/cart/components/CartSummary.js +12 -15
- package/dist/cart/components/CartSummary.js.map +1 -1
- package/dist/cart/components/QuantitySelector.js +9 -12
- package/dist/cart/components/QuantitySelector.js.map +1 -1
- package/dist/cart/components/index.js +6 -15
- package/dist/cart/components/index.js.map +1 -1
- package/dist/cart/index.js +3 -17
- package/dist/cart/index.js.map +1 -1
- package/dist/cart/store.js +8 -13
- package/dist/cart/store.js.map +1 -1
- package/dist/checkout/api/checkout.js +12 -15
- package/dist/checkout/api/checkout.js.map +1 -1
- package/dist/checkout/api/index.js +2 -7
- package/dist/checkout/api/index.js.map +1 -1
- package/dist/checkout/api/webhook.js +8 -11
- package/dist/checkout/api/webhook.js.map +1 -1
- package/dist/checkout/components/CheckoutButton.js +8 -11
- package/dist/checkout/components/CheckoutButton.js.map +1 -1
- package/dist/checkout/components/CheckoutSuccess.js +11 -14
- package/dist/checkout/components/CheckoutSuccess.js.map +1 -1
- package/dist/checkout/components/OrderSummary.js +8 -11
- package/dist/checkout/components/OrderSummary.js.map +1 -1
- package/dist/checkout/components/ShippingForm.js +14 -17
- package/dist/checkout/components/ShippingForm.js.map +1 -1
- package/dist/checkout/components/index.js +4 -11
- package/dist/checkout/components/index.js.map +1 -1
- package/dist/checkout/hooks/index.js +1 -6
- package/dist/checkout/hooks/index.js.map +1 -1
- package/dist/checkout/hooks/useCheckout.js +10 -19
- package/dist/checkout/hooks/useCheckout.js.map +1 -1
- package/dist/checkout/index.js +7 -28
- package/dist/checkout/index.js.map +1 -1
- package/dist/checkout/server/create-checkout-session.js +11 -16
- package/dist/checkout/server/create-checkout-session.js.map +1 -1
- package/dist/checkout/server/handle-webhook.js +21 -24
- package/dist/checkout/server/handle-webhook.js.map +1 -1
- package/dist/checkout/server/index.js +3 -13
- package/dist/checkout/server/index.js.map +1 -1
- package/dist/checkout/server/order-service.js +11 -16
- package/dist/checkout/server/order-service.js.map +1 -1
- package/dist/checkout/stripe/client.js +13 -29
- package/dist/checkout/stripe/client.js.map +1 -1
- package/dist/checkout/stripe/index.js +1 -15
- package/dist/checkout/stripe/index.js.map +1 -1
- package/dist/checkout/types.js +1 -2
- package/dist/checkout/types.js.map +1 -1
- package/dist/core/config.js +12 -57
- package/dist/core/config.js.map +1 -1
- package/dist/core/db/client.js +16 -62
- package/dist/core/db/client.js.map +1 -1
- package/dist/core/db/index.js +14 -93
- package/dist/core/db/index.js.map +1 -1
- package/dist/core/db/queries.d.ts +6 -6
- package/dist/core/db/queries.js +207 -284
- package/dist/core/db/queries.js.map +1 -1
- package/dist/core/db/schema.js +179 -182
- package/dist/core/db/schema.js.map +1 -1
- package/dist/core/index.js +12 -42
- package/dist/core/index.js.map +1 -1
- package/dist/core/server/index.js +16 -68
- package/dist/core/server/index.js.map +1 -1
- package/dist/core/types.js +1 -2
- package/dist/core/types.js.map +1 -1
- package/dist/core/utils.js +26 -51
- package/dist/core/utils.js.map +1 -1
- package/dist/emails/config.js +13 -21
- package/dist/emails/config.js.map +1 -1
- package/dist/emails/index.js +10 -72
- package/dist/emails/index.js.map +1 -1
- package/dist/emails/send/auth.js +26 -34
- package/dist/emails/send/auth.js.map +1 -1
- package/dist/emails/send/index.js +2 -21
- package/dist/emails/send/index.js.map +1 -1
- package/dist/emails/send/orders.js +38 -50
- package/dist/emails/send/orders.js.map +1 -1
- package/dist/emails/sender.js +7 -12
- package/dist/emails/sender.js.map +1 -1
- package/dist/emails/templates/base.js +37 -53
- package/dist/emails/templates/base.js.map +1 -1
- package/dist/emails/templates/email-verification.js +12 -16
- package/dist/emails/templates/email-verification.js.map +1 -1
- package/dist/emails/templates/index.js +9 -43
- package/dist/emails/templates/index.js.map +1 -1
- package/dist/emails/templates/order-cancelled.js +18 -22
- package/dist/emails/templates/order-cancelled.js.map +1 -1
- package/dist/emails/templates/order-confirmation.js +30 -34
- package/dist/emails/templates/order-confirmation.js.map +1 -1
- package/dist/emails/templates/order-delivered.js +20 -24
- package/dist/emails/templates/order-delivered.js.map +1 -1
- package/dist/emails/templates/order-shipped.js +19 -23
- package/dist/emails/templates/order-shipped.js.map +1 -1
- package/dist/emails/templates/password-reset.js +12 -16
- package/dist/emails/templates/password-reset.js.map +1 -1
- package/dist/emails/templates/refund-processed.js +17 -21
- package/dist/emails/templates/refund-processed.js.map +1 -1
- package/dist/emails/templates/welcome.js +11 -15
- package/dist/emails/templates/welcome.js.map +1 -1
- package/dist/emails/types.js +1 -2
- package/dist/emails/types.js.map +1 -1
- package/dist/emails/utils.js +9 -20
- package/dist/emails/utils.js.map +1 -1
- package/dist/index.js +24 -176
- package/dist/index.js.map +1 -1
- package/dist/products/api/categories.js +7 -10
- package/dist/products/api/categories.js.map +1 -1
- package/dist/products/api/index.js +3 -9
- package/dist/products/api/index.js.map +1 -1
- package/dist/products/api/product.js +10 -13
- package/dist/products/api/product.js.map +1 -1
- package/dist/products/api/products.js +8 -11
- package/dist/products/api/products.js.map +1 -1
- package/dist/products/components/CategoryNav.js +20 -26
- package/dist/products/components/CategoryNav.js.map +1 -1
- package/dist/products/components/ProductBreadcrumb.js +7 -13
- package/dist/products/components/ProductBreadcrumb.js.map +1 -1
- package/dist/products/components/ProductCard.js +6 -12
- package/dist/products/components/ProductCard.js.map +1 -1
- package/dist/products/components/ProductDetails.js +14 -17
- package/dist/products/components/ProductDetails.js.map +1 -1
- package/dist/products/components/ProductFilters.js +15 -18
- package/dist/products/components/ProductFilters.js.map +1 -1
- package/dist/products/components/ProductGallery.js +17 -23
- package/dist/products/components/ProductGallery.js.map +1 -1
- package/dist/products/components/ProductGrid.js +10 -13
- package/dist/products/components/ProductGrid.js.map +1 -1
- package/dist/products/components/ProductSearch.js +14 -17
- package/dist/products/components/ProductSearch.js.map +1 -1
- package/dist/products/components/ProductSort.js +8 -11
- package/dist/products/components/ProductSort.js.map +1 -1
- package/dist/products/components/VariantSelector.js +16 -19
- package/dist/products/components/VariantSelector.js.map +1 -1
- package/dist/products/components/index.js +10 -23
- package/dist/products/components/index.js.map +1 -1
- package/dist/products/hooks/index.js +4 -11
- package/dist/products/hooks/index.js.map +1 -1
- package/dist/products/hooks/useCategories.js +12 -15
- package/dist/products/hooks/useCategories.js.map +1 -1
- package/dist/products/hooks/useProduct.js +9 -12
- package/dist/products/hooks/useProduct.js.map +1 -1
- package/dist/products/hooks/useProductAttributes.js +10 -13
- package/dist/products/hooks/useProductAttributes.js.map +1 -1
- package/dist/products/hooks/useProducts.js +15 -18
- package/dist/products/hooks/useProducts.js.map +1 -1
- package/dist/products/index.js +6 -23
- package/dist/products/index.js.map +1 -1
- package/dist/theme/ThemeProvider.js +12 -14
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/dist/theme/colors.js +3 -8
- package/dist/theme/colors.js.map +1 -1
- package/dist/theme/defaults.js +27 -30
- package/dist/theme/defaults.js.map +1 -1
- package/dist/theme/fonts.js +12 -18
- package/dist/theme/fonts.js.map +1 -1
- package/dist/theme/generator.js +63 -69
- package/dist/theme/generator.js.map +1 -1
- package/dist/theme/hooks.js +11 -16
- package/dist/theme/hooks.js.map +1 -1
- package/dist/theme/index.js +6 -42
- package/dist/theme/index.js.map +1 -1
- package/package.json +31 -30
package/dist/admin/api/auth.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* @rovela/sdk/admin/api/auth
|
|
4
3
|
*
|
|
@@ -11,13 +10,8 @@
|
|
|
11
10
|
* export const { GET, POST } = createAdminAuthHandlers()
|
|
12
11
|
* ```
|
|
13
12
|
*/
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
};
|
|
17
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.createAdminAuthHandlers = createAdminAuthHandlers;
|
|
19
|
-
const next_auth_1 = __importDefault(require("next-auth"));
|
|
20
|
-
const config_1 = require("../config");
|
|
13
|
+
import NextAuth from 'next-auth';
|
|
14
|
+
import { createAdminAuthOptions } from '../config';
|
|
21
15
|
/**
|
|
22
16
|
* Create NextAuth route handlers for admin authentication.
|
|
23
17
|
*
|
|
@@ -32,9 +26,9 @@ const config_1 = require("../config");
|
|
|
32
26
|
* export const { GET, POST } = createAdminAuthHandlers()
|
|
33
27
|
* ```
|
|
34
28
|
*/
|
|
35
|
-
function createAdminAuthHandlers(options = {}) {
|
|
36
|
-
const authOptions =
|
|
37
|
-
const handler = (
|
|
29
|
+
export function createAdminAuthHandlers(options = {}) {
|
|
30
|
+
const authOptions = createAdminAuthOptions(options);
|
|
31
|
+
const handler = NextAuth(authOptions);
|
|
38
32
|
return {
|
|
39
33
|
GET: handler,
|
|
40
34
|
POST: handler,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/admin/api/auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/admin/api/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,QAAQ,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAGlD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,uBAAuB,CAAC,UAAkC,EAAE;IAC1E,MAAM,WAAW,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAA;IACnD,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAA;IAErC,OAAO;QACL,GAAG,EAAE,OAAO;QACZ,IAAI,EAAE,OAAO;KACd,CAAA;AACH,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* @rovela/sdk/admin/api/categories
|
|
4
3
|
*
|
|
@@ -13,25 +12,19 @@
|
|
|
13
12
|
* export { GET as getCategory, PUT, DELETE } from '@rovela/sdk/admin/api/categories'
|
|
14
13
|
* ```
|
|
15
14
|
*/
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
exports.DELETE = DELETE;
|
|
22
|
-
const server_1 = require("next/server");
|
|
23
|
-
const next_auth_1 = require("next-auth");
|
|
24
|
-
const config_1 = require("../../auth/config");
|
|
25
|
-
const queries_1 = require("../../core/db/queries");
|
|
26
|
-
const utils_1 = require("../../core/utils");
|
|
15
|
+
import { NextResponse } from 'next/server';
|
|
16
|
+
import { getServerSession } from 'next-auth';
|
|
17
|
+
import { createAuthOptions } from '../../auth/config';
|
|
18
|
+
import { findCategories, findCategoryById, createCategory, updateCategory, deleteCategory, } from '../../core/db/queries';
|
|
19
|
+
import { generateSlug } from '../../core/utils';
|
|
27
20
|
// =============================================================================
|
|
28
21
|
// Auth Helper
|
|
29
22
|
// =============================================================================
|
|
30
23
|
async function requireAdmin() {
|
|
31
|
-
const session = await
|
|
24
|
+
const session = await getServerSession(createAuthOptions());
|
|
32
25
|
const user = session?.user;
|
|
33
26
|
if (!user?.role || !['owner', 'admin'].includes(user.role)) {
|
|
34
|
-
return
|
|
27
|
+
return NextResponse.json({ error: 'Unauthorized', code: 'UNAUTHORIZED' }, { status: 401 });
|
|
35
28
|
}
|
|
36
29
|
return null; // Auth passed
|
|
37
30
|
}
|
|
@@ -46,24 +39,24 @@ async function requireAdmin() {
|
|
|
46
39
|
* Query Parameters:
|
|
47
40
|
* - flat: boolean - Return flat list instead of tree (default false)
|
|
48
41
|
*/
|
|
49
|
-
async function GET(request) {
|
|
42
|
+
export async function GET(request) {
|
|
50
43
|
const authError = await requireAdmin();
|
|
51
44
|
if (authError)
|
|
52
45
|
return authError;
|
|
53
46
|
try {
|
|
54
47
|
const searchParams = request.nextUrl.searchParams;
|
|
55
48
|
const flat = searchParams.get('flat') === 'true';
|
|
56
|
-
const categories = await
|
|
49
|
+
const categories = await findCategories();
|
|
57
50
|
if (flat) {
|
|
58
|
-
return
|
|
51
|
+
return NextResponse.json({ data: categories });
|
|
59
52
|
}
|
|
60
53
|
// Build tree structure
|
|
61
54
|
const tree = buildCategoryTree(categories);
|
|
62
|
-
return
|
|
55
|
+
return NextResponse.json({ data: tree });
|
|
63
56
|
}
|
|
64
57
|
catch (error) {
|
|
65
58
|
console.error('[Admin Categories API] GET error:', error);
|
|
66
|
-
return
|
|
59
|
+
return NextResponse.json({ error: 'Failed to fetch categories', code: 'INTERNAL_ERROR' }, { status: 500 });
|
|
67
60
|
}
|
|
68
61
|
}
|
|
69
62
|
/**
|
|
@@ -71,7 +64,7 @@ async function GET(request) {
|
|
|
71
64
|
*
|
|
72
65
|
* Create a new category.
|
|
73
66
|
*/
|
|
74
|
-
async function POST(request) {
|
|
67
|
+
export async function POST(request) {
|
|
75
68
|
const authError = await requireAdmin();
|
|
76
69
|
if (authError)
|
|
77
70
|
return authError;
|
|
@@ -79,18 +72,18 @@ async function POST(request) {
|
|
|
79
72
|
const body = await request.json();
|
|
80
73
|
// Validate required fields
|
|
81
74
|
if (!body.name || typeof body.name !== 'string') {
|
|
82
|
-
return
|
|
75
|
+
return NextResponse.json({ error: 'Category name is required', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
83
76
|
}
|
|
84
77
|
// Generate slug if not provided
|
|
85
|
-
const slug = body.slug ||
|
|
78
|
+
const slug = body.slug || generateSlug(body.name);
|
|
86
79
|
// Validate parent exists if provided
|
|
87
80
|
if (body.parentId) {
|
|
88
|
-
const parent = await
|
|
81
|
+
const parent = await findCategoryById(body.parentId);
|
|
89
82
|
if (!parent) {
|
|
90
|
-
return
|
|
83
|
+
return NextResponse.json({ error: 'Parent category not found', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
91
84
|
}
|
|
92
85
|
}
|
|
93
|
-
const category = await
|
|
86
|
+
const category = await createCategory({
|
|
94
87
|
name: body.name,
|
|
95
88
|
slug,
|
|
96
89
|
description: body.description || null,
|
|
@@ -98,15 +91,15 @@ async function POST(request) {
|
|
|
98
91
|
parentId: body.parentId || null,
|
|
99
92
|
order: body.order || 0,
|
|
100
93
|
});
|
|
101
|
-
return
|
|
94
|
+
return NextResponse.json({ success: true, data: category }, { status: 201 });
|
|
102
95
|
}
|
|
103
96
|
catch (error) {
|
|
104
97
|
console.error('[Admin Categories API] POST error:', error);
|
|
105
98
|
// Handle unique constraint violation
|
|
106
99
|
if (error?.code === '23505') {
|
|
107
|
-
return
|
|
100
|
+
return NextResponse.json({ error: 'A category with this slug already exists', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
108
101
|
}
|
|
109
|
-
return
|
|
102
|
+
return NextResponse.json({ error: 'Failed to create category', code: 'INTERNAL_ERROR' }, { status: 500 });
|
|
110
103
|
}
|
|
111
104
|
}
|
|
112
105
|
// =============================================================================
|
|
@@ -117,21 +110,21 @@ async function POST(request) {
|
|
|
117
110
|
*
|
|
118
111
|
* Get a single category by ID.
|
|
119
112
|
*/
|
|
120
|
-
async function getCategory(request, { params }) {
|
|
113
|
+
export async function getCategory(request, { params }) {
|
|
121
114
|
const authError = await requireAdmin();
|
|
122
115
|
if (authError)
|
|
123
116
|
return authError;
|
|
124
117
|
try {
|
|
125
118
|
const { id } = await params;
|
|
126
|
-
const category = await
|
|
119
|
+
const category = await findCategoryById(id);
|
|
127
120
|
if (!category) {
|
|
128
|
-
return
|
|
121
|
+
return NextResponse.json({ error: 'Category not found', code: 'NOT_FOUND' }, { status: 404 });
|
|
129
122
|
}
|
|
130
|
-
return
|
|
123
|
+
return NextResponse.json({ data: category });
|
|
131
124
|
}
|
|
132
125
|
catch (error) {
|
|
133
126
|
console.error('[Admin Categories API] getCategory error:', error);
|
|
134
|
-
return
|
|
127
|
+
return NextResponse.json({ error: 'Failed to fetch category', code: 'INTERNAL_ERROR' }, { status: 500 });
|
|
135
128
|
}
|
|
136
129
|
}
|
|
137
130
|
/**
|
|
@@ -139,7 +132,7 @@ async function getCategory(request, { params }) {
|
|
|
139
132
|
*
|
|
140
133
|
* Update a category by ID.
|
|
141
134
|
*/
|
|
142
|
-
async function PUT(request, { params }) {
|
|
135
|
+
export async function PUT(request, { params }) {
|
|
143
136
|
const authError = await requireAdmin();
|
|
144
137
|
if (authError)
|
|
145
138
|
return authError;
|
|
@@ -147,23 +140,23 @@ async function PUT(request, { params }) {
|
|
|
147
140
|
const { id } = await params;
|
|
148
141
|
const body = await request.json();
|
|
149
142
|
// Check category exists
|
|
150
|
-
const existing = await
|
|
143
|
+
const existing = await findCategoryById(id);
|
|
151
144
|
if (!existing) {
|
|
152
|
-
return
|
|
145
|
+
return NextResponse.json({ error: 'Category not found', code: 'NOT_FOUND' }, { status: 404 });
|
|
153
146
|
}
|
|
154
147
|
// Validate parent if being changed
|
|
155
148
|
if (body.parentId !== undefined && body.parentId !== null) {
|
|
156
149
|
// Prevent setting self as parent
|
|
157
150
|
if (body.parentId === id) {
|
|
158
|
-
return
|
|
151
|
+
return NextResponse.json({ error: 'Category cannot be its own parent', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
159
152
|
}
|
|
160
|
-
const parent = await
|
|
153
|
+
const parent = await findCategoryById(body.parentId);
|
|
161
154
|
if (!parent) {
|
|
162
|
-
return
|
|
155
|
+
return NextResponse.json({ error: 'Parent category not found', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
163
156
|
}
|
|
164
157
|
// Prevent circular reference
|
|
165
158
|
if (await isDescendant(body.parentId, id)) {
|
|
166
|
-
return
|
|
159
|
+
return NextResponse.json({ error: 'Cannot set a descendant as parent (circular reference)', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
167
160
|
}
|
|
168
161
|
}
|
|
169
162
|
// Build update data
|
|
@@ -180,12 +173,12 @@ async function PUT(request, { params }) {
|
|
|
180
173
|
updateData.parentId = body.parentId || null;
|
|
181
174
|
if (body.order !== undefined)
|
|
182
175
|
updateData.order = body.order;
|
|
183
|
-
const category = await
|
|
184
|
-
return
|
|
176
|
+
const category = await updateCategory(id, updateData);
|
|
177
|
+
return NextResponse.json({ success: true, data: category });
|
|
185
178
|
}
|
|
186
179
|
catch (error) {
|
|
187
180
|
console.error('[Admin Categories API] PUT error:', error);
|
|
188
|
-
return
|
|
181
|
+
return NextResponse.json({ error: 'Failed to update category', code: 'INTERNAL_ERROR' }, { status: 500 });
|
|
189
182
|
}
|
|
190
183
|
}
|
|
191
184
|
/**
|
|
@@ -193,25 +186,25 @@ async function PUT(request, { params }) {
|
|
|
193
186
|
*
|
|
194
187
|
* Delete a category by ID.
|
|
195
188
|
*/
|
|
196
|
-
async function DELETE(request, { params }) {
|
|
189
|
+
export async function DELETE(request, { params }) {
|
|
197
190
|
const authError = await requireAdmin();
|
|
198
191
|
if (authError)
|
|
199
192
|
return authError;
|
|
200
193
|
try {
|
|
201
194
|
const { id } = await params;
|
|
202
|
-
const deleted = await
|
|
195
|
+
const deleted = await deleteCategory(id);
|
|
203
196
|
if (!deleted) {
|
|
204
|
-
return
|
|
197
|
+
return NextResponse.json({ error: 'Category not found', code: 'NOT_FOUND' }, { status: 404 });
|
|
205
198
|
}
|
|
206
|
-
return
|
|
199
|
+
return NextResponse.json({ success: true });
|
|
207
200
|
}
|
|
208
201
|
catch (error) {
|
|
209
202
|
console.error('[Admin Categories API] DELETE error:', error);
|
|
210
203
|
// Handle foreign key constraint (products still in category)
|
|
211
204
|
if (error?.code === '23503') {
|
|
212
|
-
return
|
|
205
|
+
return NextResponse.json({ error: 'Cannot delete category with products. Move or delete products first.', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
213
206
|
}
|
|
214
|
-
return
|
|
207
|
+
return NextResponse.json({ error: 'Failed to delete category', code: 'INTERNAL_ERROR' }, { status: 500 });
|
|
215
208
|
}
|
|
216
209
|
}
|
|
217
210
|
/**
|
|
@@ -249,7 +242,7 @@ function buildCategoryTree(categories) {
|
|
|
249
242
|
* Check if candidateId is a descendant of ancestorId.
|
|
250
243
|
*/
|
|
251
244
|
async function isDescendant(candidateId, ancestorId) {
|
|
252
|
-
const categories = await
|
|
245
|
+
const categories = await findCategories();
|
|
253
246
|
const categoryMap = new Map();
|
|
254
247
|
for (const cat of categories) {
|
|
255
248
|
categoryMap.set(cat.id, { parentId: cat.parentId });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"categories.js","sourceRoot":"","sources":["../../../src/admin/api/categories.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"categories.js","sourceRoot":"","sources":["../../../src/admin/api/categories.ts"],"names":[],"mappings":"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"}
|
package/dist/admin/api/check.js
CHANGED
|
@@ -1,14 +1,11 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* @rovela/sdk/admin/api/check
|
|
4
3
|
*
|
|
5
4
|
* Admin check API route handler.
|
|
6
5
|
* Returns whether any admin exists and the store owner email for pre-filling.
|
|
7
6
|
*/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const server_1 = require("next/server");
|
|
11
|
-
const admin_service_1 = require("../server/admin-service");
|
|
7
|
+
import { NextResponse } from 'next/server';
|
|
8
|
+
import { countAdmins } from '../server/admin-service';
|
|
12
9
|
/**
|
|
13
10
|
* GET handler to check if any admin exists.
|
|
14
11
|
*
|
|
@@ -30,11 +27,11 @@ const admin_service_1 = require("../server/admin-service");
|
|
|
30
27
|
* }
|
|
31
28
|
* ```
|
|
32
29
|
*/
|
|
33
|
-
async function GET() {
|
|
30
|
+
export async function GET() {
|
|
34
31
|
try {
|
|
35
|
-
const adminCount = await
|
|
32
|
+
const adminCount = await countAdmins();
|
|
36
33
|
const ownerEmail = process.env.STORE_OWNER_EMAIL || '';
|
|
37
|
-
return
|
|
34
|
+
return NextResponse.json({
|
|
38
35
|
hasAdmin: adminCount > 0,
|
|
39
36
|
ownerEmail,
|
|
40
37
|
});
|
|
@@ -43,7 +40,7 @@ async function GET() {
|
|
|
43
40
|
console.error('[Admin Check] Error:', error);
|
|
44
41
|
// On error, assume no admin exists to allow setup
|
|
45
42
|
// This is safer than blocking setup due to a DB error
|
|
46
|
-
return
|
|
43
|
+
return NextResponse.json({
|
|
47
44
|
hasAdmin: false,
|
|
48
45
|
ownerEmail: process.env.STORE_OWNER_EMAIL || '',
|
|
49
46
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../../src/admin/api/check.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../../src/admin/api/check.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAUrD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,KAAK,UAAU,GAAG;IACvB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,WAAW,EAAE,CAAA;QACtC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAA;QAEtD,OAAO,YAAY,CAAC,IAAI,CAAC;YACvB,QAAQ,EAAE,UAAU,GAAG,CAAC;YACxB,UAAU;SACX,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAA;QAE5C,kDAAkD;QAClD,sDAAsD;QACtD,OAAO,YAAY,CAAC,IAAI,CAAC;YACvB,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE;SAChD,CAAC,CAAA;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* @rovela/sdk/admin/api/customers
|
|
4
3
|
*
|
|
@@ -14,21 +13,18 @@
|
|
|
14
13
|
* export { GET as getCustomer } from '@rovela/sdk/admin/api/customers'
|
|
15
14
|
* ```
|
|
16
15
|
*/
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const next_auth_1 = require("next-auth");
|
|
22
|
-
const config_1 = require("../../auth/config");
|
|
23
|
-
const queries_1 = require("../../core/db/queries");
|
|
16
|
+
import { NextResponse } from 'next/server';
|
|
17
|
+
import { getServerSession } from 'next-auth';
|
|
18
|
+
import { createAuthOptions } from '../../auth/config';
|
|
19
|
+
import { findCustomers, findCustomerById, countCustomers, findCustomerOrders, } from '../../core/db/queries';
|
|
24
20
|
// =============================================================================
|
|
25
21
|
// Auth Helper
|
|
26
22
|
// =============================================================================
|
|
27
23
|
async function requireAdmin() {
|
|
28
|
-
const session = await
|
|
24
|
+
const session = await getServerSession(createAuthOptions());
|
|
29
25
|
const user = session?.user;
|
|
30
26
|
if (!user?.role || !['owner', 'admin'].includes(user.role)) {
|
|
31
|
-
return
|
|
27
|
+
return NextResponse.json({ error: 'Unauthorized', code: 'UNAUTHORIZED' }, { status: 401 });
|
|
32
28
|
}
|
|
33
29
|
return null; // Auth passed
|
|
34
30
|
}
|
|
@@ -45,7 +41,7 @@ async function requireAdmin() {
|
|
|
45
41
|
* - page: number (default 1)
|
|
46
42
|
* - limit: number (default 20, max 100)
|
|
47
43
|
*/
|
|
48
|
-
async function GET(request) {
|
|
44
|
+
export async function GET(request) {
|
|
49
45
|
const authError = await requireAdmin();
|
|
50
46
|
if (authError)
|
|
51
47
|
return authError;
|
|
@@ -59,8 +55,8 @@ async function GET(request) {
|
|
|
59
55
|
const search = searchParams.get('search') || undefined;
|
|
60
56
|
// Execute queries
|
|
61
57
|
const [customers, total] = await Promise.all([
|
|
62
|
-
|
|
63
|
-
|
|
58
|
+
findCustomers({ search, limit, offset }),
|
|
59
|
+
countCustomers({ search }),
|
|
64
60
|
]);
|
|
65
61
|
// Remove sensitive data (password_hash) from response
|
|
66
62
|
const safeCustomers = customers.map((customer) => ({
|
|
@@ -70,7 +66,7 @@ async function GET(request) {
|
|
|
70
66
|
stripeCustomerId: customer.stripeCustomerId,
|
|
71
67
|
createdAt: customer.createdAt,
|
|
72
68
|
}));
|
|
73
|
-
return
|
|
69
|
+
return NextResponse.json({
|
|
74
70
|
data: safeCustomers,
|
|
75
71
|
total,
|
|
76
72
|
page,
|
|
@@ -80,7 +76,7 @@ async function GET(request) {
|
|
|
80
76
|
}
|
|
81
77
|
catch (error) {
|
|
82
78
|
console.error('[Admin Customers API] GET error:', error);
|
|
83
|
-
return
|
|
79
|
+
return NextResponse.json({ error: 'Failed to fetch customers', code: 'INTERNAL_ERROR' }, { status: 500 });
|
|
84
80
|
}
|
|
85
81
|
}
|
|
86
82
|
// =============================================================================
|
|
@@ -91,18 +87,18 @@ async function GET(request) {
|
|
|
91
87
|
*
|
|
92
88
|
* Get a single customer by ID with order history.
|
|
93
89
|
*/
|
|
94
|
-
async function getCustomer(request, { params }) {
|
|
90
|
+
export async function getCustomer(request, { params }) {
|
|
95
91
|
const authError = await requireAdmin();
|
|
96
92
|
if (authError)
|
|
97
93
|
return authError;
|
|
98
94
|
try {
|
|
99
95
|
const { id } = await params;
|
|
100
|
-
const customer = await
|
|
96
|
+
const customer = await findCustomerById(id);
|
|
101
97
|
if (!customer) {
|
|
102
|
-
return
|
|
98
|
+
return NextResponse.json({ error: 'Customer not found', code: 'NOT_FOUND' }, { status: 404 });
|
|
103
99
|
}
|
|
104
100
|
// Get customer's orders
|
|
105
|
-
const orders = await
|
|
101
|
+
const orders = await findCustomerOrders(id);
|
|
106
102
|
// Remove sensitive data and include orders
|
|
107
103
|
const safeCustomer = {
|
|
108
104
|
id: customer.id,
|
|
@@ -122,11 +118,11 @@ async function getCustomer(request, { params }) {
|
|
|
122
118
|
totalSpent: orders.reduce((sum, order) => sum + parseFloat(order.total || '0'), 0),
|
|
123
119
|
},
|
|
124
120
|
};
|
|
125
|
-
return
|
|
121
|
+
return NextResponse.json({ data: safeCustomer });
|
|
126
122
|
}
|
|
127
123
|
catch (error) {
|
|
128
124
|
console.error('[Admin Customers API] getCustomer error:', error);
|
|
129
|
-
return
|
|
125
|
+
return NextResponse.json({ error: 'Failed to fetch customer', code: 'INTERNAL_ERROR' }, { status: 500 });
|
|
130
126
|
}
|
|
131
127
|
}
|
|
132
128
|
//# sourceMappingURL=customers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"customers.js","sourceRoot":"","sources":["../../../src/admin/api/customers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"customers.js","sourceRoot":"","sources":["../../../src/admin/api/customers.ts"],"names":[],"mappings":"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"}
|
package/dist/admin/api/index.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* @rovela/sdk/admin/api
|
|
4
3
|
*
|
|
@@ -56,51 +55,24 @@
|
|
|
56
55
|
* export { GET, PUT } from '@rovela/sdk/admin/api/settings'
|
|
57
56
|
* ```
|
|
58
57
|
*/
|
|
59
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
60
|
-
exports.updateSettings = exports.getSettings = exports.checkAdminExists = exports.setupAdmin = exports.getCustomer = exports.getCustomers = exports.deleteCategory = exports.updateCategory = exports.getCategory = exports.createCategory = exports.getCategories = exports.getStats = exports.processRefund = exports.updateOrder = exports.getOrder = exports.getOrders = exports.deleteVariantHandler = exports.updateVariantHandler = exports.addVariant = exports.deleteProduct = exports.updateProduct = exports.getProduct = exports.createProduct = exports.getProducts = exports.createAdminAuthHandlers = void 0;
|
|
61
58
|
// Auth
|
|
62
|
-
|
|
63
|
-
Object.defineProperty(exports, "createAdminAuthHandlers", { enumerable: true, get: function () { return auth_1.createAdminAuthHandlers; } });
|
|
59
|
+
export { createAdminAuthHandlers } from './auth';
|
|
64
60
|
// Products
|
|
65
|
-
|
|
66
|
-
Object.defineProperty(exports, "getProducts", { enumerable: true, get: function () { return products_1.GET; } });
|
|
67
|
-
Object.defineProperty(exports, "createProduct", { enumerable: true, get: function () { return products_1.POST; } });
|
|
68
|
-
Object.defineProperty(exports, "getProduct", { enumerable: true, get: function () { return products_1.getProduct; } });
|
|
69
|
-
Object.defineProperty(exports, "updateProduct", { enumerable: true, get: function () { return products_1.PUT; } });
|
|
70
|
-
Object.defineProperty(exports, "deleteProduct", { enumerable: true, get: function () { return products_1.DELETE; } });
|
|
71
|
-
Object.defineProperty(exports, "addVariant", { enumerable: true, get: function () { return products_1.addVariant; } });
|
|
72
|
-
Object.defineProperty(exports, "updateVariantHandler", { enumerable: true, get: function () { return products_1.updateVariantHandler; } });
|
|
73
|
-
Object.defineProperty(exports, "deleteVariantHandler", { enumerable: true, get: function () { return products_1.deleteVariantHandler; } });
|
|
61
|
+
export { GET as getProducts, POST as createProduct, getProduct, PUT as updateProduct, DELETE as deleteProduct, addVariant, updateVariantHandler, deleteVariantHandler, } from './products';
|
|
74
62
|
// Orders
|
|
75
|
-
|
|
76
|
-
Object.defineProperty(exports, "getOrders", { enumerable: true, get: function () { return orders_1.GET; } });
|
|
77
|
-
Object.defineProperty(exports, "getOrder", { enumerable: true, get: function () { return orders_1.getOrder; } });
|
|
78
|
-
Object.defineProperty(exports, "updateOrder", { enumerable: true, get: function () { return orders_1.PUT; } });
|
|
63
|
+
export { GET as getOrders, getOrder, PUT as updateOrder, } from './orders';
|
|
79
64
|
// Refund
|
|
80
|
-
|
|
81
|
-
Object.defineProperty(exports, "processRefund", { enumerable: true, get: function () { return refund_1.POST; } });
|
|
65
|
+
export { POST as processRefund } from './refund';
|
|
82
66
|
// Stats
|
|
83
|
-
|
|
84
|
-
Object.defineProperty(exports, "getStats", { enumerable: true, get: function () { return stats_1.GET; } });
|
|
67
|
+
export { GET as getStats } from './stats';
|
|
85
68
|
// Categories
|
|
86
|
-
|
|
87
|
-
Object.defineProperty(exports, "getCategories", { enumerable: true, get: function () { return categories_1.GET; } });
|
|
88
|
-
Object.defineProperty(exports, "createCategory", { enumerable: true, get: function () { return categories_1.POST; } });
|
|
89
|
-
Object.defineProperty(exports, "getCategory", { enumerable: true, get: function () { return categories_1.getCategory; } });
|
|
90
|
-
Object.defineProperty(exports, "updateCategory", { enumerable: true, get: function () { return categories_1.PUT; } });
|
|
91
|
-
Object.defineProperty(exports, "deleteCategory", { enumerable: true, get: function () { return categories_1.DELETE; } });
|
|
69
|
+
export { GET as getCategories, POST as createCategory, getCategory, PUT as updateCategory, DELETE as deleteCategory, } from './categories';
|
|
92
70
|
// Customers
|
|
93
|
-
|
|
94
|
-
Object.defineProperty(exports, "getCustomers", { enumerable: true, get: function () { return customers_1.GET; } });
|
|
95
|
-
Object.defineProperty(exports, "getCustomer", { enumerable: true, get: function () { return customers_1.getCustomer; } });
|
|
71
|
+
export { GET as getCustomers, getCustomer, } from './customers';
|
|
96
72
|
// Setup (first-time admin creation)
|
|
97
|
-
|
|
98
|
-
Object.defineProperty(exports, "setupAdmin", { enumerable: true, get: function () { return setup_1.POST; } });
|
|
73
|
+
export { POST as setupAdmin } from './setup';
|
|
99
74
|
// Check (check if admin exists)
|
|
100
|
-
|
|
101
|
-
Object.defineProperty(exports, "checkAdminExists", { enumerable: true, get: function () { return check_1.GET; } });
|
|
75
|
+
export { GET as checkAdminExists } from './check';
|
|
102
76
|
// Settings
|
|
103
|
-
|
|
104
|
-
Object.defineProperty(exports, "getSettings", { enumerable: true, get: function () { return settings_1.GET; } });
|
|
105
|
-
Object.defineProperty(exports, "updateSettings", { enumerable: true, get: function () { return settings_1.PUT; } });
|
|
77
|
+
export { GET as getSettings, PUT as updateSettings } from './settings';
|
|
106
78
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/admin/api/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/admin/api/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AAEH,OAAO;AACP,OAAO,EAAE,uBAAuB,EAAE,MAAM,QAAQ,CAAA;AAEhD,WAAW;AACX,OAAO,EACL,GAAG,IAAI,WAAW,EAClB,IAAI,IAAI,aAAa,EACrB,UAAU,EACV,GAAG,IAAI,aAAa,EACpB,MAAM,IAAI,aAAa,EACvB,UAAU,EACV,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,YAAY,CAAA;AAEnB,SAAS;AACT,OAAO,EACL,GAAG,IAAI,SAAS,EAChB,QAAQ,EACR,GAAG,IAAI,WAAW,GACnB,MAAM,UAAU,CAAA;AAEjB,SAAS;AACT,OAAO,EAAE,IAAI,IAAI,aAAa,EAAE,MAAM,UAAU,CAAA;AAEhD,QAAQ;AACR,OAAO,EAAE,GAAG,IAAI,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEzC,aAAa;AACb,OAAO,EACL,GAAG,IAAI,aAAa,EACpB,IAAI,IAAI,cAAc,EACtB,WAAW,EACX,GAAG,IAAI,cAAc,EACrB,MAAM,IAAI,cAAc,GACzB,MAAM,cAAc,CAAA;AAErB,YAAY;AACZ,OAAO,EACL,GAAG,IAAI,YAAY,EACnB,WAAW,GACZ,MAAM,aAAa,CAAA;AAEpB,oCAAoC;AACpC,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,SAAS,CAAA;AAE5C,gCAAgC;AAChC,OAAO,EAAE,GAAG,IAAI,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAEjD,WAAW;AACX,OAAO,EAAE,GAAG,IAAI,WAAW,EAAE,GAAG,IAAI,cAAc,EAAE,MAAM,YAAY,CAAA"}
|