From 32b25fd35f6493865281173e11dbc1e784231176 Mon Sep 17 00:00:00 2001 From: souvikvos Date: Thu, 25 Dec 2025 20:55:39 +0530 Subject: [PATCH] feat: add `create-postpipe-auth` CLI component to scaffold a complete Next.js authentication system with server actions, Prisma, and Resend. --- .gitignore | 1 + .../92017e463e5aa7e7-turbo.log.2025-12-25 | 1 + .../create-postpipe-admin/.gitignore | 0 .../create-postpipe-admin/README.md | 0 .../create-postpipe-admin/index.js | 0 .../lib/auth/adminGuard.ts | 0 .../create-postpipe-admin/package.json | 0 .../create-postpipe-analytics/.gitignore | 0 .../create-postpipe-analytics/README.md | 0 .../api/analytics/route.ts | 0 .../create-postpipe-analytics/index.js | 0 .../models/Analytics.ts | 0 .../create-postpipe-analytics/package.json | 0 .../create-postpipe-analytics/tsconfig.json | 0 .../create-postpipe-appointment/.npmignore | 0 .../create-postpipe-appointment/README.md | 0 .../api/appointment/route.ts | 0 .../create-postpipe-appointment/index.js | 0 .../lib/actions/appointment.ts | 0 .../lib/dbConnect.ts | 0 .../lib/models/Appointment.ts | 0 .../create-postpipe-appointment/package.json | 0 .../create-postpipe-appointment/tsconfig.json | 0 .../create-postpipe-auth/.npmignore | 0 .../create-postpipe-auth/README.md | 0 .../create-postpipe-email/.npmignore | 0 .../create-postpipe-email/README.md | 0 .../create-postpipe-email/index.js | 0 .../create-postpipe-email/package.json | 0 .../create-postpipe-email/templates/email.ts | 0 .../create-postpipe-signup/.npmignore | 0 .../create-postpipe-signup/README.md | 0 .../create-postpipe-signup/index.js | 0 .../create-postpipe-signup/package.json | 0 .../create-postpipe-signup/templates/User.ts | 0 .../templates/actions.ts | 0 .../create-postpipe-signup/templates/email.ts | 0 .../templates/frontend/SignupPage.tsx | 0 .../templates/mongodb.ts | 0 .../templates/schemas.ts | 0 .../create-postpipe-user/.npmignore | 0 .../create-postpipe-user/README.md | 0 .../create-postpipe-user/index.js | 0 .../create-postpipe-user/package.json | 0 .../create-postpipe-user/templates/User.ts | 0 .../create-postpipe-user/templates/mongodb.ts | 0 .../create-postpipe-auth/index.js | 203 ++ .../mongodb/template}/README.md | 0 .../template}/app/(auth)/login/page.tsx | 0 .../app/(auth)/reset-password/page.tsx | 0 .../template}/app/(auth)/signup/page.tsx | 0 .../app/(auth)/verify-email/page.tsx | 0 .../mongodb/template}/lib/actions/auth.ts | 0 .../mongodb/template}/lib/db.ts | 0 .../mongodb/template}/lib/email.ts | 0 .../mongodb/template}/lib/schemas.ts | 0 .../mongodb/template}/models/User.ts | 0 .../create-postpipe-auth/package-lock.json | 1046 ++++++ .../create-postpipe-auth/package.json | 10 +- .../app/(auth)/forgot-password/page.tsx | 45 + .../template/app/(auth)/login/page.tsx | 56 + .../app/(auth)/reset-password/page.tsx | 54 + .../template/app/(auth)/signup/page.tsx | 70 + .../template/app/(auth)/verify-email/page.tsx | 36 + .../template/lib/auth/actions/auth.ts | 273 ++ .../postgresql/template/lib/auth/email.ts | 47 + .../postgresql/template/lib/auth/prisma.ts | 11 + .../postgresql/template/lib/auth/schemas.ts | 38 + .../postgresql/template/package-lock.json | 3006 +++++++++++++++++ .../postgresql/template/package.json | 31 + .../postgresql/template/prisma/schema.prisma | 25 + .../postgresql/template/tsconfig.json | 41 + .../create-postpipe-cms/.gitignore | 0 .../create-postpipe-cms/README.md | 0 .../api/categories/[id]/route.ts | 0 .../api/categories/route.ts | 0 .../api/comments/[id]/route.ts | 0 .../create-postpipe-cms/api/comments/route.ts | 0 .../api/posts/[id]/route.ts | 0 .../create-postpipe-cms/api/posts/route.ts | 0 .../api/products/[id]/route.ts | 0 .../create-postpipe-cms/api/products/route.ts | 0 .../create-postpipe-cms/api/reviews/route.ts | 0 .../create-postpipe-cms/index.js | 0 .../create-postpipe-cms/lib/dbConnect.ts | 0 .../lib/models/Category.ts | 0 .../create-postpipe-cms/lib/models/Comment.ts | 0 .../create-postpipe-cms/lib/models/Post.ts | 0 .../create-postpipe-cms/lib/models/Product.ts | 0 .../create-postpipe-cms/lib/models/Review.ts | 0 .../create-postpipe-cms/package-lock.json | 0 .../create-postpipe-cms/package.json | 0 .../create-postpipe-crud/index.js | 0 .../create-postpipe-crud/package-lock.json | 0 .../create-postpipe-delivery/.gitignore | 0 .../create-postpipe-delivery/README.md | 0 .../api/delivery/route.ts | 0 .../create-postpipe-delivery/index.js | 0 .../models/Shipment.ts | 0 .../create-postpipe-delivery/package.json | 0 .../create-postpipe-delivery/tsconfig.json | 0 .../create-postpipe-ecommerce/.gitignore | 0 .../create-postpipe-ecommerce/README.md | 0 .../api/account/address/route.ts | 0 .../api/analytics/route.ts | 0 .../api/auth/login/route.ts | 0 .../api/auth/signup/route.ts | 0 .../api/auth/verify-email/route.ts | 0 .../api/delivery/route.ts | 0 .../api/notifications/route.ts | 0 .../api/payment/verify/route.ts | 0 .../api/shop/cart/route.ts | 0 .../api/shop/checkout/route.ts | 0 .../api/shop/orders/route.ts | 0 .../api/shop/products/[id]/related/route.ts | 0 .../api/shop/products/[slug]/route.ts | 0 .../api/shop/products/route.ts | 0 .../api/shop/return/route.ts | 0 .../api/shop/reviews/route.ts | 0 .../api/shop/wishlist/route.ts | 0 .../api/upload/route.ts | 0 .../app/ecommerce-demo/page.tsx | 0 .../create-postpipe-ecommerce/index.js | 0 .../lib/auth/utils.ts | 0 .../lib/dbConnect.ts | 0 .../create-postpipe-ecommerce/lib/email.ts | 0 .../lib/utils/apiFeatures.ts | 0 .../models/Analytics.ts | 0 .../create-postpipe-ecommerce/models/Cart.ts | 0 .../models/Coupon.ts | 0 .../models/Notification.ts | 0 .../create-postpipe-ecommerce/models/Order.ts | 0 .../models/Payment.ts | 0 .../models/Product.ts | 0 .../models/ReturnRequest.ts | 0 .../models/Review.ts | 0 .../models/Shipment.ts | 0 .../create-postpipe-ecommerce/models/User.ts | 0 .../models/Wishlist.ts | 0 .../create-postpipe-ecommerce/package.json | 0 .../create-postpipe-ecommerce/tsconfig.json | 0 .../create-postpipe-form/.gitignore | 0 .../create-postpipe-form/.npmignore | 0 .../create-postpipe-form/README.md | 0 .../create-postpipe-form/api/contact/route.ts | 0 .../api/feedback/route.ts | 0 .../api/newsletter/route.ts | 0 .../create-postpipe-form/index.js | 0 .../create-postpipe-form/lib/dbConnect.ts | 0 .../lib/models/Contact.ts | 0 .../lib/models/Feedback.ts | 0 .../lib/models/Newsletter.ts | 0 .../create-postpipe-form/package-lock.json | 0 .../create-postpipe-form/package.json | 0 .../create-postpipe-form/tsconfig.json | 0 .../create-postpipe-notify/.gitignore | 0 .../create-postpipe-notify/README.md | 0 .../api/notifications/route.ts | 0 .../create-postpipe-notify/index.js | 0 .../lib/actions/notify.ts | 0 .../models/Notification.ts | 0 .../create-postpipe-notify/package.json | 0 .../create-postpipe-notify/tsconfig.json | 0 .../create-postpipe-payment/.gitignore | 0 .../create-postpipe-payment/README.md | 0 .../api/payment/create-order/route.ts | 0 .../api/payment/verify/route.ts | 0 .../create-postpipe-payment/index.js | 0 .../create-postpipe-payment/models/Payment.ts | 0 .../create-postpipe-payment/package-lock.json | 0 .../create-postpipe-payment/package.json | 0 .../create-postpipe-payment/tsconfig.json | 0 .../create-postpipe-profile/README.md | 0 .../create-postpipe-profile/index.js | 0 .../create-postpipe-profile/package.json | 0 .../create-postpipe-search/.gitignore | 0 .../create-postpipe-search/README.md | 0 .../create-postpipe-search/index.js | 0 .../lib/utils/apiFeatures.ts | 0 .../create-postpipe-search/package.json | 0 .../create-postpipe-shop/.gitignore | 0 .../create-postpipe-shop/README.md | 0 .../create-postpipe-shop/api/cart/route.ts | 0 .../create-postpipe-shop/api/orders/route.ts | 0 .../api/wishlist/route.ts | 0 .../create-postpipe-shop/index.js | 0 .../create-postpipe-shop/lib/actions/shop.ts | 0 .../create-postpipe-shop/lib/dbConnect.ts | 0 .../create-postpipe-shop/lib/models/Cart.ts | 0 .../create-postpipe-shop/lib/models/Order.ts | 0 .../lib/models/Wishlist.ts | 0 .../create-postpipe-shop/package.json | 0 .../create-postpipe-shop/tsconfig.json | 0 .../create-postpipe-upload/.gitignore | 0 .../create-postpipe-upload/README.md | 0 .../api/upload/route.ts | 0 .../create-postpipe-upload/index.js | 0 .../create-postpipe-upload/package.json | 0 cli/mongodb/create-postpipe-auth/index.js | 90 - package-lock.json | 14 + 200 files changed, 5006 insertions(+), 92 deletions(-) create mode 100644 .turbo/daemon/92017e463e5aa7e7-turbo.log.2025-12-25 rename cli/{mongodb => components-cli}/create-postpipe-admin/.gitignore (100%) rename cli/{mongodb => components-cli}/create-postpipe-admin/README.md (100%) rename cli/{mongodb => components-cli}/create-postpipe-admin/index.js (100%) rename cli/{mongodb => components-cli}/create-postpipe-admin/lib/auth/adminGuard.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-admin/package.json (100%) rename cli/{mongodb => components-cli}/create-postpipe-analytics/.gitignore (100%) rename cli/{mongodb => components-cli}/create-postpipe-analytics/README.md (100%) rename cli/{mongodb => components-cli}/create-postpipe-analytics/api/analytics/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-analytics/index.js (100%) rename cli/{mongodb => components-cli}/create-postpipe-analytics/models/Analytics.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-analytics/package.json (100%) rename cli/{mongodb => components-cli}/create-postpipe-analytics/tsconfig.json (100%) rename cli/{mongodb => components-cli}/create-postpipe-appointment/.npmignore (100%) rename cli/{mongodb => components-cli}/create-postpipe-appointment/README.md (100%) rename cli/{mongodb => components-cli}/create-postpipe-appointment/api/appointment/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-appointment/index.js (100%) rename cli/{mongodb => components-cli}/create-postpipe-appointment/lib/actions/appointment.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-appointment/lib/dbConnect.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-appointment/lib/models/Appointment.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-appointment/package.json (100%) rename cli/{mongodb => components-cli}/create-postpipe-appointment/tsconfig.json (100%) rename cli/{mongodb => components-cli}/create-postpipe-auth/.npmignore (100%) rename cli/{mongodb => components-cli}/create-postpipe-auth/README.md (100%) rename cli/{mongodb => components-cli}/create-postpipe-auth/create-postpipe-email/.npmignore (100%) rename cli/{mongodb => components-cli}/create-postpipe-auth/create-postpipe-email/README.md (100%) rename cli/{mongodb => components-cli}/create-postpipe-auth/create-postpipe-email/index.js (100%) rename cli/{mongodb => components-cli}/create-postpipe-auth/create-postpipe-email/package.json (100%) rename cli/{mongodb => components-cli}/create-postpipe-auth/create-postpipe-email/templates/email.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-auth/create-postpipe-signup/.npmignore (100%) rename cli/{mongodb => components-cli}/create-postpipe-auth/create-postpipe-signup/README.md (100%) rename cli/{mongodb => components-cli}/create-postpipe-auth/create-postpipe-signup/index.js (100%) rename cli/{mongodb => components-cli}/create-postpipe-auth/create-postpipe-signup/package.json (100%) rename cli/{mongodb => components-cli}/create-postpipe-auth/create-postpipe-signup/templates/User.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-auth/create-postpipe-signup/templates/actions.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-auth/create-postpipe-signup/templates/email.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-auth/create-postpipe-signup/templates/frontend/SignupPage.tsx (100%) rename cli/{mongodb => components-cli}/create-postpipe-auth/create-postpipe-signup/templates/mongodb.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-auth/create-postpipe-signup/templates/schemas.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-auth/create-postpipe-user/.npmignore (100%) rename cli/{mongodb => components-cli}/create-postpipe-auth/create-postpipe-user/README.md (100%) rename cli/{mongodb => components-cli}/create-postpipe-auth/create-postpipe-user/index.js (100%) rename cli/{mongodb => components-cli}/create-postpipe-auth/create-postpipe-user/package.json (100%) rename cli/{mongodb => components-cli}/create-postpipe-auth/create-postpipe-user/templates/User.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-auth/create-postpipe-user/templates/mongodb.ts (100%) create mode 100644 cli/components-cli/create-postpipe-auth/index.js rename cli/{mongodb/create-postpipe-auth/templates/mongodb => components-cli/create-postpipe-auth/mongodb/template}/README.md (100%) rename cli/{mongodb/create-postpipe-auth/templates/mongodb => components-cli/create-postpipe-auth/mongodb/template}/app/(auth)/login/page.tsx (100%) rename cli/{mongodb/create-postpipe-auth/templates/mongodb => components-cli/create-postpipe-auth/mongodb/template}/app/(auth)/reset-password/page.tsx (100%) rename cli/{mongodb/create-postpipe-auth/templates/mongodb => components-cli/create-postpipe-auth/mongodb/template}/app/(auth)/signup/page.tsx (100%) rename cli/{mongodb/create-postpipe-auth/templates/mongodb => components-cli/create-postpipe-auth/mongodb/template}/app/(auth)/verify-email/page.tsx (100%) rename cli/{mongodb/create-postpipe-auth/templates/mongodb => components-cli/create-postpipe-auth/mongodb/template}/lib/actions/auth.ts (100%) rename cli/{mongodb/create-postpipe-auth/templates/mongodb => components-cli/create-postpipe-auth/mongodb/template}/lib/db.ts (100%) rename cli/{mongodb/create-postpipe-auth/templates/mongodb => components-cli/create-postpipe-auth/mongodb/template}/lib/email.ts (100%) rename cli/{mongodb/create-postpipe-auth/templates/mongodb => components-cli/create-postpipe-auth/mongodb/template}/lib/schemas.ts (100%) rename cli/{mongodb/create-postpipe-auth/templates/mongodb => components-cli/create-postpipe-auth/mongodb/template}/models/User.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-auth/package-lock.json (51%) rename cli/{mongodb => components-cli}/create-postpipe-auth/package.json (68%) create mode 100644 cli/components-cli/create-postpipe-auth/postgresql/template/app/(auth)/forgot-password/page.tsx create mode 100644 cli/components-cli/create-postpipe-auth/postgresql/template/app/(auth)/login/page.tsx create mode 100644 cli/components-cli/create-postpipe-auth/postgresql/template/app/(auth)/reset-password/page.tsx create mode 100644 cli/components-cli/create-postpipe-auth/postgresql/template/app/(auth)/signup/page.tsx create mode 100644 cli/components-cli/create-postpipe-auth/postgresql/template/app/(auth)/verify-email/page.tsx create mode 100644 cli/components-cli/create-postpipe-auth/postgresql/template/lib/auth/actions/auth.ts create mode 100644 cli/components-cli/create-postpipe-auth/postgresql/template/lib/auth/email.ts create mode 100644 cli/components-cli/create-postpipe-auth/postgresql/template/lib/auth/prisma.ts create mode 100644 cli/components-cli/create-postpipe-auth/postgresql/template/lib/auth/schemas.ts create mode 100644 cli/components-cli/create-postpipe-auth/postgresql/template/package-lock.json create mode 100644 cli/components-cli/create-postpipe-auth/postgresql/template/package.json create mode 100644 cli/components-cli/create-postpipe-auth/postgresql/template/prisma/schema.prisma create mode 100644 cli/components-cli/create-postpipe-auth/postgresql/template/tsconfig.json rename cli/{mongodb => components-cli}/create-postpipe-cms/.gitignore (100%) rename cli/{mongodb => components-cli}/create-postpipe-cms/README.md (100%) rename cli/{mongodb => components-cli}/create-postpipe-cms/api/categories/[id]/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-cms/api/categories/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-cms/api/comments/[id]/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-cms/api/comments/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-cms/api/posts/[id]/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-cms/api/posts/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-cms/api/products/[id]/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-cms/api/products/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-cms/api/reviews/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-cms/index.js (100%) rename cli/{mongodb => components-cli}/create-postpipe-cms/lib/dbConnect.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-cms/lib/models/Category.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-cms/lib/models/Comment.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-cms/lib/models/Post.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-cms/lib/models/Product.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-cms/lib/models/Review.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-cms/package-lock.json (100%) rename cli/{mongodb => components-cli}/create-postpipe-cms/package.json (100%) rename cli/{mongodb => components-cli}/create-postpipe-crud/index.js (100%) rename cli/{mongodb => components-cli}/create-postpipe-crud/package-lock.json (100%) rename cli/{mongodb => components-cli}/create-postpipe-delivery/.gitignore (100%) rename cli/{mongodb => components-cli}/create-postpipe-delivery/README.md (100%) rename cli/{mongodb => components-cli}/create-postpipe-delivery/api/delivery/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-delivery/index.js (100%) rename cli/{mongodb => components-cli}/create-postpipe-delivery/models/Shipment.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-delivery/package.json (100%) rename cli/{mongodb => components-cli}/create-postpipe-delivery/tsconfig.json (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/.gitignore (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/README.md (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/api/account/address/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/api/analytics/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/api/auth/login/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/api/auth/signup/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/api/auth/verify-email/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/api/delivery/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/api/notifications/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/api/payment/verify/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/api/shop/cart/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/api/shop/checkout/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/api/shop/orders/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/api/shop/products/[id]/related/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/api/shop/products/[slug]/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/api/shop/products/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/api/shop/return/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/api/shop/reviews/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/api/shop/wishlist/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/api/upload/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/app/ecommerce-demo/page.tsx (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/index.js (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/lib/auth/utils.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/lib/dbConnect.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/lib/email.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/lib/utils/apiFeatures.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/models/Analytics.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/models/Cart.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/models/Coupon.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/models/Notification.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/models/Order.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/models/Payment.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/models/Product.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/models/ReturnRequest.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/models/Review.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/models/Shipment.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/models/User.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/models/Wishlist.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/package.json (100%) rename cli/{mongodb => components-cli}/create-postpipe-ecommerce/tsconfig.json (100%) rename cli/{mongodb => components-cli}/create-postpipe-form/.gitignore (100%) rename cli/{mongodb => components-cli}/create-postpipe-form/.npmignore (100%) rename cli/{mongodb => components-cli}/create-postpipe-form/README.md (100%) rename cli/{mongodb => components-cli}/create-postpipe-form/api/contact/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-form/api/feedback/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-form/api/newsletter/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-form/index.js (100%) rename cli/{mongodb => components-cli}/create-postpipe-form/lib/dbConnect.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-form/lib/models/Contact.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-form/lib/models/Feedback.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-form/lib/models/Newsletter.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-form/package-lock.json (100%) rename cli/{mongodb => components-cli}/create-postpipe-form/package.json (100%) rename cli/{mongodb => components-cli}/create-postpipe-form/tsconfig.json (100%) rename cli/{mongodb => components-cli}/create-postpipe-notify/.gitignore (100%) rename cli/{mongodb => components-cli}/create-postpipe-notify/README.md (100%) rename cli/{mongodb => components-cli}/create-postpipe-notify/api/notifications/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-notify/index.js (100%) rename cli/{mongodb => components-cli}/create-postpipe-notify/lib/actions/notify.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-notify/models/Notification.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-notify/package.json (100%) rename cli/{mongodb => components-cli}/create-postpipe-notify/tsconfig.json (100%) rename cli/{mongodb => components-cli}/create-postpipe-payment/.gitignore (100%) rename cli/{mongodb => components-cli}/create-postpipe-payment/README.md (100%) rename cli/{mongodb => components-cli}/create-postpipe-payment/api/payment/create-order/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-payment/api/payment/verify/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-payment/index.js (100%) rename cli/{mongodb => components-cli}/create-postpipe-payment/models/Payment.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-payment/package-lock.json (100%) rename cli/{mongodb => components-cli}/create-postpipe-payment/package.json (100%) rename cli/{mongodb => components-cli}/create-postpipe-payment/tsconfig.json (100%) rename cli/{mongodb => components-cli}/create-postpipe-profile/README.md (100%) rename cli/{mongodb => components-cli}/create-postpipe-profile/index.js (100%) rename cli/{mongodb => components-cli}/create-postpipe-profile/package.json (100%) rename cli/{mongodb => components-cli}/create-postpipe-search/.gitignore (100%) rename cli/{mongodb => components-cli}/create-postpipe-search/README.md (100%) rename cli/{mongodb => components-cli}/create-postpipe-search/index.js (100%) rename cli/{mongodb => components-cli}/create-postpipe-search/lib/utils/apiFeatures.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-search/package.json (100%) rename cli/{mongodb => components-cli}/create-postpipe-shop/.gitignore (100%) rename cli/{mongodb => components-cli}/create-postpipe-shop/README.md (100%) rename cli/{mongodb => components-cli}/create-postpipe-shop/api/cart/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-shop/api/orders/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-shop/api/wishlist/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-shop/index.js (100%) rename cli/{mongodb => components-cli}/create-postpipe-shop/lib/actions/shop.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-shop/lib/dbConnect.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-shop/lib/models/Cart.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-shop/lib/models/Order.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-shop/lib/models/Wishlist.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-shop/package.json (100%) rename cli/{mongodb => components-cli}/create-postpipe-shop/tsconfig.json (100%) rename cli/{mongodb => components-cli}/create-postpipe-upload/.gitignore (100%) rename cli/{mongodb => components-cli}/create-postpipe-upload/README.md (100%) rename cli/{mongodb => components-cli}/create-postpipe-upload/api/upload/route.ts (100%) rename cli/{mongodb => components-cli}/create-postpipe-upload/index.js (100%) rename cli/{mongodb => components-cli}/create-postpipe-upload/package.json (100%) delete mode 100644 cli/mongodb/create-postpipe-auth/index.js diff --git a/.gitignore b/.gitignore index 724202a..bc5bce0 100644 --- a/.gitignore +++ b/.gitignore @@ -28,6 +28,7 @@ ts-debug.log* .env.development.local .env.test.local .env.production.local +.env.example # vercel .vercel diff --git a/.turbo/daemon/92017e463e5aa7e7-turbo.log.2025-12-25 b/.turbo/daemon/92017e463e5aa7e7-turbo.log.2025-12-25 new file mode 100644 index 0000000..958d7f3 --- /dev/null +++ b/.turbo/daemon/92017e463e5aa7e7-turbo.log.2025-12-25 @@ -0,0 +1 @@ +2025-12-25T15:19:54.003733Z WARN daemon_server: turborepo_lib::commands::daemon: daemon already running diff --git a/cli/mongodb/create-postpipe-admin/.gitignore b/cli/components-cli/create-postpipe-admin/.gitignore similarity index 100% rename from cli/mongodb/create-postpipe-admin/.gitignore rename to cli/components-cli/create-postpipe-admin/.gitignore diff --git a/cli/mongodb/create-postpipe-admin/README.md b/cli/components-cli/create-postpipe-admin/README.md similarity index 100% rename from cli/mongodb/create-postpipe-admin/README.md rename to cli/components-cli/create-postpipe-admin/README.md diff --git a/cli/mongodb/create-postpipe-admin/index.js b/cli/components-cli/create-postpipe-admin/index.js similarity index 100% rename from cli/mongodb/create-postpipe-admin/index.js rename to cli/components-cli/create-postpipe-admin/index.js diff --git a/cli/mongodb/create-postpipe-admin/lib/auth/adminGuard.ts b/cli/components-cli/create-postpipe-admin/lib/auth/adminGuard.ts similarity index 100% rename from cli/mongodb/create-postpipe-admin/lib/auth/adminGuard.ts rename to cli/components-cli/create-postpipe-admin/lib/auth/adminGuard.ts diff --git a/cli/mongodb/create-postpipe-admin/package.json b/cli/components-cli/create-postpipe-admin/package.json similarity index 100% rename from cli/mongodb/create-postpipe-admin/package.json rename to cli/components-cli/create-postpipe-admin/package.json diff --git a/cli/mongodb/create-postpipe-analytics/.gitignore b/cli/components-cli/create-postpipe-analytics/.gitignore similarity index 100% rename from cli/mongodb/create-postpipe-analytics/.gitignore rename to cli/components-cli/create-postpipe-analytics/.gitignore diff --git a/cli/mongodb/create-postpipe-analytics/README.md b/cli/components-cli/create-postpipe-analytics/README.md similarity index 100% rename from cli/mongodb/create-postpipe-analytics/README.md rename to cli/components-cli/create-postpipe-analytics/README.md diff --git a/cli/mongodb/create-postpipe-analytics/api/analytics/route.ts b/cli/components-cli/create-postpipe-analytics/api/analytics/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-analytics/api/analytics/route.ts rename to cli/components-cli/create-postpipe-analytics/api/analytics/route.ts diff --git a/cli/mongodb/create-postpipe-analytics/index.js b/cli/components-cli/create-postpipe-analytics/index.js similarity index 100% rename from cli/mongodb/create-postpipe-analytics/index.js rename to cli/components-cli/create-postpipe-analytics/index.js diff --git a/cli/mongodb/create-postpipe-analytics/models/Analytics.ts b/cli/components-cli/create-postpipe-analytics/models/Analytics.ts similarity index 100% rename from cli/mongodb/create-postpipe-analytics/models/Analytics.ts rename to cli/components-cli/create-postpipe-analytics/models/Analytics.ts diff --git a/cli/mongodb/create-postpipe-analytics/package.json b/cli/components-cli/create-postpipe-analytics/package.json similarity index 100% rename from cli/mongodb/create-postpipe-analytics/package.json rename to cli/components-cli/create-postpipe-analytics/package.json diff --git a/cli/mongodb/create-postpipe-analytics/tsconfig.json b/cli/components-cli/create-postpipe-analytics/tsconfig.json similarity index 100% rename from cli/mongodb/create-postpipe-analytics/tsconfig.json rename to cli/components-cli/create-postpipe-analytics/tsconfig.json diff --git a/cli/mongodb/create-postpipe-appointment/.npmignore b/cli/components-cli/create-postpipe-appointment/.npmignore similarity index 100% rename from cli/mongodb/create-postpipe-appointment/.npmignore rename to cli/components-cli/create-postpipe-appointment/.npmignore diff --git a/cli/mongodb/create-postpipe-appointment/README.md b/cli/components-cli/create-postpipe-appointment/README.md similarity index 100% rename from cli/mongodb/create-postpipe-appointment/README.md rename to cli/components-cli/create-postpipe-appointment/README.md diff --git a/cli/mongodb/create-postpipe-appointment/api/appointment/route.ts b/cli/components-cli/create-postpipe-appointment/api/appointment/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-appointment/api/appointment/route.ts rename to cli/components-cli/create-postpipe-appointment/api/appointment/route.ts diff --git a/cli/mongodb/create-postpipe-appointment/index.js b/cli/components-cli/create-postpipe-appointment/index.js similarity index 100% rename from cli/mongodb/create-postpipe-appointment/index.js rename to cli/components-cli/create-postpipe-appointment/index.js diff --git a/cli/mongodb/create-postpipe-appointment/lib/actions/appointment.ts b/cli/components-cli/create-postpipe-appointment/lib/actions/appointment.ts similarity index 100% rename from cli/mongodb/create-postpipe-appointment/lib/actions/appointment.ts rename to cli/components-cli/create-postpipe-appointment/lib/actions/appointment.ts diff --git a/cli/mongodb/create-postpipe-appointment/lib/dbConnect.ts b/cli/components-cli/create-postpipe-appointment/lib/dbConnect.ts similarity index 100% rename from cli/mongodb/create-postpipe-appointment/lib/dbConnect.ts rename to cli/components-cli/create-postpipe-appointment/lib/dbConnect.ts diff --git a/cli/mongodb/create-postpipe-appointment/lib/models/Appointment.ts b/cli/components-cli/create-postpipe-appointment/lib/models/Appointment.ts similarity index 100% rename from cli/mongodb/create-postpipe-appointment/lib/models/Appointment.ts rename to cli/components-cli/create-postpipe-appointment/lib/models/Appointment.ts diff --git a/cli/mongodb/create-postpipe-appointment/package.json b/cli/components-cli/create-postpipe-appointment/package.json similarity index 100% rename from cli/mongodb/create-postpipe-appointment/package.json rename to cli/components-cli/create-postpipe-appointment/package.json diff --git a/cli/mongodb/create-postpipe-appointment/tsconfig.json b/cli/components-cli/create-postpipe-appointment/tsconfig.json similarity index 100% rename from cli/mongodb/create-postpipe-appointment/tsconfig.json rename to cli/components-cli/create-postpipe-appointment/tsconfig.json diff --git a/cli/mongodb/create-postpipe-auth/.npmignore b/cli/components-cli/create-postpipe-auth/.npmignore similarity index 100% rename from cli/mongodb/create-postpipe-auth/.npmignore rename to cli/components-cli/create-postpipe-auth/.npmignore diff --git a/cli/mongodb/create-postpipe-auth/README.md b/cli/components-cli/create-postpipe-auth/README.md similarity index 100% rename from cli/mongodb/create-postpipe-auth/README.md rename to cli/components-cli/create-postpipe-auth/README.md diff --git a/cli/mongodb/create-postpipe-auth/create-postpipe-email/.npmignore b/cli/components-cli/create-postpipe-auth/create-postpipe-email/.npmignore similarity index 100% rename from cli/mongodb/create-postpipe-auth/create-postpipe-email/.npmignore rename to cli/components-cli/create-postpipe-auth/create-postpipe-email/.npmignore diff --git a/cli/mongodb/create-postpipe-auth/create-postpipe-email/README.md b/cli/components-cli/create-postpipe-auth/create-postpipe-email/README.md similarity index 100% rename from cli/mongodb/create-postpipe-auth/create-postpipe-email/README.md rename to cli/components-cli/create-postpipe-auth/create-postpipe-email/README.md diff --git a/cli/mongodb/create-postpipe-auth/create-postpipe-email/index.js b/cli/components-cli/create-postpipe-auth/create-postpipe-email/index.js similarity index 100% rename from cli/mongodb/create-postpipe-auth/create-postpipe-email/index.js rename to cli/components-cli/create-postpipe-auth/create-postpipe-email/index.js diff --git a/cli/mongodb/create-postpipe-auth/create-postpipe-email/package.json b/cli/components-cli/create-postpipe-auth/create-postpipe-email/package.json similarity index 100% rename from cli/mongodb/create-postpipe-auth/create-postpipe-email/package.json rename to cli/components-cli/create-postpipe-auth/create-postpipe-email/package.json diff --git a/cli/mongodb/create-postpipe-auth/create-postpipe-email/templates/email.ts b/cli/components-cli/create-postpipe-auth/create-postpipe-email/templates/email.ts similarity index 100% rename from cli/mongodb/create-postpipe-auth/create-postpipe-email/templates/email.ts rename to cli/components-cli/create-postpipe-auth/create-postpipe-email/templates/email.ts diff --git a/cli/mongodb/create-postpipe-auth/create-postpipe-signup/.npmignore b/cli/components-cli/create-postpipe-auth/create-postpipe-signup/.npmignore similarity index 100% rename from cli/mongodb/create-postpipe-auth/create-postpipe-signup/.npmignore rename to cli/components-cli/create-postpipe-auth/create-postpipe-signup/.npmignore diff --git a/cli/mongodb/create-postpipe-auth/create-postpipe-signup/README.md b/cli/components-cli/create-postpipe-auth/create-postpipe-signup/README.md similarity index 100% rename from cli/mongodb/create-postpipe-auth/create-postpipe-signup/README.md rename to cli/components-cli/create-postpipe-auth/create-postpipe-signup/README.md diff --git a/cli/mongodb/create-postpipe-auth/create-postpipe-signup/index.js b/cli/components-cli/create-postpipe-auth/create-postpipe-signup/index.js similarity index 100% rename from cli/mongodb/create-postpipe-auth/create-postpipe-signup/index.js rename to cli/components-cli/create-postpipe-auth/create-postpipe-signup/index.js diff --git a/cli/mongodb/create-postpipe-auth/create-postpipe-signup/package.json b/cli/components-cli/create-postpipe-auth/create-postpipe-signup/package.json similarity index 100% rename from cli/mongodb/create-postpipe-auth/create-postpipe-signup/package.json rename to cli/components-cli/create-postpipe-auth/create-postpipe-signup/package.json diff --git a/cli/mongodb/create-postpipe-auth/create-postpipe-signup/templates/User.ts b/cli/components-cli/create-postpipe-auth/create-postpipe-signup/templates/User.ts similarity index 100% rename from cli/mongodb/create-postpipe-auth/create-postpipe-signup/templates/User.ts rename to cli/components-cli/create-postpipe-auth/create-postpipe-signup/templates/User.ts diff --git a/cli/mongodb/create-postpipe-auth/create-postpipe-signup/templates/actions.ts b/cli/components-cli/create-postpipe-auth/create-postpipe-signup/templates/actions.ts similarity index 100% rename from cli/mongodb/create-postpipe-auth/create-postpipe-signup/templates/actions.ts rename to cli/components-cli/create-postpipe-auth/create-postpipe-signup/templates/actions.ts diff --git a/cli/mongodb/create-postpipe-auth/create-postpipe-signup/templates/email.ts b/cli/components-cli/create-postpipe-auth/create-postpipe-signup/templates/email.ts similarity index 100% rename from cli/mongodb/create-postpipe-auth/create-postpipe-signup/templates/email.ts rename to cli/components-cli/create-postpipe-auth/create-postpipe-signup/templates/email.ts diff --git a/cli/mongodb/create-postpipe-auth/create-postpipe-signup/templates/frontend/SignupPage.tsx b/cli/components-cli/create-postpipe-auth/create-postpipe-signup/templates/frontend/SignupPage.tsx similarity index 100% rename from cli/mongodb/create-postpipe-auth/create-postpipe-signup/templates/frontend/SignupPage.tsx rename to cli/components-cli/create-postpipe-auth/create-postpipe-signup/templates/frontend/SignupPage.tsx diff --git a/cli/mongodb/create-postpipe-auth/create-postpipe-signup/templates/mongodb.ts b/cli/components-cli/create-postpipe-auth/create-postpipe-signup/templates/mongodb.ts similarity index 100% rename from cli/mongodb/create-postpipe-auth/create-postpipe-signup/templates/mongodb.ts rename to cli/components-cli/create-postpipe-auth/create-postpipe-signup/templates/mongodb.ts diff --git a/cli/mongodb/create-postpipe-auth/create-postpipe-signup/templates/schemas.ts b/cli/components-cli/create-postpipe-auth/create-postpipe-signup/templates/schemas.ts similarity index 100% rename from cli/mongodb/create-postpipe-auth/create-postpipe-signup/templates/schemas.ts rename to cli/components-cli/create-postpipe-auth/create-postpipe-signup/templates/schemas.ts diff --git a/cli/mongodb/create-postpipe-auth/create-postpipe-user/.npmignore b/cli/components-cli/create-postpipe-auth/create-postpipe-user/.npmignore similarity index 100% rename from cli/mongodb/create-postpipe-auth/create-postpipe-user/.npmignore rename to cli/components-cli/create-postpipe-auth/create-postpipe-user/.npmignore diff --git a/cli/mongodb/create-postpipe-auth/create-postpipe-user/README.md b/cli/components-cli/create-postpipe-auth/create-postpipe-user/README.md similarity index 100% rename from cli/mongodb/create-postpipe-auth/create-postpipe-user/README.md rename to cli/components-cli/create-postpipe-auth/create-postpipe-user/README.md diff --git a/cli/mongodb/create-postpipe-auth/create-postpipe-user/index.js b/cli/components-cli/create-postpipe-auth/create-postpipe-user/index.js similarity index 100% rename from cli/mongodb/create-postpipe-auth/create-postpipe-user/index.js rename to cli/components-cli/create-postpipe-auth/create-postpipe-user/index.js diff --git a/cli/mongodb/create-postpipe-auth/create-postpipe-user/package.json b/cli/components-cli/create-postpipe-auth/create-postpipe-user/package.json similarity index 100% rename from cli/mongodb/create-postpipe-auth/create-postpipe-user/package.json rename to cli/components-cli/create-postpipe-auth/create-postpipe-user/package.json diff --git a/cli/mongodb/create-postpipe-auth/create-postpipe-user/templates/User.ts b/cli/components-cli/create-postpipe-auth/create-postpipe-user/templates/User.ts similarity index 100% rename from cli/mongodb/create-postpipe-auth/create-postpipe-user/templates/User.ts rename to cli/components-cli/create-postpipe-auth/create-postpipe-user/templates/User.ts diff --git a/cli/mongodb/create-postpipe-auth/create-postpipe-user/templates/mongodb.ts b/cli/components-cli/create-postpipe-auth/create-postpipe-user/templates/mongodb.ts similarity index 100% rename from cli/mongodb/create-postpipe-auth/create-postpipe-user/templates/mongodb.ts rename to cli/components-cli/create-postpipe-auth/create-postpipe-user/templates/mongodb.ts diff --git a/cli/components-cli/create-postpipe-auth/index.js b/cli/components-cli/create-postpipe-auth/index.js new file mode 100644 index 0000000..42524fc --- /dev/null +++ b/cli/components-cli/create-postpipe-auth/index.js @@ -0,0 +1,203 @@ +#!/usr/bin/env node + +import inquirer from 'inquirer'; +import fs from 'fs-extra'; +import path from 'path'; +import { fileURLToPath } from 'url'; +import chalk from 'chalk'; +import ora from 'ora'; +import { execa } from 'execa'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +async function main() { + console.log(chalk.bold.blue('\nWelcome to PostPipe Auth Setup!\n')); + + const answers = await inquirer.prompt([ + { + type: 'list', + name: 'database', + message: 'Choose your database:', + choices: [ + { name: '1. MongoDB', value: 'mongodb' }, + { name: '2. PostgreSQL (Prisma)', value: 'postgresql' }, + ], + }, + ]); + + if (answers.database === 'mongodb') { + await setupMongoDB(); + } else if (answers.database === 'postgresql') { + await setupPostgreSQL(); + } +} + +async function setupMongoDB() { + const spinner = ora('Initializing MongoDB Authentication...').start(); + + try { + const targetDir = process.cwd(); + const templateDir = path.join(__dirname, 'mongodb', 'template'); + + // 1. Copy Template Files + // Helper to check if src exists + const isSrc = fs.existsSync(path.join(targetDir, 'src')); + const authDest = isSrc ? path.join(targetDir, 'src', 'lib', 'auth') : path.join(targetDir, 'lib', 'auth'); + + spinner.text = `Copying templates to ${authDest}...`; + await fs.copy(templateDir, authDest); + + // 2. Install Dependencies + spinner.text = 'Installing dependencies...'; + await execa('npm', ['install', 'mongoose', 'bcryptjs', 'jsonwebtoken', 'postpipe', 'zod', 'resend'], { cwd: targetDir }); + await execa('npm', ['install', '-D', '@types/bcryptjs', '@types/jsonwebtoken'], { cwd: targetDir }); + + // 3. Create .env with placeholders + spinner.text = 'Configuring environment...'; + const envPath = path.join(targetDir, '.env'); + const envContent = ` +# PostPipe Auth Configuration +DATABASE_URI=your_mongodb_connection_string +JWT_SECRET=your_super_complex_secret +RESEND_API_KEY=optional_resend_key +NEXT_PUBLIC_APP_URL=http://localhost:3000 + `; + + if (fs.existsSync(envPath)) { + await fs.appendFile(envPath, `\n${envContent}`); + } else { + await fs.writeFile(envPath, envContent); + } + + spinner.succeed(chalk.green('MongoDB Authentication successfully initialized!')); + + console.log('\nNext Steps:'); + console.log(`1. Check the files in ${chalk.cyan(authDest)}`); + console.log(`2. Update your ${chalk.cyan('.env')} file with real values.`); + console.log(`3. Move the frontend pages from ${chalk.cyan(authDest + '/frontend')} to your app directory.`); + console.log(`4. Run: ${chalk.yellow('npm run dev')}`); + + } catch (error) { + spinner.fail('Setup failed.'); + console.error(error); + } +} + +async function setupPostgreSQL() { + const spinner = ora('Initializing PostgreSQL Authentication (via Prisma)...').start(); + + try { + const targetDir = process.cwd(); + const templateDir = path.join(__dirname, 'postgresql', 'template'); + + // 1. Copy Template Files + const isSrc = fs.existsSync(path.join(targetDir, 'src')); + const authDest = isSrc ? path.join(targetDir, 'src', 'lib', 'auth') : path.join(targetDir, 'lib', 'auth'); + // For Prisma, we often want the schema at root/prisma or src/prisma. + // But here we are copying the "template" folder. + // The structure of template is: + // postgresql/template/ + // prisma/schema.prisma + // lib/auth/prisma.ts + // .env.example + + // Wait, the mongodb template had "app", "lib", "models". + // My postgresql template has "prisma", "lib/auth", ".env.example". + // If I copy "templateDir" to "authDest" (lib/auth), I will end up with lib/auth/prisma/schema.prisma, which is odd. + + // Let's refine the copy logic for Postgres. + // We want: + // - prisma/schema.prisma -> ./prisma/schema.prisma + // - lib/auth/prisma.ts -> ./lib/auth/prisma.ts (or src/lib/auth) + + // So we should copy parts separately or copy everything to root (merging). + // BUT, setupMongoDB copies to `authDest` (lib/auth). + // MongoDB template structure: + // app/ -> (pages) + // lib/ -> (auth utils) + // models/ -> (User.ts) + + // If I copy mongo template to `lib/auth`, I get `lib/auth/app`, `lib/auth/lib`, `lib/auth/models`. + // That seems to be how it was working... + // Let's check `setupMongoDB` again. + // `path.join(targetDir, 'src', 'lib', 'auth')` + // `await fs.copy(templateDir, authDest)` + // If templateDir has `app`, `lib`, `models`, then `lib/auth` will contain `app`, `lib`, `models`. + // Example: `src/lib/auth/models/User.ts`. + // This seems correct for the existing MongoDB logic. + + // For Postgres, I created: + // postgresql/template/prisma/schema.prisma + // postgresql/template/lib/auth/prisma.ts + + // If I copy `postgresql/template` to `targetDir` (root), it would place `prisma` in root and `lib` in root. + // But we want to support `src` directory if it exists. + + spinner.text = `Copying templates...`; + + // Copy prisma folder to root always (or src if Next.js pattern? Prisma usually lives in root or src/prisma) + // Standard is root/prisma for Next.js app dir often, or just root. + const prismaDest = path.join(targetDir, 'prisma'); + await fs.copy(path.join(templateDir, 'prisma'), prismaDest); + + // Copy auth utils logic + // We put prisma.ts in `postgresql/template/lib/auth/prisma.ts`. + // We want it in `src/lib/auth/prisma.ts` or `lib/auth/prisma.ts`. + const libAuthDest = isSrc ? path.join(targetDir, 'src', 'lib', 'auth') : path.join(targetDir, 'lib', 'auth'); + + // Since my template has `lib/auth/prisma.ts`, I should copy `templateDir/lib/auth` to `libAuthDest`. + // Since my template has `lib/auth/prisma.ts`, I should copy `templateDir/lib/auth` to `libAuthDest`. + if (fs.existsSync(path.join(templateDir, 'lib', 'auth'))) { + await fs.copy(path.join(templateDir, 'lib', 'auth'), libAuthDest); + } + + // Copy frontend pages (app folder) + if (fs.existsSync(path.join(templateDir, 'app'))) { + const frontendDest = path.join(libAuthDest, 'frontend'); + await fs.copy(path.join(templateDir, 'app'), frontendDest); + } + + // 2. Install Dependencies + spinner.text = 'Installing dependencies...'; + await execa('npm', ['install', '@prisma/client', 'bcryptjs', 'jsonwebtoken', 'postpipe', 'zod', 'resend'], { cwd: targetDir }); + await execa('npm', ['install', '-D', 'prisma', '@types/bcryptjs', '@types/jsonwebtoken'], { cwd: targetDir }); + + // 3. Create .env + spinner.text = 'Configuring environment...'; + const envPath = path.join(targetDir, '.env'); + const exampleEnvPath = path.join(templateDir, '.env.example'); + + let envContent = ''; + if (fs.existsSync(exampleEnvPath)) { + envContent = await fs.readFile(exampleEnvPath, 'utf-8'); + } else { + envContent = `DATABASE_URL="postgresql://johndoe:randompassword@localhost:5432/mydb?schema=public"`; + } + + if (fs.existsSync(envPath)) { + await fs.appendFile(envPath, `\n${envContent}`); + } else { + await fs.writeFile(envPath, envContent); + } + + spinner.succeed(chalk.green('PostgreSQL Authentication successfully initialized!')); + + console.log('\nNext Steps:'); + console.log(`1. Check the prisma schema in ${chalk.cyan('prisma/schema.prisma')}`); + console.log(`2. Update your ${chalk.cyan('.env')} file with your PostgreSQL connection string.`); + console.log(`3. Run: ${chalk.yellow('npx prisma migrate dev --name init')} to create the database tables.`); + console.log(`4. Run: ${chalk.yellow('npx prisma generate')} to generate the client.`); + console.log(`5. Move the frontend pages from ${chalk.cyan(libAuthDest + '/frontend')} to your app directory.`); + console.log(`6. Run: ${chalk.yellow('npm run dev')}`); + + } catch (error) { + spinner.fail('Setup failed.'); + console.error(error); + } +} + +main().catch((err) => { + console.error(err); + process.exit(1); +}); diff --git a/cli/mongodb/create-postpipe-auth/templates/mongodb/README.md b/cli/components-cli/create-postpipe-auth/mongodb/template/README.md similarity index 100% rename from cli/mongodb/create-postpipe-auth/templates/mongodb/README.md rename to cli/components-cli/create-postpipe-auth/mongodb/template/README.md diff --git a/cli/mongodb/create-postpipe-auth/templates/mongodb/app/(auth)/login/page.tsx b/cli/components-cli/create-postpipe-auth/mongodb/template/app/(auth)/login/page.tsx similarity index 100% rename from cli/mongodb/create-postpipe-auth/templates/mongodb/app/(auth)/login/page.tsx rename to cli/components-cli/create-postpipe-auth/mongodb/template/app/(auth)/login/page.tsx diff --git a/cli/mongodb/create-postpipe-auth/templates/mongodb/app/(auth)/reset-password/page.tsx b/cli/components-cli/create-postpipe-auth/mongodb/template/app/(auth)/reset-password/page.tsx similarity index 100% rename from cli/mongodb/create-postpipe-auth/templates/mongodb/app/(auth)/reset-password/page.tsx rename to cli/components-cli/create-postpipe-auth/mongodb/template/app/(auth)/reset-password/page.tsx diff --git a/cli/mongodb/create-postpipe-auth/templates/mongodb/app/(auth)/signup/page.tsx b/cli/components-cli/create-postpipe-auth/mongodb/template/app/(auth)/signup/page.tsx similarity index 100% rename from cli/mongodb/create-postpipe-auth/templates/mongodb/app/(auth)/signup/page.tsx rename to cli/components-cli/create-postpipe-auth/mongodb/template/app/(auth)/signup/page.tsx diff --git a/cli/mongodb/create-postpipe-auth/templates/mongodb/app/(auth)/verify-email/page.tsx b/cli/components-cli/create-postpipe-auth/mongodb/template/app/(auth)/verify-email/page.tsx similarity index 100% rename from cli/mongodb/create-postpipe-auth/templates/mongodb/app/(auth)/verify-email/page.tsx rename to cli/components-cli/create-postpipe-auth/mongodb/template/app/(auth)/verify-email/page.tsx diff --git a/cli/mongodb/create-postpipe-auth/templates/mongodb/lib/actions/auth.ts b/cli/components-cli/create-postpipe-auth/mongodb/template/lib/actions/auth.ts similarity index 100% rename from cli/mongodb/create-postpipe-auth/templates/mongodb/lib/actions/auth.ts rename to cli/components-cli/create-postpipe-auth/mongodb/template/lib/actions/auth.ts diff --git a/cli/mongodb/create-postpipe-auth/templates/mongodb/lib/db.ts b/cli/components-cli/create-postpipe-auth/mongodb/template/lib/db.ts similarity index 100% rename from cli/mongodb/create-postpipe-auth/templates/mongodb/lib/db.ts rename to cli/components-cli/create-postpipe-auth/mongodb/template/lib/db.ts diff --git a/cli/mongodb/create-postpipe-auth/templates/mongodb/lib/email.ts b/cli/components-cli/create-postpipe-auth/mongodb/template/lib/email.ts similarity index 100% rename from cli/mongodb/create-postpipe-auth/templates/mongodb/lib/email.ts rename to cli/components-cli/create-postpipe-auth/mongodb/template/lib/email.ts diff --git a/cli/mongodb/create-postpipe-auth/templates/mongodb/lib/schemas.ts b/cli/components-cli/create-postpipe-auth/mongodb/template/lib/schemas.ts similarity index 100% rename from cli/mongodb/create-postpipe-auth/templates/mongodb/lib/schemas.ts rename to cli/components-cli/create-postpipe-auth/mongodb/template/lib/schemas.ts diff --git a/cli/mongodb/create-postpipe-auth/templates/mongodb/models/User.ts b/cli/components-cli/create-postpipe-auth/mongodb/template/models/User.ts similarity index 100% rename from cli/mongodb/create-postpipe-auth/templates/mongodb/models/User.ts rename to cli/components-cli/create-postpipe-auth/mongodb/template/models/User.ts diff --git a/cli/mongodb/create-postpipe-auth/package-lock.json b/cli/components-cli/create-postpipe-auth/package-lock.json similarity index 51% rename from cli/mongodb/create-postpipe-auth/package-lock.json rename to cli/components-cli/create-postpipe-auth/package-lock.json index de68742..4e7140d 100644 --- a/cli/mongodb/create-postpipe-auth/package-lock.json +++ b/cli/components-cli/create-postpipe-auth/package-lock.json @@ -9,16 +9,498 @@ "version": "1.0.5", "license": "CC-BY-NC-SA-4.0", "dependencies": { + "@types/bcryptjs": "^2.4.6", + "@types/jsonwebtoken": "^9.0.10", + "@types/node": "^25.0.3", + "bcryptjs": "^3.0.3", "chalk": "^5.3.0", "execa": "^8.0.1", "fs-extra": "^11.2.0", "inquirer": "^9.2.14", + "jsonwebtoken": "^9.0.3", + "next": "^16.1.1", "ora": "^8.0.1" }, "bin": { "create-postpipe-auth": "index.js" } }, + "node_modules/@emnapi/runtime": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.7.1.tgz", + "integrity": "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@img/colour": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.0.0.tgz", + "integrity": "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", + "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz", + "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz", + "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz", + "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz", + "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==", + "cpu": [ + "arm" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz", + "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz", + "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==", + "cpu": [ + "ppc64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-riscv64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz", + "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==", + "cpu": [ + "riscv64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz", + "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==", + "cpu": [ + "s390x" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz", + "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz", + "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz", + "integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz", + "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz", + "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz", + "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==", + "cpu": [ + "ppc64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-ppc64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-riscv64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz", + "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==", + "cpu": [ + "riscv64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-riscv64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz", + "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==", + "cpu": [ + "s390x" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz", + "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz", + "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz", + "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz", + "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.7.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", + "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz", + "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz", + "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, "node_modules/@inquirer/external-editor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", @@ -49,6 +531,181 @@ "node": ">=18" } }, + "node_modules/@next/env": { + "version": "16.1.1", + "resolved": "https://registry.npmjs.org/@next/env/-/env-16.1.1.tgz", + "integrity": "sha512-3oxyM97Sr2PqiVyMyrZUtrtM3jqqFxOQJVuKclDsgj/L728iZt/GyslkN4NwarledZATCenbk4Offjk1hQmaAA==", + "license": "MIT" + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "16.1.1", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.1.1.tgz", + "integrity": "sha512-JS3m42ifsVSJjSTzh27nW+Igfha3NdBOFScr9C80hHGrWx55pTrVL23RJbqir7k7/15SKlrLHhh/MQzqBBYrQA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "16.1.1", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.1.1.tgz", + "integrity": "sha512-hbyKtrDGUkgkyQi1m1IyD3q4I/3m9ngr+V93z4oKHrPcmxwNL5iMWORvLSGAf2YujL+6HxgVvZuCYZfLfb4bGw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "16.1.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.1.1.tgz", + "integrity": "sha512-/fvHet+EYckFvRLQ0jPHJCUI5/B56+2DpI1xDSvi80r/3Ez+Eaa2Yq4tJcRTaB1kqj/HrYKn8Yplm9bNoMJpwQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "16.1.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.1.1.tgz", + "integrity": "sha512-MFHrgL4TXNQbBPzkKKur4Fb5ICEJa87HM7fczFs2+HWblM7mMLdco3dvyTI+QmLBU9xgns/EeeINSZD6Ar+oLg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "16.1.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.1.1.tgz", + "integrity": "sha512-20bYDfgOQAPUkkKBnyP9PTuHiJGM7HzNBbuqmD0jiFVZ0aOldz+VnJhbxzjcSabYsnNjMPsE0cyzEudpYxsrUQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "16.1.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.1.1.tgz", + "integrity": "sha512-9pRbK3M4asAHQRkwaXwu601oPZHghuSC8IXNENgbBSyImHv/zY4K5udBusgdHkvJ/Tcr96jJwQYOll0qU8+fPA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "16.1.1", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.1.1.tgz", + "integrity": "sha512-bdfQkggaLgnmYrFkSQfsHfOhk/mCYmjnrbRCGgkMcoOBZ4n+TRRSLmT/CU5SATzlBJ9TpioUyBW/vWFXTqQRiA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "16.1.1", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.1.1.tgz", + "integrity": "sha512-Ncwbw2WJ57Al5OX0k4chM68DKhEPlrXBaSXDCi2kPi5f4d8b3ejr3RRJGfKBLrn2YJL5ezNS7w2TZLHSti8CMw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@types/bcryptjs": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/@types/bcryptjs/-/bcryptjs-2.4.6.tgz", + "integrity": "sha512-9xlo6R2qDs5uixm0bcIqCeMCE6HiQsIyel9KQySStiyqNl2tnj2mP3DX1Nf56MD6KMenNNlBBsy3LJ7gUEQPXQ==", + "license": "MIT" + }, + "node_modules/@types/jsonwebtoken": { + "version": "9.0.10", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.10.tgz", + "integrity": "sha512-asx5hIG9Qmf/1oStypjanR7iKTv0gXQ1Ov/jfrX6kS/EO0OFni8orbmGCn0672NHR3kXHwpAwR+B368ZGN/2rA==", + "license": "MIT", + "dependencies": { + "@types/ms": "*", + "@types/node": "*" + } + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "25.0.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.3.tgz", + "integrity": "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==", + "license": "MIT", + "peer": true, + "dependencies": { + "undici-types": "~7.16.0" + } + }, "node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -108,6 +765,24 @@ ], "license": "MIT" }, + "node_modules/baseline-browser-mapping": { + "version": "2.9.11", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.11.tgz", + "integrity": "sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, + "node_modules/bcryptjs": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-3.0.3.tgz", + "integrity": "sha512-GlF5wPWnSa/X5LKM1o0wz0suXIINz1iHRLvTS+sLyi7XPbe5ycmYI3DlZqVGZZtDgl4DmasFg7gOB3JYbphV5g==", + "license": "BSD-3-Clause", + "bin": { + "bcrypt": "bin/bcrypt" + } + }, "node_modules/bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -143,6 +818,32 @@ "ieee754": "^1.1.13" } }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "license": "BSD-3-Clause" + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001761", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001761.tgz", + "integrity": "sha512-JF9ptu1vP2coz98+5051jZ4PwQgd2ni8A+gYSN7EA7dPKIMf0pDlSUxhdmVOaV3/fYK5uWBkgSXJaRLr4+3A6g==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, "node_modules/chalk": { "version": "5.6.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", @@ -197,6 +898,12 @@ "node": ">= 12" } }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "license": "MIT" + }, "node_modules/clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", @@ -250,6 +957,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -600,6 +1326,91 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/jsonwebtoken": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz", + "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==", + "license": "MIT", + "dependencies": { + "jws": "^4.0.1", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jwa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", + "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", + "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", + "license": "MIT", + "dependencies": { + "jwa": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "license": "MIT" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "license": "MIT" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "license": "MIT" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "license": "MIT" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "license": "MIT" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "license": "MIT" + }, "node_modules/log-symbols": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz", @@ -658,6 +1469,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, "node_modules/mute-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", @@ -667,6 +1484,77 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/next": { + "version": "16.1.1", + "resolved": "https://registry.npmjs.org/next/-/next-16.1.1.tgz", + "integrity": "sha512-QI+T7xrxt1pF6SQ/JYFz95ro/mg/1Znk5vBebsWwbpejj1T0A23hO7GYEaVac9QUOT2BIMiuzm0L99ooq7k0/w==", + "license": "MIT", + "dependencies": { + "@next/env": "16.1.1", + "@swc/helpers": "0.5.15", + "baseline-browser-mapping": "^2.8.3", + "caniuse-lite": "^1.0.30001579", + "postcss": "8.4.31", + "styled-jsx": "5.1.6" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": ">=20.9.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "16.1.1", + "@next/swc-darwin-x64": "16.1.1", + "@next/swc-linux-arm64-gnu": "16.1.1", + "@next/swc-linux-arm64-musl": "16.1.1", + "@next/swc-linux-x64-gnu": "16.1.1", + "@next/swc-linux-x64-musl": "16.1.1", + "@next/swc-win32-arm64-msvc": "16.1.1", + "@next/swc-win32-x64-msvc": "16.1.1", + "sharp": "^0.34.4" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "@playwright/test": "^1.51.1", + "babel-plugin-react-compiler": "*", + "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@playwright/test": { + "optional": true + }, + "babel-plugin-react-compiler": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, "node_modules/npm-run-path": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", @@ -791,6 +1679,63 @@ "node": ">=8" } }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/react": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz", + "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==", + "license": "MIT", + "peer": true, + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.3" + } + }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -880,6 +1825,69 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "license": "MIT" }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sharp": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz", + "integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==", + "hasInstallScript": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@img/colour": "^1.0.0", + "detect-libc": "^2.1.2", + "semver": "^7.7.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.34.5", + "@img/sharp-darwin-x64": "0.34.5", + "@img/sharp-libvips-darwin-arm64": "1.2.4", + "@img/sharp-libvips-darwin-x64": "1.2.4", + "@img/sharp-libvips-linux-arm": "1.2.4", + "@img/sharp-libvips-linux-arm64": "1.2.4", + "@img/sharp-libvips-linux-ppc64": "1.2.4", + "@img/sharp-libvips-linux-riscv64": "1.2.4", + "@img/sharp-libvips-linux-s390x": "1.2.4", + "@img/sharp-libvips-linux-x64": "1.2.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", + "@img/sharp-libvips-linuxmusl-x64": "1.2.4", + "@img/sharp-linux-arm": "0.34.5", + "@img/sharp-linux-arm64": "0.34.5", + "@img/sharp-linux-ppc64": "0.34.5", + "@img/sharp-linux-riscv64": "0.34.5", + "@img/sharp-linux-s390x": "0.34.5", + "@img/sharp-linux-x64": "0.34.5", + "@img/sharp-linuxmusl-arm64": "0.34.5", + "@img/sharp-linuxmusl-x64": "0.34.5", + "@img/sharp-wasm32": "0.34.5", + "@img/sharp-win32-arm64": "0.34.5", + "@img/sharp-win32-ia32": "0.34.5", + "@img/sharp-win32-x64": "0.34.5" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -913,6 +1921,15 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/stdin-discarder": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz", @@ -972,6 +1989,29 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/styled-jsx": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", + "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", + "license": "MIT", + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -1002,6 +2042,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "license": "MIT" + }, "node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", diff --git a/cli/mongodb/create-postpipe-auth/package.json b/cli/components-cli/create-postpipe-auth/package.json similarity index 68% rename from cli/mongodb/create-postpipe-auth/package.json rename to cli/components-cli/create-postpipe-auth/package.json index 2bb965d..4c4fe54 100644 --- a/cli/mongodb/create-postpipe-auth/package.json +++ b/cli/components-cli/create-postpipe-auth/package.json @@ -14,10 +14,16 @@ "create-postpipe-auth": "./index.js" }, "dependencies": { + "@types/bcryptjs": "^2.4.6", + "@types/jsonwebtoken": "^9.0.10", + "@types/node": "^25.0.3", + "bcryptjs": "^3.0.3", "chalk": "^5.3.0", + "execa": "^8.0.1", "fs-extra": "^11.2.0", "inquirer": "^9.2.14", - "ora": "^8.0.1", - "execa": "^8.0.1" + "jsonwebtoken": "^9.0.3", + "next": "^16.1.1", + "ora": "^8.0.1" } } diff --git a/cli/components-cli/create-postpipe-auth/postgresql/template/app/(auth)/forgot-password/page.tsx b/cli/components-cli/create-postpipe-auth/postgresql/template/app/(auth)/forgot-password/page.tsx new file mode 100644 index 0000000..4e8b522 --- /dev/null +++ b/cli/components-cli/create-postpipe-auth/postgresql/template/app/(auth)/forgot-password/page.tsx @@ -0,0 +1,45 @@ +'use client'; + +import Link from 'next/link'; +import { useFormState } from 'react-dom'; +import { forgotPassword, AuthState } from '@/lib/auth/actions/auth'; + +const initialState: AuthState = { + message: '', + success: false, +}; + +export default function ForgotPasswordPage() { + const [state, action] = useFormState(forgotPassword, initialState); + + return ( +
+

Forgot Password

+
+ + +
+ {state?.message && ( +

+ {state.message} +

+ )} +
+ + Back to Login + +
+
+ ); +} diff --git a/cli/components-cli/create-postpipe-auth/postgresql/template/app/(auth)/login/page.tsx b/cli/components-cli/create-postpipe-auth/postgresql/template/app/(auth)/login/page.tsx new file mode 100644 index 0000000..54593d1 --- /dev/null +++ b/cli/components-cli/create-postpipe-auth/postgresql/template/app/(auth)/login/page.tsx @@ -0,0 +1,56 @@ +'use client'; + +import Link from 'next/link'; +import { useFormState } from 'react-dom'; +import { login } from '@/lib/auth/actions/auth'; + +const initialState = { + message: '', + success: false, +}; + +export default function LoginPage() { + const [state, action] = useFormState(login, initialState); + + return ( +
+

Login

+
+ + + +
+ {state?.message && ( +

+ {state.message} +

+ )} +
+ + Don't have an account? Sign up + +
+ + Forgot Password? + +
+
+ ); +} diff --git a/cli/components-cli/create-postpipe-auth/postgresql/template/app/(auth)/reset-password/page.tsx b/cli/components-cli/create-postpipe-auth/postgresql/template/app/(auth)/reset-password/page.tsx new file mode 100644 index 0000000..af8a9de --- /dev/null +++ b/cli/components-cli/create-postpipe-auth/postgresql/template/app/(auth)/reset-password/page.tsx @@ -0,0 +1,54 @@ +'use client'; + +import { useFormState } from 'react-dom'; +import { resetPassword } from '@/lib/auth/actions/auth'; +import { useSearchParams } from 'next/navigation'; + +const initialState = { + message: '', + success: false, +}; + +export default function ResetPasswordPage() { + const searchParams = useSearchParams(); + const token = searchParams.get('token'); + const [state, action] = useFormState(resetPassword, initialState); + + if (!token) { + return
Invalid token
; + } + + return ( +
+

Reset Password

+
+ + + + +
+ {state?.message && ( +

+ {state.message} +

+ )} + {state?.success && ( + Go to Login + )} +
+ ); +} diff --git a/cli/components-cli/create-postpipe-auth/postgresql/template/app/(auth)/signup/page.tsx b/cli/components-cli/create-postpipe-auth/postgresql/template/app/(auth)/signup/page.tsx new file mode 100644 index 0000000..25e79d1 --- /dev/null +++ b/cli/components-cli/create-postpipe-auth/postgresql/template/app/(auth)/signup/page.tsx @@ -0,0 +1,70 @@ +'use client'; + +import Link from 'next/link'; +import { useFormState } from 'react-dom'; +import { signup, AuthState } from '@/lib/auth/actions/auth'; + +const initialState: AuthState = { + message: '', + success: false, + errors: undefined +}; + +export default function SignupPage() { + const [state, action] = useFormState(signup, initialState); + + return ( +
+

Sign Up

+
+ + + + + +
+ {state?.message && ( +

+ {state.message} +

+ )} + {state?.errors && ( +
+
{JSON.stringify(state.errors, null, 2)}
+
+ )} +

+ Already have an account? Login +

+
+ ); +} diff --git a/cli/components-cli/create-postpipe-auth/postgresql/template/app/(auth)/verify-email/page.tsx b/cli/components-cli/create-postpipe-auth/postgresql/template/app/(auth)/verify-email/page.tsx new file mode 100644 index 0000000..4cc7461 --- /dev/null +++ b/cli/components-cli/create-postpipe-auth/postgresql/template/app/(auth)/verify-email/page.tsx @@ -0,0 +1,36 @@ + +import { verifyEmail } from '@/lib/auth/actions/auth'; + +export default async function VerifyEmailPage({ + searchParams, +}: { + searchParams: { [key: string]: string | string[] | undefined }; +}) { + const token = searchParams.token as string; + const resolvedSearchParams = await searchParams; // Next.js 15: searchParams might be a promise in future, ensuring safety. (Actually in 15 it IS a promise or sync? Next 15 beta changes searchParams to promise). + // Let's assume sync for now or standard access, but for Next 15 "await searchParams" is recommended if it's dynamic. + // However, in typical 14/15 stable, it's just props. + // Note: The previous code didn't await. I'll stick to basic property access for simplicity unless errors arise. + + if (!token) { + return
Invalid token
; + } + + const result = await verifyEmail(token); + + return ( +
+

Email Verification

+ {result.success ? ( +
+

{result.message}

+ Go to Login +
+ ) : ( +
+

{result.message}

+
+ )} +
+ ); +} diff --git a/cli/components-cli/create-postpipe-auth/postgresql/template/lib/auth/actions/auth.ts b/cli/components-cli/create-postpipe-auth/postgresql/template/lib/auth/actions/auth.ts new file mode 100644 index 0000000..9ffc475 --- /dev/null +++ b/cli/components-cli/create-postpipe-auth/postgresql/template/lib/auth/actions/auth.ts @@ -0,0 +1,273 @@ +'use server'; + +import bcrypt from 'bcryptjs'; +import jwt from 'jsonwebtoken'; +import { cookies } from 'next/headers'; +import { prisma } from '../prisma'; +import { SignupSchema, LoginSchema, ForgotPasswordSchema, ResetPasswordSchema } from '../schemas'; +import { sendVerificationEmail, sendPasswordResetEmail } from '../email'; + +const JWT_SECRET = process.env.JWT_SECRET || 'your-secret-key'; + +export interface AuthState { + success: boolean; + message: string; + errors?: Record; +} + +export async function signup(prevState: any, formData: FormData): Promise { + const rawData = Object.fromEntries(formData.entries()); + const validated = SignupSchema.safeParse(rawData); + + if (!validated.success) { + return { success: false, message: 'Validation failed', errors: validated.error.flatten().fieldErrors }; + } + + const { name, email, password } = validated.data; + + try { + const existingUser = await prisma.user.findUnique({ where: { email } }); + if (existingUser) { + return { success: false, message: 'User already exists' }; + } + + const hashedPassword = await bcrypt.hash(password, 10); + const verifyToken = jwt.sign({ email }, JWT_SECRET, { expiresIn: '24h' }); + const verifyTokenExpiry = new Date(Date.now() + 24 * 60 * 60 * 1000); + + await prisma.user.create({ + data: { + name, + email, + password: hashedPassword, + verifyToken, + verifyTokenExpiry, + }, + }); + + await sendVerificationEmail(email, verifyToken); + + return { success: true, message: 'User created. Please check your email to verify your account.' }; + } catch (error) { + console.error('Signup error:', error); + return { success: false, message: 'Internal server error' }; + } +} + +export async function login(prevState: any, formData: FormData): Promise { + const rawData = Object.fromEntries(formData.entries()); + const validated = LoginSchema.safeParse(rawData); + + if (!validated.success) { + return { success: false, message: 'Validation failed', errors: validated.error.flatten().fieldErrors }; + } + + const { email, password } = validated.data; + + try { + const user = await prisma.user.findUnique({ where: { email } }); + if (!user) { + return { success: false, message: 'Invalid credentials' }; + } + + const isMatch = await bcrypt.compare(password, user.password); + if (!isMatch) { + return { success: false, message: 'Invalid credentials' }; + } + + if (!user.isVerified) { + return { success: false, message: 'Please verify your email first' }; + } + + const token = jwt.sign({ userId: user.id, email: user.email }, JWT_SECRET, { expiresIn: '7d' }); + + (await cookies()).set('token', token, { + httpOnly: true, + secure: process.env.NODE_ENV === 'production', + maxAge: 7 * 24 * 60 * 60 * 1000, + path: '/', + }); + + return { success: true, message: 'Logged in successfully' }; + } catch (error) { + console.error('Login error:', error); + return { success: false, message: 'Internal server error' }; + } +} + +export async function logout(prevState: any, formData: FormData): Promise { + (await cookies()).delete('token'); + return { success: true, message: 'Logged out successfully' }; +} + +export async function signOut() { + 'use server'; + (await cookies()).delete('token'); +} + +export async function forgotPassword(prevState: any, formData: FormData): Promise { + const rawData = Object.fromEntries(formData.entries()); + const validated = ForgotPasswordSchema.safeParse(rawData); + + if (!validated.success) { + return { success: false, message: 'Validation failed', errors: validated.error.flatten().fieldErrors }; + } + + const { email } = validated.data; + + try { + const user = await prisma.user.findUnique({ where: { email } }); + if (!user) { + return { success: true, message: 'If an account exists, a reset link has been sent.' }; + } + + const forgotPasswordToken = jwt.sign({ userId: user.id }, JWT_SECRET, { expiresIn: '1h' }); + const forgotPasswordTokenExpiry = new Date(Date.now() + 3600000); + + await prisma.user.update({ + where: { email }, + data: { + forgotPasswordToken, + forgotPasswordTokenExpiry, + }, + }); + + await sendPasswordResetEmail(email, forgotPasswordToken); + + return { success: true, message: 'If an account exists, a reset link has been sent.' }; + } catch (error) { + console.error('Forgot Password error:', error); + return { success: false, message: 'Internal server error' }; + } +} + +export async function resetPassword(prevState: any, formData: FormData): Promise { + const rawData = Object.fromEntries(formData.entries()); + const validated = ResetPasswordSchema.safeParse(rawData); + + if (!validated.success) { + return { success: false, message: 'Validation failed', errors: validated.error.flatten().fieldErrors }; + } + + const { token, password } = validated.data; + + try { + const user = await prisma.user.findFirst({ + where: { + forgotPasswordToken: token, + forgotPasswordTokenExpiry: { gt: new Date() }, + }, + }); + + if (!user) { + return { success: false, message: 'Invalid or expired token' }; + } + + const hashedPassword = await bcrypt.hash(password, 10); + + await prisma.user.update({ + where: { id: user.id }, + data: { + password: hashedPassword, + forgotPasswordToken: null, + forgotPasswordTokenExpiry: null, + }, + }); + + return { success: true, message: 'Password reset successfully. You can now login.' }; + } catch (error) { + console.error('Reset Password error:', error); + return { success: false, message: 'Internal server error' }; + } +} + +export async function verifyEmail(token: string) { + if (!token) { + return { success: false, message: "Token is required" }; + } + + try { + const user = await prisma.user.findFirst({ + where: { + verifyToken: token, + verifyTokenExpiry: { gt: new Date() }, + }, + }); + + if (!user) { + return { success: false, message: 'Invalid or expired token' }; + } + + await prisma.user.update({ + where: { id: user.id }, + data: { + isVerified: true, + verifyToken: null, + verifyTokenExpiry: null, + }, + }); + + return { success: true, message: 'Email verified successfully. You can now login.' }; + + } catch (error) { + console.error("Verify Email error:", error); + return { success: false, message: "Internal server error" }; + } +} + +export async function resendVerification(prevState: any, formData: FormData): Promise { + const rawData = Object.fromEntries(formData.entries()); + const email = rawData.email as string; + + if (!email) { + return { success: false, message: 'Email is required' }; + } + + try { + const user = await prisma.user.findUnique({ where: { email } }); + if (!user) { + return { success: false, message: 'User not found' }; + } + + if (user.isVerified) { + return { success: false, message: 'Email already verified' }; + } + + const verifyToken = jwt.sign({ email }, JWT_SECRET, { expiresIn: '24h' }); + const verifyTokenExpiry = new Date(Date.now() + 24 * 60 * 60 * 1000); + + await prisma.user.update({ + where: { email }, + data: { + verifyToken, + verifyTokenExpiry, + }, + }); + + await sendVerificationEmail(email, verifyToken); + + return { success: true, message: 'Verification email sent' }; + } catch (error) { + console.error('Resend Verification error:', error); + return { success: false, message: 'Internal server error' }; + } +} + +export async function getSession() { + const token = (await cookies()).get('token')?.value; + + if (!token) { + return null; + } + + try { + const decoded = jwt.verify(token, JWT_SECRET) as any; + return { + userId: decoded.userId, + email: decoded.email, + exp: decoded.exp + }; + } catch (error) { + return null; + } +} diff --git a/cli/components-cli/create-postpipe-auth/postgresql/template/lib/auth/email.ts b/cli/components-cli/create-postpipe-auth/postgresql/template/lib/auth/email.ts new file mode 100644 index 0000000..24db354 --- /dev/null +++ b/cli/components-cli/create-postpipe-auth/postgresql/template/lib/auth/email.ts @@ -0,0 +1,47 @@ + +import { Resend } from 'resend'; + +// Initialize Resend only if API key is present +const resendApiKey = process.env.RESEND_API_KEY; +const resend = resendApiKey ? new Resend(resendApiKey) : null; +const appUrl = process.env.NEXT_PUBLIC_APP_URL || 'http://localhost:3000'; + +export async function sendVerificationEmail(email: string, token: string) { + const link = `${appUrl}/auth/verify-email?token=${token}`; + + if (!resend) { + console.log(`[DEV MODE] Verification Email to ${email}: ${link}`); + return; + } + + try { + await resend.emails.send({ + from: 'onboarding@resend.dev', + to: email, + subject: 'Verify your email', + html: `

Click here to verify your email.

`, + }); + } catch (error) { + console.error('Email sending failed:', error); + } +} + +export async function sendPasswordResetEmail(email: string, token: string) { + const link = `${appUrl}/auth/reset-password?token=${token}`; + + if (!resend) { + console.log(`[DEV MODE] Password Reset Email to ${email}: ${link}`); + return; + } + + try { + await resend.emails.send({ + from: 'onboarding@resend.dev', + to: email, + subject: 'Reset your password', + html: `

Click here to reset your password.

`, + }); + } catch (error) { + console.error('Email sending failed:', error); + } +} diff --git a/cli/components-cli/create-postpipe-auth/postgresql/template/lib/auth/prisma.ts b/cli/components-cli/create-postpipe-auth/postgresql/template/lib/auth/prisma.ts new file mode 100644 index 0000000..c040ca8 --- /dev/null +++ b/cli/components-cli/create-postpipe-auth/postgresql/template/lib/auth/prisma.ts @@ -0,0 +1,11 @@ +import { PrismaClient } from '@prisma/client' + +const globalForPrisma = global as unknown as { prisma: PrismaClient } + +export const prisma = + globalForPrisma.prisma || + new PrismaClient({ + log: ['query'], + }) + +if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma diff --git a/cli/components-cli/create-postpipe-auth/postgresql/template/lib/auth/schemas.ts b/cli/components-cli/create-postpipe-auth/postgresql/template/lib/auth/schemas.ts new file mode 100644 index 0000000..037b6f8 --- /dev/null +++ b/cli/components-cli/create-postpipe-auth/postgresql/template/lib/auth/schemas.ts @@ -0,0 +1,38 @@ +import { z } from 'zod'; + +export const SignupSchema = z.object({ + name: z.string().min(2, { message: "Name must be at least 2 characters long." }), + email: z.string().email({ message: "Please enter a valid email." }).trim(), + password: z.string() + .min(8, { message: "Be at least 8 characters long" }) + .regex(/[a-zA-Z]/, { message: "Contain at least one letter." }) + .regex(/[0-9]/, { message: "Contain at least one number." }) + .regex(/[^a-zA-Z0-9]/, { message: "Contain at least one special character." }) + .trim(), + confirmPassword: z.string() +}).refine((data) => data.password === data.confirmPassword, { + message: "Passwords must match", + path: ["confirmPassword"], +}); + +export const LoginSchema = z.object({ + email: z.string().email('Invalid email address'), + password: z.string().min(1, 'Password is required'), +}); + +export const ForgotPasswordSchema = z.object({ + email: z.string().email('Invalid email address'), +}); + +export const ResetPasswordSchema = z.object({ + token: z.string().min(1, 'Token is required'), + password: z.string().min(6, 'Password must be at least 6 characters'), + confirmPassword: z.string().min(6, 'Password must be at least 6 characters'), +}).refine((data) => data.password === data.confirmPassword, { + message: "Passwords don't match", + path: ["confirmPassword"], +}); + +export const VerifyEmailSchema = z.object({ + token: z.string().min(1, 'Token is required'), +}); diff --git a/cli/components-cli/create-postpipe-auth/postgresql/template/package-lock.json b/cli/components-cli/create-postpipe-auth/postgresql/template/package-lock.json new file mode 100644 index 0000000..d5e8d64 --- /dev/null +++ b/cli/components-cli/create-postpipe-auth/postgresql/template/package-lock.json @@ -0,0 +1,3006 @@ +{ + "name": "postpipe-auth-postgres-template", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "postpipe-auth-postgres-template", + "version": "1.0.0", + "dependencies": { + "@prisma/client": "latest", + "bcryptjs": "latest", + "jsonwebtoken": "latest", + "next": "latest", + "postpipe": "latest", + "react": "latest", + "react-dom": "latest", + "resend": "latest", + "zod": "latest" + }, + "devDependencies": { + "@types/bcryptjs": "latest", + "@types/jsonwebtoken": "latest", + "@types/node": "latest", + "@types/react": "latest", + "@types/react-dom": "latest", + "prisma": "latest", + "typescript": "latest" + } + }, + "node_modules/@chevrotain/cst-dts-gen": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-10.5.0.tgz", + "integrity": "sha512-lhmC/FyqQ2o7pGK4Om+hzuDrm9rhFYIJ/AXoQBeongmn870Xeb0L6oGEiuR8nohFNL5sMaQEJWCxr1oIVIVXrw==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/gast": "10.5.0", + "@chevrotain/types": "10.5.0", + "lodash": "4.17.21" + } + }, + "node_modules/@chevrotain/gast": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-10.5.0.tgz", + "integrity": "sha512-pXdMJ9XeDAbgOWKuD1Fldz4ieCs6+nLNmyVhe2gZVqoO7v8HXuHYs5OV2EzUtbuai37TlOAQHrTDvxMnvMJz3A==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/types": "10.5.0", + "lodash": "4.17.21" + } + }, + "node_modules/@chevrotain/types": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-10.5.0.tgz", + "integrity": "sha512-f1MAia0x/pAVPWH/T73BJVyO2XU5tI4/iE7cnxb7tqdNTNhQI3Uq3XkqcoteTmD4t1aM0LbHCJOhgIDn07kl2A==", + "devOptional": true, + "license": "Apache-2.0" + }, + "node_modules/@chevrotain/utils": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-10.5.0.tgz", + "integrity": "sha512-hBzuU5+JjB2cqNZyszkDHZgOSrUUT8V3dhgRl8Q9Gp6dAj/H5+KILGjbhDpc3Iy9qmqlm/akuOI2ut9VUtzJxQ==", + "devOptional": true, + "license": "Apache-2.0" + }, + "node_modules/@electric-sql/pglite": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@electric-sql/pglite/-/pglite-0.3.2.tgz", + "integrity": "sha512-zfWWa+V2ViDCY/cmUfRqeWY1yLto+EpxjXnZzenB1TyxsTiXaTWeZFIZw6mac52BsuQm0RjCnisjBtdBaXOI6w==", + "devOptional": true, + "license": "Apache-2.0", + "peer": true + }, + "node_modules/@electric-sql/pglite-socket": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@electric-sql/pglite-socket/-/pglite-socket-0.0.6.tgz", + "integrity": "sha512-6RjmgzphIHIBA4NrMGJsjNWK4pu+bCWJlEWlwcxFTVY3WT86dFpKwbZaGWZV6C5Rd7sCk1Z0CI76QEfukLAUXw==", + "devOptional": true, + "license": "Apache-2.0", + "bin": { + "pglite-server": "dist/scripts/server.js" + }, + "peerDependencies": { + "@electric-sql/pglite": "0.3.2" + } + }, + "node_modules/@electric-sql/pglite-tools": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@electric-sql/pglite-tools/-/pglite-tools-0.2.7.tgz", + "integrity": "sha512-9dAccClqxx4cZB+Ar9B+FZ5WgxDc/Xvl9DPrTWv+dYTf0YNubLzi4wHHRGRGhrJv15XwnyKcGOZAP1VXSneSUg==", + "devOptional": true, + "license": "Apache-2.0", + "peerDependencies": { + "@electric-sql/pglite": "0.3.2" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.7.1.tgz", + "integrity": "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@hono/node-server": { + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.6.tgz", + "integrity": "sha512-Shz/KjlIeAhfiuE93NDKVdZ7HdBVLQAfdbaXEaoAVO3ic9ibRSLGIQGkcBbFyuLr+7/1D5ZCINM8B+6IvXeMtw==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=18.14.1" + }, + "peerDependencies": { + "hono": "^4" + } + }, + "node_modules/@img/colour": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.0.0.tgz", + "integrity": "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", + "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz", + "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz", + "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz", + "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz", + "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==", + "cpu": [ + "arm" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz", + "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz", + "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==", + "cpu": [ + "ppc64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-riscv64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz", + "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==", + "cpu": [ + "riscv64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz", + "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==", + "cpu": [ + "s390x" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz", + "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz", + "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz", + "integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz", + "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz", + "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz", + "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==", + "cpu": [ + "ppc64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-ppc64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-riscv64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz", + "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==", + "cpu": [ + "riscv64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-riscv64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz", + "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==", + "cpu": [ + "s390x" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz", + "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz", + "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz", + "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz", + "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.7.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", + "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz", + "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz", + "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@inquirer/checkbox": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-2.5.0.tgz", + "integrity": "sha512-sMgdETOfi2dUHT8r7TT1BTKOwNvdDGFDXYWtQ2J69SvlYNntk9I/gJe7r5yvMwwsuKnYbuRs3pNhx4tgNck5aA==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.1.0", + "@inquirer/figures": "^1.0.5", + "@inquirer/type": "^1.5.3", + "ansi-escapes": "^4.3.2", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/confirm": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-3.2.0.tgz", + "integrity": "sha512-oOIwPs0Dvq5220Z8lGL/6LHRTEr9TgLHmiI99Rj1PJ1p1czTys+olrgBqZk4E2qC0YTzeHprxSQmoHioVdJ7Lw==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.1.0", + "@inquirer/type": "^1.5.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/core": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-9.2.1.tgz", + "integrity": "sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==", + "license": "MIT", + "dependencies": { + "@inquirer/figures": "^1.0.6", + "@inquirer/type": "^2.0.0", + "@types/mute-stream": "^0.0.4", + "@types/node": "^22.5.5", + "@types/wrap-ansi": "^3.0.0", + "ansi-escapes": "^4.3.2", + "cli-width": "^4.1.0", + "mute-stream": "^1.0.0", + "signal-exit": "^4.1.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/core/node_modules/@inquirer/type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-2.0.0.tgz", + "integrity": "sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==", + "license": "MIT", + "dependencies": { + "mute-stream": "^1.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/core/node_modules/@types/node": { + "version": "22.19.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.3.tgz", + "integrity": "sha512-1N9SBnWYOJTrNZCdh/yJE+t910Y128BoyY+zBLWhL3r0TYzlTmFdXrPwHL9DyFZmlEXNQQolTZh3KHV31QDhyA==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@inquirer/core/node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "license": "MIT" + }, + "node_modules/@inquirer/editor": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-2.2.0.tgz", + "integrity": "sha512-9KHOpJ+dIL5SZli8lJ6xdaYLPPzB8xB9GZItg39MBybzhxA16vxmszmQFrRwbOA918WA2rvu8xhDEg/p6LXKbw==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.1.0", + "@inquirer/type": "^1.5.3", + "external-editor": "^3.1.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/expand": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-2.3.0.tgz", + "integrity": "sha512-qnJsUcOGCSG1e5DTOErmv2BPQqrtT6uzqn1vI/aYGiPKq+FgslGZmtdnXbhuI7IlT7OByDoEEqdnhUnVR2hhLw==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.1.0", + "@inquirer/type": "^1.5.3", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/figures": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz", + "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/input": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-2.3.0.tgz", + "integrity": "sha512-XfnpCStx2xgh1LIRqPXrTNEEByqQWoxsWYzNRSEUxJ5c6EQlhMogJ3vHKu8aXuTacebtaZzMAHwEL0kAflKOBw==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.1.0", + "@inquirer/type": "^1.5.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/number": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-1.1.0.tgz", + "integrity": "sha512-ilUnia/GZUtfSZy3YEErXLJ2Sljo/mf9fiKc08n18DdwdmDbOzRcTv65H1jjDvlsAuvdFXf4Sa/aL7iw/NanVA==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.1.0", + "@inquirer/type": "^1.5.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/password": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-2.2.0.tgz", + "integrity": "sha512-5otqIpgsPYIshqhgtEwSspBQE40etouR8VIxzpJkv9i0dVHIpyhiivbkH9/dGiMLdyamT54YRdGJLfl8TFnLHg==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.1.0", + "@inquirer/type": "^1.5.3", + "ansi-escapes": "^4.3.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/prompts": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-5.5.0.tgz", + "integrity": "sha512-BHDeL0catgHdcHbSFFUddNzvx/imzJMft+tWDPwTm3hfu8/tApk1HrooNngB2Mb4qY+KaRWF+iZqoVUPeslEog==", + "license": "MIT", + "dependencies": { + "@inquirer/checkbox": "^2.5.0", + "@inquirer/confirm": "^3.2.0", + "@inquirer/editor": "^2.2.0", + "@inquirer/expand": "^2.3.0", + "@inquirer/input": "^2.3.0", + "@inquirer/number": "^1.1.0", + "@inquirer/password": "^2.2.0", + "@inquirer/rawlist": "^2.3.0", + "@inquirer/search": "^1.1.0", + "@inquirer/select": "^2.5.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/rawlist": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-2.3.0.tgz", + "integrity": "sha512-zzfNuINhFF7OLAtGHfhwOW2TlYJyli7lOUoJUXw/uyklcwalV6WRXBXtFIicN8rTRK1XTiPWB4UY+YuW8dsnLQ==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.1.0", + "@inquirer/type": "^1.5.3", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/search": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-1.1.0.tgz", + "integrity": "sha512-h+/5LSj51dx7hp5xOn4QFnUaKeARwUCLs6mIhtkJ0JYPBLmEYjdHSYh7I6GrLg9LwpJ3xeX0FZgAG1q0QdCpVQ==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.1.0", + "@inquirer/figures": "^1.0.5", + "@inquirer/type": "^1.5.3", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/select": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-2.5.0.tgz", + "integrity": "sha512-YmDobTItPP3WcEI86GvPo+T2sRHkxxOq/kXmsBjHS5BVXUgvgZ5AfJjkvQvZr03T81NnI3KrrRuMzeuYUQRFOA==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.1.0", + "@inquirer/figures": "^1.0.5", + "@inquirer/type": "^1.5.3", + "ansi-escapes": "^4.3.2", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/type": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-1.5.5.tgz", + "integrity": "sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA==", + "license": "MIT", + "dependencies": { + "mute-stream": "^1.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@mrleebo/prisma-ast": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@mrleebo/prisma-ast/-/prisma-ast-0.12.1.tgz", + "integrity": "sha512-JwqeCQ1U3fvccttHZq7Tk0m/TMC6WcFAQZdukypW3AzlJYKYTGNVd1ANU2GuhKnv4UQuOFj3oAl0LLG/gxFN1w==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "chevrotain": "^10.5.0", + "lilconfig": "^2.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@next/env": { + "version": "16.1.1", + "resolved": "https://registry.npmjs.org/@next/env/-/env-16.1.1.tgz", + "integrity": "sha512-3oxyM97Sr2PqiVyMyrZUtrtM3jqqFxOQJVuKclDsgj/L728iZt/GyslkN4NwarledZATCenbk4Offjk1hQmaAA==", + "license": "MIT" + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "16.1.1", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.1.1.tgz", + "integrity": "sha512-JS3m42ifsVSJjSTzh27nW+Igfha3NdBOFScr9C80hHGrWx55pTrVL23RJbqir7k7/15SKlrLHhh/MQzqBBYrQA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "16.1.1", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.1.1.tgz", + "integrity": "sha512-hbyKtrDGUkgkyQi1m1IyD3q4I/3m9ngr+V93z4oKHrPcmxwNL5iMWORvLSGAf2YujL+6HxgVvZuCYZfLfb4bGw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "16.1.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.1.1.tgz", + "integrity": "sha512-/fvHet+EYckFvRLQ0jPHJCUI5/B56+2DpI1xDSvi80r/3Ez+Eaa2Yq4tJcRTaB1kqj/HrYKn8Yplm9bNoMJpwQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "16.1.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.1.1.tgz", + "integrity": "sha512-MFHrgL4TXNQbBPzkKKur4Fb5ICEJa87HM7fczFs2+HWblM7mMLdco3dvyTI+QmLBU9xgns/EeeINSZD6Ar+oLg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "16.1.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.1.1.tgz", + "integrity": "sha512-20bYDfgOQAPUkkKBnyP9PTuHiJGM7HzNBbuqmD0jiFVZ0aOldz+VnJhbxzjcSabYsnNjMPsE0cyzEudpYxsrUQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "16.1.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.1.1.tgz", + "integrity": "sha512-9pRbK3M4asAHQRkwaXwu601oPZHghuSC8IXNENgbBSyImHv/zY4K5udBusgdHkvJ/Tcr96jJwQYOll0qU8+fPA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "16.1.1", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.1.1.tgz", + "integrity": "sha512-bdfQkggaLgnmYrFkSQfsHfOhk/mCYmjnrbRCGgkMcoOBZ4n+TRRSLmT/CU5SATzlBJ9TpioUyBW/vWFXTqQRiA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "16.1.1", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.1.1.tgz", + "integrity": "sha512-Ncwbw2WJ57Al5OX0k4chM68DKhEPlrXBaSXDCi2kPi5f4d8b3ejr3RRJGfKBLrn2YJL5ezNS7w2TZLHSti8CMw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@prisma/client": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-7.2.0.tgz", + "integrity": "sha512-JdLF8lWZ+LjKGKpBqyAlenxd/kXjd1Abf/xK+6vUA7R7L2Suo6AFTHFRpPSdAKCan9wzdFApsUpSa/F6+t1AtA==", + "license": "Apache-2.0", + "dependencies": { + "@prisma/client-runtime-utils": "7.2.0" + }, + "engines": { + "node": "^20.19 || ^22.12 || >=24.0" + }, + "peerDependencies": { + "prisma": "*", + "typescript": ">=5.4.0" + }, + "peerDependenciesMeta": { + "prisma": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/@prisma/client-runtime-utils": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@prisma/client-runtime-utils/-/client-runtime-utils-7.2.0.tgz", + "integrity": "sha512-dn7oB53v0tqkB0wBdMuTNFNPdEbfICEUe82Tn9FoKAhJCUkDH+fmyEp0ClciGh+9Hp2Tuu2K52kth2MTLstvmA==", + "license": "Apache-2.0" + }, + "node_modules/@prisma/config": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@prisma/config/-/config-7.2.0.tgz", + "integrity": "sha512-qmvSnfQ6l/srBW1S7RZGfjTQhc44Yl3ldvU6y3pgmuLM+83SBDs6UQVgMtQuMRe9J3gGqB0RF8wER6RlXEr6jQ==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "c12": "3.1.0", + "deepmerge-ts": "7.1.5", + "effect": "3.18.4", + "empathic": "2.0.0" + } + }, + "node_modules/@prisma/debug": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-7.2.0.tgz", + "integrity": "sha512-YSGTiSlBAVJPzX4ONZmMotL+ozJwQjRmZweQNIq/ER0tQJKJynNkRB3kyvt37eOfsbMCXk3gnLF6J9OJ4QWftw==", + "devOptional": true, + "license": "Apache-2.0" + }, + "node_modules/@prisma/dev": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@prisma/dev/-/dev-0.17.0.tgz", + "integrity": "sha512-6sGebe5jxX+FEsQTpjHLzvOGPn6ypFQprcs3jcuIWv1Xp/5v6P/rjfdvAwTkP2iF6pDx2tCd8vGLNWcsWzImTA==", + "devOptional": true, + "license": "ISC", + "dependencies": { + "@electric-sql/pglite": "0.3.2", + "@electric-sql/pglite-socket": "0.0.6", + "@electric-sql/pglite-tools": "0.2.7", + "@hono/node-server": "1.19.6", + "@mrleebo/prisma-ast": "0.12.1", + "@prisma/get-platform": "6.8.2", + "@prisma/query-plan-executor": "6.18.0", + "foreground-child": "3.3.1", + "get-port-please": "3.1.2", + "hono": "4.10.6", + "http-status-codes": "2.3.0", + "pathe": "2.0.3", + "proper-lockfile": "4.1.2", + "remeda": "2.21.3", + "std-env": "3.9.0", + "valibot": "1.2.0", + "zeptomatch": "2.0.2" + } + }, + "node_modules/@prisma/engines": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-7.2.0.tgz", + "integrity": "sha512-HUeOI/SvCDsHrR9QZn24cxxZcujOjcS3w1oW/XVhnSATAli5SRMOfp/WkG3TtT5rCxDA4xOnlJkW7xkho4nURA==", + "devOptional": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@prisma/debug": "7.2.0", + "@prisma/engines-version": "7.2.0-4.0c8ef2ce45c83248ab3df073180d5eda9e8be7a3", + "@prisma/fetch-engine": "7.2.0", + "@prisma/get-platform": "7.2.0" + } + }, + "node_modules/@prisma/engines-version": { + "version": "7.2.0-4.0c8ef2ce45c83248ab3df073180d5eda9e8be7a3", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-7.2.0-4.0c8ef2ce45c83248ab3df073180d5eda9e8be7a3.tgz", + "integrity": "sha512-KezsjCZDsbjNR7SzIiVlUsn9PnLePI7r5uxABlwL+xoerurZTfgQVbIjvjF2sVr3Uc0ZcsnREw3F84HvbggGdA==", + "devOptional": true, + "license": "Apache-2.0" + }, + "node_modules/@prisma/engines/node_modules/@prisma/get-platform": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.2.0.tgz", + "integrity": "sha512-k1V0l0Td1732EHpAfi2eySTezyllok9dXb6UQanajkJQzPUGi3vO2z7jdkz67SypFTdmbnyGYxvEvYZdZsMAVA==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@prisma/debug": "7.2.0" + } + }, + "node_modules/@prisma/fetch-engine": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-7.2.0.tgz", + "integrity": "sha512-Z5XZztJ8Ap+wovpjPD2lQKnB8nWFGNouCrglaNFjxIWAGWz0oeHXwUJRiclIoSSXN/ptcs9/behptSk8d0Yy6w==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@prisma/debug": "7.2.0", + "@prisma/engines-version": "7.2.0-4.0c8ef2ce45c83248ab3df073180d5eda9e8be7a3", + "@prisma/get-platform": "7.2.0" + } + }, + "node_modules/@prisma/fetch-engine/node_modules/@prisma/get-platform": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.2.0.tgz", + "integrity": "sha512-k1V0l0Td1732EHpAfi2eySTezyllok9dXb6UQanajkJQzPUGi3vO2z7jdkz67SypFTdmbnyGYxvEvYZdZsMAVA==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@prisma/debug": "7.2.0" + } + }, + "node_modules/@prisma/get-platform": { + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.8.2.tgz", + "integrity": "sha512-vXSxyUgX3vm1Q70QwzwkjeYfRryIvKno1SXbIqwSptKwqKzskINnDUcx85oX+ys6ooN2ATGSD0xN2UTfg6Zcow==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@prisma/debug": "6.8.2" + } + }, + "node_modules/@prisma/get-platform/node_modules/@prisma/debug": { + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.8.2.tgz", + "integrity": "sha512-4muBSSUwJJ9BYth5N8tqts8JtiLT8QI/RSAzEogwEfpbYGFo9mYsInsVo8dqXdPO2+Rm5OG5q0qWDDE3nyUbVg==", + "devOptional": true, + "license": "Apache-2.0" + }, + "node_modules/@prisma/query-plan-executor": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@prisma/query-plan-executor/-/query-plan-executor-6.18.0.tgz", + "integrity": "sha512-jZ8cfzFgL0jReE1R10gT8JLHtQxjWYLiQ//wHmVYZ2rVkFHoh0DT8IXsxcKcFlfKN7ak7k6j0XMNn2xVNyr5cA==", + "devOptional": true, + "license": "Apache-2.0" + }, + "node_modules/@prisma/studio-core": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@prisma/studio-core/-/studio-core-0.9.0.tgz", + "integrity": "sha512-xA2zoR/ADu/NCSQuriBKTh6Ps4XjU0bErkEcgMfnSGh346K1VI7iWKnoq1l2DoxUqiddPHIEWwtxJ6xCHG6W7g==", + "devOptional": true, + "license": "Apache-2.0", + "peerDependencies": { + "@types/react": "^18.0.0 || ^19.0.0", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@stablelib/base64": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/base64/-/base64-1.0.1.tgz", + "integrity": "sha512-1bnPQqSxSuc3Ii6MhBysoWCg58j97aUjuCSZrGSmDxNqtytIi0k8utUenAwTZN4V5mXXYGsVUI9zeBqy+jBOSQ==", + "license": "MIT" + }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@types/bcryptjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/bcryptjs/-/bcryptjs-3.0.0.tgz", + "integrity": "sha512-WRZOuCuaz8UcZZE4R5HXTco2goQSI2XxjGY3hbM/xDvwmqFWd4ivooImsMx65OKM6CtNKbnZ5YL+YwAwK7c1dg==", + "deprecated": "This is a stub types definition. bcryptjs provides its own type definitions, so you do not need this installed.", + "dev": true, + "license": "MIT", + "dependencies": { + "bcryptjs": "*" + } + }, + "node_modules/@types/jsonwebtoken": { + "version": "9.0.10", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.10.tgz", + "integrity": "sha512-asx5hIG9Qmf/1oStypjanR7iKTv0gXQ1Ov/jfrX6kS/EO0OFni8orbmGCn0672NHR3kXHwpAwR+B368ZGN/2rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/ms": "*", + "@types/node": "*" + } + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/mute-stream": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@types/mute-stream/-/mute-stream-0.0.4.tgz", + "integrity": "sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "25.0.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.3.tgz", + "integrity": "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==", + "license": "MIT", + "dependencies": { + "undici-types": "~7.16.0" + } + }, + "node_modules/@types/react": { + "version": "19.2.7", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz", + "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==", + "devOptional": true, + "license": "MIT", + "peer": true, + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, + "node_modules/@types/wrap-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz", + "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==", + "license": "MIT" + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/aws-ssl-profiles": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/aws-ssl-profiles/-/aws-ssl-profiles-1.1.2.tgz", + "integrity": "sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/baseline-browser-mapping": { + "version": "2.9.11", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.11.tgz", + "integrity": "sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, + "node_modules/bcryptjs": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-3.0.3.tgz", + "integrity": "sha512-GlF5wPWnSa/X5LKM1o0wz0suXIINz1iHRLvTS+sLyi7XPbe5ycmYI3DlZqVGZZtDgl4DmasFg7gOB3JYbphV5g==", + "license": "BSD-3-Clause", + "bin": { + "bcrypt": "bin/bcrypt" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "license": "BSD-3-Clause" + }, + "node_modules/c12": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/c12/-/c12-3.1.0.tgz", + "integrity": "sha512-uWoS8OU1MEIsOv8p/5a82c3H31LsWVR5qiyXVfBNOzfffjUWtPnhAb4BYI2uG2HfGmZmFjCtui5XNWaps+iFuw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "chokidar": "^4.0.3", + "confbox": "^0.2.2", + "defu": "^6.1.4", + "dotenv": "^16.6.1", + "exsolve": "^1.0.7", + "giget": "^2.0.0", + "jiti": "^2.4.2", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "perfect-debounce": "^1.0.0", + "pkg-types": "^2.2.0", + "rc9": "^2.1.2" + }, + "peerDependencies": { + "magicast": "^0.3.5" + }, + "peerDependenciesMeta": { + "magicast": { + "optional": true + } + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001761", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001761.tgz", + "integrity": "sha512-JF9ptu1vP2coz98+5051jZ4PwQgd2ni8A+gYSN7EA7dPKIMf0pDlSUxhdmVOaV3/fYK5uWBkgSXJaRLr4+3A6g==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "license": "MIT" + }, + "node_modules/chevrotain": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-10.5.0.tgz", + "integrity": "sha512-Pkv5rBY3+CsHOYfV5g/Vs5JY9WTHHDEKOlohI2XeygaZhUeqhAlldZ8Hz9cRmxu709bvS08YzxHdTPHhffc13A==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/cst-dts-gen": "10.5.0", + "@chevrotain/gast": "10.5.0", + "@chevrotain/types": "10.5.0", + "@chevrotain/utils": "10.5.0", + "lodash": "4.17.21", + "regexp-to-ast": "0.5.0" + } + }, + "node_modules/child_process": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/child_process/-/child_process-1.0.2.tgz", + "integrity": "sha512-Wmza/JzL0SiWz7kl6MhIKT5ceIlnFPJX+lwUGj7Clhy5MMldsSoJR0+uvRzOS5Kv45Mq7t1PoE8TsOA9bzvb6g==", + "license": "ISC" + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/citty": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz", + "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "consola": "^3.2.3" + } + }, + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "license": "ISC", + "engines": { + "node": ">= 12" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "license": "MIT" + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/confbox": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz", + "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/consola": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/deepmerge-ts": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-7.1.5.tgz", + "integrity": "sha512-HOJkrhaYsweh+W+e74Yn7YStZOilkoPb6fycpwNLKzSPtruFs48nYis0zy5yJz1+ktUhHxoRDJ27RQAWLIJVJw==", + "devOptional": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/defu": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "devOptional": true, + "license": "Apache-2.0", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/destr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz", + "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/dotenv": { + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/effect": { + "version": "3.18.4", + "resolved": "https://registry.npmjs.org/effect/-/effect-3.18.4.tgz", + "integrity": "sha512-b1LXQJLe9D11wfnOKAk3PKxuqYshQ0Heez+y5pnkd3jLj1yx9QhM72zZ9uUrOQyNvrs2GZZd/3maL0ZV18YuDA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@standard-schema/spec": "^1.0.0", + "fast-check": "^3.23.1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/empathic": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/empathic/-/empathic-2.0.0.tgz", + "integrity": "sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "license": "MIT" + }, + "node_modules/exsolve": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.8.tgz", + "integrity": "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "license": "MIT", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fast-check": { + "version": "3.23.2", + "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-3.23.2.tgz", + "integrity": "sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A==", + "devOptional": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "license": "MIT", + "dependencies": { + "pure-rand": "^6.1.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/fast-sha256": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-sha256/-/fast-sha256-1.3.0.tgz", + "integrity": "sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ==", + "license": "Unlicense" + }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "devOptional": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "license": "MIT", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/fs-extra": { + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.3.tgz", + "integrity": "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/generate-function": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "is-property": "^1.0.2" + } + }, + "node_modules/get-port-please": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/get-port-please/-/get-port-please-3.1.2.tgz", + "integrity": "sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/giget": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/giget/-/giget-2.0.0.tgz", + "integrity": "sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "citty": "^0.1.6", + "consola": "^3.4.0", + "defu": "^6.1.4", + "node-fetch-native": "^1.6.6", + "nypm": "^0.6.0", + "pathe": "^2.0.3" + }, + "bin": { + "giget": "dist/cli.mjs" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/grammex": { + "version": "3.1.12", + "resolved": "https://registry.npmjs.org/grammex/-/grammex-3.1.12.tgz", + "integrity": "sha512-6ufJOsSA7LcQehIJNCO7HIBykfM7DXQual0Ny780/DEcJIpBlHRvcqEBWGPYd7hrXL2GJ3oJI1MIhaXjWmLQOQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/hono": { + "version": "4.10.6", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.10.6.tgz", + "integrity": "sha512-BIdolzGpDO9MQ4nu3AUuDwHZZ+KViNm+EZ75Ae55eMXMqLVhDFqEMXxtUe9Qh8hjL+pIna/frs2j6Y2yD5Ua/g==", + "devOptional": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/http-status-codes": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.3.0.tgz", + "integrity": "sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "license": "ISC" + }, + "node_modules/inquirer": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-10.2.2.tgz", + "integrity": "sha512-tyao/4Vo36XnUItZ7DnUXX4f1jVao2mSrleV/5IPtW/XAEA26hRVsbc68nuTEKWcr5vMP/1mVoT2O7u8H4v1Vg==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.1.0", + "@inquirer/prompts": "^5.5.0", + "@inquirer/type": "^1.5.3", + "@types/mute-stream": "^0.0.4", + "ansi-escapes": "^4.3.2", + "mute-stream": "^1.0.0", + "run-async": "^3.0.0", + "rxjs": "^7.8.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "devOptional": true, + "license": "ISC" + }, + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "devOptional": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonwebtoken": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz", + "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==", + "license": "MIT", + "dependencies": { + "jws": "^4.0.1", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jwa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", + "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", + "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", + "license": "MIT", + "dependencies": { + "jwa": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "license": "MIT" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "license": "MIT" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "license": "MIT" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "license": "MIT" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "license": "MIT" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "license": "MIT" + }, + "node_modules/long": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", + "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", + "devOptional": true, + "license": "Apache-2.0" + }, + "node_modules/lru.min": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-1.1.3.tgz", + "integrity": "sha512-Lkk/vx6ak3rYkRR0Nhu4lFUT2VDnQSxBe8Hbl7f36358p6ow8Bnvr8lrLt98H8J1aGxfhbX4Fs5tYg2+FTwr5Q==", + "devOptional": true, + "license": "MIT", + "engines": { + "bun": ">=1.0.0", + "deno": ">=1.30.0", + "node": ">=8.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wellwelwel" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/mute-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", + "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/mysql2": { + "version": "3.15.3", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.15.3.tgz", + "integrity": "sha512-FBrGau0IXmuqg4haEZRBfHNWB5mUARw6hNwPDXXGg0XzVJ50mr/9hb267lvpVMnhZ1FON3qNd4Xfcez1rbFwSg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "aws-ssl-profiles": "^1.1.1", + "denque": "^2.1.0", + "generate-function": "^2.3.1", + "iconv-lite": "^0.7.0", + "long": "^5.2.1", + "lru.min": "^1.0.0", + "named-placeholders": "^1.1.3", + "seq-queue": "^0.0.5", + "sqlstring": "^2.3.2" + }, + "engines": { + "node": ">= 8.0" + } + }, + "node_modules/mysql2/node_modules/iconv-lite": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.1.tgz", + "integrity": "sha512-2Tth85cXwGFHfvRgZWszZSvdo+0Xsqmw8k8ZwxScfcBneNUraK+dxRxRm24nszx80Y0TVio8kKLt5sLE7ZCLlw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/named-placeholders": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.6.tgz", + "integrity": "sha512-Tz09sEL2EEuv5fFowm419c1+a/jSMiBjI9gHxVLrVdbUkkNUUfjsVYs9pVZu5oCon/kmRh9TfLEObFtkVxmY0w==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "lru.min": "^1.1.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/next": { + "version": "16.1.1", + "resolved": "https://registry.npmjs.org/next/-/next-16.1.1.tgz", + "integrity": "sha512-QI+T7xrxt1pF6SQ/JYFz95ro/mg/1Znk5vBebsWwbpejj1T0A23hO7GYEaVac9QUOT2BIMiuzm0L99ooq7k0/w==", + "license": "MIT", + "dependencies": { + "@next/env": "16.1.1", + "@swc/helpers": "0.5.15", + "baseline-browser-mapping": "^2.8.3", + "caniuse-lite": "^1.0.30001579", + "postcss": "8.4.31", + "styled-jsx": "5.1.6" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": ">=20.9.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "16.1.1", + "@next/swc-darwin-x64": "16.1.1", + "@next/swc-linux-arm64-gnu": "16.1.1", + "@next/swc-linux-arm64-musl": "16.1.1", + "@next/swc-linux-x64-gnu": "16.1.1", + "@next/swc-linux-x64-musl": "16.1.1", + "@next/swc-win32-arm64-msvc": "16.1.1", + "@next/swc-win32-x64-msvc": "16.1.1", + "sharp": "^0.34.4" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "@playwright/test": "^1.51.1", + "babel-plugin-react-compiler": "*", + "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@playwright/test": { + "optional": true + }, + "babel-plugin-react-compiler": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "deprecated": "Use your platform's native DOMException instead", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "license": "MIT", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/node-fetch-native": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.7.tgz", + "integrity": "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/nypm": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.6.2.tgz", + "integrity": "sha512-7eM+hpOtrKrBDCh7Ypu2lJ9Z7PNZBdi/8AT3AX8xoCj43BBVHD0hPSTEvMtkMpfs8FCqBGhxB+uToIQimA111g==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "citty": "^0.1.6", + "consola": "^3.4.2", + "pathe": "^2.0.3", + "pkg-types": "^2.3.0", + "tinyexec": "^1.0.1" + }, + "bin": { + "nypm": "dist/cli.mjs" + }, + "engines": { + "node": "^14.16.0 || >=16.10.0" + } + }, + "node_modules/ohash": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz", + "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", + "license": "MIT", + "dependencies": { + "process": "^0.11.1", + "util": "^0.10.3" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/perfect-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/pkg-types": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.0.tgz", + "integrity": "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "confbox": "^0.2.2", + "exsolve": "^1.0.7", + "pathe": "^2.0.3" + } + }, + "node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postgres": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/postgres/-/postgres-3.4.7.tgz", + "integrity": "sha512-Jtc2612XINuBjIl/QTWsV5UvE8UHuNblcO3vVADSrKsrc6RqGX6lOW1cEo3CM2v0XG4Nat8nI+YM7/f26VxXLw==", + "devOptional": true, + "license": "Unlicense", + "engines": { + "node": ">=12" + }, + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/porsager" + } + }, + "node_modules/postpipe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postpipe/-/postpipe-2.0.0.tgz", + "integrity": "sha512-6WBsjYsURO7MEBawh/0Z0x1OTHV2GcMTPVgbTJQgWu8dvC4qTwoY12t3SSdfHhKwpqkV50OGR5os6Y5/OfnFWA==", + "license": "MIT", + "dependencies": { + "child_process": "^1.0.2", + "dotenv": "^16.4.5", + "form-data": "4.0.0", + "fs-extra": "^11.2.0", + "inquirer": "^10.1.8", + "node-fetch": "^3.3.2", + "path": "^0.12.7" + }, + "bin": { + "postPipe": "main.mjs" + } + }, + "node_modules/prisma": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-7.2.0.tgz", + "integrity": "sha512-jSdHWgWOgFF24+nRyyNRVBIgGDQEsMEF8KPHvhBBg3jWyR9fUAK0Nq9ThUmiGlNgq2FA7vSk/ZoCvefod+a8qg==", + "devOptional": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@prisma/config": "7.2.0", + "@prisma/dev": "0.17.0", + "@prisma/engines": "7.2.0", + "@prisma/studio-core": "0.9.0", + "mysql2": "3.15.3", + "postgres": "3.4.7" + }, + "bin": { + "prisma": "build/index.js" + }, + "engines": { + "node": "^20.19 || ^22.12 || >=24.0" + }, + "peerDependencies": { + "better-sqlite3": ">=9.0.0", + "typescript": ">=5.4.0" + }, + "peerDependenciesMeta": { + "better-sqlite3": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/proper-lockfile": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", + "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "retry": "^0.12.0", + "signal-exit": "^3.0.2" + } + }, + "node_modules/proper-lockfile/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "devOptional": true, + "license": "ISC" + }, + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "devOptional": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "license": "MIT" + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "license": "MIT" + }, + "node_modules/rc9": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/rc9/-/rc9-2.1.2.tgz", + "integrity": "sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "defu": "^6.1.4", + "destr": "^2.0.3" + } + }, + "node_modules/react": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz", + "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==", + "license": "MIT", + "peer": true, + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.3" + } + }, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/regexp-to-ast": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/regexp-to-ast/-/regexp-to-ast-0.5.0.tgz", + "integrity": "sha512-tlbJqcMHnPKI9zSrystikWKwHkBqu2a/Sgw01h3zFjvYrMxEDYHzzoMZnUrbIfpTFEsoRnnviOXNCzFiSc54Qw==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/remeda": { + "version": "2.21.3", + "resolved": "https://registry.npmjs.org/remeda/-/remeda-2.21.3.tgz", + "integrity": "sha512-XXrZdLA10oEOQhLLzEJEiFFSKi21REGAkHdImIb4rt/XXy8ORGXh5HCcpUOsElfPNDb+X6TA/+wkh+p2KffYmg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "type-fest": "^4.39.1" + } + }, + "node_modules/remeda/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "devOptional": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "license": "MIT" + }, + "node_modules/resend": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/resend/-/resend-6.6.0.tgz", + "integrity": "sha512-d1WoOqSxj5x76JtQMrieNAG1kZkh4NU4f+Je1yq4++JsDpLddhEwnJlNfvkCzvUuZy9ZquWmMMAm2mENd2JvRw==", + "license": "MIT", + "dependencies": { + "svix": "1.76.1" + }, + "engines": { + "node": ">=20" + }, + "peerDependencies": { + "@react-email/render": "*" + }, + "peerDependenciesMeta": { + "@react-email/render": { + "optional": true + } + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/run-async": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", + "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/seq-queue": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", + "integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==", + "devOptional": true + }, + "node_modules/sharp": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz", + "integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==", + "hasInstallScript": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@img/colour": "^1.0.0", + "detect-libc": "^2.1.2", + "semver": "^7.7.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.34.5", + "@img/sharp-darwin-x64": "0.34.5", + "@img/sharp-libvips-darwin-arm64": "1.2.4", + "@img/sharp-libvips-darwin-x64": "1.2.4", + "@img/sharp-libvips-linux-arm": "1.2.4", + "@img/sharp-libvips-linux-arm64": "1.2.4", + "@img/sharp-libvips-linux-ppc64": "1.2.4", + "@img/sharp-libvips-linux-riscv64": "1.2.4", + "@img/sharp-libvips-linux-s390x": "1.2.4", + "@img/sharp-libvips-linux-x64": "1.2.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", + "@img/sharp-libvips-linuxmusl-x64": "1.2.4", + "@img/sharp-linux-arm": "0.34.5", + "@img/sharp-linux-arm64": "0.34.5", + "@img/sharp-linux-ppc64": "0.34.5", + "@img/sharp-linux-riscv64": "0.34.5", + "@img/sharp-linux-s390x": "0.34.5", + "@img/sharp-linux-x64": "0.34.5", + "@img/sharp-linuxmusl-arm64": "0.34.5", + "@img/sharp-linuxmusl-x64": "0.34.5", + "@img/sharp-wasm32": "0.34.5", + "@img/sharp-win32-arm64": "0.34.5", + "@img/sharp-win32-ia32": "0.34.5", + "@img/sharp-win32-x64": "0.34.5" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sqlstring": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz", + "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/std-env": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz", + "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/styled-jsx": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", + "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", + "license": "MIT", + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/svix": { + "version": "1.76.1", + "resolved": "https://registry.npmjs.org/svix/-/svix-1.76.1.tgz", + "integrity": "sha512-CRuDWBTgYfDnBLRaZdKp9VuoPcNUq9An14c/k+4YJ15Qc5Grvf66vp0jvTltd4t7OIRj+8lM1DAgvSgvf7hdLw==", + "license": "MIT", + "dependencies": { + "@stablelib/base64": "^1.0.0", + "@types/node": "^22.7.5", + "es6-promise": "^4.2.8", + "fast-sha256": "^1.3.0", + "url-parse": "^1.5.10", + "uuid": "^10.0.0" + } + }, + "node_modules/svix/node_modules/@types/node": { + "version": "22.19.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.3.tgz", + "integrity": "sha512-1N9SBnWYOJTrNZCdh/yJE+t910Y128BoyY+zBLWhL3r0TYzlTmFdXrPwHL9DyFZmlEXNQQolTZh3KHV31QDhyA==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/svix/node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", + "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "license": "MIT", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "devOptional": true, + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "license": "MIT" + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "license": "MIT", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "license": "MIT", + "dependencies": { + "inherits": "2.0.3" + } + }, + "node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/valibot": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/valibot/-/valibot-1.2.0.tgz", + "integrity": "sha512-mm1rxUsmOxzrwnX5arGS+U4T25RdvpPjPN4yR0u9pUBov9+zGVtO84tif1eY4r6zWxVxu3KzIyknJy3rxfRZZg==", + "devOptional": true, + "license": "MIT", + "peerDependencies": { + "typescript": ">=5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "devOptional": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yoctocolors-cjs": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz", + "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zeptomatch": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/zeptomatch/-/zeptomatch-2.0.2.tgz", + "integrity": "sha512-H33jtSKf8Ijtb5BW6wua3G5DhnFjbFML36eFu+VdOoVY4HD9e7ggjqdM6639B+L87rjnR6Y+XeRzBXZdy52B/g==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "grammex": "^3.1.10" + } + }, + "node_modules/zod": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.2.1.tgz", + "integrity": "sha512-0wZ1IRqGGhMP76gLqz8EyfBXKk0J2qo2+H3fi4mcUP/KtTocoX08nmIAHl1Z2kJIZbZee8KOpBCSNPRgauucjw==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + } + } +} diff --git a/cli/components-cli/create-postpipe-auth/postgresql/template/package.json b/cli/components-cli/create-postpipe-auth/postgresql/template/package.json new file mode 100644 index 0000000..cae7b06 --- /dev/null +++ b/cli/components-cli/create-postpipe-auth/postgresql/template/package.json @@ -0,0 +1,31 @@ +{ + "name": "postpipe-auth-postgres-template", + "version": "1.0.0", + "description": "Template for PostPipe Auth with PostgreSQL", + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "@prisma/client": "latest", + "bcryptjs": "latest", + "jsonwebtoken": "latest", + "next": "latest", + "postpipe": "latest", + "react": "latest", + "react-dom": "latest", + "resend": "latest", + "zod": "latest" + }, + "devDependencies": { + "@types/bcryptjs": "latest", + "@types/jsonwebtoken": "latest", + "@types/node": "latest", + "@types/react": "latest", + "@types/react-dom": "latest", + "prisma": "latest", + "typescript": "latest" + } +} \ No newline at end of file diff --git a/cli/components-cli/create-postpipe-auth/postgresql/template/prisma/schema.prisma b/cli/components-cli/create-postpipe-auth/postgresql/template/prisma/schema.prisma new file mode 100644 index 0000000..2d39c37 --- /dev/null +++ b/cli/components-cli/create-postpipe-auth/postgresql/template/prisma/schema.prisma @@ -0,0 +1,25 @@ +// This is your Prisma schema file, +// learn more about it in the docs: https://pris.ly/d/prisma-schema + +generator client { + provider = "prisma-client-js" +} + +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") +} + +model User { + id String @id @default(cuid()) + name String @db.VarChar(60) + email String @unique + password String + isVerified Boolean @default(false) + verifyToken String? + verifyTokenExpiry DateTime? + forgotPasswordToken String? + forgotPasswordTokenExpiry DateTime? + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt +} diff --git a/cli/components-cli/create-postpipe-auth/postgresql/template/tsconfig.json b/cli/components-cli/create-postpipe-auth/postgresql/template/tsconfig.json new file mode 100644 index 0000000..8371ebb --- /dev/null +++ b/cli/components-cli/create-postpipe-auth/postgresql/template/tsconfig.json @@ -0,0 +1,41 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": [ + "./*" + ] + }, + "baseUrl": "." + }, + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts" + ], + "exclude": [ + "node_modules" + ] +} \ No newline at end of file diff --git a/cli/mongodb/create-postpipe-cms/.gitignore b/cli/components-cli/create-postpipe-cms/.gitignore similarity index 100% rename from cli/mongodb/create-postpipe-cms/.gitignore rename to cli/components-cli/create-postpipe-cms/.gitignore diff --git a/cli/mongodb/create-postpipe-cms/README.md b/cli/components-cli/create-postpipe-cms/README.md similarity index 100% rename from cli/mongodb/create-postpipe-cms/README.md rename to cli/components-cli/create-postpipe-cms/README.md diff --git a/cli/mongodb/create-postpipe-cms/api/categories/[id]/route.ts b/cli/components-cli/create-postpipe-cms/api/categories/[id]/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-cms/api/categories/[id]/route.ts rename to cli/components-cli/create-postpipe-cms/api/categories/[id]/route.ts diff --git a/cli/mongodb/create-postpipe-cms/api/categories/route.ts b/cli/components-cli/create-postpipe-cms/api/categories/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-cms/api/categories/route.ts rename to cli/components-cli/create-postpipe-cms/api/categories/route.ts diff --git a/cli/mongodb/create-postpipe-cms/api/comments/[id]/route.ts b/cli/components-cli/create-postpipe-cms/api/comments/[id]/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-cms/api/comments/[id]/route.ts rename to cli/components-cli/create-postpipe-cms/api/comments/[id]/route.ts diff --git a/cli/mongodb/create-postpipe-cms/api/comments/route.ts b/cli/components-cli/create-postpipe-cms/api/comments/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-cms/api/comments/route.ts rename to cli/components-cli/create-postpipe-cms/api/comments/route.ts diff --git a/cli/mongodb/create-postpipe-cms/api/posts/[id]/route.ts b/cli/components-cli/create-postpipe-cms/api/posts/[id]/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-cms/api/posts/[id]/route.ts rename to cli/components-cli/create-postpipe-cms/api/posts/[id]/route.ts diff --git a/cli/mongodb/create-postpipe-cms/api/posts/route.ts b/cli/components-cli/create-postpipe-cms/api/posts/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-cms/api/posts/route.ts rename to cli/components-cli/create-postpipe-cms/api/posts/route.ts diff --git a/cli/mongodb/create-postpipe-cms/api/products/[id]/route.ts b/cli/components-cli/create-postpipe-cms/api/products/[id]/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-cms/api/products/[id]/route.ts rename to cli/components-cli/create-postpipe-cms/api/products/[id]/route.ts diff --git a/cli/mongodb/create-postpipe-cms/api/products/route.ts b/cli/components-cli/create-postpipe-cms/api/products/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-cms/api/products/route.ts rename to cli/components-cli/create-postpipe-cms/api/products/route.ts diff --git a/cli/mongodb/create-postpipe-cms/api/reviews/route.ts b/cli/components-cli/create-postpipe-cms/api/reviews/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-cms/api/reviews/route.ts rename to cli/components-cli/create-postpipe-cms/api/reviews/route.ts diff --git a/cli/mongodb/create-postpipe-cms/index.js b/cli/components-cli/create-postpipe-cms/index.js similarity index 100% rename from cli/mongodb/create-postpipe-cms/index.js rename to cli/components-cli/create-postpipe-cms/index.js diff --git a/cli/mongodb/create-postpipe-cms/lib/dbConnect.ts b/cli/components-cli/create-postpipe-cms/lib/dbConnect.ts similarity index 100% rename from cli/mongodb/create-postpipe-cms/lib/dbConnect.ts rename to cli/components-cli/create-postpipe-cms/lib/dbConnect.ts diff --git a/cli/mongodb/create-postpipe-cms/lib/models/Category.ts b/cli/components-cli/create-postpipe-cms/lib/models/Category.ts similarity index 100% rename from cli/mongodb/create-postpipe-cms/lib/models/Category.ts rename to cli/components-cli/create-postpipe-cms/lib/models/Category.ts diff --git a/cli/mongodb/create-postpipe-cms/lib/models/Comment.ts b/cli/components-cli/create-postpipe-cms/lib/models/Comment.ts similarity index 100% rename from cli/mongodb/create-postpipe-cms/lib/models/Comment.ts rename to cli/components-cli/create-postpipe-cms/lib/models/Comment.ts diff --git a/cli/mongodb/create-postpipe-cms/lib/models/Post.ts b/cli/components-cli/create-postpipe-cms/lib/models/Post.ts similarity index 100% rename from cli/mongodb/create-postpipe-cms/lib/models/Post.ts rename to cli/components-cli/create-postpipe-cms/lib/models/Post.ts diff --git a/cli/mongodb/create-postpipe-cms/lib/models/Product.ts b/cli/components-cli/create-postpipe-cms/lib/models/Product.ts similarity index 100% rename from cli/mongodb/create-postpipe-cms/lib/models/Product.ts rename to cli/components-cli/create-postpipe-cms/lib/models/Product.ts diff --git a/cli/mongodb/create-postpipe-cms/lib/models/Review.ts b/cli/components-cli/create-postpipe-cms/lib/models/Review.ts similarity index 100% rename from cli/mongodb/create-postpipe-cms/lib/models/Review.ts rename to cli/components-cli/create-postpipe-cms/lib/models/Review.ts diff --git a/cli/mongodb/create-postpipe-cms/package-lock.json b/cli/components-cli/create-postpipe-cms/package-lock.json similarity index 100% rename from cli/mongodb/create-postpipe-cms/package-lock.json rename to cli/components-cli/create-postpipe-cms/package-lock.json diff --git a/cli/mongodb/create-postpipe-cms/package.json b/cli/components-cli/create-postpipe-cms/package.json similarity index 100% rename from cli/mongodb/create-postpipe-cms/package.json rename to cli/components-cli/create-postpipe-cms/package.json diff --git a/cli/mongodb/create-postpipe-crud/index.js b/cli/components-cli/create-postpipe-crud/index.js similarity index 100% rename from cli/mongodb/create-postpipe-crud/index.js rename to cli/components-cli/create-postpipe-crud/index.js diff --git a/cli/mongodb/create-postpipe-crud/package-lock.json b/cli/components-cli/create-postpipe-crud/package-lock.json similarity index 100% rename from cli/mongodb/create-postpipe-crud/package-lock.json rename to cli/components-cli/create-postpipe-crud/package-lock.json diff --git a/cli/mongodb/create-postpipe-delivery/.gitignore b/cli/components-cli/create-postpipe-delivery/.gitignore similarity index 100% rename from cli/mongodb/create-postpipe-delivery/.gitignore rename to cli/components-cli/create-postpipe-delivery/.gitignore diff --git a/cli/mongodb/create-postpipe-delivery/README.md b/cli/components-cli/create-postpipe-delivery/README.md similarity index 100% rename from cli/mongodb/create-postpipe-delivery/README.md rename to cli/components-cli/create-postpipe-delivery/README.md diff --git a/cli/mongodb/create-postpipe-delivery/api/delivery/route.ts b/cli/components-cli/create-postpipe-delivery/api/delivery/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-delivery/api/delivery/route.ts rename to cli/components-cli/create-postpipe-delivery/api/delivery/route.ts diff --git a/cli/mongodb/create-postpipe-delivery/index.js b/cli/components-cli/create-postpipe-delivery/index.js similarity index 100% rename from cli/mongodb/create-postpipe-delivery/index.js rename to cli/components-cli/create-postpipe-delivery/index.js diff --git a/cli/mongodb/create-postpipe-delivery/models/Shipment.ts b/cli/components-cli/create-postpipe-delivery/models/Shipment.ts similarity index 100% rename from cli/mongodb/create-postpipe-delivery/models/Shipment.ts rename to cli/components-cli/create-postpipe-delivery/models/Shipment.ts diff --git a/cli/mongodb/create-postpipe-delivery/package.json b/cli/components-cli/create-postpipe-delivery/package.json similarity index 100% rename from cli/mongodb/create-postpipe-delivery/package.json rename to cli/components-cli/create-postpipe-delivery/package.json diff --git a/cli/mongodb/create-postpipe-delivery/tsconfig.json b/cli/components-cli/create-postpipe-delivery/tsconfig.json similarity index 100% rename from cli/mongodb/create-postpipe-delivery/tsconfig.json rename to cli/components-cli/create-postpipe-delivery/tsconfig.json diff --git a/cli/mongodb/create-postpipe-ecommerce/.gitignore b/cli/components-cli/create-postpipe-ecommerce/.gitignore similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/.gitignore rename to cli/components-cli/create-postpipe-ecommerce/.gitignore diff --git a/cli/mongodb/create-postpipe-ecommerce/README.md b/cli/components-cli/create-postpipe-ecommerce/README.md similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/README.md rename to cli/components-cli/create-postpipe-ecommerce/README.md diff --git a/cli/mongodb/create-postpipe-ecommerce/api/account/address/route.ts b/cli/components-cli/create-postpipe-ecommerce/api/account/address/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/api/account/address/route.ts rename to cli/components-cli/create-postpipe-ecommerce/api/account/address/route.ts diff --git a/cli/mongodb/create-postpipe-ecommerce/api/analytics/route.ts b/cli/components-cli/create-postpipe-ecommerce/api/analytics/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/api/analytics/route.ts rename to cli/components-cli/create-postpipe-ecommerce/api/analytics/route.ts diff --git a/cli/mongodb/create-postpipe-ecommerce/api/auth/login/route.ts b/cli/components-cli/create-postpipe-ecommerce/api/auth/login/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/api/auth/login/route.ts rename to cli/components-cli/create-postpipe-ecommerce/api/auth/login/route.ts diff --git a/cli/mongodb/create-postpipe-ecommerce/api/auth/signup/route.ts b/cli/components-cli/create-postpipe-ecommerce/api/auth/signup/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/api/auth/signup/route.ts rename to cli/components-cli/create-postpipe-ecommerce/api/auth/signup/route.ts diff --git a/cli/mongodb/create-postpipe-ecommerce/api/auth/verify-email/route.ts b/cli/components-cli/create-postpipe-ecommerce/api/auth/verify-email/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/api/auth/verify-email/route.ts rename to cli/components-cli/create-postpipe-ecommerce/api/auth/verify-email/route.ts diff --git a/cli/mongodb/create-postpipe-ecommerce/api/delivery/route.ts b/cli/components-cli/create-postpipe-ecommerce/api/delivery/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/api/delivery/route.ts rename to cli/components-cli/create-postpipe-ecommerce/api/delivery/route.ts diff --git a/cli/mongodb/create-postpipe-ecommerce/api/notifications/route.ts b/cli/components-cli/create-postpipe-ecommerce/api/notifications/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/api/notifications/route.ts rename to cli/components-cli/create-postpipe-ecommerce/api/notifications/route.ts diff --git a/cli/mongodb/create-postpipe-ecommerce/api/payment/verify/route.ts b/cli/components-cli/create-postpipe-ecommerce/api/payment/verify/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/api/payment/verify/route.ts rename to cli/components-cli/create-postpipe-ecommerce/api/payment/verify/route.ts diff --git a/cli/mongodb/create-postpipe-ecommerce/api/shop/cart/route.ts b/cli/components-cli/create-postpipe-ecommerce/api/shop/cart/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/api/shop/cart/route.ts rename to cli/components-cli/create-postpipe-ecommerce/api/shop/cart/route.ts diff --git a/cli/mongodb/create-postpipe-ecommerce/api/shop/checkout/route.ts b/cli/components-cli/create-postpipe-ecommerce/api/shop/checkout/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/api/shop/checkout/route.ts rename to cli/components-cli/create-postpipe-ecommerce/api/shop/checkout/route.ts diff --git a/cli/mongodb/create-postpipe-ecommerce/api/shop/orders/route.ts b/cli/components-cli/create-postpipe-ecommerce/api/shop/orders/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/api/shop/orders/route.ts rename to cli/components-cli/create-postpipe-ecommerce/api/shop/orders/route.ts diff --git a/cli/mongodb/create-postpipe-ecommerce/api/shop/products/[id]/related/route.ts b/cli/components-cli/create-postpipe-ecommerce/api/shop/products/[id]/related/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/api/shop/products/[id]/related/route.ts rename to cli/components-cli/create-postpipe-ecommerce/api/shop/products/[id]/related/route.ts diff --git a/cli/mongodb/create-postpipe-ecommerce/api/shop/products/[slug]/route.ts b/cli/components-cli/create-postpipe-ecommerce/api/shop/products/[slug]/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/api/shop/products/[slug]/route.ts rename to cli/components-cli/create-postpipe-ecommerce/api/shop/products/[slug]/route.ts diff --git a/cli/mongodb/create-postpipe-ecommerce/api/shop/products/route.ts b/cli/components-cli/create-postpipe-ecommerce/api/shop/products/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/api/shop/products/route.ts rename to cli/components-cli/create-postpipe-ecommerce/api/shop/products/route.ts diff --git a/cli/mongodb/create-postpipe-ecommerce/api/shop/return/route.ts b/cli/components-cli/create-postpipe-ecommerce/api/shop/return/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/api/shop/return/route.ts rename to cli/components-cli/create-postpipe-ecommerce/api/shop/return/route.ts diff --git a/cli/mongodb/create-postpipe-ecommerce/api/shop/reviews/route.ts b/cli/components-cli/create-postpipe-ecommerce/api/shop/reviews/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/api/shop/reviews/route.ts rename to cli/components-cli/create-postpipe-ecommerce/api/shop/reviews/route.ts diff --git a/cli/mongodb/create-postpipe-ecommerce/api/shop/wishlist/route.ts b/cli/components-cli/create-postpipe-ecommerce/api/shop/wishlist/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/api/shop/wishlist/route.ts rename to cli/components-cli/create-postpipe-ecommerce/api/shop/wishlist/route.ts diff --git a/cli/mongodb/create-postpipe-ecommerce/api/upload/route.ts b/cli/components-cli/create-postpipe-ecommerce/api/upload/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/api/upload/route.ts rename to cli/components-cli/create-postpipe-ecommerce/api/upload/route.ts diff --git a/cli/mongodb/create-postpipe-ecommerce/app/ecommerce-demo/page.tsx b/cli/components-cli/create-postpipe-ecommerce/app/ecommerce-demo/page.tsx similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/app/ecommerce-demo/page.tsx rename to cli/components-cli/create-postpipe-ecommerce/app/ecommerce-demo/page.tsx diff --git a/cli/mongodb/create-postpipe-ecommerce/index.js b/cli/components-cli/create-postpipe-ecommerce/index.js similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/index.js rename to cli/components-cli/create-postpipe-ecommerce/index.js diff --git a/cli/mongodb/create-postpipe-ecommerce/lib/auth/utils.ts b/cli/components-cli/create-postpipe-ecommerce/lib/auth/utils.ts similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/lib/auth/utils.ts rename to cli/components-cli/create-postpipe-ecommerce/lib/auth/utils.ts diff --git a/cli/mongodb/create-postpipe-ecommerce/lib/dbConnect.ts b/cli/components-cli/create-postpipe-ecommerce/lib/dbConnect.ts similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/lib/dbConnect.ts rename to cli/components-cli/create-postpipe-ecommerce/lib/dbConnect.ts diff --git a/cli/mongodb/create-postpipe-ecommerce/lib/email.ts b/cli/components-cli/create-postpipe-ecommerce/lib/email.ts similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/lib/email.ts rename to cli/components-cli/create-postpipe-ecommerce/lib/email.ts diff --git a/cli/mongodb/create-postpipe-ecommerce/lib/utils/apiFeatures.ts b/cli/components-cli/create-postpipe-ecommerce/lib/utils/apiFeatures.ts similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/lib/utils/apiFeatures.ts rename to cli/components-cli/create-postpipe-ecommerce/lib/utils/apiFeatures.ts diff --git a/cli/mongodb/create-postpipe-ecommerce/models/Analytics.ts b/cli/components-cli/create-postpipe-ecommerce/models/Analytics.ts similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/models/Analytics.ts rename to cli/components-cli/create-postpipe-ecommerce/models/Analytics.ts diff --git a/cli/mongodb/create-postpipe-ecommerce/models/Cart.ts b/cli/components-cli/create-postpipe-ecommerce/models/Cart.ts similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/models/Cart.ts rename to cli/components-cli/create-postpipe-ecommerce/models/Cart.ts diff --git a/cli/mongodb/create-postpipe-ecommerce/models/Coupon.ts b/cli/components-cli/create-postpipe-ecommerce/models/Coupon.ts similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/models/Coupon.ts rename to cli/components-cli/create-postpipe-ecommerce/models/Coupon.ts diff --git a/cli/mongodb/create-postpipe-ecommerce/models/Notification.ts b/cli/components-cli/create-postpipe-ecommerce/models/Notification.ts similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/models/Notification.ts rename to cli/components-cli/create-postpipe-ecommerce/models/Notification.ts diff --git a/cli/mongodb/create-postpipe-ecommerce/models/Order.ts b/cli/components-cli/create-postpipe-ecommerce/models/Order.ts similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/models/Order.ts rename to cli/components-cli/create-postpipe-ecommerce/models/Order.ts diff --git a/cli/mongodb/create-postpipe-ecommerce/models/Payment.ts b/cli/components-cli/create-postpipe-ecommerce/models/Payment.ts similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/models/Payment.ts rename to cli/components-cli/create-postpipe-ecommerce/models/Payment.ts diff --git a/cli/mongodb/create-postpipe-ecommerce/models/Product.ts b/cli/components-cli/create-postpipe-ecommerce/models/Product.ts similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/models/Product.ts rename to cli/components-cli/create-postpipe-ecommerce/models/Product.ts diff --git a/cli/mongodb/create-postpipe-ecommerce/models/ReturnRequest.ts b/cli/components-cli/create-postpipe-ecommerce/models/ReturnRequest.ts similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/models/ReturnRequest.ts rename to cli/components-cli/create-postpipe-ecommerce/models/ReturnRequest.ts diff --git a/cli/mongodb/create-postpipe-ecommerce/models/Review.ts b/cli/components-cli/create-postpipe-ecommerce/models/Review.ts similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/models/Review.ts rename to cli/components-cli/create-postpipe-ecommerce/models/Review.ts diff --git a/cli/mongodb/create-postpipe-ecommerce/models/Shipment.ts b/cli/components-cli/create-postpipe-ecommerce/models/Shipment.ts similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/models/Shipment.ts rename to cli/components-cli/create-postpipe-ecommerce/models/Shipment.ts diff --git a/cli/mongodb/create-postpipe-ecommerce/models/User.ts b/cli/components-cli/create-postpipe-ecommerce/models/User.ts similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/models/User.ts rename to cli/components-cli/create-postpipe-ecommerce/models/User.ts diff --git a/cli/mongodb/create-postpipe-ecommerce/models/Wishlist.ts b/cli/components-cli/create-postpipe-ecommerce/models/Wishlist.ts similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/models/Wishlist.ts rename to cli/components-cli/create-postpipe-ecommerce/models/Wishlist.ts diff --git a/cli/mongodb/create-postpipe-ecommerce/package.json b/cli/components-cli/create-postpipe-ecommerce/package.json similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/package.json rename to cli/components-cli/create-postpipe-ecommerce/package.json diff --git a/cli/mongodb/create-postpipe-ecommerce/tsconfig.json b/cli/components-cli/create-postpipe-ecommerce/tsconfig.json similarity index 100% rename from cli/mongodb/create-postpipe-ecommerce/tsconfig.json rename to cli/components-cli/create-postpipe-ecommerce/tsconfig.json diff --git a/cli/mongodb/create-postpipe-form/.gitignore b/cli/components-cli/create-postpipe-form/.gitignore similarity index 100% rename from cli/mongodb/create-postpipe-form/.gitignore rename to cli/components-cli/create-postpipe-form/.gitignore diff --git a/cli/mongodb/create-postpipe-form/.npmignore b/cli/components-cli/create-postpipe-form/.npmignore similarity index 100% rename from cli/mongodb/create-postpipe-form/.npmignore rename to cli/components-cli/create-postpipe-form/.npmignore diff --git a/cli/mongodb/create-postpipe-form/README.md b/cli/components-cli/create-postpipe-form/README.md similarity index 100% rename from cli/mongodb/create-postpipe-form/README.md rename to cli/components-cli/create-postpipe-form/README.md diff --git a/cli/mongodb/create-postpipe-form/api/contact/route.ts b/cli/components-cli/create-postpipe-form/api/contact/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-form/api/contact/route.ts rename to cli/components-cli/create-postpipe-form/api/contact/route.ts diff --git a/cli/mongodb/create-postpipe-form/api/feedback/route.ts b/cli/components-cli/create-postpipe-form/api/feedback/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-form/api/feedback/route.ts rename to cli/components-cli/create-postpipe-form/api/feedback/route.ts diff --git a/cli/mongodb/create-postpipe-form/api/newsletter/route.ts b/cli/components-cli/create-postpipe-form/api/newsletter/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-form/api/newsletter/route.ts rename to cli/components-cli/create-postpipe-form/api/newsletter/route.ts diff --git a/cli/mongodb/create-postpipe-form/index.js b/cli/components-cli/create-postpipe-form/index.js similarity index 100% rename from cli/mongodb/create-postpipe-form/index.js rename to cli/components-cli/create-postpipe-form/index.js diff --git a/cli/mongodb/create-postpipe-form/lib/dbConnect.ts b/cli/components-cli/create-postpipe-form/lib/dbConnect.ts similarity index 100% rename from cli/mongodb/create-postpipe-form/lib/dbConnect.ts rename to cli/components-cli/create-postpipe-form/lib/dbConnect.ts diff --git a/cli/mongodb/create-postpipe-form/lib/models/Contact.ts b/cli/components-cli/create-postpipe-form/lib/models/Contact.ts similarity index 100% rename from cli/mongodb/create-postpipe-form/lib/models/Contact.ts rename to cli/components-cli/create-postpipe-form/lib/models/Contact.ts diff --git a/cli/mongodb/create-postpipe-form/lib/models/Feedback.ts b/cli/components-cli/create-postpipe-form/lib/models/Feedback.ts similarity index 100% rename from cli/mongodb/create-postpipe-form/lib/models/Feedback.ts rename to cli/components-cli/create-postpipe-form/lib/models/Feedback.ts diff --git a/cli/mongodb/create-postpipe-form/lib/models/Newsletter.ts b/cli/components-cli/create-postpipe-form/lib/models/Newsletter.ts similarity index 100% rename from cli/mongodb/create-postpipe-form/lib/models/Newsletter.ts rename to cli/components-cli/create-postpipe-form/lib/models/Newsletter.ts diff --git a/cli/mongodb/create-postpipe-form/package-lock.json b/cli/components-cli/create-postpipe-form/package-lock.json similarity index 100% rename from cli/mongodb/create-postpipe-form/package-lock.json rename to cli/components-cli/create-postpipe-form/package-lock.json diff --git a/cli/mongodb/create-postpipe-form/package.json b/cli/components-cli/create-postpipe-form/package.json similarity index 100% rename from cli/mongodb/create-postpipe-form/package.json rename to cli/components-cli/create-postpipe-form/package.json diff --git a/cli/mongodb/create-postpipe-form/tsconfig.json b/cli/components-cli/create-postpipe-form/tsconfig.json similarity index 100% rename from cli/mongodb/create-postpipe-form/tsconfig.json rename to cli/components-cli/create-postpipe-form/tsconfig.json diff --git a/cli/mongodb/create-postpipe-notify/.gitignore b/cli/components-cli/create-postpipe-notify/.gitignore similarity index 100% rename from cli/mongodb/create-postpipe-notify/.gitignore rename to cli/components-cli/create-postpipe-notify/.gitignore diff --git a/cli/mongodb/create-postpipe-notify/README.md b/cli/components-cli/create-postpipe-notify/README.md similarity index 100% rename from cli/mongodb/create-postpipe-notify/README.md rename to cli/components-cli/create-postpipe-notify/README.md diff --git a/cli/mongodb/create-postpipe-notify/api/notifications/route.ts b/cli/components-cli/create-postpipe-notify/api/notifications/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-notify/api/notifications/route.ts rename to cli/components-cli/create-postpipe-notify/api/notifications/route.ts diff --git a/cli/mongodb/create-postpipe-notify/index.js b/cli/components-cli/create-postpipe-notify/index.js similarity index 100% rename from cli/mongodb/create-postpipe-notify/index.js rename to cli/components-cli/create-postpipe-notify/index.js diff --git a/cli/mongodb/create-postpipe-notify/lib/actions/notify.ts b/cli/components-cli/create-postpipe-notify/lib/actions/notify.ts similarity index 100% rename from cli/mongodb/create-postpipe-notify/lib/actions/notify.ts rename to cli/components-cli/create-postpipe-notify/lib/actions/notify.ts diff --git a/cli/mongodb/create-postpipe-notify/models/Notification.ts b/cli/components-cli/create-postpipe-notify/models/Notification.ts similarity index 100% rename from cli/mongodb/create-postpipe-notify/models/Notification.ts rename to cli/components-cli/create-postpipe-notify/models/Notification.ts diff --git a/cli/mongodb/create-postpipe-notify/package.json b/cli/components-cli/create-postpipe-notify/package.json similarity index 100% rename from cli/mongodb/create-postpipe-notify/package.json rename to cli/components-cli/create-postpipe-notify/package.json diff --git a/cli/mongodb/create-postpipe-notify/tsconfig.json b/cli/components-cli/create-postpipe-notify/tsconfig.json similarity index 100% rename from cli/mongodb/create-postpipe-notify/tsconfig.json rename to cli/components-cli/create-postpipe-notify/tsconfig.json diff --git a/cli/mongodb/create-postpipe-payment/.gitignore b/cli/components-cli/create-postpipe-payment/.gitignore similarity index 100% rename from cli/mongodb/create-postpipe-payment/.gitignore rename to cli/components-cli/create-postpipe-payment/.gitignore diff --git a/cli/mongodb/create-postpipe-payment/README.md b/cli/components-cli/create-postpipe-payment/README.md similarity index 100% rename from cli/mongodb/create-postpipe-payment/README.md rename to cli/components-cli/create-postpipe-payment/README.md diff --git a/cli/mongodb/create-postpipe-payment/api/payment/create-order/route.ts b/cli/components-cli/create-postpipe-payment/api/payment/create-order/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-payment/api/payment/create-order/route.ts rename to cli/components-cli/create-postpipe-payment/api/payment/create-order/route.ts diff --git a/cli/mongodb/create-postpipe-payment/api/payment/verify/route.ts b/cli/components-cli/create-postpipe-payment/api/payment/verify/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-payment/api/payment/verify/route.ts rename to cli/components-cli/create-postpipe-payment/api/payment/verify/route.ts diff --git a/cli/mongodb/create-postpipe-payment/index.js b/cli/components-cli/create-postpipe-payment/index.js similarity index 100% rename from cli/mongodb/create-postpipe-payment/index.js rename to cli/components-cli/create-postpipe-payment/index.js diff --git a/cli/mongodb/create-postpipe-payment/models/Payment.ts b/cli/components-cli/create-postpipe-payment/models/Payment.ts similarity index 100% rename from cli/mongodb/create-postpipe-payment/models/Payment.ts rename to cli/components-cli/create-postpipe-payment/models/Payment.ts diff --git a/cli/mongodb/create-postpipe-payment/package-lock.json b/cli/components-cli/create-postpipe-payment/package-lock.json similarity index 100% rename from cli/mongodb/create-postpipe-payment/package-lock.json rename to cli/components-cli/create-postpipe-payment/package-lock.json diff --git a/cli/mongodb/create-postpipe-payment/package.json b/cli/components-cli/create-postpipe-payment/package.json similarity index 100% rename from cli/mongodb/create-postpipe-payment/package.json rename to cli/components-cli/create-postpipe-payment/package.json diff --git a/cli/mongodb/create-postpipe-payment/tsconfig.json b/cli/components-cli/create-postpipe-payment/tsconfig.json similarity index 100% rename from cli/mongodb/create-postpipe-payment/tsconfig.json rename to cli/components-cli/create-postpipe-payment/tsconfig.json diff --git a/cli/mongodb/create-postpipe-profile/README.md b/cli/components-cli/create-postpipe-profile/README.md similarity index 100% rename from cli/mongodb/create-postpipe-profile/README.md rename to cli/components-cli/create-postpipe-profile/README.md diff --git a/cli/mongodb/create-postpipe-profile/index.js b/cli/components-cli/create-postpipe-profile/index.js similarity index 100% rename from cli/mongodb/create-postpipe-profile/index.js rename to cli/components-cli/create-postpipe-profile/index.js diff --git a/cli/mongodb/create-postpipe-profile/package.json b/cli/components-cli/create-postpipe-profile/package.json similarity index 100% rename from cli/mongodb/create-postpipe-profile/package.json rename to cli/components-cli/create-postpipe-profile/package.json diff --git a/cli/mongodb/create-postpipe-search/.gitignore b/cli/components-cli/create-postpipe-search/.gitignore similarity index 100% rename from cli/mongodb/create-postpipe-search/.gitignore rename to cli/components-cli/create-postpipe-search/.gitignore diff --git a/cli/mongodb/create-postpipe-search/README.md b/cli/components-cli/create-postpipe-search/README.md similarity index 100% rename from cli/mongodb/create-postpipe-search/README.md rename to cli/components-cli/create-postpipe-search/README.md diff --git a/cli/mongodb/create-postpipe-search/index.js b/cli/components-cli/create-postpipe-search/index.js similarity index 100% rename from cli/mongodb/create-postpipe-search/index.js rename to cli/components-cli/create-postpipe-search/index.js diff --git a/cli/mongodb/create-postpipe-search/lib/utils/apiFeatures.ts b/cli/components-cli/create-postpipe-search/lib/utils/apiFeatures.ts similarity index 100% rename from cli/mongodb/create-postpipe-search/lib/utils/apiFeatures.ts rename to cli/components-cli/create-postpipe-search/lib/utils/apiFeatures.ts diff --git a/cli/mongodb/create-postpipe-search/package.json b/cli/components-cli/create-postpipe-search/package.json similarity index 100% rename from cli/mongodb/create-postpipe-search/package.json rename to cli/components-cli/create-postpipe-search/package.json diff --git a/cli/mongodb/create-postpipe-shop/.gitignore b/cli/components-cli/create-postpipe-shop/.gitignore similarity index 100% rename from cli/mongodb/create-postpipe-shop/.gitignore rename to cli/components-cli/create-postpipe-shop/.gitignore diff --git a/cli/mongodb/create-postpipe-shop/README.md b/cli/components-cli/create-postpipe-shop/README.md similarity index 100% rename from cli/mongodb/create-postpipe-shop/README.md rename to cli/components-cli/create-postpipe-shop/README.md diff --git a/cli/mongodb/create-postpipe-shop/api/cart/route.ts b/cli/components-cli/create-postpipe-shop/api/cart/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-shop/api/cart/route.ts rename to cli/components-cli/create-postpipe-shop/api/cart/route.ts diff --git a/cli/mongodb/create-postpipe-shop/api/orders/route.ts b/cli/components-cli/create-postpipe-shop/api/orders/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-shop/api/orders/route.ts rename to cli/components-cli/create-postpipe-shop/api/orders/route.ts diff --git a/cli/mongodb/create-postpipe-shop/api/wishlist/route.ts b/cli/components-cli/create-postpipe-shop/api/wishlist/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-shop/api/wishlist/route.ts rename to cli/components-cli/create-postpipe-shop/api/wishlist/route.ts diff --git a/cli/mongodb/create-postpipe-shop/index.js b/cli/components-cli/create-postpipe-shop/index.js similarity index 100% rename from cli/mongodb/create-postpipe-shop/index.js rename to cli/components-cli/create-postpipe-shop/index.js diff --git a/cli/mongodb/create-postpipe-shop/lib/actions/shop.ts b/cli/components-cli/create-postpipe-shop/lib/actions/shop.ts similarity index 100% rename from cli/mongodb/create-postpipe-shop/lib/actions/shop.ts rename to cli/components-cli/create-postpipe-shop/lib/actions/shop.ts diff --git a/cli/mongodb/create-postpipe-shop/lib/dbConnect.ts b/cli/components-cli/create-postpipe-shop/lib/dbConnect.ts similarity index 100% rename from cli/mongodb/create-postpipe-shop/lib/dbConnect.ts rename to cli/components-cli/create-postpipe-shop/lib/dbConnect.ts diff --git a/cli/mongodb/create-postpipe-shop/lib/models/Cart.ts b/cli/components-cli/create-postpipe-shop/lib/models/Cart.ts similarity index 100% rename from cli/mongodb/create-postpipe-shop/lib/models/Cart.ts rename to cli/components-cli/create-postpipe-shop/lib/models/Cart.ts diff --git a/cli/mongodb/create-postpipe-shop/lib/models/Order.ts b/cli/components-cli/create-postpipe-shop/lib/models/Order.ts similarity index 100% rename from cli/mongodb/create-postpipe-shop/lib/models/Order.ts rename to cli/components-cli/create-postpipe-shop/lib/models/Order.ts diff --git a/cli/mongodb/create-postpipe-shop/lib/models/Wishlist.ts b/cli/components-cli/create-postpipe-shop/lib/models/Wishlist.ts similarity index 100% rename from cli/mongodb/create-postpipe-shop/lib/models/Wishlist.ts rename to cli/components-cli/create-postpipe-shop/lib/models/Wishlist.ts diff --git a/cli/mongodb/create-postpipe-shop/package.json b/cli/components-cli/create-postpipe-shop/package.json similarity index 100% rename from cli/mongodb/create-postpipe-shop/package.json rename to cli/components-cli/create-postpipe-shop/package.json diff --git a/cli/mongodb/create-postpipe-shop/tsconfig.json b/cli/components-cli/create-postpipe-shop/tsconfig.json similarity index 100% rename from cli/mongodb/create-postpipe-shop/tsconfig.json rename to cli/components-cli/create-postpipe-shop/tsconfig.json diff --git a/cli/mongodb/create-postpipe-upload/.gitignore b/cli/components-cli/create-postpipe-upload/.gitignore similarity index 100% rename from cli/mongodb/create-postpipe-upload/.gitignore rename to cli/components-cli/create-postpipe-upload/.gitignore diff --git a/cli/mongodb/create-postpipe-upload/README.md b/cli/components-cli/create-postpipe-upload/README.md similarity index 100% rename from cli/mongodb/create-postpipe-upload/README.md rename to cli/components-cli/create-postpipe-upload/README.md diff --git a/cli/mongodb/create-postpipe-upload/api/upload/route.ts b/cli/components-cli/create-postpipe-upload/api/upload/route.ts similarity index 100% rename from cli/mongodb/create-postpipe-upload/api/upload/route.ts rename to cli/components-cli/create-postpipe-upload/api/upload/route.ts diff --git a/cli/mongodb/create-postpipe-upload/index.js b/cli/components-cli/create-postpipe-upload/index.js similarity index 100% rename from cli/mongodb/create-postpipe-upload/index.js rename to cli/components-cli/create-postpipe-upload/index.js diff --git a/cli/mongodb/create-postpipe-upload/package.json b/cli/components-cli/create-postpipe-upload/package.json similarity index 100% rename from cli/mongodb/create-postpipe-upload/package.json rename to cli/components-cli/create-postpipe-upload/package.json diff --git a/cli/mongodb/create-postpipe-auth/index.js b/cli/mongodb/create-postpipe-auth/index.js deleted file mode 100644 index cb381cf..0000000 --- a/cli/mongodb/create-postpipe-auth/index.js +++ /dev/null @@ -1,90 +0,0 @@ -#!/usr/bin/env node - -import inquirer from 'inquirer'; -import fs from 'fs-extra'; -import path from 'path'; -import { fileURLToPath } from 'url'; -import chalk from 'chalk'; -import ora from 'ora'; -import { execa } from 'execa'; - -const __filename = fileURLToPath(import.meta.url); -const __dirname = path.dirname(__filename); - -async function main() { - console.log(chalk.bold.blue('\nWelcome to PostPipe Auth Setup!\n')); - - const answers = await inquirer.prompt([ - { - type: 'list', - name: 'database', - message: 'Choose your database:', - choices: [ - { name: '1. MongoDB', value: 'mongodb' }, - { name: '2. (coming soon)', value: 'coming_soon_1', disabled: true }, - ], - }, - ]); - - if (answers.database === 'mongodb') { - await setupMongoDB(); - } else { - console.log('Selection not supported yet.'); - } -} - -async function setupMongoDB() { - const spinner = ora('Initializing MongoDB Authentication...').start(); - - try { - const targetDir = process.cwd(); - const templateDir = path.join(__dirname, 'templates', 'mongodb'); - - // 1. Copy Template Files - // Helper to check if src exists - const isSrc = fs.existsSync(path.join(targetDir, 'src')); - const authDest = isSrc ? path.join(targetDir, 'src', 'lib', 'auth') : path.join(targetDir, 'lib', 'auth'); - - spinner.text = `Copying templates to ${authDest}...`; - await fs.copy(templateDir, authDest); - - // 2. Install Dependencies - spinner.text = 'Installing dependencies...'; - await execa('npm', ['install', 'mongoose', 'bcryptjs', 'jsonwebtoken', 'postpipe', 'zod', 'resend'], { cwd: targetDir }); - await execa('npm', ['install', '-D', '@types/bcryptjs', '@types/jsonwebtoken'], { cwd: targetDir }); - - // 3. Create .env with placeholders - spinner.text = 'Configuring environment...'; - const envPath = path.join(targetDir, '.env'); - const envContent = ` -# PostPipe Auth Configuration -DATABASE_URI=your_mongodb_connection_string -JWT_SECRET=your_super_complex_secret -RESEND_API_KEY=optional_resend_key -NEXT_PUBLIC_APP_URL=http://localhost:3000 - `; - - if (fs.existsSync(envPath)) { - await fs.appendFile(envPath, `\n${envContent}`); - } else { - await fs.writeFile(envPath, envContent); - } - - spinner.succeed(chalk.green('MongoDB Authentication successfully initialized!')); - - console.log('\nNext Steps:'); - console.log(`1. Check the files in ${chalk.cyan(authDest)}`); - console.log(`2. Update your ${chalk.cyan('.env')} file with real values.`); - console.log(`3. Move the frontend pages from ${chalk.cyan(authDest + '/frontend')} to your app directory.`); - console.log(`4. Run: ${chalk.yellow('npm run dev')}`); - - } catch (error) { - spinner.fail('Setup failed.'); - console.error(error); - } -} - -main().catch((err) => { - console.error(err); - process.exit(1); -}); diff --git a/package-lock.json b/package-lock.json index 457d395..4faa419 100644 --- a/package-lock.json +++ b/package-lock.json @@ -992,6 +992,7 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.25.tgz", "integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==", "license": "MIT", + "peer": true, "dependencies": { "undici-types": "~6.21.0" } @@ -1052,6 +1053,7 @@ "integrity": "sha512-cisd7gxkzjBKU2GgdYrTdtQx1SORymWyaAFhaxQPK9bYO9ot3Y5OikQRvY0VYQtvwjeQnizCINJAenh/V7MK2w==", "devOptional": true, "license": "MIT", + "peer": true, "dependencies": { "@types/prop-types": "*", "csstype": "^3.2.2" @@ -1554,6 +1556,7 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -2050,6 +2053,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -2845,6 +2849,7 @@ "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -3013,6 +3018,7 @@ "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.9", @@ -4593,6 +4599,7 @@ "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", "dev": true, "license": "MIT", + "peer": true, "bin": { "jiti": "bin/jiti.js" } @@ -5592,6 +5599,7 @@ "resolved": "https://registry.npmjs.org/pg/-/pg-8.16.3.tgz", "integrity": "sha512-enxc1h0jA/aq5oSDMvqyW3q89ra6XIIDZgCX9vkMrnz5DFTw/Ny3Li2lFQ+pt3L6MCgm/5o2o8HW9hiJji+xvw==", "license": "MIT", + "peer": true, "dependencies": { "pg-connection-string": "^2.9.1", "pg-pool": "^3.10.1", @@ -5745,6 +5753,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -6072,6 +6081,7 @@ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "license": "MIT", + "peer": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -6084,6 +6094,7 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "license": "MIT", + "peer": true, "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" @@ -6645,6 +6656,7 @@ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", "license": "MIT", + "peer": true, "dependencies": { "ip-address": "^10.0.1", "smart-buffer": "^4.2.0" @@ -7156,6 +7168,7 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -7471,6 +7484,7 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver"