sitepaige-mcp-server 1.2.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/slideshow.tsx +1 -9
- package/defaultapp/api/Auth/resend-verification/route.ts +2 -2
- package/defaultapp/api/Auth/route.ts +2 -2
- package/defaultapp/api/Auth/signup/route.ts +2 -2
- package/defaultapp/api/Auth/verify-email/route.ts +3 -3
- package/defaultapp/api/admin/users/route.ts +3 -3
- package/dist/components/slideshow.tsx +1 -9
- package/dist/defaultapp/api/Auth/resend-verification/route.ts +2 -2
- package/dist/defaultapp/api/Auth/route.ts +2 -2
- package/dist/defaultapp/api/Auth/signup/route.ts +2 -2
- package/dist/defaultapp/api/Auth/verify-email/route.ts +3 -3
- package/dist/defaultapp/api/admin/users/route.ts +3 -3
- package/dist/defaultapp/api/csrf.ts +111 -0
- package/dist/defaultapp/api/db-mysql.ts +183 -0
- package/dist/defaultapp/api/db-password-auth.ts +362 -0
- package/dist/defaultapp/api/db-postgres.ts +189 -0
- package/dist/defaultapp/api/db-sqlite.ts +335 -0
- package/dist/defaultapp/api/db-users.ts +520 -0
- package/dist/defaultapp/api/db.ts +149 -0
- package/dist/defaultapp/api/storage/email.ts +162 -0
- package/dist/defaultapp/api/storage/files.ts +160 -0
- package/dist/generators/skeleton.js +3 -5
- package/dist/generators/skeleton.js.map +1 -1
- package/dist/generators/sql.js +60 -0
- package/dist/generators/sql.js.map +1 -1
- package/package.json +1 -1
- package/defaultapp/api/example-secure/route.ts +0 -100
- package/defaultapp/migrate.ts +0 -142
- /package/defaultapp/{csrf.ts → api/csrf.ts} +0 -0
- /package/defaultapp/{db-mysql.ts → api/db-mysql.ts} +0 -0
- /package/defaultapp/{db-password-auth.ts → api/db-password-auth.ts} +0 -0
- /package/defaultapp/{db-postgres.ts → api/db-postgres.ts} +0 -0
- /package/defaultapp/{db-sqlite.ts → api/db-sqlite.ts} +0 -0
- /package/defaultapp/{db-users.ts → api/db-users.ts} +0 -0
- /package/defaultapp/{db.ts → api/db.ts} +0 -0
- /package/defaultapp/{storage → api/storage}/email.ts +0 -0
- /package/defaultapp/{storage → api/storage}/files.ts +0 -0
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { randomBytes } from 'crypto';
|
|
2
|
+
|
|
3
|
+
// Simple in-memory storage for email tracking (in production, use a database)
|
|
4
|
+
const emailHistory: Map<string, any> = new Map();
|
|
5
|
+
|
|
6
|
+
export interface EmailOptions {
|
|
7
|
+
to: string | string[];
|
|
8
|
+
from: string;
|
|
9
|
+
subject: string;
|
|
10
|
+
html?: string;
|
|
11
|
+
text?: string;
|
|
12
|
+
cc?: string | string[];
|
|
13
|
+
bcc?: string | string[];
|
|
14
|
+
replyTo?: string | string[];
|
|
15
|
+
attachments?: Array<{
|
|
16
|
+
filename: string;
|
|
17
|
+
content: string; // base64 encoded content
|
|
18
|
+
contentType?: string;
|
|
19
|
+
}>;
|
|
20
|
+
headers?: Record<string, string>;
|
|
21
|
+
tags?: Array<{
|
|
22
|
+
name: string;
|
|
23
|
+
value: string;
|
|
24
|
+
}>;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Send email function that sends emails via the Resend API
|
|
29
|
+
* @param options Email options including to, from, subject, message content, etc.
|
|
30
|
+
* @returns Promise that resolves to the email ID from Resend
|
|
31
|
+
*/
|
|
32
|
+
export async function send_email(options: EmailOptions): Promise<string> {
|
|
33
|
+
console.log(`📧 Sending email to: ${Array.isArray(options.to) ? options.to.join(', ') : options.to}`);
|
|
34
|
+
console.log(`📧 Subject: ${options.subject}`);
|
|
35
|
+
|
|
36
|
+
try {
|
|
37
|
+
// Get API key from environment
|
|
38
|
+
const apiKey = process.env.RESEND_API_KEY;
|
|
39
|
+
if (!apiKey) {
|
|
40
|
+
throw new Error('RESEND_API_KEY environment variable is not set');
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// Prepare request body for Resend API
|
|
44
|
+
const requestBody: any = {
|
|
45
|
+
to: options.to,
|
|
46
|
+
from: options.from,
|
|
47
|
+
subject: options.subject,
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
// Add optional fields
|
|
51
|
+
if (options.html) requestBody.html = options.html;
|
|
52
|
+
if (options.text) requestBody.text = options.text;
|
|
53
|
+
if (options.cc) requestBody.cc = options.cc;
|
|
54
|
+
if (options.bcc) requestBody.bcc = options.bcc;
|
|
55
|
+
if (options.replyTo) requestBody.reply_to = options.replyTo;
|
|
56
|
+
if (options.headers) requestBody.headers = options.headers;
|
|
57
|
+
if (options.tags) requestBody.tags = options.tags;
|
|
58
|
+
|
|
59
|
+
// Handle attachments
|
|
60
|
+
if (options.attachments && options.attachments.length > 0) {
|
|
61
|
+
requestBody.attachments = options.attachments.map(att => ({
|
|
62
|
+
filename: att.filename,
|
|
63
|
+
content: att.content,
|
|
64
|
+
content_type: att.contentType,
|
|
65
|
+
}));
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// Make API request to Resend
|
|
69
|
+
const response = await fetch('https://api.resend.com/emails', {
|
|
70
|
+
method: 'POST',
|
|
71
|
+
headers: {
|
|
72
|
+
'Authorization': `Bearer ${apiKey}`,
|
|
73
|
+
'Content-Type': 'application/json',
|
|
74
|
+
},
|
|
75
|
+
body: JSON.stringify(requestBody),
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
if (!response.ok) {
|
|
79
|
+
const errorData = await response.json().catch(() => ({ message: 'Unknown error' }));
|
|
80
|
+
throw new Error(`Resend API error: ${response.status} - ${errorData.message || response.statusText}`);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const result = await response.json();
|
|
84
|
+
const emailId = result.id;
|
|
85
|
+
|
|
86
|
+
// Store email metadata
|
|
87
|
+
const emailKey = `${Date.now()}_${randomBytes(6).toString('hex')}`;
|
|
88
|
+
emailHistory.set(emailKey, {
|
|
89
|
+
id: emailId,
|
|
90
|
+
to: options.to,
|
|
91
|
+
from: options.from,
|
|
92
|
+
subject: options.subject,
|
|
93
|
+
sentAt: new Date().toISOString(),
|
|
94
|
+
status: 'sent',
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
console.log(`✅ Email sent successfully. ID: ${emailId}`);
|
|
98
|
+
|
|
99
|
+
return emailId;
|
|
100
|
+
} catch (error) {
|
|
101
|
+
console.error('❌ Error sending email:', error);
|
|
102
|
+
throw new Error(`Failed to send email: ${error}`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Get email status by ID
|
|
108
|
+
* @param emailId The email ID returned from send_email
|
|
109
|
+
* @returns Email metadata or undefined if not found
|
|
110
|
+
*/
|
|
111
|
+
export async function getEmailStatus(emailId: string): Promise<any> {
|
|
112
|
+
// Find email in history by Resend ID
|
|
113
|
+
for (const [key, data] of emailHistory.entries()) {
|
|
114
|
+
if (data.id === emailId) {
|
|
115
|
+
return data;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// If not found locally, could query Resend API for status
|
|
120
|
+
const apiKey = process.env.RESEND_API_KEY;
|
|
121
|
+
if (!apiKey) {
|
|
122
|
+
throw new Error('RESEND_API_KEY environment variable is not set');
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
try {
|
|
126
|
+
const response = await fetch(`https://api.resend.com/emails/${emailId}`, {
|
|
127
|
+
headers: {
|
|
128
|
+
'Authorization': `Bearer ${apiKey}`,
|
|
129
|
+
},
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
if (!response.ok) {
|
|
133
|
+
return undefined;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
return await response.json();
|
|
137
|
+
} catch (error) {
|
|
138
|
+
console.error('Error fetching email status:', error);
|
|
139
|
+
return undefined;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* List sent emails from local history
|
|
145
|
+
* @returns Array of email metadata
|
|
146
|
+
*/
|
|
147
|
+
export function listSentEmails(): Array<any> {
|
|
148
|
+
return Array.from(emailHistory.values());
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Initialize global send_email function for generated API code
|
|
153
|
+
* This makes send_email available in the same way as the preview environment
|
|
154
|
+
*/
|
|
155
|
+
export function initializeGlobalEmailAPI(): void {
|
|
156
|
+
// Make send_email available globally for API code execution
|
|
157
|
+
(global as any).send_email = send_email;
|
|
158
|
+
(global as any).getEmailStatus = getEmailStatus;
|
|
159
|
+
(global as any).listSentEmails = listSentEmails;
|
|
160
|
+
|
|
161
|
+
console.log('✅ Global email API initialized');
|
|
162
|
+
}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Sitepaige v1.0.0
|
|
3
|
+
WARNING: This file is automatically generated and should not be modified.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import fs from 'fs/promises';
|
|
7
|
+
import path from 'path';
|
|
8
|
+
import { randomBytes } from 'crypto';
|
|
9
|
+
|
|
10
|
+
// File storage for the application
|
|
11
|
+
const fileStorage: { [key: string]: string } = {};
|
|
12
|
+
const fileNames: { [key: string]: string } = {};
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Get the files storage path
|
|
16
|
+
* Uses EFS_MOUNT_PATH for production (in container with EFS) or SQLITE_DIR for local development
|
|
17
|
+
*/
|
|
18
|
+
function getFilesStoragePath(): string {
|
|
19
|
+
const efsMountPath = process.env.EFS_MOUNT_PATH;
|
|
20
|
+
const sqliteDir = process.env.SQLITE_DIR || '.';
|
|
21
|
+
|
|
22
|
+
if (efsMountPath) {
|
|
23
|
+
// In production with EFS
|
|
24
|
+
return path.join(efsMountPath, 'files');
|
|
25
|
+
} else {
|
|
26
|
+
// In local development - use a separate files directory
|
|
27
|
+
return path.join(sqliteDir, 'files');
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Store file function that writes files to the filesystem and returns a reference
|
|
33
|
+
* @param filename The original filename
|
|
34
|
+
* @param filedata Base64 encoded file data
|
|
35
|
+
* @param isImage Whether this is an image file
|
|
36
|
+
* @returns Promise that resolves to a file reference string (path starting with /files/)
|
|
37
|
+
*/
|
|
38
|
+
export async function store_file(filename: string, filedata: string, isImage: boolean): Promise<string> {
|
|
39
|
+
console.log(`📁 Storing ${isImage ? 'image' : 'file'}: ${filename} (${filedata.length} bytes)`);
|
|
40
|
+
|
|
41
|
+
try {
|
|
42
|
+
// Generate a unique key for this file
|
|
43
|
+
const fileKey = `${Date.now()}_${randomBytes(6).toString('hex')}`;
|
|
44
|
+
|
|
45
|
+
// Determine file extension
|
|
46
|
+
const extension = path.extname(filename) || (isImage ? '.png' : '.bin');
|
|
47
|
+
const safeFilename = `${fileKey}${extension}`;
|
|
48
|
+
|
|
49
|
+
// Get storage directory and create subdirectories if needed
|
|
50
|
+
const storageBasePath = getFilesStoragePath();
|
|
51
|
+
const storageDir = path.join(storageBasePath, isImage ? 'images' : 'documents');
|
|
52
|
+
await fs.mkdir(storageDir, { recursive: true });
|
|
53
|
+
|
|
54
|
+
// Write file to filesystem
|
|
55
|
+
const filePath = path.join(storageDir, safeFilename);
|
|
56
|
+
const buffer = Buffer.from(filedata, 'base64');
|
|
57
|
+
await fs.writeFile(filePath, buffer);
|
|
58
|
+
|
|
59
|
+
// Store metadata
|
|
60
|
+
fileStorage[fileKey] = filePath;
|
|
61
|
+
fileNames[fileKey] = filename;
|
|
62
|
+
|
|
63
|
+
console.log(`✅ File stored successfully: ${filePath}`);
|
|
64
|
+
|
|
65
|
+
// Return the public path that will be used to access the file
|
|
66
|
+
// This path starts with /files/ and matches what the API route will serve
|
|
67
|
+
const publicPath = `/files/${isImage ? 'images' : 'documents'}/${safeFilename}`;
|
|
68
|
+
return publicPath;
|
|
69
|
+
} catch (error) {
|
|
70
|
+
console.error('❌ Error storing file:', error);
|
|
71
|
+
throw new Error(`Failed to store file: ${error}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Get the filesystem path for a stored file
|
|
77
|
+
* @param fileKey The file key returned from store_file
|
|
78
|
+
* @returns The filesystem path or undefined if not found
|
|
79
|
+
*/
|
|
80
|
+
export function getStoredFilePath(fileKey: string): string | undefined {
|
|
81
|
+
return fileStorage[fileKey];
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Get the original filename for a stored file
|
|
86
|
+
* @param fileKey The file key returned from store_file
|
|
87
|
+
* @returns The original filename or undefined if not found
|
|
88
|
+
*/
|
|
89
|
+
export function getStoredFileName(fileKey: string): string | undefined {
|
|
90
|
+
return fileNames[fileKey];
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Get the file data as base64 for a stored file
|
|
95
|
+
* @param fileKey The file key returned from store_file
|
|
96
|
+
* @returns Promise that resolves to base64 file data or undefined if not found
|
|
97
|
+
*/
|
|
98
|
+
export async function getStoredFileData(fileKey: string): Promise<string | undefined> {
|
|
99
|
+
const filePath = fileStorage[fileKey];
|
|
100
|
+
if (!filePath) {
|
|
101
|
+
return undefined;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
try {
|
|
105
|
+
const buffer = await fs.readFile(filePath);
|
|
106
|
+
return buffer.toString('base64');
|
|
107
|
+
} catch (error) {
|
|
108
|
+
console.error('Error reading stored file:', error);
|
|
109
|
+
return undefined;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Delete a stored file from the filesystem
|
|
115
|
+
* @param fileKey The file key returned from store_file
|
|
116
|
+
* @returns Promise that resolves to true if deleted, false if not found
|
|
117
|
+
*/
|
|
118
|
+
export async function deleteStoredFile(fileKey: string): Promise<boolean> {
|
|
119
|
+
const filePath = fileStorage[fileKey];
|
|
120
|
+
if (!filePath) {
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
try {
|
|
125
|
+
await fs.unlink(filePath);
|
|
126
|
+
delete fileStorage[fileKey];
|
|
127
|
+
delete fileNames[fileKey];
|
|
128
|
+
console.log(`🗑️ File deleted: ${filePath}`);
|
|
129
|
+
return true;
|
|
130
|
+
} catch (error) {
|
|
131
|
+
console.error('Error deleting stored file:', error);
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* List all stored files
|
|
138
|
+
* @returns Array of objects containing file information
|
|
139
|
+
*/
|
|
140
|
+
export function listStoredFiles(): Array<{fileKey: string, filename: string, path: string}> {
|
|
141
|
+
return Object.keys(fileStorage).map(fileKey => ({
|
|
142
|
+
fileKey,
|
|
143
|
+
filename: fileNames[fileKey],
|
|
144
|
+
path: fileStorage[fileKey]
|
|
145
|
+
}));
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Initialize global store_file function for generated API code
|
|
150
|
+
* This makes store_file available in the same way as the preview environment
|
|
151
|
+
*/
|
|
152
|
+
export function initializeGlobalStorageAPI(): void {
|
|
153
|
+
// Make store_file available globally for API code execution
|
|
154
|
+
(global as any).store_file = store_file;
|
|
155
|
+
(global as any).getStoredFilePath = getStoredFilePath;
|
|
156
|
+
(global as any).getStoredFileName = getStoredFileName;
|
|
157
|
+
(global as any).getStoredFileData = getStoredFileData;
|
|
158
|
+
|
|
159
|
+
console.log('✅ Global storage API initialized');
|
|
160
|
+
}
|
|
@@ -96,11 +96,9 @@ export async function writePackageJson(targetDir, projectName, databaseType = "p
|
|
|
96
96
|
pkg.private = true;
|
|
97
97
|
pkg.scripts = {
|
|
98
98
|
...(pkg.scripts ?? {}),
|
|
99
|
-
dev: pkg.scripts?.dev ?? "
|
|
100
|
-
build: pkg.scripts?.build ?? "
|
|
101
|
-
start: pkg.scripts?.start ?? "next start"
|
|
102
|
-
migrate: pkg.scripts?.migrate ?? "npx tsx src/app/migrate.ts",
|
|
103
|
-
postinstall: pkg.scripts?.postinstall ?? "npx tsx src/app/migrate.ts"
|
|
99
|
+
dev: pkg.scripts?.dev ?? "next dev",
|
|
100
|
+
build: pkg.scripts?.build ?? "next build",
|
|
101
|
+
start: pkg.scripts?.start ?? "next start"
|
|
104
102
|
};
|
|
105
103
|
pkg.dependencies = {
|
|
106
104
|
...(pkg.dependencies ?? {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skeleton.js","sourceRoot":"","sources":["../../src/generators/skeleton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,GAAG,MAAM,kBAAkB,CAAC;AACnC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,SAAiB;IACrD,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BjB,CAAC;IACA,MAAM,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,SAAiB;IAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACjD,SAAS,CAAC,MAAM,CAAC,CAAC;IAClB,SAAS,CAAC,SAAS,CAAC,CAAC;IAErB,6BAA6B;IAC7B,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;IACtE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACvC,MAAM,cAAc,GAAG;;;;;;;;;;;;;CAa1B,CAAC;QACE,MAAM,GAAG,CAAC,SAAS,CAAC,kBAAkB,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;IACpE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACtC,MAAM,aAAa,GAAG;;;;;;CAMzB,CAAC;QACE,MAAM,GAAG,CAAC,SAAS,CAAC,iBAAiB,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IAChE,CAAC;IAED,6EAA6E;IAC7E,uCAAuC;AACzC,CAAC;AAGD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,SAAiB,EAAE,WAAoB,EAAE,eAAgD,UAAU;IACxI,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IACrD,IAAI,GAAG,GAAQ,EAAE,CAAC;IAElB,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACrD,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,GAAG,EAAE,CAAC;QACX,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,WAAW,IAAI,eAAe,CAAC;SAC1D,QAAQ,EAAE;SACV,WAAW,EAAE;SACb,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC;SAC5B,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEhB,GAAG,CAAC,IAAI,GAAG,QAAQ,IAAI,eAAe,CAAC;IACvC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;IAEnB,GAAG,CAAC,OAAO,GAAG;QACZ,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;QACtB,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"skeleton.js","sourceRoot":"","sources":["../../src/generators/skeleton.ts"],"names":[],"mappings":"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"}
|
package/dist/generators/sql.js
CHANGED
|
@@ -85,6 +85,66 @@ export async function writeModelsSql(targetDir, blueprint, databaseType = "postg
|
|
|
85
85
|
};
|
|
86
86
|
const dbTypeMap = typeMap[databaseType] || typeMap.sqlite;
|
|
87
87
|
const quoteChar = databaseType === 'mysql' ? '`' : '"';
|
|
88
|
+
// Add auth tables at the beginning
|
|
89
|
+
lines.push("\n-- Authentication and session management tables");
|
|
90
|
+
// Migrations table
|
|
91
|
+
lines.push(`\n-- Migrations tracking table`);
|
|
92
|
+
if (databaseType === 'sqlite') {
|
|
93
|
+
lines.push(`CREATE TABLE IF NOT EXISTS ${quoteChar}migrations${quoteChar} (`, ` ${quoteChar}id${quoteChar} INTEGER PRIMARY KEY AUTOINCREMENT,`, ` ${quoteChar}filename${quoteChar} TEXT UNIQUE NOT NULL,`, ` ${quoteChar}executed_at${quoteChar} TEXT DEFAULT CURRENT_TIMESTAMP`, `);`);
|
|
94
|
+
}
|
|
95
|
+
else if (databaseType === 'postgres') {
|
|
96
|
+
lines.push(`CREATE TABLE IF NOT EXISTS ${quoteChar}migrations${quoteChar} (`, ` ${quoteChar}id${quoteChar} SERIAL PRIMARY KEY,`, ` ${quoteChar}filename${quoteChar} VARCHAR(255) UNIQUE NOT NULL,`, ` ${quoteChar}executed_at${quoteChar} TIMESTAMP DEFAULT NOW()`, `);`);
|
|
97
|
+
}
|
|
98
|
+
else if (databaseType === 'mysql') {
|
|
99
|
+
lines.push(`CREATE TABLE IF NOT EXISTS ${quoteChar}migrations${quoteChar} (`, ` ${quoteChar}id${quoteChar} INT AUTO_INCREMENT PRIMARY KEY,`, ` ${quoteChar}filename${quoteChar} VARCHAR(255) UNIQUE NOT NULL,`, ` ${quoteChar}executed_at${quoteChar} TIMESTAMP DEFAULT CURRENT_TIMESTAMP`, `);`);
|
|
100
|
+
}
|
|
101
|
+
// Users table
|
|
102
|
+
lines.push(`\n-- Users table (required for authentication)`);
|
|
103
|
+
if (databaseType === 'sqlite') {
|
|
104
|
+
lines.push(`CREATE TABLE IF NOT EXISTS ${quoteChar}users${quoteChar} (`, ` ${quoteChar}userid${quoteChar} TEXT PRIMARY KEY,`, ` ${quoteChar}oauthid${quoteChar} TEXT NOT NULL UNIQUE,`, ` ${quoteChar}source${quoteChar} TEXT NOT NULL CHECK(${quoteChar}source${quoteChar} IN ('google', 'facebook', 'apple', 'github', 'userpass')),`, ` ${quoteChar}username${quoteChar} TEXT NOT NULL,`, ` ${quoteChar}email${quoteChar} TEXT,`, ` ${quoteChar}avatarurl${quoteChar} TEXT,`, ` ${quoteChar}userlevel${quoteChar} INTEGER NOT NULL DEFAULT 1 CHECK(${quoteChar}userlevel${quoteChar} IN (0, 1, 2)),`, ` ${quoteChar}usertier${quoteChar} INTEGER NOT NULL DEFAULT 0,`, ` ${quoteChar}lastlogindate${quoteChar} TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,`, ` ${quoteChar}createddate${quoteChar} TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,`, ` ${quoteChar}isactive${quoteChar} INTEGER NOT NULL DEFAULT 1`, `);`);
|
|
105
|
+
}
|
|
106
|
+
else if (databaseType === 'postgres') {
|
|
107
|
+
lines.push(`CREATE TABLE IF NOT EXISTS ${quoteChar}users${quoteChar} (`, ` ${quoteChar}userid${quoteChar} UUID PRIMARY KEY,`, ` ${quoteChar}oauthid${quoteChar} TEXT NOT NULL UNIQUE,`, ` ${quoteChar}source${quoteChar} TEXT NOT NULL CHECK(${quoteChar}source${quoteChar} IN ('google', 'facebook', 'apple', 'github', 'userpass')),`, ` ${quoteChar}username${quoteChar} TEXT NOT NULL,`, ` ${quoteChar}email${quoteChar} TEXT,`, ` ${quoteChar}avatarurl${quoteChar} TEXT,`, ` ${quoteChar}userlevel${quoteChar} INTEGER NOT NULL DEFAULT 1 CHECK(${quoteChar}userlevel${quoteChar} IN (0, 1, 2)),`, ` ${quoteChar}usertier${quoteChar} INTEGER NOT NULL DEFAULT 0,`, ` ${quoteChar}lastlogindate${quoteChar} TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,`, ` ${quoteChar}createddate${quoteChar} TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,`, ` ${quoteChar}isactive${quoteChar} INTEGER NOT NULL DEFAULT 1`, `);`);
|
|
108
|
+
}
|
|
109
|
+
else if (databaseType === 'mysql') {
|
|
110
|
+
lines.push(`CREATE TABLE IF NOT EXISTS ${quoteChar}users${quoteChar} (`, ` ${quoteChar}userid${quoteChar} VARCHAR(36) PRIMARY KEY,`, ` ${quoteChar}oauthid${quoteChar} VARCHAR(255) NOT NULL UNIQUE,`, ` ${quoteChar}source${quoteChar} VARCHAR(20) NOT NULL CHECK(${quoteChar}source${quoteChar} IN ('google', 'facebook', 'apple', 'github', 'userpass')),`, ` ${quoteChar}username${quoteChar} VARCHAR(255) NOT NULL,`, ` ${quoteChar}email${quoteChar} VARCHAR(255),`, ` ${quoteChar}avatarurl${quoteChar} TEXT,`, ` ${quoteChar}userlevel${quoteChar} INT NOT NULL DEFAULT 1 CHECK(${quoteChar}userlevel${quoteChar} IN (0, 1, 2)),`, ` ${quoteChar}usertier${quoteChar} INT NOT NULL DEFAULT 0,`, ` ${quoteChar}lastlogindate${quoteChar} TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,`, ` ${quoteChar}createddate${quoteChar} TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,`, ` ${quoteChar}isactive${quoteChar} TINYINT NOT NULL DEFAULT 1`, `);`);
|
|
111
|
+
}
|
|
112
|
+
// Indexes for Users table
|
|
113
|
+
lines.push(`\n-- Indexes for Users table`);
|
|
114
|
+
lines.push(`CREATE INDEX IF NOT EXISTS idx_users_oauthid ON ${quoteChar}users${quoteChar}(${quoteChar}oauthid${quoteChar});`);
|
|
115
|
+
lines.push(`CREATE INDEX IF NOT EXISTS idx_users_email ON ${quoteChar}users${quoteChar}(${quoteChar}email${quoteChar});`);
|
|
116
|
+
lines.push(`CREATE INDEX IF NOT EXISTS idx_users_usertier ON ${quoteChar}users${quoteChar}(${quoteChar}usertier${quoteChar});`);
|
|
117
|
+
// UserSession table
|
|
118
|
+
lines.push(`\n-- UserSession table`);
|
|
119
|
+
if (databaseType === 'sqlite') {
|
|
120
|
+
lines.push(`CREATE TABLE IF NOT EXISTS ${quoteChar}usersession${quoteChar} (`, ` ${quoteChar}id${quoteChar} TEXT PRIMARY KEY,`, ` ${quoteChar}sessiontoken${quoteChar} TEXT NOT NULL UNIQUE,`, ` ${quoteChar}userid${quoteChar} TEXT NOT NULL,`, ` ${quoteChar}expirationdate${quoteChar} TEXT NOT NULL,`, ` FOREIGN KEY (${quoteChar}userid${quoteChar}) REFERENCES ${quoteChar}users${quoteChar}(${quoteChar}userid${quoteChar}) ON DELETE CASCADE`, `);`);
|
|
121
|
+
}
|
|
122
|
+
else if (databaseType === 'postgres') {
|
|
123
|
+
lines.push(`CREATE TABLE IF NOT EXISTS ${quoteChar}usersession${quoteChar} (`, ` ${quoteChar}id${quoteChar} UUID PRIMARY KEY,`, ` ${quoteChar}sessiontoken${quoteChar} TEXT NOT NULL UNIQUE,`, ` ${quoteChar}userid${quoteChar} UUID NOT NULL,`, ` ${quoteChar}expirationdate${quoteChar} TEXT NOT NULL,`, ` FOREIGN KEY (${quoteChar}userid${quoteChar}) REFERENCES ${quoteChar}users${quoteChar}(${quoteChar}userid${quoteChar}) ON DELETE CASCADE`, `);`);
|
|
124
|
+
}
|
|
125
|
+
else if (databaseType === 'mysql') {
|
|
126
|
+
lines.push(`CREATE TABLE IF NOT EXISTS ${quoteChar}usersession${quoteChar} (`, ` ${quoteChar}id${quoteChar} VARCHAR(36) PRIMARY KEY,`, ` ${quoteChar}sessiontoken${quoteChar} VARCHAR(255) NOT NULL UNIQUE,`, ` ${quoteChar}userid${quoteChar} VARCHAR(36) NOT NULL,`, ` ${quoteChar}expirationdate${quoteChar} VARCHAR(255) NOT NULL,`, ` FOREIGN KEY (${quoteChar}userid${quoteChar}) REFERENCES ${quoteChar}users${quoteChar}(${quoteChar}userid${quoteChar}) ON DELETE CASCADE`, `);`);
|
|
127
|
+
}
|
|
128
|
+
// Indexes for UserSession table
|
|
129
|
+
lines.push(`\n-- Indexes for UserSession table`);
|
|
130
|
+
lines.push(`CREATE INDEX IF NOT EXISTS idx_session_token ON ${quoteChar}usersession${quoteChar}(${quoteChar}sessiontoken${quoteChar});`);
|
|
131
|
+
lines.push(`CREATE INDEX IF NOT EXISTS idx_session_user ON ${quoteChar}usersession${quoteChar}(${quoteChar}userid${quoteChar});`);
|
|
132
|
+
lines.push(`CREATE INDEX IF NOT EXISTS idx_session_expiry ON ${quoteChar}usersession${quoteChar}(${quoteChar}expirationdate${quoteChar});`);
|
|
133
|
+
// OAuthTokens table
|
|
134
|
+
lines.push(`\n-- OAuthTokens table`);
|
|
135
|
+
if (databaseType === 'sqlite') {
|
|
136
|
+
lines.push(`CREATE TABLE IF NOT EXISTS ${quoteChar}oauthtokens${quoteChar} (`, ` ${quoteChar}id${quoteChar} TEXT PRIMARY KEY,`, ` ${quoteChar}userid${quoteChar} TEXT NOT NULL,`, ` ${quoteChar}provider${quoteChar} TEXT NOT NULL CHECK(${quoteChar}provider${quoteChar} IN ('google', 'facebook', 'apple', 'github', 'userpass')),`, ` ${quoteChar}accesstoken${quoteChar} TEXT NOT NULL,`, ` ${quoteChar}refreshtoken${quoteChar} TEXT,`, ` ${quoteChar}expiresat${quoteChar} TEXT,`, ` ${quoteChar}createdat${quoteChar} TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,`, ` ${quoteChar}updatedat${quoteChar} TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,`, ` FOREIGN KEY (${quoteChar}userid${quoteChar}) REFERENCES ${quoteChar}users${quoteChar}(${quoteChar}userid${quoteChar}) ON DELETE CASCADE`, `);`);
|
|
137
|
+
}
|
|
138
|
+
else if (databaseType === 'postgres') {
|
|
139
|
+
lines.push(`CREATE TABLE IF NOT EXISTS ${quoteChar}oauthtokens${quoteChar} (`, ` ${quoteChar}id${quoteChar} UUID PRIMARY KEY,`, ` ${quoteChar}userid${quoteChar} UUID NOT NULL,`, ` ${quoteChar}provider${quoteChar} TEXT NOT NULL CHECK(${quoteChar}provider${quoteChar} IN ('google', 'facebook', 'apple', 'github', 'userpass')),`, ` ${quoteChar}accesstoken${quoteChar} TEXT NOT NULL,`, ` ${quoteChar}refreshtoken${quoteChar} TEXT,`, ` ${quoteChar}expiresat${quoteChar} TEXT,`, ` ${quoteChar}createdat${quoteChar} TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,`, ` ${quoteChar}updatedat${quoteChar} TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,`, ` FOREIGN KEY (${quoteChar}userid${quoteChar}) REFERENCES ${quoteChar}users${quoteChar}(${quoteChar}userid${quoteChar}) ON DELETE CASCADE`, `);`);
|
|
140
|
+
}
|
|
141
|
+
else if (databaseType === 'mysql') {
|
|
142
|
+
lines.push(`CREATE TABLE IF NOT EXISTS ${quoteChar}oauthtokens${quoteChar} (`, ` ${quoteChar}id${quoteChar} VARCHAR(36) PRIMARY KEY,`, ` ${quoteChar}userid${quoteChar} VARCHAR(36) NOT NULL,`, ` ${quoteChar}provider${quoteChar} VARCHAR(20) NOT NULL CHECK(${quoteChar}provider${quoteChar} IN ('google', 'facebook', 'apple', 'github', 'userpass')),`, ` ${quoteChar}accesstoken${quoteChar} TEXT NOT NULL,`, ` ${quoteChar}refreshtoken${quoteChar} TEXT,`, ` ${quoteChar}expiresat${quoteChar} VARCHAR(255),`, ` ${quoteChar}createdat${quoteChar} TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,`, ` ${quoteChar}updatedat${quoteChar} TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,`, ` FOREIGN KEY (${quoteChar}userid${quoteChar}) REFERENCES ${quoteChar}users${quoteChar}(${quoteChar}userid${quoteChar}) ON DELETE CASCADE`, `);`);
|
|
143
|
+
}
|
|
144
|
+
// Indexes for OAuthTokens table
|
|
145
|
+
lines.push(`\n-- Indexes for OAuthTokens table`);
|
|
146
|
+
lines.push(`CREATE INDEX IF NOT EXISTS idx_oauth_user ON ${quoteChar}oauthtokens${quoteChar}(${quoteChar}userid${quoteChar});`);
|
|
147
|
+
lines.push(`CREATE INDEX IF NOT EXISTS idx_oauth_provider ON ${quoteChar}oauthtokens${quoteChar}(${quoteChar}userid${quoteChar}, ${quoteChar}provider${quoteChar});`);
|
|
88
148
|
for (const model of models) {
|
|
89
149
|
const tableName = sanitizeTableName(model.name || model.id || "table");
|
|
90
150
|
lines.push(`\n-- Model: ${tableName}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql.js","sourceRoot":"","sources":["../../src/generators/sql.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sql.js","sourceRoot":"","sources":["../../src/generators/sql.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sitepaige-mcp-server",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "MCP server for generating web applications using SitePaige AI. Generate frontend (FREE/12 credits) then optionally add backend (50 credits)",
|
|
6
6
|
"keywords": [
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import { NextRequest, NextResponse } from 'next/server';
|
|
2
|
-
import { cookies } from 'next/headers';
|
|
3
|
-
import { validateSession } from '../../db-users';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Example of a secure API route that requires authentication
|
|
7
|
-
* This demonstrates how to properly validate sessions and protect endpoints
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
export async function GET(request: NextRequest) {
|
|
11
|
-
try {
|
|
12
|
-
// Get session token from cookies
|
|
13
|
-
const sessionCookie = await cookies();
|
|
14
|
-
const sessionToken = sessionCookie.get('session_id')?.value;
|
|
15
|
-
|
|
16
|
-
if (!sessionToken) {
|
|
17
|
-
return NextResponse.json(
|
|
18
|
-
{ error: 'Authentication required' },
|
|
19
|
-
{ status: 401 }
|
|
20
|
-
);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
// Validate session
|
|
24
|
-
const sessionData = await validateSession(sessionToken);
|
|
25
|
-
|
|
26
|
-
if (!sessionData.valid || !sessionData.user) {
|
|
27
|
-
return NextResponse.json(
|
|
28
|
-
{ error: 'Invalid or expired session' },
|
|
29
|
-
{ status: 401 }
|
|
30
|
-
);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
// Example: Return user-specific secure data
|
|
34
|
-
return NextResponse.json({
|
|
35
|
-
message: 'This is a secure endpoint',
|
|
36
|
-
user: {
|
|
37
|
-
id: sessionData.user.userid,
|
|
38
|
-
name: sessionData.user.UserName,
|
|
39
|
-
level: sessionData.user.UserLevel
|
|
40
|
-
},
|
|
41
|
-
timestamp: new Date().toISOString()
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
} catch (error) {
|
|
45
|
-
return NextResponse.json(
|
|
46
|
-
{ error: 'Internal server error' },
|
|
47
|
-
{ status: 500 }
|
|
48
|
-
);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
export async function POST(request: NextRequest) {
|
|
53
|
-
try {
|
|
54
|
-
// Get session token from cookies
|
|
55
|
-
const sessionCookie = await cookies();
|
|
56
|
-
const sessionToken = sessionCookie.get('session_id')?.value;
|
|
57
|
-
|
|
58
|
-
if (!sessionToken) {
|
|
59
|
-
return NextResponse.json(
|
|
60
|
-
{ error: 'Authentication required' },
|
|
61
|
-
{ status: 401 }
|
|
62
|
-
);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
// Validate session
|
|
66
|
-
const sessionData = await validateSession(sessionToken);
|
|
67
|
-
|
|
68
|
-
if (!sessionData.valid || !sessionData.user) {
|
|
69
|
-
return NextResponse.json(
|
|
70
|
-
{ error: 'Invalid or expired session' },
|
|
71
|
-
{ status: 401 }
|
|
72
|
-
);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
// Parse request body
|
|
76
|
-
const body = await request.json();
|
|
77
|
-
|
|
78
|
-
// Example: Only allow admins to perform certain actions
|
|
79
|
-
if (body.adminAction && sessionData.user.UserLevel < 2) {
|
|
80
|
-
return NextResponse.json(
|
|
81
|
-
{ error: 'Insufficient permissions' },
|
|
82
|
-
{ status: 403 }
|
|
83
|
-
);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
// Process the secure request
|
|
87
|
-
return NextResponse.json({
|
|
88
|
-
success: true,
|
|
89
|
-
message: 'Secure action completed',
|
|
90
|
-
performedBy: sessionData.user.UserName,
|
|
91
|
-
timestamp: new Date().toISOString()
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
} catch (error) {
|
|
95
|
-
return NextResponse.json(
|
|
96
|
-
{ error: 'Internal server error' },
|
|
97
|
-
{ status: 500 }
|
|
98
|
-
);
|
|
99
|
-
}
|
|
100
|
-
}
|