@qwickapps/server 1.7.2 → 1.8.0
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/CHANGELOG.md +33 -0
- package/dist/src/core/control-panel.js +5 -5
- package/dist/src/core/control-panel.js.map +1 -1
- package/dist/src/core/gateway.d.ts.map +1 -1
- package/dist/src/core/gateway.js +117 -15
- package/dist/src/core/gateway.js.map +1 -1
- package/dist/src/core/plugin-registry.d.ts +70 -0
- package/dist/src/core/plugin-registry.d.ts.map +1 -1
- package/dist/src/core/plugin-registry.js +94 -0
- package/dist/src/core/plugin-registry.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/plugins/api-keys/api-keys-plugin.d.ts.map +1 -1
- package/dist/src/plugins/api-keys/api-keys-plugin.js +53 -1
- package/dist/src/plugins/api-keys/api-keys-plugin.js.map +1 -1
- package/dist/src/plugins/api-keys/index.d.ts +1 -1
- package/dist/src/plugins/api-keys/index.d.ts.map +1 -1
- package/dist/src/plugins/api-keys/index.js.map +1 -1
- package/dist/src/plugins/api-keys/stores/postgres-store.d.ts.map +1 -1
- package/dist/src/plugins/api-keys/stores/postgres-store.js +83 -65
- package/dist/src/plugins/api-keys/stores/postgres-store.js.map +1 -1
- package/dist/src/plugins/api-keys/types.d.ts +13 -1
- package/dist/src/plugins/api-keys/types.d.ts.map +1 -1
- package/dist/src/plugins/api-keys/types.js.map +1 -1
- package/dist/src/plugins/diagnostics-plugin.d.ts.map +1 -1
- package/dist/src/plugins/diagnostics-plugin.js +73 -0
- package/dist/src/plugins/diagnostics-plugin.js.map +1 -1
- package/dist/src/plugins/index.d.ts +1 -1
- package/dist/src/plugins/index.d.ts.map +1 -1
- package/dist/src/plugins/maintenance/SeedExecutor.d.ts +2 -0
- package/dist/src/plugins/maintenance/SeedExecutor.d.ts.map +1 -1
- package/dist/src/plugins/maintenance/SeedExecutor.js +6 -2
- package/dist/src/plugins/maintenance/SeedExecutor.js.map +1 -1
- package/dist/src/plugins/maintenance/SeedList.d.ts +2 -2
- package/dist/src/plugins/maintenance/SeedList.d.ts.map +1 -1
- package/dist/src/plugins/maintenance/SeedList.js +39 -14
- package/dist/src/plugins/maintenance/SeedList.js.map +1 -1
- package/dist/src/plugins/maintenance/SeedManagementPage.d.ts +1 -1
- package/dist/src/plugins/maintenance/SeedManagementPage.d.ts.map +1 -1
- package/dist/src/plugins/maintenance/SeedManagementPage.js +9 -5
- package/dist/src/plugins/maintenance/SeedManagementPage.js.map +1 -1
- package/dist/src/plugins/maintenance/seed-executor.d.ts +6 -4
- package/dist/src/plugins/maintenance/seed-executor.d.ts.map +1 -1
- package/dist/src/plugins/maintenance/seed-executor.js +53 -17
- package/dist/src/plugins/maintenance/seed-executor.js.map +1 -1
- package/dist/src/plugins/maintenance-plugin.d.ts +24 -0
- package/dist/src/plugins/maintenance-plugin.d.ts.map +1 -1
- package/dist/src/plugins/maintenance-plugin.js +222 -34
- package/dist/src/plugins/maintenance-plugin.js.map +1 -1
- package/dist/src/plugins/postgres-plugin.d.ts +12 -0
- package/dist/src/plugins/postgres-plugin.d.ts.map +1 -1
- package/dist/src/plugins/postgres-plugin.js +319 -5
- package/dist/src/plugins/postgres-plugin.js.map +1 -1
- package/dist/ui/src/components/ControlPanelApp.d.ts.map +1 -1
- package/dist/ui/src/components/ControlPanelApp.js +4 -3
- package/dist/ui/src/components/ControlPanelApp.js.map +1 -1
- package/dist/ui/src/dashboard/builtInWidgets.d.ts.map +1 -1
- package/dist/ui/src/dashboard/builtInWidgets.js +3 -1
- package/dist/ui/src/dashboard/builtInWidgets.js.map +1 -1
- package/dist/ui/src/dashboard/widgets/CMSMaintenanceWidget.d.ts.map +1 -1
- package/dist/ui/src/dashboard/widgets/CMSMaintenanceWidget.js +17 -4
- package/dist/ui/src/dashboard/widgets/CMSMaintenanceWidget.js.map +1 -1
- package/dist/ui/src/dashboard/widgets/CMSStatusWidget.d.ts.map +1 -1
- package/dist/ui/src/dashboard/widgets/CMSStatusWidget.js +5 -1
- package/dist/ui/src/dashboard/widgets/CMSStatusWidget.js.map +1 -1
- package/dist/ui/src/dashboard/widgets/CacheMaintenanceWidget.d.ts.map +1 -1
- package/dist/ui/src/dashboard/widgets/CacheMaintenanceWidget.js +4 -2
- package/dist/ui/src/dashboard/widgets/CacheMaintenanceWidget.js.map +1 -1
- package/dist/ui/src/dashboard/widgets/DatabaseOperationsWidget.d.ts +12 -0
- package/dist/ui/src/dashboard/widgets/DatabaseOperationsWidget.d.ts.map +1 -0
- package/dist/ui/src/dashboard/widgets/DatabaseOperationsWidget.js +174 -0
- package/dist/ui/src/dashboard/widgets/DatabaseOperationsWidget.js.map +1 -0
- package/dist/ui/src/dashboard/widgets/LogsMaintenanceWidget.d.ts.map +1 -1
- package/dist/ui/src/dashboard/widgets/LogsMaintenanceWidget.js +6 -3
- package/dist/ui/src/dashboard/widgets/LogsMaintenanceWidget.js.map +1 -1
- package/dist/ui/src/dashboard/widgets/SeedManagementWidget.d.ts +1 -1
- package/dist/ui/src/dashboard/widgets/SeedManagementWidget.d.ts.map +1 -1
- package/dist/ui/src/dashboard/widgets/SeedManagementWidget.js +256 -16
- package/dist/ui/src/dashboard/widgets/SeedManagementWidget.js.map +1 -1
- package/dist/ui/src/dashboard/widgets/index.d.ts +1 -0
- package/dist/ui/src/dashboard/widgets/index.d.ts.map +1 -1
- package/dist/ui/src/dashboard/widgets/index.js +1 -0
- package/dist/ui/src/dashboard/widgets/index.js.map +1 -1
- package/dist-ui/assets/index-BkGp7ZKd.js +529 -0
- package/dist-ui/assets/index-BkGp7ZKd.js.map +1 -0
- package/dist-ui/index.html +1 -1
- package/dist-ui-lib/index.js +3735 -3187
- package/dist-ui-lib/index.js.map +1 -1
- package/dist-ui-lib/src/dashboard/widgets/DatabaseOperationsWidget.d.ts +11 -0
- package/dist-ui-lib/src/dashboard/widgets/SeedManagementWidget.d.ts +1 -1
- package/dist-ui-lib/src/dashboard/widgets/index.d.ts +1 -0
- package/package.json +2 -2
- package/src/core/control-panel.ts +5 -5
- package/src/core/gateway.ts +135 -15
- package/src/core/plugin-registry.ts +171 -0
- package/src/index.ts +2 -0
- package/src/plugins/api-keys/api-keys-plugin.ts +58 -1
- package/src/plugins/api-keys/index.ts +1 -0
- package/src/plugins/api-keys/stores/postgres-store.ts +90 -67
- package/src/plugins/api-keys/types.ts +14 -1
- package/src/plugins/diagnostics-plugin.ts +77 -0
- package/src/plugins/index.ts +1 -1
- package/src/plugins/maintenance/SeedExecutor.tsx +9 -1
- package/src/plugins/maintenance/SeedList.tsx +85 -38
- package/src/plugins/maintenance/SeedManagementPage.tsx +10 -4
- package/src/plugins/maintenance/seed-executor.ts +56 -17
- package/src/plugins/maintenance-plugin.ts +267 -36
- package/src/plugins/postgres-plugin.ts +410 -5
- package/ui/src/App.tsx +3 -3
- package/ui/src/components/ControlPanelApp.tsx +4 -3
- package/ui/src/dashboard/builtInWidgets.tsx +3 -0
- package/ui/src/dashboard/widgets/CMSMaintenanceWidget.tsx +17 -4
- package/ui/src/dashboard/widgets/CMSStatusWidget.tsx +5 -1
- package/ui/src/dashboard/widgets/CacheMaintenanceWidget.tsx +4 -2
- package/ui/src/dashboard/widgets/DatabaseOperationsWidget.tsx +410 -0
- package/ui/src/dashboard/widgets/LogsMaintenanceWidget.tsx +6 -3
- package/ui/src/dashboard/widgets/SeedManagementWidget.tsx +533 -49
- package/ui/src/dashboard/widgets/index.ts +1 -0
- package/dist-ui/assets/index-0gzisPdy.js +0 -528
- package/dist-ui/assets/index-0gzisPdy.js.map +0 -1
|
@@ -15,29 +15,29 @@ const MAX_OUTPUT_SIZE = 100 * 1024;
|
|
|
15
15
|
/**
|
|
16
16
|
* Validate script path to prevent path traversal attacks
|
|
17
17
|
*
|
|
18
|
-
* @param
|
|
18
|
+
* @param scriptPath - Relative path to the script (e.g., "database/001.init.mjs" or "01-Setup/seed-data.mjs")
|
|
19
19
|
* @param scriptsPath - Base path for scripts directory
|
|
20
|
-
* @returns Resolved path if valid, null if invalid
|
|
20
|
+
* @returns Resolved absolute path if valid, null if invalid
|
|
21
21
|
*/
|
|
22
|
-
export function validateScriptPath(
|
|
23
|
-
// Only allow
|
|
24
|
-
if (
|
|
22
|
+
export function validateScriptPath(scriptPath, scriptsPath) {
|
|
23
|
+
// Only allow .mjs files
|
|
24
|
+
if (!scriptPath.endsWith('.mjs')) {
|
|
25
25
|
return null;
|
|
26
26
|
}
|
|
27
27
|
// Resolve paths
|
|
28
28
|
const basePath = resolve(scriptsPath);
|
|
29
|
-
const
|
|
29
|
+
const resolvedScriptPath = resolve(basePath, scriptPath);
|
|
30
30
|
// Ensure resolved path is within scriptsPath (prevent path traversal)
|
|
31
31
|
// Use relative() for platform-agnostic check (works on Windows and Unix)
|
|
32
|
-
const relativePath = relative(basePath,
|
|
32
|
+
const relativePath = relative(basePath, resolvedScriptPath);
|
|
33
33
|
if (relativePath.startsWith('..') || relativePath.includes('../') || relativePath.includes('..\\')) {
|
|
34
34
|
return null;
|
|
35
35
|
}
|
|
36
36
|
// Ensure file exists
|
|
37
|
-
if (!existsSync(
|
|
37
|
+
if (!existsSync(resolvedScriptPath)) {
|
|
38
38
|
return null;
|
|
39
39
|
}
|
|
40
|
-
return
|
|
40
|
+
return resolvedScriptPath;
|
|
41
41
|
}
|
|
42
42
|
/**
|
|
43
43
|
* Send SSE event to client
|
|
@@ -65,28 +65,61 @@ export class SeedExecutor {
|
|
|
65
65
|
*
|
|
66
66
|
* @param scriptPath - Absolute path to the script
|
|
67
67
|
* @param res - Express response object (for SSE streaming)
|
|
68
|
+
* @param databaseUrl - Optional database URL to pass to the script
|
|
69
|
+
* @param projectRoot - Optional project root directory (defaults to script's directory)
|
|
68
70
|
* @returns Promise resolving to execution result
|
|
69
71
|
*/
|
|
70
|
-
async execute(scriptPath, res) {
|
|
72
|
+
async execute(scriptPath, res, databaseUrl, projectRoot) {
|
|
71
73
|
this.startTime = Date.now();
|
|
72
74
|
this.outputBuffer = '';
|
|
73
75
|
this.errorBuffer = '';
|
|
74
76
|
this.outputSize = 0;
|
|
75
77
|
return new Promise((resolvePromise, rejectPromise) => {
|
|
76
|
-
//
|
|
77
|
-
// Use
|
|
78
|
-
|
|
78
|
+
// Determine if we need tsx (for .ts/.mts files that import TS modules)
|
|
79
|
+
// Use tsx for .mjs files too since they might import from TS source
|
|
80
|
+
const needsTsx = scriptPath.match(/\.(mjs|ts|mts)$/);
|
|
81
|
+
const execCommand = needsTsx ? 'tsx' : process.execPath;
|
|
82
|
+
const execArgs = needsTsx ? [scriptPath] : [scriptPath];
|
|
83
|
+
// Spawn process with TypeScript support if needed
|
|
84
|
+
this.child = spawn(execCommand, execArgs, {
|
|
79
85
|
env: {
|
|
86
|
+
...process.env, // Inherit all env vars for tsx to work properly
|
|
80
87
|
NODE_ENV: process.env.NODE_ENV || 'development',
|
|
81
|
-
DATABASE_URI: process.env.DATABASE_URI,
|
|
82
|
-
DATABASE_URL: process.env.DATABASE_URL,
|
|
88
|
+
DATABASE_URI: databaseUrl || process.env.DATABASE_URI,
|
|
89
|
+
DATABASE_URL: databaseUrl || process.env.DATABASE_URL,
|
|
83
90
|
PAYLOAD_PUBLIC_SERVER_URL: process.env.PAYLOAD_PUBLIC_SERVER_URL,
|
|
84
91
|
NEXT_PUBLIC_SERVER_URL: process.env.NEXT_PUBLIC_SERVER_URL,
|
|
85
92
|
API_URL: process.env.API_URL,
|
|
93
|
+
PAYLOAD_SECRET: process.env.PAYLOAD_SECRET || 'dev-secret-key-change-in-production',
|
|
86
94
|
},
|
|
87
|
-
stdio: ['
|
|
88
|
-
cwd: resolve(scriptPath, '..'), // Run from scripts directory
|
|
95
|
+
stdio: ['pipe', 'pipe', 'pipe'], // stdin: pipe, stdout: pipe, stderr: pipe
|
|
96
|
+
cwd: projectRoot || resolve(scriptPath, '..'), // Run from project root (or scripts directory if not provided)
|
|
89
97
|
});
|
|
98
|
+
// Auto-answer interactive prompts (like Drizzle's schema push confirmation)
|
|
99
|
+
// Send 'y\n' every 500ms to handle any prompts that appear
|
|
100
|
+
const stdinInterval = setInterval(() => {
|
|
101
|
+
if (this.child && this.child.stdin && !this.child.stdin.destroyed) {
|
|
102
|
+
try {
|
|
103
|
+
this.child.stdin.write('y\n');
|
|
104
|
+
}
|
|
105
|
+
catch (err) {
|
|
106
|
+
// Ignore errors - stdin might be closed
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}, 500);
|
|
110
|
+
// Clear interval when process exits
|
|
111
|
+
const cleanupInterval = () => {
|
|
112
|
+
clearInterval(stdinInterval);
|
|
113
|
+
// Close stdin to signal EOF
|
|
114
|
+
if (this.child && this.child.stdin && !this.child.stdin.destroyed) {
|
|
115
|
+
try {
|
|
116
|
+
this.child.stdin.end();
|
|
117
|
+
}
|
|
118
|
+
catch (err) {
|
|
119
|
+
// Ignore errors
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
};
|
|
90
123
|
// Handle stdout
|
|
91
124
|
this.child.stdout?.on('data', (data) => {
|
|
92
125
|
const text = data.toString();
|
|
@@ -126,6 +159,7 @@ export class SeedExecutor {
|
|
|
126
159
|
});
|
|
127
160
|
// Handle process exit
|
|
128
161
|
this.child.on('exit', (code, signal) => {
|
|
162
|
+
cleanupInterval(); // Clean up stdin interval
|
|
129
163
|
const exitCode = code ?? (signal ? 1 : 0);
|
|
130
164
|
const duration = Date.now() - this.startTime;
|
|
131
165
|
// Send exit event via SSE
|
|
@@ -145,6 +179,7 @@ export class SeedExecutor {
|
|
|
145
179
|
});
|
|
146
180
|
// Handle spawn errors
|
|
147
181
|
this.child.on('error', (err) => {
|
|
182
|
+
cleanupInterval(); // Clean up stdin interval
|
|
148
183
|
sendSSEEvent(res, {
|
|
149
184
|
type: 'error',
|
|
150
185
|
data: err.message,
|
|
@@ -154,6 +189,7 @@ export class SeedExecutor {
|
|
|
154
189
|
});
|
|
155
190
|
// Handle SSE connection close - terminate child process
|
|
156
191
|
res.on('close', () => {
|
|
192
|
+
cleanupInterval(); // Clean up stdin interval
|
|
157
193
|
if (this.child && !this.child.killed) {
|
|
158
194
|
this.child.kill('SIGTERM');
|
|
159
195
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seed-executor.js","sourceRoot":"","sources":["../../../../src/plugins/maintenance/seed-executor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,EAAqB,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAwBzC;;GAEG;AACH,MAAM,eAAe,GAAG,GAAG,GAAG,IAAI,CAAC;AAEnC;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAkB,EAAE,WAAmB;IACxE,
|
|
1
|
+
{"version":3,"file":"seed-executor.js","sourceRoot":"","sources":["../../../../src/plugins/maintenance/seed-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,29 @@
|
|
|
9
9
|
*
|
|
10
10
|
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
11
11
|
*/
|
|
12
|
+
import type { Response } from 'express';
|
|
12
13
|
import type { Plugin } from '../core/plugin-registry.js';
|
|
14
|
+
/**
|
|
15
|
+
* Custom seed task handler
|
|
16
|
+
*/
|
|
17
|
+
export interface SeedTaskHandler {
|
|
18
|
+
(options?: Record<string, any>, res?: Response): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Custom seed task definition
|
|
22
|
+
*/
|
|
23
|
+
export interface SeedTask {
|
|
24
|
+
/** Unique task identifier */
|
|
25
|
+
id: string;
|
|
26
|
+
/** Display name */
|
|
27
|
+
name: string;
|
|
28
|
+
/** Description of what this task does */
|
|
29
|
+
description: string;
|
|
30
|
+
/** Task handler function */
|
|
31
|
+
handler: SeedTaskHandler;
|
|
32
|
+
/** Optional task options/parameters */
|
|
33
|
+
options?: Record<string, any>;
|
|
34
|
+
}
|
|
13
35
|
export interface MaintenancePluginConfig {
|
|
14
36
|
/** Path to scripts directory (default: './scripts') */
|
|
15
37
|
scriptsPath?: string;
|
|
@@ -27,6 +49,8 @@ export interface MaintenancePluginConfig {
|
|
|
27
49
|
enableEnvManagement?: boolean;
|
|
28
50
|
/** Enable database operations (default: true) */
|
|
29
51
|
enableDatabaseOps?: boolean;
|
|
52
|
+
/** Custom seed tasks */
|
|
53
|
+
customTasks?: SeedTask[];
|
|
30
54
|
}
|
|
31
55
|
/**
|
|
32
56
|
* Create a maintenance plugin
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"maintenance-plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/maintenance-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"maintenance-plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/maintenance-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAW,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAgC,MAAM,4BAA4B,CAAC;AAuEvF;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChE;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,6BAA6B;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,OAAO,EAAE,eAAe,CAAC;IACzB,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,uBAAuB;IACtC,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,6CAA6C;IAC7C,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B,6DAA6D;IAC7D,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B,iDAAiD;IACjD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B,wBAAwB;IACxB,WAAW,CAAC,EAAE,QAAQ,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,GAAE,uBAA4B,GAAG,MAAM,CA6hBpF"}
|
|
@@ -9,10 +9,70 @@
|
|
|
9
9
|
*
|
|
10
10
|
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
11
11
|
*/
|
|
12
|
-
import { readdirSync, statSync } from 'fs';
|
|
13
|
-
import { resolve } from 'path';
|
|
12
|
+
import { readdirSync, statSync, readFileSync } from 'fs';
|
|
13
|
+
import { resolve, join, relative } from 'path';
|
|
14
14
|
import { SeedExecutor, validateScriptPath } from './maintenance/seed-executor.js';
|
|
15
15
|
import { getPostgres, hasPostgres } from './postgres-plugin.js';
|
|
16
|
+
/**
|
|
17
|
+
* Extract description from JSDoc comment at top of file
|
|
18
|
+
*/
|
|
19
|
+
function extractDescription(filePath) {
|
|
20
|
+
try {
|
|
21
|
+
const content = readFileSync(filePath, 'utf-8');
|
|
22
|
+
// Match JSDoc comment at start of file (after any whitespace)
|
|
23
|
+
const jsdocMatch = content.match(/^\s*\/\*\*\s*\n([\s\S]*?)\*\//);
|
|
24
|
+
if (jsdocMatch) {
|
|
25
|
+
// Extract lines and clean up asterisks and whitespace
|
|
26
|
+
const lines = jsdocMatch[1]
|
|
27
|
+
.split('\n')
|
|
28
|
+
.map(line => line.replace(/^\s*\*\s?/, '').trim())
|
|
29
|
+
.filter(line => line.length > 0);
|
|
30
|
+
// Skip the first line if it's just the title (will be shown separately)
|
|
31
|
+
// Return subsequent lines as the description
|
|
32
|
+
return lines.slice(1).join(' ').trim() || undefined;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
catch (err) {
|
|
36
|
+
// Failed to read file or parse description
|
|
37
|
+
}
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Recursively scan directory for .mjs files
|
|
42
|
+
*/
|
|
43
|
+
function scanSeedScripts(dir, basePath = dir) {
|
|
44
|
+
const results = [];
|
|
45
|
+
try {
|
|
46
|
+
const entries = readdirSync(dir, { withFileTypes: true });
|
|
47
|
+
for (const entry of entries) {
|
|
48
|
+
const fullPath = join(dir, entry.name);
|
|
49
|
+
if (entry.isDirectory()) {
|
|
50
|
+
// Recursively scan subdirectories
|
|
51
|
+
results.push(...scanSeedScripts(fullPath, basePath));
|
|
52
|
+
}
|
|
53
|
+
else if (entry.isFile() && entry.name.endsWith('.mjs')) {
|
|
54
|
+
// Found a .mjs file
|
|
55
|
+
const stats = statSync(fullPath);
|
|
56
|
+
const relativePath = relative(basePath, fullPath);
|
|
57
|
+
const description = extractDescription(fullPath);
|
|
58
|
+
results.push({
|
|
59
|
+
type: 'file',
|
|
60
|
+
name: entry.name,
|
|
61
|
+
path: relativePath, // Relative path from scripts directory
|
|
62
|
+
fullPath: fullPath, // Absolute path
|
|
63
|
+
size: stats.size,
|
|
64
|
+
createdAt: stats.birthtime,
|
|
65
|
+
modifiedAt: stats.mtime,
|
|
66
|
+
description, // Add description from JSDoc
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
// Directory not accessible, return empty array
|
|
73
|
+
}
|
|
74
|
+
return results;
|
|
75
|
+
}
|
|
16
76
|
/**
|
|
17
77
|
* Create a maintenance plugin
|
|
18
78
|
*/
|
|
@@ -27,6 +87,36 @@ export function createMaintenancePlugin(config = {}) {
|
|
|
27
87
|
async onStart(_pluginConfig, registry) {
|
|
28
88
|
const logger = registry.getLogger('maintenance');
|
|
29
89
|
logger.info('Maintenance plugin starting...');
|
|
90
|
+
// Initialize seed_executions table if PostgreSQL is available
|
|
91
|
+
if (hasPostgres()) {
|
|
92
|
+
try {
|
|
93
|
+
const db = getPostgres();
|
|
94
|
+
await db.queryRaw(`
|
|
95
|
+
CREATE TABLE IF NOT EXISTS seed_executions (
|
|
96
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
97
|
+
name TEXT NOT NULL,
|
|
98
|
+
status TEXT NOT NULL CHECK (status IN ('running', 'completed', 'failed')),
|
|
99
|
+
started_at TIMESTAMPTZ NOT NULL,
|
|
100
|
+
completed_at TIMESTAMPTZ,
|
|
101
|
+
exit_code INTEGER,
|
|
102
|
+
output TEXT,
|
|
103
|
+
error TEXT,
|
|
104
|
+
duration_ms INTEGER,
|
|
105
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
106
|
+
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
107
|
+
)
|
|
108
|
+
`);
|
|
109
|
+
// Create index on status for faster queries
|
|
110
|
+
await db.queryRaw(`
|
|
111
|
+
CREATE INDEX IF NOT EXISTS idx_seed_executions_status
|
|
112
|
+
ON seed_executions(status)
|
|
113
|
+
`);
|
|
114
|
+
logger.debug('Seed executions table initialized');
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
logger.error('Failed to initialize seed_executions table', { error });
|
|
118
|
+
}
|
|
119
|
+
}
|
|
30
120
|
// Clean up orphaned executions from previous crashes
|
|
31
121
|
if (hasPostgres()) {
|
|
32
122
|
try {
|
|
@@ -74,7 +164,7 @@ export function createMaintenancePlugin(config = {}) {
|
|
|
74
164
|
if (!hasPostgres()) {
|
|
75
165
|
logger.warn('Seed management requires PostgreSQL plugin for execution history');
|
|
76
166
|
}
|
|
77
|
-
// GET /seeds/discover - List available seed scripts
|
|
167
|
+
// GET /seeds/discover - List available seed scripts and custom tasks
|
|
78
168
|
registry.addRoute({
|
|
79
169
|
method: 'get',
|
|
80
170
|
path: '/seeds/discover',
|
|
@@ -82,23 +172,27 @@ export function createMaintenancePlugin(config = {}) {
|
|
|
82
172
|
handler: (_req, res) => {
|
|
83
173
|
try {
|
|
84
174
|
const resolvedPath = resolve(scriptsPath);
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
.
|
|
101
|
-
|
|
175
|
+
let seedFiles = [];
|
|
176
|
+
try {
|
|
177
|
+
// Recursively scan for .mjs files
|
|
178
|
+
seedFiles = scanSeedScripts(resolvedPath);
|
|
179
|
+
// Sort by relative path (natural ordering respects numbered prefixes)
|
|
180
|
+
// Example: "01-Setup/001.init.mjs" comes before "02-Production/001.seed.mjs"
|
|
181
|
+
seedFiles.sort((a, b) => a.path.localeCompare(b.path, undefined, { numeric: true }));
|
|
182
|
+
}
|
|
183
|
+
catch (err) {
|
|
184
|
+
// Scripts directory may not exist, which is fine if we have custom tasks
|
|
185
|
+
logger.debug('Scripts directory not found or not readable');
|
|
186
|
+
}
|
|
187
|
+
// Add custom tasks
|
|
188
|
+
const customTasks = (config.customTasks || []).map((task) => ({
|
|
189
|
+
type: 'task',
|
|
190
|
+
id: task.id,
|
|
191
|
+
name: task.name,
|
|
192
|
+
description: task.description,
|
|
193
|
+
options: task.options,
|
|
194
|
+
}));
|
|
195
|
+
res.json({ seeds: [...seedFiles, ...customTasks] });
|
|
102
196
|
}
|
|
103
197
|
catch (error) {
|
|
104
198
|
logger.error('Failed to discover seed scripts', { error });
|
|
@@ -109,21 +203,44 @@ export function createMaintenancePlugin(config = {}) {
|
|
|
109
203
|
}
|
|
110
204
|
},
|
|
111
205
|
});
|
|
112
|
-
// POST /seeds/execute - Execute a seed script
|
|
206
|
+
// POST /seeds/execute - Execute a seed script or custom task
|
|
113
207
|
registry.addRoute({
|
|
114
208
|
method: 'post',
|
|
115
209
|
path: '/seeds/execute',
|
|
116
210
|
pluginId: 'maintenance',
|
|
117
211
|
handler: async (req, res) => {
|
|
118
212
|
try {
|
|
119
|
-
const { name } = req.body;
|
|
213
|
+
const { name, type, options } = req.body;
|
|
120
214
|
if (!name || typeof name !== 'string') {
|
|
121
215
|
return res.status(400).json({ error: 'Script name is required' });
|
|
122
216
|
}
|
|
123
|
-
//
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
217
|
+
// Ensure seed_executions table exists (lazy initialization)
|
|
218
|
+
if (hasPostgres()) {
|
|
219
|
+
const db = getPostgres();
|
|
220
|
+
try {
|
|
221
|
+
await db.queryRaw(`
|
|
222
|
+
CREATE TABLE IF NOT EXISTS seed_executions (
|
|
223
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
224
|
+
name TEXT NOT NULL,
|
|
225
|
+
status TEXT NOT NULL CHECK (status IN ('running', 'completed', 'failed')),
|
|
226
|
+
started_at TIMESTAMPTZ NOT NULL,
|
|
227
|
+
completed_at TIMESTAMPTZ,
|
|
228
|
+
exit_code INTEGER,
|
|
229
|
+
output TEXT,
|
|
230
|
+
error TEXT,
|
|
231
|
+
duration_ms INTEGER,
|
|
232
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
233
|
+
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
234
|
+
)
|
|
235
|
+
`);
|
|
236
|
+
await db.queryRaw(`
|
|
237
|
+
CREATE INDEX IF NOT EXISTS idx_seed_executions_status
|
|
238
|
+
ON seed_executions(status)
|
|
239
|
+
`);
|
|
240
|
+
}
|
|
241
|
+
catch (err) {
|
|
242
|
+
logger.debug('Table initialization check', { err });
|
|
243
|
+
}
|
|
127
244
|
}
|
|
128
245
|
// Check for concurrent execution
|
|
129
246
|
if (hasPostgres()) {
|
|
@@ -151,10 +268,36 @@ export function createMaintenancePlugin(config = {}) {
|
|
|
151
268
|
RETURNING id`, [name, 'running']);
|
|
152
269
|
executionId = result?.id || null;
|
|
153
270
|
}
|
|
154
|
-
|
|
155
|
-
|
|
271
|
+
const startTime = Date.now();
|
|
272
|
+
let exitCode = 0;
|
|
273
|
+
let output = '';
|
|
274
|
+
let error = '';
|
|
156
275
|
try {
|
|
157
|
-
|
|
276
|
+
// Execute based on type
|
|
277
|
+
if (type === 'task') {
|
|
278
|
+
// Find custom task
|
|
279
|
+
const task = (config.customTasks || []).find((t) => t.id === name);
|
|
280
|
+
if (!task) {
|
|
281
|
+
throw new Error(`Custom task not found: ${name}`);
|
|
282
|
+
}
|
|
283
|
+
// Execute custom task handler with SSE streaming
|
|
284
|
+
await task.handler(options || {}, res);
|
|
285
|
+
}
|
|
286
|
+
else {
|
|
287
|
+
// Execute file-based seed script
|
|
288
|
+
const scriptPath = validateScriptPath(name, scriptsPath);
|
|
289
|
+
if (!scriptPath) {
|
|
290
|
+
throw new Error('Invalid script name or file not found');
|
|
291
|
+
}
|
|
292
|
+
const executor = new SeedExecutor();
|
|
293
|
+
// Project root is one level up from scripts directory
|
|
294
|
+
const projectRoot = resolve(scriptsPath, '..');
|
|
295
|
+
const result = await executor.execute(scriptPath, res, config.databaseUrl, projectRoot);
|
|
296
|
+
exitCode = result.exitCode;
|
|
297
|
+
output = result.output;
|
|
298
|
+
error = result.error;
|
|
299
|
+
}
|
|
300
|
+
const duration = Date.now() - startTime;
|
|
158
301
|
// Update execution record
|
|
159
302
|
if (hasPostgres() && executionId) {
|
|
160
303
|
const db = getPostgres();
|
|
@@ -162,11 +305,11 @@ export function createMaintenancePlugin(config = {}) {
|
|
|
162
305
|
SET status = $1, completed_at = NOW(), exit_code = $2,
|
|
163
306
|
output = $3, error = $4, duration_ms = $5, updated_at = NOW()
|
|
164
307
|
WHERE id = $6`, [
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
308
|
+
exitCode === 0 ? 'completed' : 'failed',
|
|
309
|
+
exitCode,
|
|
310
|
+
output,
|
|
311
|
+
error,
|
|
312
|
+
duration,
|
|
170
313
|
executionId,
|
|
171
314
|
]);
|
|
172
315
|
}
|
|
@@ -199,6 +342,51 @@ export function createMaintenancePlugin(config = {}) {
|
|
|
199
342
|
}
|
|
200
343
|
},
|
|
201
344
|
});
|
|
345
|
+
// POST /database/reset - Drop and recreate database schema (local/dev only)
|
|
346
|
+
registry.addRoute({
|
|
347
|
+
method: 'post',
|
|
348
|
+
path: '/database/reset',
|
|
349
|
+
pluginId: 'maintenance',
|
|
350
|
+
handler: async (req, res) => {
|
|
351
|
+
try {
|
|
352
|
+
// Security: Only allow in local or development environments
|
|
353
|
+
const nodeEnv = process.env.NODE_ENV?.toLowerCase();
|
|
354
|
+
if (nodeEnv !== 'local' && nodeEnv !== 'development') {
|
|
355
|
+
return res.status(403).json({
|
|
356
|
+
error: 'Database reset is only available in local or development environments',
|
|
357
|
+
currentEnv: nodeEnv || 'production',
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
if (!hasPostgres()) {
|
|
361
|
+
return res.status(503).json({
|
|
362
|
+
error: 'PostgreSQL plugin required for database reset',
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
const db = getPostgres();
|
|
366
|
+
// Drop and recreate public schema (removes all tables, data, etc.)
|
|
367
|
+
await db.queryRaw('DROP SCHEMA IF EXISTS public CASCADE');
|
|
368
|
+
await db.queryRaw('CREATE SCHEMA public');
|
|
369
|
+
await db.queryRaw('GRANT ALL ON SCHEMA public TO public');
|
|
370
|
+
await db.queryRaw('GRANT ALL ON SCHEMA public TO postgres');
|
|
371
|
+
await db.queryRaw('GRANT ALL ON SCHEMA public TO qwickapps');
|
|
372
|
+
// Grant default privileges for future tables and sequences
|
|
373
|
+
await db.queryRaw('ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO qwickapps');
|
|
374
|
+
await db.queryRaw('ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON SEQUENCES TO qwickapps');
|
|
375
|
+
res.json({
|
|
376
|
+
success: true,
|
|
377
|
+
message: 'Database schema has been reset. All tables and data have been deleted.',
|
|
378
|
+
timestamp: new Date().toISOString(),
|
|
379
|
+
});
|
|
380
|
+
}
|
|
381
|
+
catch (error) {
|
|
382
|
+
logger.error('Database reset failed', { error });
|
|
383
|
+
res.status(500).json({
|
|
384
|
+
error: 'Failed to reset database',
|
|
385
|
+
message: error instanceof Error ? error.message : String(error),
|
|
386
|
+
});
|
|
387
|
+
}
|
|
388
|
+
},
|
|
389
|
+
});
|
|
202
390
|
// GET /seeds/history - List execution history
|
|
203
391
|
registry.addRoute({
|
|
204
392
|
method: 'get',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"maintenance-plugin.js","sourceRoot":"","sources":["../../../src/plugins/maintenance-plugin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"maintenance-plugin.js","sourceRoot":"","sources":["../../../src/plugins/maintenance-plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -75,6 +75,18 @@ export interface PostgresPluginConfig {
|
|
|
75
75
|
onConnect?: (client: pg.PoolClient) => Promise<void>;
|
|
76
76
|
/** Called on pool errors */
|
|
77
77
|
onError?: (error: Error) => void;
|
|
78
|
+
/** Admin user for database operations (e.g., 'postgres') */
|
|
79
|
+
adminUser?: string;
|
|
80
|
+
/** Admin password for database operations */
|
|
81
|
+
adminPassword?: string;
|
|
82
|
+
/** Admin database to connect to for operations (default: 'postgres') */
|
|
83
|
+
adminDatabase?: string;
|
|
84
|
+
/** Database name to create/ensure exists (parsed from url if not provided) */
|
|
85
|
+
databaseName?: string;
|
|
86
|
+
/** User who should own the database (parsed from url if not provided) */
|
|
87
|
+
databaseOwner?: string;
|
|
88
|
+
/** Automatically initialize database if connection fails (default: true if admin credentials provided) */
|
|
89
|
+
autoInitialize?: boolean;
|
|
78
90
|
}
|
|
79
91
|
/**
|
|
80
92
|
* Transaction callback function
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres-plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/postgres-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,KAAK,EAAE,MAAM,EAAgC,MAAM,4BAA4B,CAAC;AAIvF;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,0EAA0E;IAC1E,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,2DAA2D;IAC3D,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;IAEf,0DAA0D;IAC1D,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,yDAAyD;IACzD,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,yFAAyF;IACzF,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,kGAAkG;IAClG,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,uFAAuF;IACvF,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,gEAAgE;IAChE,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,sDAAsD;IACtD,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,6DAA6D;IAC7D,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,yEAAyE;IACzE,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAErD,4BAA4B;IAC5B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"postgres-plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/postgres-plugin.ts"],"names":[],"mappings":"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"}
|